Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
QuickAttrTest.c
/* real simple test program for the name plug-in attribute */ |
#define TEST_RADAR_ID_1401065 1 |
#include <stdio.h> |
#include <string.h> |
#include <stdlib.h> |
#include <CodeFragments.h> |
#include <Dialogs.h> |
#include <Fonts.h> |
#include <Memory.h> |
#include <QuickDraw.h> |
#include <StandardFile.h> |
#include <Windows.h> |
#include "QD3D.h" |
#include "QD3DExtension.h" |
#include "QD3DGeometry.h" |
#include "QD3DGroup.h" |
#include "QD3DIO.h" |
#include "QD3DMath.h" |
#include "QD3DStorage.h" |
#include "NameAttribute.h" |
static void InitToolbox(void) ; |
/* initialize the Mac toolbox */ |
static void InitToolbox(void) |
{ |
MaxApplZone() ; |
MoreMasters() ; MoreMasters() ; MoreMasters() ; |
InitGraf( &qd.thePort ); |
InitFonts(); |
InitWindows(); |
FlushEvents( everyEvent, 0 ) ; |
InitCursor(); |
} |
static TQ3GroupObject BuildTriangle( |
void) |
{ |
TQ3ColorRGB triangleColor; |
TQ3GroupObject model; |
TQ3TriangleData triangleData; |
TQ3GeometryObject triangleThang; |
static TQ3Vertex3D vertices[3] = { |
{ { -1.0, -0.5, -0.25 }, NULL }, |
{ { 0.0, 0.0, 0.0 }, NULL }, |
{ { -0.5, 1.5, 0.45 }, NULL }, |
}; |
triangleData.vertices[0] = vertices[0]; |
triangleData.vertices[1] = vertices[1]; |
triangleData.vertices[2] = vertices[2]; |
triangleData.triangleAttributeSet = Q3AttributeSet_New(); |
triangleColor.r = 0.8; |
triangleColor.g = 0.5; |
triangleColor.b = 0.2; |
Q3AttributeSet_Add( |
triangleData.triangleAttributeSet, |
kQ3AttributeTypeDiffuseColor, |
&triangleColor); |
triangleData.vertices[0].attributeSet = Q3AttributeSet_New(); |
triangleData.vertices[1].attributeSet = Q3AttributeSet_New(); |
triangleData.vertices[2].attributeSet = Q3AttributeSet_New(); |
triangleColor.r = 1.0; |
triangleColor.g = 0.0; |
triangleColor.b = 0.0; |
Q3AttributeSet_Add( |
triangleData.vertices[0].attributeSet, |
kQ3AttributeTypeDiffuseColor, |
&triangleColor); |
triangleColor.r = 0.0; |
triangleColor.g = 1.0; |
triangleColor.b = 0.0; |
Q3AttributeSet_Add( |
triangleData.vertices[1].attributeSet, |
kQ3AttributeTypeDiffuseColor, |
&triangleColor); |
triangleColor.r = 0.0; |
triangleColor.g = 0.0; |
triangleColor.b = 1.0; |
Q3AttributeSet_Add( |
triangleData.vertices[2].attributeSet, |
kQ3AttributeTypeDiffuseColor, |
&triangleColor); |
triangleThang = Q3Triangle_New(&triangleData); |
model = Q3OrderedDisplayGroup_New(); |
if (triangleThang != NULL) { |
Q3Group_AddObject(model, triangleThang); |
Q3Object_Dispose(triangleThang); |
} |
Q3Object_Dispose(triangleData.vertices[0].attributeSet); |
Q3Object_Dispose(triangleData.vertices[1].attributeSet); |
Q3Object_Dispose(triangleData.vertices[2].attributeSet); |
Q3Object_Dispose(triangleData.triangleAttributeSet); |
return (model); |
} |
/* entry point */ |
void main(void) |
{ |
TQ3Status myStatus ; |
TQ3GroupObject myGroup ; |
const short length = 256 ; |
char myName[ length ] ; |
char *tempStr ; |
const char defaultName[] = "This is the name attribute string" ; |
short index = 0 ; |
InitToolbox() ; |
if( (long)Q3Initialize != kUnresolvedCFragSymbolAddress ) |
{ |
printf( "Initializing QuickDraw 3D" ) ; |
if((myStatus = Q3Initialize()) == kQ3Success) |
{ |
printf(" - successful\n" ) ; |
printf( "Making a test geometry" ) ; |
/* make a geometry object */ |
if((myGroup = BuildTriangle()) != NULL) |
{ |
TQ3XObjectClassVersion myVersion ; |
TQ3ObjectType objectClassType ; |
printf(" - successful\n" ) ; |
/* try adding a name to it */ |
strcpy( myName, defaultName ) ; |
printf( "Adding String \"%s\" as name attribute to the group\n", myName ) ; |
NameAttribute_SetName( myGroup, myName ) ; |
/* zero out the string */ |
for( index = 0; index < length; index++ ) |
myName[ index ] = '\0' ; |
printf( "Zeroed String \"%s\"\n", myName ) ; |
NameAttribute_GetName( myGroup, myName ) ; |
printf( "Got String \"%s\" from name attribute in the group\n", myName ) ; |
NameAttribute_GetName( myGroup, myName ) ; |
printf( "Got String \"%s\" from name attribute in the group\n", myName ) ; |
NameAttribute_GetName( myGroup, myName ) ; |
printf( "Got String \"%s\" from name attribute in the group\n", myName ) ; |
#ifdef FORCE_TO_FAIL_TEST |
/* |
* You can't do this. When the element type is registered QD3D |
* modifies it and passes back a reference. If you want to get |
* the version number for a attribute or element, get the type |
* from the name and then use that type to get the version. This |
* is illustrated below. |
*/ |
Q3XObjectHierarchy_GetClassVersion kElementTypeName, &myVersion ) ; |
#else |
Q3ObjectHierarchy_GetTypeFromString(kElementTypeNameString, &objectClassType ); |
Q3XObjectHierarchy_GetClassVersion( objectClassType, &myVersion ) ; |
#endif |
printf( "This is version %d.%d\n", |
Q3_OBJECT_CLASS_GET_MAJOR_VERSION( myVersion ), |
Q3_OBJECT_CLASS_GET_MINOR_VERSION( myVersion ) ); |
Q3Object_Dispose( myGroup ) ; |
#ifdef TEST_RADAR_ID_1401065 |
if( NameAttribute_Unregister() == kQ3Failure ) |
printf("NameAttribute_Unregister failed\n") ; |
#endif |
} |
else |
{ |
printf(" - failed\n" ) ; |
} |
} |
else |
{ |
printf(" - failed\n" ) ; |
} |
} |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14