//----------------------------------------------------------------------------- // e3fformat_3ds_runtime_registerclass : Register the classes. //----------------------------------------------------------------------------- static void e3fformat_3ds_runtime_registerclass(void) { sRegisteredClass = Q3XObjectHierarchy_RegisterClass (kQ3FileFormatTypeReader, &sRegisteredType, kQ3ClassNameFileFormatReader_3DS, e3fformat_3ds_metahandler, NULL, 0, sizeof(TE3FFormat_3ds_Data)); }
// Returns whether the creation was a success bool CreateTriangulator(void) { // No need to create it more than once if (TriangulatorView) return true; TriangulatorClass = Q3XObjectHierarchy_RegisterClass( kQ3SharedTypeRenderer, &TriangulatorClassType, "BG-Inspired Triangulator", TriangulatorMetaHandler, NULL, 0, 0); if(!TriangulatorClass) return false; if(!TriangulatorClassType) return false; // Dummy draw context: a pixmap (image buffer) that is empty TQ3PixmapDrawContextData PixmapContextData = { // drawContextData { kQ3ClearMethodWithColor, {0,0,0,0}, {{0,0},{0,0}}, kQ3False, NULL, kQ3False, kQ3True }, // pixmap { NULL, 0, 0, 0, 32, kQ3PixelTypeARGB32, kQ3EndianBig, kQ3EndianBig } }; TQ3DrawContextObject DrawContextObject = Q3PixmapDrawContext_New(&PixmapContextData); if (!DrawContextObject) return false; TQ3RendererObject RendererObject = Q3Renderer_NewFromType(TriangulatorClassType); if (!RendererObject) { Q3Object_Dispose(DrawContextObject); return false; } TriangulatorView = Q3View_New(); bool Success = TriangulatorView != NULL; if(Success) Success = (Q3View_SetDrawContext(TriangulatorView, DrawContextObject) == kQ3Success); if(Success) Success = (Q3View_SetRenderer(TriangulatorView, RendererObject) == kQ3Success); // No longer needed Q3Object_Dispose(DrawContextObject); Q3Object_Dispose(RendererObject); return Success; }