static void OnSplashPaint(WindowControl * Sender, LKSurface& Surface) { if(!SplashBitmap) { SplashBitmap = LoadSplash(_T("LKSTART")); } DrawSplash(Surface, SplashBitmap); }
void CRenderWorld::LoadImages(){ //load images InitBackground(); LoadBackground(); LoadSplash(); //Numbers Load(N_0, "0"); Load(N_1, "1"); Load(N_2, "2"); Load(N_3, "3"); Load(N_4, "4"); Load(N_5, "5"); Load(N_6, "6"); Load(N_7, "7"); Load(N_8, "8"); Load(N_9, "9"); Load(N_10, "10"); //Load sprites Load(CURSOR, "cursor"); Load(CURSOR_HAND, "cursor_hand"); Load(START, "start"); Load(START_HOVER, "hoverStart"); Load(ENDTURN, "endTurn"); Load(ENDTURNHOVER, "endTurnHover"); Load(ATTACKACTIVE, "attackActive"); Load(ATTACK, "attack"); Load(ATTACKHOVER, "attackHover"); Load(WAIT, "wait"); Load(WAITHOVER, "waitHover"); Load(WAITACTIVE, "waitActive"); Load(CAPTURE, "capture"); Load(CAPTUREHOVER, "capHover"); Load(CAPTUREACTIVE, "capActive"); Load(INFO, "info"); Load(INFOHOVER, "infoHover"); Load(SIDE1, "side1"); Load(SIDE2, "side2"); Load(WIN1, "win1"); Load(WIN2, "win2"); Load(CROSSHAIR, "crosshair"); //attack animation Load(ATTACK0, "attack0"); Load(ATTACK1, "attack1"); Load(ATTACK2, "attack2"); Load(ATTACK3, "attack3"); //Blood Crystle Load(BLOODCRYSTLE0, "bCrystle0"); Load(BLOODCRYSTLE1, "bCrystle1"); Load(BLOODCRYSTLE2, "bCrystle2"); Load(BLOODCRYSTLE3, "bCrystle3"); Load(BLOODCRYSTLE4, "bCrystle4"); //infoPane Load(INFOPANE, "infoPane"); Load(HEALTH_ICON, "health"); Load(DEFENSE_ICON, "defense"); Load(MOVE_ICON, "move"); Load(ATTACK_ICON, "attack"); Load(TITLE_NAME, "title"); Load(BLOOD, "blood"); //Arrow Load(DOWNA, "downA"); Load(DOWNBUTT, "downButt"); Load(HORZ, "horz"); Load(LEFTA, "leftA"); Load(LEFTBUTT, "leftButt"); Load(LEFTUP, "leftUp"); Load(RIGHTA, "rightA"); Load(RIGHTBUTT, "rightButt"); Load(RIGHTDOWN, "rightDown"); Load(RIGHTUP, "rightUp"); Load(UPA, "upA"); Load(UPBUTT, "upButt"); Load(VERT, "vert"); //blue soldier Load(BSIDLE0, "BSidle0"); Load(BSIDLE1, "BSidle1"); Load(BSIDLE2, "BSidle2"); Load(BSIDLE3, "BSidle3"); Load(BSRIGHT0, "BSright0"); Load(BSRIGHT1, "BSright1"); Load(BSRIGHT2, "BSright2"); Load(BSRIGHT3, "BSright3"); Load(BSLEFT0, "BSleft0"); Load(BSLEFT1, "BSleft1"); Load(BSLEFT2, "BSleft2"); Load(BSLEFT3, "BSleft3"); Load(BSUP0, "BSup0"); Load(BSUP1, "BSup1"); Load(BSUP2, "BSup2"); Load(BSUP3, "BSup3"); Load(BSDOWN0, "BSdown0"); Load(BSDOWN1, "BSdown1"); Load(BSDOWN2, "BSdown2"); Load(BSDOWN3, "BSdown3"); Load(BSMOVED0, "BSmoved0"); Load(BSMOVED1, "BSmoved1"); Load(BSMOVED2, "BSmoved2"); Load(BSMOVED3, "BSmoved3"); //blue heavy soldier Load(BHIDLE0, "BHidle0"); Load(BHIDLE1, "BHidle1"); Load(BHIDLE2, "BHidle0"); Load(BHIDLE3, "BHidle1"); Load(BHRIGHT0, "BHright0"); Load(BHRIGHT1, "BHright1"); Load(BHRIGHT2, "BHright2"); Load(BHRIGHT3, "BHright3"); Load(BHLEFT0, "BHleft0"); Load(BHLEFT1, "BHleft1"); Load(BHLEFT2, "BHleft2"); Load(BHLEFT3, "BHleft3"); Load(BHUP0, "BHup0"); Load(BHUP1, "BHup1"); Load(BHUP2, "BHup2"); Load(BHUP3, "BHup3"); Load(BHDOWN0, "BHdown0"); Load(BHDOWN1, "BHdown1"); Load(BHDOWN2, "BHdown2"); Load(BHDOWN3, "BHdown3"); Load(BHMOVED0, "BHmoved0"); Load(BHMOVED1, "BHmoved1"); Load(BHMOVED2, "BHmoved0"); Load(BHMOVED3, "BHmoved1"); //blue tank Load(BTIDLE0, "BTidle0"); Load(BTIDLE1, "BTidle1"); Load(BTIDLE2, "BTidle2"); Load(BTIDLE3, "BTidle1"); Load(BTRIGHT0, "BTright0"); Load(BTRIGHT1, "BTright1"); Load(BTRIGHT2, "BTright2"); Load(BTRIGHT3, "BTright1"); Load(BTLEFT0, "BTleft0"); Load(BTLEFT1, "BTleft1"); Load(BTLEFT2, "BTleft2"); Load(BTLEFT3, "BTleft1"); Load(BTUP0, "BTup0"); Load(BTUP1, "BTup1"); Load(BTUP2, "BTup2"); Load(BTUP3, "BTup1"); Load(BTDOWN0, "BTdown0"); Load(BTDOWN1, "BTdown1"); Load(BTDOWN2, "BTdown2"); Load(BTDOWN3, "BTdown1"); Load(BTMOVED0, "BTmoved0"); Load(BTMOVED1, "BTmoved1"); Load(BTMOVED2, "BTmoved2"); Load(BTMOVED3, "BTmoved1"); //red soldier Load(RSIDLE0, "RSidle0"); Load(RSIDLE1, "RSidle1"); Load(RSIDLE2, "RSidle2"); Load(RSIDLE3, "RSidle3"); Load(RSRIGHT0, "RSright0"); Load(RSRIGHT1, "RSright1"); Load(RSRIGHT2, "RSright2"); Load(RSRIGHT3, "RSright3"); Load(RSLEFT0, "RSleft0"); Load(RSLEFT1, "RSleft1"); Load(RSLEFT2, "RSleft2"); Load(RSLEFT3, "RSleft3"); Load(RSUP0, "RSup0"); Load(RSUP1, "RSup1"); Load(RSUP2, "RSup2"); Load(RSUP3, "RSup3"); Load(RSDOWN0, "RSdown0"); Load(RSDOWN1, "RSdown1"); Load(RSDOWN2, "RSdown2"); Load(RSDOWN3, "RSdown3"); Load(RSMOVED0, "RSmoved0"); Load(RSMOVED1, "RSmoved1"); Load(RSMOVED2, "RSmoved2"); Load(RSMOVED3, "RSmoved3"); //red heavy soldier Load(RHIDLE0, "RHidle0"); Load(RHIDLE1, "RHidle1"); Load(RHIDLE2, "RHidle0"); Load(RHIDLE3, "RHidle1"); Load(RHRIGHT0, "RHright0"); Load(RHRIGHT1, "RHright1"); Load(RHRIGHT2, "RHright2"); Load(RHRIGHT3, "RHright3"); Load(RHLEFT0, "RHleft0"); Load(RHLEFT1, "RHleft1"); Load(RHLEFT2, "RHleft2"); Load(RHLEFT3, "RHleft3"); Load(RHUP0, "RHup0"); Load(RHUP1, "RHup1"); Load(RHUP2, "RHup2"); Load(RHUP3, "RHup3"); Load(RHDOWN0, "RHdown0"); Load(RHDOWN1, "RHdown1"); Load(RHDOWN2, "RHdown2"); Load(RHDOWN3, "RHdown3"); Load(RHMOVED0, "RHmoved0"); Load(RHMOVED1, "RHmoved1"); Load(RHMOVED2, "RHmoved0"); Load(RHMOVED3, "RHmoved1"); //red tank Load(RTIDLE0, "RTidle0"); Load(RTIDLE1, "RTidle1"); Load(RTIDLE2, "RTidle2"); Load(RTIDLE3, "RTidle1"); Load(RTRIGHT0, "RTright0"); Load(RTRIGHT1, "RTright1"); Load(RTRIGHT2, "RTright2"); Load(RTRIGHT3, "RTright1"); Load(RTLEFT0, "RTleft0"); Load(RTLEFT1, "RTleft1"); Load(RTLEFT2, "RTleft2"); Load(RTLEFT3, "RTleft1"); Load(RTUP0, "RTup0"); Load(RTUP1, "RTup1"); Load(RTUP2, "RTup2"); Load(RTUP3, "RTup1"); Load(RTDOWN0, "RTdown0"); Load(RTDOWN1, "RTdown1"); Load(RTDOWN2, "RTdown2"); Load(RTDOWN3, "RTdown1"); Load(RTMOVED0, "RTmoved0"); Load(RTMOVED1, "RTmoved1"); Load(RTMOVED2, "RTmoved2"); Load(RTMOVED3, "RTmoved1"); //map tiles Load(RED_BASE, "redBase"); Load(BLUE_BASE, "blueBase"); Load(GRASS0, "grass0"); Load(GRASS1, "grass1"); Load(MOUNTAIN0, "mountain0"); Load(MOUNTAIN1, "mountain1"); Load(MOUNTAIN2, "mountain2"); Load(MOUNTAIN3, "mountain3"); Load(MOUNTAIN4, "mountain4"); Load(MOUNTAIN5, "mountain5"); Load(RIVER0, "river0"); Load(RIVER1, "river1"); Load(RIVER2, "river2"); Load(ROAD0, "road0"); Load(ROAD1, "road1"); Load(ROAD2, "road2"); Load(ROAD3, "road3"); Load(ROAD4, "road4"); Load(ROAD5, "road5"); Load(ROAD6, "road6"); Load(ROAD7, "road7"); Load(ROAD8, "road8"); Load(ROAD9, "road9"); Load(ROAD10, "road10"); Load(TREE0, "tree0"); Load(TREE1, "tree1"); Load(WALLPAPER, "greyWallpaper"); //RED MAP TILES Load(RED_BASE_R, "redBase_r"); Load(BLUE_BASE_R, "blueBase_r"); Load(GRASS0_R, "grass0_r"); Load(GRASS1_R, "grass1_r"); Load(MOUNTAIN0_R, "mountain0_r"); Load(MOUNTAIN1_R, "mountain1_r"); Load(MOUNTAIN2_R, "mountain2_r"); Load(MOUNTAIN3_R, "mountain3_r"); Load(MOUNTAIN4_R, "mountain4_r"); Load(MOUNTAIN5_R, "mountain5_r"); Load(ROAD0_R, "road0_r"); Load(ROAD1_R, "road1_r"); Load(ROAD2_R, "road2_r"); Load(ROAD3_R, "road3_r"); Load(ROAD4_R, "road4_r"); Load(ROAD5_R, "road5_r"); Load(ROAD6_R, "road6_r"); Load(ROAD7_R, "road7_r"); Load(ROAD8_R, "road8_r"); Load(ROAD9_R, "road9_r"); Load(ROAD10_R, "road10_r"); Load(TREE0_R, "tree0_r"); Load(TREE1_R, "tree1_r"); Load(WALLPAPER_R, "redWallpaper"); //BLUE MAP TILES Load(RED_BASE_B, "redBase_b"); Load(BLUE_BASE_B, "blueBase_b"); Load(GRASS0_B, "grass0_b"); Load(GRASS1_B, "grass1_b"); Load(MOUNTAIN0_B, "mountain0_b"); Load(MOUNTAIN1_B, "mountain1_b"); Load(MOUNTAIN2_B, "mountain2_b"); Load(MOUNTAIN3_B, "mountain3_b"); Load(MOUNTAIN4_B, "mountain4_b"); Load(MOUNTAIN5_B, "mountain5_b"); Load(ROAD0_B, "road0_b"); Load(ROAD1_B, "road1_b"); Load(ROAD2_B, "road2_b"); Load(ROAD3_B, "road3_b"); Load(ROAD4_B, "road4_b"); Load(ROAD5_B, "road5_b"); Load(ROAD6_B, "road6_b"); Load(ROAD7_B, "road7_b"); Load(ROAD8_B, "road8_b"); Load(ROAD9_B, "road9_b"); Load(ROAD10_B, "road10_b"); Load(TREE0_B, "tree0_b"); Load(TREE1_B, "tree1_b"); Load(WALLPAPER_B, "blueWallpaper"); Load(EX0, "ex0"); Load(EX1, "ex1"); Load(EX2, "ex2"); Load(EX3, "ex3"); Load(EX4, "ex4"); Load(EX5, "ex5"); Load(EX6, "ex6"); Load(EX7, "ex7"); Load(EX8, "ex8"); Load(EX9, "ex9"); Load(EX10, "ex10"); Load(EX11, "ex11"); Load(EX12, "ex12"); Load(EX13, "ex13"); Load(EX14, "ex14"); Load(EX15, "ex15"); Load(EX16, "ex16"); Load(EX17, "ex17"); Load(EX18, "ex18"); Load(EX19, "ex19"); Load(EX20, "ex20"); Load(EX21, "ex21"); Load(EX22, "ex22"); Load(EX23, "ex23"); } //LoadImages
// // Called by LKDrawLook8000, this is what happens when we change mapspace mode, advancing through types. // We paint infopages, nearest, tri, etc.etc. // Normally there is plenty of cpu available because the map is not even calculated. // This is why we bring to the Draw thread, in the nearest pages case, also calculations. // void MapWindow::DrawMapSpace(HDC hdc, RECT rc ) { HFONT oldfont; HBRUSH hB; TextInBoxMode_t TextDisplayMode = {0}; TCHAR Buffer[LKSIZEBUFFERLARGE*2]; #ifdef DRAWLKSTATUS bool dodrawlkstatus=false; #endif static POINT p[10]; if (MapSpaceMode==MSM_WELCOME) { if (INVERTCOLORS) hB=LKBrush_Petrol; else hB=LKBrush_Mlight; } else { if (INVERTCOLORS) hB=LKBrush_Mdark; else hB=LKBrush_Mlight; } oldfont = (HFONT)SelectObject(hdc, LKINFOFONT); // save font if (MapSpaceMode!=MSM_WELCOME) FillRect(hdc,&rc, hB); if (DoInit[MDI_DRAWMAPSPACE]) { p[0].x=0; p[0].y=rc.bottom-BottomSize-NIBLSCALE(2); p[1].x=rc.right-1; p[1].y=p[0].y; p[2].x=0; p[2].y=0; p[3].x=rc.right-1; p[3].y=0; // 091230 right-1 p[4].x=0; p[4].y=0; p[5].x=0; p[5].y=rc.bottom-BottomSize-NIBLSCALE(2); p[6].x=rc.right-1; p[6].y=0; p[7].x=rc.right-1; p[7].y=rc.bottom-BottomSize-NIBLSCALE(2); // 091230 right-1 // p[8].x=0; p[8].y=rc.bottom-BottomSize-NIBLSCALE(2); p[9].x=rc.right; p[9].y=p[8].y; /* StartupStore(_T("DOINIT DRAWMAPSPACE 21=%d=%d 22=%d=%d 23=%d=%d 24=%d=%d 31=%d=%d 32=%d=%d\n"), ConfIP[LKMODE_WP][0],ConfIP21, ConfIP[LKMODE_WP][1],ConfIP22, ConfIP[LKMODE_WP][2],ConfIP23, ConfIP[LKMODE_WP][3],ConfIP24, ConfIP[LKMODE_NAV][0],ConfIP31, ConfIP[LKMODE_NAV][1],ConfIP32); */ if (MapSpaceMode==MSM_WELCOME) LoadSplash(hdc,_T("LKPROFILE")); DoInit[MDI_DRAWMAPSPACE]=false; } // Paint borders in green, but only in nearest pages and welcome if (MapSpaceMode==MSM_WELCOME || (!IsMultiMap() && MapSpaceMode!=MSM_MAP) ) { if (INVERTCOLORS) { _DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[2], p[3], RGB_GREEN, rc); _DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[4], p[5], RGB_GREEN, rc); _DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[6], p[7], RGB_GREEN, rc); _DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[0], p[1], RGB_GREEN, rc); } else { _DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[2], p[3], RGB_DARKGREEN, rc); _DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[4], p[5], RGB_DARKGREEN, rc); _DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[6], p[7], RGB_DARKGREEN, rc); _DrawLine(hdc, PS_SOLID, NIBLSCALE(1), p[0], p[1], RGB_DARKGREEN, rc); } } #ifdef DRAWLKSTATUS if (LKevent==LKEVENT_NEWRUN) dodrawlkstatus=true; #endif // We are entering mapspacemodes with no initial check on configured subpages. // Thus we need to ensure that the page is really available, or find the first valid. // However, this will prevent direct customkey access to pages! // Instead, we do it when we call next page from InfoPageChange // if (!ConfIP[ModeIndex][CURTYPE]) NextModeType(); switch (MapSpaceMode) { case MSM_WELCOME: #if (1) if (!DrawInfo.NAVWarning) { static double firsttime=DrawInfo.Time; // delayed automatic exit from welcome mode if ( DrawInfo.Time > (firsttime+1.0) ) { SetModeType(LKMODE_MAP,MP_MOVING); LKevent=LKEVENT_NONE; if (EnableSoundModes) LKSound(_T("LK_BEEP1.WAV")); RefreshMap(); break; } } #endif if(GlobalModelType==MODELTYPE_PNA_MINIMAP) { SetModeType(LKMODE_MAP,MP_MOVING); LKevent=LKEVENT_NONE; break; } DrawWelcome8000(hdc, rc); break; case MSM_MAPTRK: SetSideviewPage(IM_HEADING); LKDrawMultimap_Asp(hdc,rc); break; case MSM_MAPWPT: #if 0 // If there is no destination, force jump to the map if (GetOvertargetIndex()<0) { SetModeType(LKMODE_MAP,MP_MOVING); LKevent=LKEVENT_NONE; break; } #endif SetSideviewPage(IM_NEXT_WP); LKDrawMultimap_Asp(hdc,rc); break; case MSM_MAPASP: SetSideviewPage(IM_NEAR_AS); LKDrawMultimap_Asp(hdc,rc); break; case MSM_MAPRADAR: LKDrawMultimap_Radar(hdc,rc); break; case MSM_VISUALGLIDE: SetSideviewPage(IM_VISUALGLIDE); LKDrawMultimap_Asp(hdc,rc); break; case MSM_MAPTEST: LKDrawMultimap_Test(hdc,rc); break; case MSM_LANDABLE: case MSM_NEARTPS: case MSM_AIRPORTS: DrawNearest(hdc, rc); break; case MSM_AIRSPACES: DrawAspNearest(hdc, rc); break; case MSM_COMMON: case MSM_RECENT: DrawCommon(hdc, rc); break; case MSM_MAP: break; case MSM_INFO_THERMAL: case MSM_INFO_CRUISE: case MSM_INFO_TASK: case MSM_INFO_AUX: case MSM_INFO_TRI: case MSM_INFO_HSI: case MSM_INFO_TRF: case MSM_INFO_TARGET: case MSM_INFO_CONTEST: DrawInfoPage(hdc,rc, false); break; case MSM_TRAFFIC: DrawTraffic(hdc,rc); break; case MSM_THERMALS: DrawThermalHistory(hdc,rc); break; default: memset((void*)&TextDisplayMode, 0, sizeof(TextDisplayMode)); TextDisplayMode.Color = RGB_WHITE; TextDisplayMode.NoSetFont = 1; TextDisplayMode.AlligneCenter = 1; SelectObject(hdc, LK8TargetFont); _stprintf(Buffer,TEXT("MapSpaceMode=%d"),MapSpaceMode); TextInBox(hdc, &rc, Buffer, (rc.right-rc.left)/2, NIBLSCALE(50) , 0, &TextDisplayMode, false); break; } #ifdef DRAWLKSTATUS // no need to clear dodrawlkstatus, it is already reset at each run if (dodrawlkstatus) DrawLKStatus(hdc, rc); #endif SelectObject(hdc, oldfont); }
static void OnSplashPaint(WindowControl * Sender, HDC hDC){ TCHAR srcfile[MAX_PATH]; TCHAR fprefix[20]; if (RUN_MODE==RUN_SHUTDOWN) return; if (RUN_MODE==RUN_WELCOME) _tcscpy(fprefix,_T("LKSTART")); else _tcscpy(fprefix,_T("LKPROFILE")); LoadSplash(hDC,fprefix); if (RUN_MODE==RUN_WELCOME) { TCHAR mes[100]; int pos=0; switch (ScreenSize) { case ss800x480: pos=12; break; case ss400x240: pos=12; break; case ss480x272: if (ScreenSizeX==854) pos=14; else pos=11; break; case ss640x480: pos=12; break; case ss320x240: pos=12; break; case ss896x672: pos=14; break; // --------- portrait ------------- case ss240x320: pos=17; break; case ss480x640: pos=17; break; case ss272x480: pos=18; break; case ss240x400: pos=16; break; case ss480x800: pos=18; break; default: pos=11; break; } if (fullresetasked) { _stprintf(mes,_T("*** %s ***"),gettext(_T("_@M1757_"))); RawWrite(hDC,mes,pos,1, RGB_DARKWHITE,WTMODE_NORMAL); } else { #ifndef LKCOMPETITION _stprintf(mes,_T("Version %S.%S (%S)"),LKVERSION,LKRELEASE,__DATE__); #else _stprintf(mes,_T("V%S.%S COMPETITION"),LKVERSION,LKRELEASE,__DATE__); #endif RawWrite(hDC,mes,pos,1, RGB_DARKWHITE,WTMODE_NORMAL); } } if (RUN_MODE!=RUN_WELCOME) { // FillRect(hDC,&ScreenSizeR, LKBrush_Black); // REMOVE TCHAR mes[100]; #ifndef LKCOMPETITION _stprintf(mes,_T("%S v%S.%S - %s"),LKFORK,LKVERSION,LKRELEASE,gettext(_T("_@M2054_"))); #else _stprintf(mes,_T("%SC v%S.%S - %s"),LKFORK,LKVERSION,LKRELEASE,gettext(_T("_@M2054_"))); #endif RawWrite(hDC,mes,1,1, RGB_LIGHTGREY,WTMODE_NORMAL); unsigned long freeram = CheckFreeRam()/1024; TCHAR buffer[MAX_PATH]; LocalPath(buffer); unsigned long freestorage = FindFreeSpace(buffer); _stprintf(mes,_T("free ram %.1ldM storage %.1ldM"), freeram/1024,freestorage/1024); RawWrite(hDC,mes,3,0, RGB_LIGHTGREY,WTMODE_NORMAL); if ( ScreenSize != ss320x240 && ScreenLandscape ) RawWrite(hDC,_T("_______________________"),2,2, RGB_LIGHTGREY,WTMODE_NORMAL); if (fullresetasked) { _stprintf(mes,_T("%s"),gettext(_T("_@M1757_"))); // LK8000 PROFILES RESET RawWrite(hDC,mes,5,2, RGB_ICEWHITE, WTMODE_OUTLINED); _stprintf(mes,_T("%s"),gettext(_T("_@M1759_"))); // SELECTED IN SYSTEM RawWrite(hDC,mes,6,2, RGB_ICEWHITE, WTMODE_OUTLINED); } else { _stprintf(mes,_T("%s"),PilotName_Config); RawWrite(hDC,mes,4,2, RGB_ICEWHITE, WTMODE_OUTLINED); _stprintf(mes,_T("%s"),AircraftRego_Config); RawWrite(hDC,mes,5,2, RGB_AMBER, WTMODE_OUTLINED); _stprintf(mes,_T("%s"),AircraftType_Config); RawWrite(hDC,mes,6,2, RGB_AMBER, WTMODE_OUTLINED); LKASSERT(szPolarFile[0]); extern void LK_wsplitpath(const WCHAR* path, WCHAR* drv, WCHAR* dir, WCHAR* name, WCHAR* ext); LK_wsplitpath(szPolarFile, (WCHAR*) NULL, (WCHAR*) NULL, srcfile, (WCHAR*) NULL); _stprintf(mes,_T("%s %s"),gettext(_T("_@M528_")),srcfile); // polar file RawWrite(hDC,mes,7,2, RGB_AMBER, WTMODE_OUTLINED); LKASSERT(startProfileFile[0]); LK_wsplitpath(startProfileFile, (WCHAR*) NULL, (WCHAR*) NULL, srcfile, (WCHAR*) NULL); _stprintf(mes,_T("%s: %s"),MsgToken(1746),srcfile); RawWrite(hDC,mes,11,1, RGB_ICEWHITE, WTMODE_NORMAL); } // RawWrite(hDC,_T("_______________________"),8,2, RGB_LIGHTGREY,WTMODE_NORMAL); // REMOVE FOR THE 3.0 return; } }
static void OnSplashPaint(WindowControl * Sender, LKSurface& Surface) { TCHAR srcfile[MAX_PATH]; if (RUN_MODE == RUN_SHUTDOWN) return; if(RUN_MODE == RUN_WELCOME) { if(!StartBitmap) { StartBitmap = LoadSplash(_T("LKSTART")); } if(StartBitmap) { DrawSplash(Surface, StartBitmap); } } else { if(!ProfileBitmap) { ProfileBitmap = LoadSplash(_T("LKPROFILE")); } if(ProfileBitmap) { DrawSplash(Surface, ProfileBitmap); } } if (RUN_MODE == RUN_WELCOME) { TCHAR mes[100]; int pos = 0; switch (ScreenSize) { case ss480x272: if (ScreenSizeX == 854) pos = 14; else #ifdef __linux__ pos = 12; #else pos = 11; #endif break; // --------- portrait ------------- case ss240x320: #ifdef __linux__ pos = 19; #else pos = 17; #endif break; default: // customized definition if (ScreenLandscape) { switch (ScreenGeometry) { case SCREEN_GEOMETRY_43: pos = 12; break; case SCREEN_GEOMETRY_53: pos = 12; break; case SCREEN_GEOMETRY_169: pos = 11; break; default: pos = 11; break; } } else { // Portrait // try to get a rule for text position... switch (ScreenGeometry) { case SCREEN_GEOMETRY_43: #ifdef __linux__ pos = 18; #else pos = 17; #endif break; case SCREEN_GEOMETRY_53: pos = 20; break; case SCREEN_GEOMETRY_169: #ifdef __linux__ pos = 22; #else pos = 20; #endif break; default: pos = 21; break; } } break; } if (FullResetAsked) { _stprintf(mes, _T("*** %s ***"), MsgToken(1757)); RawWrite(Surface, mes, pos, 1, RGBDARKWHITE, WTMODE_NORMAL); } else { #ifndef LKCOMPETITION _stprintf(mes, _T("Version %s.%s (%s)"), _T(LKVERSION), _T(LKRELEASE), _T(__DATE__)); #else _stprintf(mes, _T("V%s.%s (%s) COMPETITION"), _T(LKVERSION), _T(LKRELEASE), _T(__DATE__)); #endif RawWrite(Surface, mes, pos, 1, RGBDARKWHITE, WTMODE_NORMAL); #ifdef KOBO if(IsKoboOTGKernel()) { RawWrite(Surface, _T("- USB host kernel -"), pos+1, 1, RGBDARKWHITE, WTMODE_NORMAL); } #endif } } if (RUN_MODE != RUN_WELCOME) { // FillRect(hDC,&ScreenSizeR, LKBrush_Black); // REMOVE TCHAR mes[100]; #ifndef LKCOMPETITION _stprintf(mes, _T("%s v%s.%s - %s"), _T(LKFORK), _T(LKVERSION), _T(LKRELEASE), MsgToken(2054)); #else _stprintf(mes, _T("%sC v%s.%s - %s"), _T(LKFORK), _T(LKVERSION), _T(LKRELEASE), MsgToken(2054)); #endif #ifdef DITHER RawWrite(Surface, mes, 1, 1, RGBLIGHTGREY, WTMODE_OUTLINED); #else RawWrite(Surface, mes, 1, 1, RGBLIGHTGREY, WTMODE_NORMAL); #endif size_t freeram = CheckFreeRam() / 1024; TCHAR buffer[MAX_PATH]; LocalPath(buffer); size_t freestorage = FindFreeSpace(buffer); _stprintf(mes, _T("free ram %.1uM storage %.1uM"), (unsigned int) freeram / 1024, (unsigned int) freestorage / 1024); #ifdef DITHER RawWrite(Surface, mes, 3, 0, RGBLIGHTGREY, WTMODE_OUTLINED); #else RawWrite(Surface, mes, 3, 0, RGBLIGHTGREY, WTMODE_NORMAL); #endif if (ScreenSize != ss320x240 && ScreenLandscape) RawWrite(Surface, _T("_______________________"), 2, 2, RGBLIGHTGREY, WTMODE_NORMAL); if (FullResetAsked) { _stprintf(mes, _T("%s"), MsgToken(1757)); // LK8000 PROFILES RESET RawWrite(Surface, mes, 5, 2, RGBICEWHITE, WTMODE_OUTLINED); _stprintf(mes, _T("%s"), MsgToken(1759)); // SELECTED IN SYSTEM RawWrite(Surface, mes, 6, 2, RGBICEWHITE, WTMODE_OUTLINED); } else { _stprintf(mes, _T("%s"), PilotName_Config); RawWrite(Surface, mes, 4, 2, RGBICEWHITE, WTMODE_OUTLINED); _stprintf(mes, _T("%s"), AircraftRego_Config); RawWrite(Surface, mes, 5, 2, RGBAMBER, WTMODE_OUTLINED); _stprintf(mes, _T("%s"), AircraftType_Config); RawWrite(Surface, mes, 6, 2, RGBAMBER, WTMODE_OUTLINED); LKASSERT(szPolarFile[0]); extern void LK_tsplitpath(const TCHAR* path, TCHAR* drv, TCHAR* dir, TCHAR* name, TCHAR * ext); LK_tsplitpath(szPolarFile, (TCHAR*) NULL, (TCHAR*) NULL, srcfile, (TCHAR*) NULL); _stprintf(mes, _T("%s %s"), MsgToken(528), srcfile); // polar file RawWrite(Surface, mes, 7, 2, RGBAMBER, WTMODE_OUTLINED); LKASSERT(startProfileFile[0]); LK_tsplitpath(startProfileFile, (TCHAR*) NULL, (TCHAR*) NULL, srcfile, (TCHAR*) NULL); _stprintf(mes, _T("%s: %s"), MsgToken(1746), srcfile); RawWrite(Surface, mes, 11, 1, RGBICEWHITE, WTMODE_NORMAL); } // RawWrite(hDC,_T("_______________________"),8,2, RGB_LIGHTGREY,WTMODE_NORMAL); // REMOVE FOR THE 3.0 return; } }
// // Called by LKDrawLook8000, this is what happens when we change mapspace mode, advancing through types. // We paint infopages, nearest, tri, etc.etc. // Normally there is plenty of cpu available because the map is not even calculated. // This is why we bring to the Draw thread, in the nearest pages case, also calculations. // void MapWindow::DrawMapSpace(LKSurface& Surface, const RECT& rc) { BrushReference hB; TextInBoxMode_t TextDisplayMode = {0}; TCHAR Buffer[LKSIZEBUFFERLARGE*2]; #ifdef DRAWLKSTATUS bool dodrawlkstatus=false; #endif #ifndef DITHER if (MapSpaceMode==MSM_WELCOME) { if (INVERTCOLORS) hB=LKBrush_Petrol; else hB=LKBrush_Mlight; } else { if (INVERTCOLORS) hB=LKBrush_Mdark; else hB=LKBrush_Mlight; } #else if (INVERTCOLORS) hB=LKBrush_Black; else hB=LKBrush_White; #endif const auto oldfont = Surface.SelectObject(LKINFOFONT); // save font if (MapSpaceMode==MSM_WELCOME) { LKBitmap WelcomeBitmap = LoadSplash(_T("LKPROFILE")); if(WelcomeBitmap) { DrawSplash(Surface, WelcomeBitmap); } } else { Surface.FillRect(&rc, hB); } // Paint borders in green, but only in nearest pages and welcome, and not in DITHER mode // In case we want it in dithered mode, some changes are ready to be used. #ifndef DITHER if (MapSpaceMode==MSM_WELCOME || (!IsMultiMap() && MapSpaceMode!=MSM_MAP) ) { #ifdef DITHER LKPen BorderPen(PEN_SOLID, ScreenThinSize, INVERTCOLORS?RGB_WHITE:RGB_BLACK); #else LKPen BorderPen(PEN_SOLID, ScreenThinSize, INVERTCOLORS?RGB_GREEN:RGB_DARKGREEN); #endif auto OldPen = Surface.SelectObject(BorderPen); auto OldBrush = Surface.SelectObject(LK_HOLLOW_BRUSH); Surface.Rectangle(rc.left, rc.top, rc.right, rc.bottom - BottomSize); Surface.SelectObject(OldPen); Surface.SelectObject(OldBrush); } #endif #ifdef DRAWLKSTATUS if (LKevent==LKEVENT_NEWRUN) dodrawlkstatus=true; #endif // We are entering mapspacemodes with no initial check on configured subpages. // Thus we need to ensure that the page is really available, or find the first valid. // However, this will prevent direct customkey access to pages! // Instead, we do it when we call next page from InfoPageChange // if (!ConfIP[ModeIndex][CURTYPE]) NextModeType(); switch (MapSpaceMode) { case MSM_WELCOME: #if 0 SetModeType(LKMODE_MAP,MP_MOVING); RefreshMap(); break; #endif #if (1) if (!DrawInfo.NAVWarning) { static double firsttime=DrawInfo.Time; // delayed automatic exit from welcome mode if ( DrawInfo.Time > (firsttime+3.0) ) { SetModeType(LKMODE_MAP,MP_MOVING); LKevent=LKEVENT_NONE; LKSound(_T("LK_BEEP1.WAV")); RefreshMap(); break; } } #endif if(GlobalModelType==MODELTYPE_PNA_MINIMAP) { SetModeType(LKMODE_MAP,MP_MOVING); LKevent=LKEVENT_NONE; break; } DrawWelcome8000(Surface, rc); break; case MSM_MAPTRK: SetSideviewPage(IM_HEADING); LKDrawMultimap_Asp(Surface,rc); break; case MSM_MAPWPT: #if 0 // If there is no destination, force jump to the map if (GetOvertargetIndex()<0) { SetModeType(LKMODE_MAP,MP_MOVING); LKevent=LKEVENT_NONE; break; } #endif SetSideviewPage(IM_NEXT_WP); LKDrawMultimap_Asp(Surface,rc); break; case MSM_MAPASP: SetSideviewPage(IM_NEAR_AS); LKDrawMultimap_Asp(Surface,rc); break; case MSM_MAPRADAR: LKDrawMultimap_Radar(Surface,rc); break; case MSM_VISUALGLIDE: SetSideviewPage(IM_VISUALGLIDE); LKDrawMultimap_Asp(Surface,rc); break; case MSM_MAPTEST: LKDrawMultimap_Test(Surface,rc); break; case MSM_LANDABLE: case MSM_NEARTPS: case MSM_AIRPORTS: case MSM_COMMON: case MSM_RECENT: case MSM_AIRSPACES: case MSM_THERMALS: case MSM_TRAFFIC: DrawNearest(Surface, rc); break; case MSM_MAP: break; case MSM_INFO_THERMAL: case MSM_INFO_CRUISE: case MSM_INFO_TASK: case MSM_INFO_AUX: case MSM_INFO_TRI: case MSM_INFO_HSI: case MSM_INFO_TRF: case MSM_INFO_TARGET: case MSM_INFO_CONTEST: DrawInfoPage(Surface,rc, false); break; default: memset((void*)&TextDisplayMode, 0, sizeof(TextDisplayMode)); TextDisplayMode.Color = RGB_WHITE; TextDisplayMode.NoSetFont = 1; TextDisplayMode.AlligneCenter = 1; Surface.SelectObject(LK8TargetFont); _stprintf(Buffer,TEXT("MapSpaceMode=%d"),MapSpaceMode); TextInBox(Surface, &rc, Buffer, (rc.right+rc.left)/2, NIBLSCALE(50) , &TextDisplayMode, false); break; } #ifdef DRAWLKSTATUS // no need to clear dodrawlkstatus, it is already reset at each run if (dodrawlkstatus) DrawLKStatus(hdc, rc); #endif Surface.SelectObject(oldfont); }