PEDITOR CreateEditor( POBJECT po ) { PEDITOR pe; pe = (PEDITOR)Allocate( sizeof( EDITOR ) ); MemSet( pe, 0, sizeof( EDITOR ) ); pe->TView = CreateTransform(); pe->hVideo = OpenDisplaySizedAt( 0, -1, -1, -1, -1 ); //InitVideo( "World Editor" ); SetRedrawHandler( pe->hVideo, (void (CPROC*)(uintptr_t,PRENDERER))EditResizeCallback, (uintptr_t)pe ); SetMouseHandler( pe->hVideo, EditMouseCallback, (uintptr_t)pe ); BindEventToKey( pe->hVideo, KEY_PGUP, 0, PageUpKey, (uintptr_t)pe ); BindEventToKey( pe->hVideo, KEY_PGDN, 0, PageDownKey, (uintptr_t)pe ); // SetCloseHandler( pe->hVideo, EditCloseCallback, (uintptr_t)pe ); // menu for this instance.... #ifdef __WINDOWS__ pe->hMenu = CreatePopup(); //CreatePopupMenu(); AppendPopupItem( pe->hMenu, MF_STRING, MNU_ADDPREDEF+0, "Add Square" ); AppendPopupItem( pe->hMenu, MF_STRING, MNU_ADDPREDEF+1, "Add Triangle" ); AppendPopupItem( pe->hMenu, MF_STRING, MNU_ADDLINE, "Add Line" ); #else pe->hMenu = NULL; #endif SetPoint( vToScreen, VectorConst_Z ); // facing into screen... Invert( vToScreen ); // facing out of screen... pe->pCurrent = po; pe->pCurrentFacet = NULL; //po->objinfo.FacetPool.pFacets + 0; pe->pCurrentLine = NULL; //po->objinfo.LinePool.pLines + 0; ClearTransform( pe->TView ); Translate( pe->TView, 0, 0, (RCOORD)-100.0 ); pe->bLocked = FALSE; EditResizeCallback( (uintptr_t)pe); UpdateDisplay( pe->hVideo ); return pe; }
void AddImage( char *name ) { PIMAGE_DISPLAY pdi; pdi = New( IMAGE_DISPLAY ); pdi->Loaded = LoadImageFile( name ); if( !pdi->Loaded ) { Release( pdi ); return; } pdi->display = OpenDisplaySizedAt( 0 , pdi->Loaded->width, pdi->Loaded->height , g.x, g.y ); SetRedrawHandler( pdi->display, DrawImage, (uintptr_t)pdi ); DrawImage( (uintptr_t)pdi, pdi->display ); SetKeyboardHandler( pdi->display, KeyHandler, 0 ); g.x += 10; g.y += 10; if( ( pdi->next = g.images ) ) pdi->next->me = &pdi->next; pdi->me = &g.images; g.images = pdi; }
SaneWinMain(argc, argv ) //int main( int argc, char **argv ) { int x = 0; int y = 0; uint32_t width, height; int w, h; g.pdi = GetDisplayInterface(); g.pii = GetImageInterface(); RegisterIcon( NULL ); GetDisplaySize( &width, &height ); w = width; h = height; y = x = 0; { int state = 0; int arg; g.fade_in = 500; g.show_time = 1000; for( arg = 1; arg < argc; arg++ ) { if( argv[arg][0] == '-' ) { if( argv[arg][1] == 'i' ) { g.flags.bShowInverted = 1; } else { switch( state ) { case 0: x = atoi( argv[arg]+1 ); break; case 1: y = atoi( argv[arg]+1 ); break; case 2: w = atoi( argv[arg]+1 ); break; case 3: h = atoi( argv[arg]+1 ); break; case 4: g.show_time = atoi( argv[arg]+1 ); break; case 5: g.fade_in = atoi( argv[arg]+1 ); break; } state++; } } else { Image x = LoadImageFile( argv[arg] ); if( x ) { g.nImages++; AddLink( &g.images, x ); } } } } if( g.nImages ) { g.displays[0] = OpenDisplaySizedAt( DISPLAY_ATTRIBUTE_LAYERED|DISPLAY_ATTRIBUTE_CHILD|DISPLAY_ATTRIBUTE_NO_MOUSE|DISPLAY_ATTRIBUTE_NO_AUTO_FOCUS , w //width , h //height , x //0 , y //0 ); g.displays[1] = OpenDisplaySizedAt( DISPLAY_ATTRIBUTE_LAYERED|DISPLAY_ATTRIBUTE_CHILD|DISPLAY_ATTRIBUTE_NO_MOUSE|DISPLAY_ATTRIBUTE_NO_AUTO_FOCUS , w //width , h //height , x //0 , y //0 ); SetRedrawHandler( g.displays[0], Output, 0 ); SetRedrawHandler( g.displays[1], Output, 1 ); if( g.nImages > 1 ) { target_in_start = GetTickCount(); AddTimer( 33, tick, 0 ); } else { //lprintf( "Show the first and only the first image." ); g.is_up[0] = 1; RestoreDisplay( g.displays[0] ); UpdateDisplay( g.displays[0] ); } while( 1 ) WakeableSleep( 10000 ); } else { } return 0; }