/*! \note Still very unsafe, but I need to redo everything later anyway. */ void grs_run(GritShared *grs, GritRec *gr_base) { // Make sure we have shared data. if( grs->dib==NULL && grs->palRec.data==NULL) { lprintf(LOG_WARNING, "No shared data to run with!\n"); return; } // Make copy of gr_base for flags, etc GritRec *gr= grit_alloc(); grs_free(gr->shared); grit_copy_options(gr, gr_base); grit_copy_strings(gr, gr_base); // Attach shared data gr->shared= grs; strrepl(&gr->symName, grs->symName); strrepl(&gr->dstPath, grs->dstPath); if(grs->dib == NULL) { // Palette only. Create new dib. gr->srcDib= dib_alloc(16, 16, 8, NULL); memset(dib_get_pal(gr->srcDib), 0, PAL_MAX*RGB_SIZE); memcpy(dib_get_pal(gr->srcDib), grs->palRec.data, rec_size(&grs->palRec)); } else gr->srcDib= dib_clone(grs->dib); // NOTE: aliasing screws up deletion later; detach manually. gr->_dib= gr->srcDib; // Run for shared gr do { if(!grit_validate(gr)) break; bool grit_prep_gfx(GritRec *gr); bool grit_prep_shared_pal(GritRec *gr); if(gr->gfxProcMode != GRIT_EXCLUDE) grit_prep_gfx(gr); if(gr->palProcMode != GRIT_EXCLUDE) grit_prep_shared_pal(gr); if(gr->bExport) grit_export(gr); } while(0); gr->_dib= NULL; // Detach shared data and delete gr gr->shared= NULL; grit_free(gr); }
CxpGbaDlg::CxpGbaDlg(CWnd* pParent /*=NULL*/) : CDialog(CxpGbaDlg::IDD, pParent) { mDstDir= ""; mDstTitle= ""; mgr= grit_alloc(); //- mgr= xgi_create(); //{{AFX_DATA_INIT(CxpGbaDlg) mbGfx = TRUE; mGfxBpp = 3; mGfxCprs = GRIT_CPRS_OFF; mGfxMode = 0; mGfxTransStr = _T("FF00FF"); mbMap = FALSE; moMapFormat = 0; mbMapRdx = TRUE; mbMapRdxFlip = TRUE; mbMapRdxPal = TRUE; mbMetaPal = FALSE; mMapCprs = GRIT_CPRS_OFF; mMapOffset = 0; mbPal = TRUE; mPalStart = 0; mPalCount = 256; mPalTrans = 0; mbObjCustom = FALSE; moObjShape = 0; moObjSize = 0; mObjHorz = 1; mObjVert = 1; moAreaSize = 1; mAreaLeft = 0; mAreaTop = 0; mAreaWidth = 8; mAreaHeight = 8; mDstPath = _T(""); mFileType = GRIT_FTYPE_S; moVarChunk = 1; mbHeader = TRUE; mbAppend = FALSE; mbSymChk = FALSE; mSymName = _T("bar"); mbTileset = FALSE; mTilesetPath = _T(""); mbRiff = FALSE; //}}AFX_DATA_INIT mSummary = ""; mbBusy= FALSE; }