////////// // // Called to create a pseudo device context // ////// SHdcX* iHwndX_createHdc(s32 tnWidth, s32 tnHeight, SBitmap* bmp) { union { uptr _hdc; SHdcX* hdc; }; ////////// // Make sure we have our HDC buffer allocated ////// if (!gsHdcs) iBuilder_createAndInitialize(&gsHdcs, -1); ////////// // Allocate a new one ////// hdc = (SHdcX*)iBuilder_appendData(gsHdcs, (s8*)NULL, sizeof(SHdcX)); if (hdc) { // Initialize hdc->isValid = true; hdc->hdc = _hdc; // Default settings hdc->isOpaque = false; hdc->colorFore.color = rgba(0,0,0,255); hdc->colorBack.color = rgba(255,255,255,255);; // Allocate the default font hdc->font = iFont_create(cgcFontName_default, 10, FW_NORMAL, 0, 0); // Allocate a bitmap if (!bmp) { // Create a bitmap hdc->bmp = iBmp_allocate(); iBmp_createBySize(hdc->bmp, tnWidth, tnHeight, 24); } else { // Use the indicated bitmap hdc->bmp = bmp; } } ////////// // Indicate success or failure ////// return(hdc); }
void iiDebo1_initialize(void) { ////////// // Window size ////// gnWidth = 800; gnHeight = 600; ////////// // Create the base fonts ////// iBuilder_createAndInitialize(&gFonts, -1); fontUbuntuMono8 = iFont_create(cgcUbuntuMono, 8, FW_NORMAL, 0, 0); fontUbuntuMono10 = iFont_create(cgcUbuntuMono, 10, FW_NORMAL, 0, 0); fontUbuntu14 = iFont_create(cgcUbuntu, 14, FW_NORMAL, 0, 0); ////////// // Create the base bitmaps ////// iBmp_createBySize(bmpDebo1 = iBmp_allocate(), gnWidth, gnHeight, 24); iBmp_createBySize(bmpStage1 = iBmp_allocate(), 67, 114, 24); iBmp_createBySize(bmpStage2 = iBmp_allocate(), 94, 114, 24); iBmp_createBySize(bmpStage3 = iBmp_allocate(), 94, 114, 24); iBmp_createBySize(bmpStage4 = iBmp_allocate(), 244, 133, 24); iBmp_createBySize(bmpStage5 = iBmp_allocate(), 83, 114, 24); iBmp_createBySize(bmpMemory = iBmp_allocate(), 616, 449, 24); iBmp_createBySize(bmpRegisters = iBmp_allocate(), 179, 171, 24); iBmp_createBySize(bmpDisassembly = iBmp_allocate(), 181, 427, 24); // Mouse neutral colors iBmp_createBySize(bmp1Kb = iBmp_allocate(), 74, 22, 24); iBmp_createBySize(bmp2Kb = iBmp_allocate(), 74, 22, 24); iBmp_createBySize(bmp8Bits = iBmp_allocate(), 64, 22, 24); iBmp_createBySize(bmp16Bits = iBmp_allocate(), 64, 22, 24); iBmp_createBySize(bmp32Bits = iBmp_allocate(), 64, 22, 24); iBmp_createBySize(bmp64Bits = iBmp_allocate(), 64, 22, 24); iBmp_createBySize(bmpF5Run = iBmp_allocate(), 50, 19, 24); iBmp_createBySize(bmpF8Step = iBmp_allocate(), 54, 19, 24); iBmp_createBySize(bmpF12Throttle = iBmp_allocate(), 84, 19, 24); // Mouse over colors iBmp_createBySize(bmp1KbOver = iBmp_allocate(), 74, 22, 24); iBmp_createBySize(bmp2KbOver = iBmp_allocate(), 74, 22, 24); iBmp_createBySize(bmp8BitsOver = iBmp_allocate(), 64, 22, 24); iBmp_createBySize(bmp16BitsOver = iBmp_allocate(), 64, 22, 24); iBmp_createBySize(bmp32BitsOver = iBmp_allocate(), 64, 22, 24); iBmp_createBySize(bmp64BitsOver = iBmp_allocate(), 64, 22, 24); iBmp_createBySize(bmpF5RunOver = iBmp_allocate(), 50, 19, 24); iBmp_createBySize(bmpF8StepOver = iBmp_allocate(), 54, 19, 24); iBmp_createBySize(bmpF12ThrottleOver = iBmp_allocate(), 84, 19, 24); // Externally rendered bmpLibSF_386_x40 = iBmp_rawLoad(cgc_libSF386x40Bmp); ////////// // Populate the static images ////// iiDebo1_populateStaticImages(); }
void iiSubobj_resetToDefaultCheckbox(SObject* checkbox, bool tlResetProperties, bool tlResetMethods, SObjPropMap* propList, u32 tnPropCount, SObjEventMap* eventList, u32 tnEventCount) { SObject* objChild; SBitmap* bmp; RECT lrc; logfunc(__FUNCTION__); if (checkbox) { ////////// // Reset the common settings ////// iiObj_resetToDefaultCommon(checkbox, true, true, propList, tnPropCount, eventList, tnEventCount); ////////// // Set default size, position, font ////// SetRect(&checkbox->rc, 0, 0, 60, 17); SetRect(&checkbox->rco, 0, 0, 60, 17); SetRect(&checkbox->rcp, 0, 0, 60, 17); // Set the size iObj_setSize(checkbox, 0, 0, 60, 17); // Font checkbox->p.font = iFont_duplicate(gsFontDefault9); ////////// // Set the default values ////// propSetValue_s32(checkbox, 0); propSetBackColor(checkbox, whiteColor); propSetForeColor(checkbox, blackColor); propSetAlignment(checkbox, _ALIGNMENT_LEFT); propSetStyle(checkbox, _STYLE_3D); propSetCaption(checkbox, cgcName_checkbox); propSetBackStyle(checkbox, _BACK_STYLE_TRANSPARENT); propSetBorderStyle(checkbox, _BORDER_STYLE_NONE); propSetBorderColor(checkbox, blackColor); propSetDisabledBackColor(checkbox, disabledBackColor); propSetDisabledForeColor(checkbox, disabledForeColor); ////////// // Default child settings ////// SetRect(&lrc, 0, 0, bmpArrowUl->bi.biWidth, bmpArrowUl->bi.biHeight); objChild = checkbox->firstChild; while (objChild) { // See which object this is if (objChild->objType == _OBJ_TYPE_IMAGE && propIsName_byText(objChild, cgcName_checkboxImage)) { // Adjust the size iObj_setSize(objChild, objChild->rc.left, objChild->rc.top, 17, objChild->rc.bottom); // Checkbox image bmp = iBmp_allocate(); iBmp_createBySize(bmp, 17, 17, 24); // Based on type, populate the image if (iObjProp_get_s32_direct(checkbox, _INDEX_VALUE) == 0) { // Off iBmp_scale(bmp, bmpCheckboxOff); // Set the new } else { // On iBmp_scale(bmp, bmpCheckboxOn); // Set the new } // Replicate that image for the over and down images iObjProp_set_bitmap_direct(objChild, _INDEX_PICTUREBMP, bmp); iObjProp_set_bitmap_direct(objChild, _INDEX_PICTUREBMP_DOWN, bmp); iObjProp_set_bitmap_direct(objChild, _INDEX_PICTUREBMP_OVER, bmp); // Delete the temporary image iBmp_delete(&bmp, true, true); // Add highlighting for the over and down bmp = iObjProp_get_bitmap(objChild, _INDEX_PICTUREBMP_OVER); iBmp_colorize(bmp, &lrc, colorMouseOver, false, 0.5f); bmp = iObjProp_get_bitmap(objChild, _INDEX_PICTUREBMP_DOWN); iBmp_colorize(bmp, &lrc, colorMouseDown, false, 0.5f); // Mark it for re-rendering objChild->isDirtyRender = true; propSetVisible(objChild, _LOGICAL_TRUE); } else if (objChild->objType == _OBJ_TYPE_LABEL && propIsName_byText(objChild, cgcName_checkboxLabel)) { // Adjust the size iObj_setSize(objChild, 17, 0, 60, objChild->rc.bottom); // Checkbox label propSetCaption(objChild, cgcName_checkbox); propSetBackStyle(objChild, _BACK_STYLE_TRANSPARENT); iFont_delete(&objChild->p.font, true); objChild->p.font = iFont_duplicate(checkbox->p.font); // Mark it for re-rendering objChild->isDirtyRender = true; propSetVisible(objChild, _LOGICAL_TRUE); } // Move to next object objChild = objChild->ll.nextObj; } } }
////////// // // Called to render a bitmap which is a visualization of the node // ////// SBitmap* iNode_renderBitmap(SNode* node, s32 tnMaxTokenLength, s32 tnMaxOverallLength, f64 tfRodLength, s32 tnMarginWidth, s32 tnBorderWidth, bool tlIncludeExtraInfo, bool tlGoDeeper, SNodeFlags* nodeFlags, bool tlDeeperNodesExtendInAllDirections) { s32 lnIter_uid, lnWidth, lnHeight; POINTS p; RECT lrc; SBitmap* bmp; SNodeProps props[1]; // Make sure our environment is sane bmp = NULL; if (node) { ////////// // (Re-)Render everything ////// // Grab a uid for render lnIter_uid = iGetNextUid(); // Setup the render prop props[0].backColor = whiteColor; props[0].foreColor = blackColor; props[0].marginWidth = tnMarginWidth; props[0].fillColor = silverColor; props[0].borderWidth = tnBorderWidth; props[0].borderColor = darkGrayColor; props[0].rodColor = charcoalColor; props[0].colorize = true; props[0].colorizeColor = pastelBlueColor; #ifdef iFont_create props[0].font = iFont_create(cgcFontName_defaultFixed); #endif // Render out in all directions from this point iiNode_renderBitmap(node, node, NULL, tnMaxTokenLength, tnMaxOverallLength, props, 1, lnIter_uid, tlIncludeExtraInfo, tlGoDeeper, nodeFlags, tlDeeperNodesExtendInAllDirections); ////////// // Determine extents ////// // Grab a uid for get extents lnIter_uid = iGetNextUid(); // Get our starting point SetRect(&lrc, 0, 0, 0, 0); p.x = 0; p.y = 0; // Get our extents iiNode_get_bitmapExtents(node, node, NULL, _NODE_SE, NULL, &lrc, p, p, tfRodLength, lnIter_uid, props, tlGoDeeper, nodeFlags, tlDeeperNodesExtendInAllDirections); ////////// // Render ////// bmp = iBmp_allocate(); if (bmp) { // get our sizes lnWidth = lrc.right - lrc.left; lnHeight = lrc.bottom - lrc.top; // Create the bitmap iBmp_createBySize(bmp, lnWidth, lnHeight, 24); // Grab a uid for get extents lnIter_uid = iGetNextUid(); // Get our starting point p.x = (s16)-lrc.left; p.y = (s16)-lrc.top; SetRect(&lrc, 0, 0, lnWidth, lnHeight); // Actually render iiNode_get_bitmapExtents(node, node, NULL, _NODE_SE, bmp, &lrc, p, p, tfRodLength, lnIter_uid, props, tlGoDeeper, nodeFlags, tlDeeperNodesExtendInAllDirections); } } // Indicate our rendered bitmap return(bmp); }
////////// // // Startup initialization, called from WinMain() only. // ////// void iVjr_init(HACCEL* hAccelTable) { SThisCode* thisCode = NULL; RECT lrc; #if !defined(_NONVJR_COMPILE) u8 logBuffer[256]; SBitmap* bmp; #if defined(_GRACE_COMPILE) SGraceParams params; #endif #endif // Get startup time systemStartedTickCount = GetTickCount(); systemStartedMs = iTime_getLocalMs(); // Fixup values that can't be properly encoded at compile-time iObjProp_init_fixup(); // Initialize basic data engine iDbf_startup(true); // Create a 1x1 no image bitmap placeholder bmpNoImage = iBmp_allocate(); iBmp_createBySize(bmpNoImage, 1, 1, 24); // Initialize primitive variables iVariable_createDefaultValues(NULL); iVariable_createPropsMaster(NULL); iVjr_init_createConstants(); // Initialize our critical sections InitializeCriticalSection(&cs_uniqueIdAccess); InitializeCriticalSection(&cs_logData); // These arrows are used as a standard throughout the system for the size of an icon. // They must be loaded first. bmpArrowUl = iBmp_rawLoad(cgc_arrowUlBmp); bmpArrowUr = iBmp_rawLoad(cgc_arrowUrBmp); bmpArrowLl = iBmp_rawLoad(cgc_arrowLlBmp); bmpArrowLr = iBmp_rawLoad(cgc_arrowLrBmp); // Initialize our builders iBuilder_createAndInitialize(&gWindows, -1); iBuilder_createAndInitialize(&gFonts, -1); // Default font gsFontDefault = iFont_create(cgcFontName_default, 10, FW_NORMAL, 0, 0); gsFontDefault9 = iFont_create(cgcFontName_default, 9, FW_NORMAL, 0, 0); gsFontDefaultBold = iFont_create(cgcFontName_default, 10, FW_BOLD, 0, 0); gsFontDefaultItalic8 = iFont_create(cgcFontName_default, 8, FW_NORMAL, 1, 0); gsFontDefaultFixedPoint = iFont_create(cgcFontName_defaultFixed, 10, FW_NORMAL, 0, 0); gsWindowTitleBarFont = iFont_create(cgcFontName_windowTitleBar, 12, FW_NORMAL, 0, 0); gsWindowTitleBarFontSubform = iFont_create(cgcFontName_windowTitleBar, 10, FW_NORMAL, 0, 0); gsFontDefaultTooltip = iFont_create(cgcFontName_defaultTooltip, 9, FW_BOLD, 0, 0); gsFontCask = iFont_create(cgcFontName_cask, 20, FW_BOLD, 0, 0); // Initialize the sound system isound_initialize(); memset(&gseRootSounds, 0, sizeof(gseRootSounds)); // Initialize our root sounds array ////////// // Jul.29.2014 // Removed due to limitations in the Shobjidl.h in MinGW. Can be manually re-added with copy-and-paste... enjoy doing that! :-) // // Taskbar interface // HRESULT hRes; // hRes = OleInitialize(NULL); // CoCreateInstance(CLSID_TaskbarList, 0, CLSCTX_INPROC_SERVER, IID_ITaskbarList, (void**)&giTaskbar); ////////// ////////// // Allocate a sourceLight area ////// bmpSourceLight = iBmp_allocate(); iBmp_createBySize(bmpSourceLight, 800, 1024, 24); iSourceLight_reset(); ////////// // Load our icons and images ////// bmpVjrIcon = iBmp_rawLoad(cgc_appIconBmp); bmpJDebiIcon = iBmp_rawLoad(cgc_jdebiAppIconBmp); bmpSourceCodeIcon = iBmp_rawLoad(cgc_sourcecodeIconBmp); bmpLocalsIcon = iBmp_rawLoad(cgc_localsIconBmp); bmpWatchIcon = iBmp_rawLoad(cgc_watchIconBmp); bmpCommandIcon = iBmp_rawLoad(cgc_commandIconBmp); bmpDebugIcon = iBmp_rawLoad(cgc_debugIconBmp); bmpOutputIcon = iBmp_rawLoad(cgc_outputIconBmp); bmpSourceLightIcon = iBmp_rawLoad(cgc_sourcelightIconBmp); // Carousels bmpCarouselCarouselIcon = iBmp_rawLoad(cgc_carouselCarouselBmp); bmpCarouselTabsIcon = iBmp_rawLoad(cgc_carouselTabsBmp); bmpCarouselPad = iBmp_rawLoad(cgc_carouselPadBmp); bmpCarouselIcon = iBmp_rawLoad(cgc_carouselIconBmp); bmpCarouselRiderTabClose = iBmp_rawLoad(cgc_carouselRiderTabCloseBmp); bmpClose = iBmp_rawLoad(cgc_closeBmp); bmpMaximize = iBmp_rawLoad(cgc_maximizeBmp); bmpMinimize = iBmp_rawLoad(cgc_minimizeBmp); bmpMove = iBmp_rawLoad(cgc_moveBmp); bmpCheckboxOn = iBmp_rawLoad(cgc_checkboxOnBmp); bmpCheckboxOff = iBmp_rawLoad(cgc_checkboxOffBmp); bmpButton = iBmp_rawLoad(cgc_buttonBmp); bmpTextbox = iBmp_rawLoad(cgc_textboxBmp); bmpStoplightRed = iBmp_rawLoad(cgc_stoplightRedBmp); bmpStoplightAmber = iBmp_rawLoad(cgc_stoplightAmberBmp); bmpStoplightGreen = iBmp_rawLoad(cgc_stoplightGreenBmp); bmpStoplightBlue = iBmp_rawLoad(cgc_stoplightBlueBmp); bmpBreakpointAlways = iBmp_rawLoad(cgc_breakpointAlways); bmpBreakpointAlwaysCountdown = iBmp_rawLoad(cgc_breakpointAlwaysCountdown); bmpConditionalTrue = iBmp_rawLoad(cgc_breakpointConditionalTrue); bmpConditionalFalse = iBmp_rawLoad(cgc_breakpointConditionalFalse); bmpConditionalTrueCountdown = iBmp_rawLoad(cgc_breakpointConditionalTrueCountdown); bmpConditionalFalseCountdown = iBmp_rawLoad(cgc_breakpointConditionalFalseCountdown); bmpDapple1 = iBmp_rawLoad(cgc_dappleBmp); bmpDapple1Tmp = iBmp_rawLoad(cgc_dappleBmp); bmpDapple2 = iBmp_rawLoad(cgc_dapple2Bmp); bmpDapple2Tmp = iBmp_rawLoad(cgc_dapple2Bmp); ////////// // Casks ////// iVjr_init_loadCaskIcons(); ////////// // Bitmap array ////// iVjr_init_loadBitmapArray(); ////////// // The radio image has a 44x44 dot in the upper-left. ////// bmpRadio = iBmp_rawLoad(cgc_radioBmp); // Load the raw bmpRadio bmpRadioDot = iBmp_createAndExtractRect(bmpRadio, 0, 0, 44, 44); // Extract the 44x44 rectangle SetRect(&lrc, 0, 0, 44, 44); iBmp_fillRect(bmpRadio, &lrc, whiteColor, whiteColor, whiteColor, whiteColor, false, NULL, false); // And cover it up with white ////////// // Splash screen ////// #if !defined(_NONVJR_COMPILE) // Load the splash screen if (glShowSplashScreen) { bmpVjrSplash = iBmp_rawLoad(cgc_splashBmp); bmp = iiVjr_buildSplashScreen(bmpVjrSplash); CreateThread(0, 0, &iSplash_show, bmp, 0, 0); } // Play the startup music if any sprintf((s8*)logBuffer, "VJr launched %u milliseconds after system boot\0", systemStartedTickCount); iVjr_appendSystemLog(thisCode, logBuffer); if (glShowSplashScreen) CreateThread(0, 0, &iPlay_ariaSplash, (LPVOID)cgcSoundStartupWav, 0, 0); #endif // Focus window accumulator #if !defined(_NONVJR_COMPILE) iVjr_appendSystemLog(thisCode, (u8*)"Create focus highlight buffer"); #endif iBuilder_createAndInitialize(&gFocusHighlights, -1); // Create the default reference datetimes #if !defined(_NONVJR_COMPILE) iVjr_appendSystemLog(thisCode, (u8*)"Create default datetime variables"); #endif iVjr_init_createDefaultDatetimes(); // Create our message window #if !defined(_NONVJR_COMPILE) iVjr_appendSystemLog(thisCode, (u8*)"Create message window"); #endif iVjr_init_createMessageWindow(); // Create our global variables #if !defined(_NONVJR_COMPILE) iVjr_appendSystemLog(thisCode, (u8*)"Create global and system variables"); #endif iVjr_init_createGlobalSystemVariables(); // Create our default objects #if !defined(_NONVJR_COMPILE) iVjr_appendSystemLog(thisCode, (u8*)"Create default objects"); #endif iVjr_init_createDefaultObjects(); // Create our main screen window #if !defined(_NONVJR_COMPILE) iVjr_appendSystemLog(thisCode, (u8*)"TEMPORARY: Manually create _jdebi"); iVjr_init_jdebi_create(); // Initially render each one iVjr_appendSystemLog(thisCode, (u8*)"Render _jdebi"); iObj_render(NULL, _jdebi, true); // Attach them to physical windows iVjr_appendSystemLog(thisCode, (u8*)"Allocate OS Window for _jdebi"); gWinJDebi = iWindow_allocate(); iObj_createWindowForForm(NULL, _jdebi, gWinJDebi, IDI_JDEBI); // Initially populate _screen // Load in the history if it exists if (!iSEM_loadFromDisk(thisCode, NULL, screenData, cgcScreenDataFilename, false, true)) { // Indicate success sprintf((s8*)logBuffer, "Loaded: %s\0", cgcScreenDataFilename); iSEM_appendLine(thisCode, _output_editbox->p.sem, logBuffer, (s32)strlen(logBuffer), false); iVjr_appendSystemLog(thisCode, (u8*)"Populate _screen with default data"); iSEM_appendLine(thisCode, screenData, (u8*)cgcScreenTitle, -1, false); iSEM_appendLine(thisCode, screenData, NULL, 0, false); iSEM_appendLine(thisCode, screenData, (u8*)"Please report any bugs: http://www.visual-freepro.org/vjr", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)"Thank you, and may the Lord Jesus Christ bless you richly. :-)", -1, false); iSEM_appendLine(thisCode, screenData, NULL, 0, false); iSEM_appendLine(thisCode, screenData, (u8*)" _____ In God's sight we've come together.", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | | We've come together to help each other.", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | | Let's grow this project up ... together!", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" ________| |________ In service and love to The Lord, forever!", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | |", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" |________ ________| Sponsored by:", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | | LibSF -- Liberty Software Foundation", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | |", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | | Contributors:", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | | Hernan Cano, Stefano D'Amico", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | |", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | | Lead Project Contact: [email protected]", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | |", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" | | We need more coders. Please consider helping out.", -1, false); iSEM_appendLine(thisCode, screenData, (u8*)" |_____| Your contribution would make a difference. :-)", -1, false); iSEM_appendLine(thisCode, screenData, NULL, 0, false); } // Navigate to the end of the content iSEM_navigateToEndLine(thisCode, screenData, _screen); // Initially populate _jdebi // Load in the history if it exists if (!iSEM_loadFromDisk(thisCode, NULL, _command_editbox->p.sem, cgcCommandHistoryFilename, true, true)) { // Indicate success sprintf((s8*)logBuffer, "Loaded: %s\0", cgcCommandHistoryFilename); iSEM_appendLine(thisCode, _output_editbox->p.sem, logBuffer, (s32)strlen(logBuffer), false); iSEM_appendLine(thisCode, _command_editbox->p.sem, (u8*)"*** Welcome to Visual FreePro, Junior! :-)", -1, false); iSEM_appendLine(thisCode, _command_editbox->p.sem, (u8*)"*** For now, this can be thought of as a command window ... with a twist.", -1, false); iSEM_appendLine(thisCode, _command_editbox->p.sem, (u8*)"*** It works like an editor window. You can insert new lines, edit old ones, etc.", -1, false); iSEM_appendLine(thisCode, _command_editbox->p.sem, (u8*)"*** To execute a command, press F6. If you're on the last line use F6 or Enter.", -1, false); iSEM_appendLine(thisCode, _command_editbox->p.sem, (u8*)"*** See http://www.visual-freepro.org/wiki/index.php/VXB for supported commands.", -1, false); iSEM_appendLine(thisCode, _command_editbox->p.sem, (u8*)"*** Remember always: Love makes you smile. It keeps an inner peace like no other. :-)", -1, false); } // Navigate to the last line iSEM_navigateToEndLine(thisCode, _command_editbox->p.sem, _command_editbox); // Make sure there's a blank line at the end if (_command_editbox->p.sem->line_cursor->sourceCode_populatedLength != 0) { iSEM_appendLine(thisCode, _command_editbox->p.sem, NULL, 0, false); iSEM_navigateToEndLine(thisCode, _command_editbox->p.sem, _command_editbox); } // Load some source code if (iSEM_loadFromDisk(thisCode, _sourceCode_rider, _sourceCode_editbox->p.sem, cgcStartupPrgFilename, true, true)) { // Indicate success sprintf((s8*)logBuffer, "Loaded: %s\0", cgcStartupPrgFilename); iSEM_appendLine(thisCode, _output_editbox->p.sem, logBuffer, (s32)strlen(logBuffer), false); } // Redraw iVjr_appendSystemLog(thisCode, (u8*)"Final render _jdebi"); iWindow_render(NULL, gWinJDebi, true); // Remove the splash screen 1/2 second later CreateThread(0, 0, &iSplash_delete, (LPVOID)500, 0, 0); #if defined(_GRACE_COMPILE) // Create a thread to display the content in 3D memset(¶ms, 0, sizeof(params)); params._func_mouse = (uptr)&iGrace_mouse; params._func_motion = (uptr)&iGrace_motion; params._func_passiveMotion = (uptr)&iGrace_passiveMotion; params._func_key = (uptr)&iGrace_key; params._func_special = (uptr)&iGrace_special; params._func_reshape = (uptr)&iGrace_reshape; params._func_display = (uptr)&iGrace_display; params._func_idle = (uptr)&iGrace_idle; CreateThread(0, 0, &iGrace, (LPVOID)¶ms, 0, 0); #endif #endif }