//========================================================================= //----- (000068D4) -------------------------------------------------------- __myevic__ void ShowNewCoil() { int rez; DrawStringCentered( String_NewCoil, 50 ); DrawValue( 16, 62, dfResistance, 2, 0x0B, 3 ); DrawImage( 40, 62, 0xC0 ); DrawStringCentered( String_Right, 74 ); DrawStringCentered( String_SameCoil, 90 ); if ( ISMODETC( dfMode ) ) { if ( dfMode == 0 ) { rez = dfRezNI; } else if ( dfMode == 1 ) { rez = dfRezTI; } else if ( dfMode == 2 ) { rez = dfRezSS; } else if ( dfMode == 3 ) { rez = dfRezTCR; } DrawValue( 16, 102, rez, 2, 11, 3 ); } DrawImage( 40, 102, 0xC0 ); DrawStringCentered( String_Left, 114 ); }
__myevic__ void ShowContrast() { int pc, nd, x; DrawString( String_Contrast, 4, 6 ); DrawHLine( 0, 16, 63, 1 ); pc = ( ( 100 * dfContrast ) / 255 ); nd = ( pc < 100 ? pc < 10 ? 1 : 2 : 3 ); x = ( 64 - ( 6 * nd + 9 )) / 2; DrawValue( x, 20, pc, 0, 0x0B, 0 ); DrawImage( x + 6 * nd, 20, 0xC2 ); DrawFillRect( 0, 32, 63, 44, 1 ); DrawFillRect( 1, 33, 62, 43, 0 ); if ( dfContrast ) { DrawFillRect( 2, 34, 2 + ( ( 59 * dfContrast ) / 255 ), 42, 1 ); } DrawStringCentered( String_Fireto, 57 ); DrawStringCentered( ( gFlags.edit_capture_evt ) ? String_Exit : String_Edit, 67 ); if ( !(dfStatus.nologo) ) DrawLOGO( 0, 88 ); }
///////////////////////////////////////////////////////////////////////////// // CMultiColorPlotCtrl message handlers void CMultiColorPlotCtrl::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // 获得控件区域 GetClientRect (&m_rectCtrl); // 创建内存 DC CMemDC *pMemDC = new CMemDC(&dc, &m_rectCtrl); CPoint orgBrushOrigin = pMemDC->GetBrushOrg () ; if(m_dcBackground.GetSafeHdc() == NULL || m_pBitmapBackground.m_hObject == NULL) { m_dcBackground.CreateCompatibleDC(&dc); m_pBitmapBackground.CreateCompatibleBitmap(&dc, m_rectCtrl.Width(),m_rectCtrl.Height()) ; m_pBitmapOldBackground = m_dcBackground.SelectObject(&m_pBitmapBackground) ; InitColorPlot(&m_dcBackground); } pMemDC->BitBlt(0, 0, m_rectCtrl.Width(), m_rectCtrl.Height(), &m_dcBackground, 0, 0, SRCCOPY) ; //画曲线背景和网格 DrawBackGroundGrid(pMemDC); //画曲线数据 DrawValue(pMemDC); //画曲线Y刻度 DrawAxisScaleYValue(pMemDC); pMemDC->SetBrushOrg ( orgBrushOrigin.x , orgBrushOrigin.y ) ; delete pMemDC ; // Do not call CStatic::OnPaint() for painting messages }
//========================================================================= //----- (000072EC) -------------------------------------------------------- __myevic__ void ShowTCRSet() { int i; int line; DrawString( String_TCRSet, 7, 6 ); DrawHLine( 0, 22, 63, 1 ); if ( gFlags.edit_tcr_value ) { for ( i = 0 ; i < 3 ; ++i ) { if ( EditTCRIndex == i ) { DrawFillRect( 28, 25 * i + 30, 62, 25 * i + 52, 1 ); DrawValueInv(30, 25 * i + 36, dfTCRM[i], 0, 0x1F, 4); } else { DrawValue( 30, 25 * i + 36, dfTCRM[i], 0, 0x1F, 4 ); } line = 25 * i + 33; DrawImage( 0, line, 0xED ); DrawImage( 15, line, 0xEE + i ); } } else { for ( i = 0 ; i < 3 ; ++i ) { line = 25 * i + 33; if ( EditTCRIndex == i ) { DrawImageInv( 0, line, 0xED ); DrawImageInv( 15, line, 0xEE + i ); DrawFillRect( 25, line, 30, line + 16, 0); } else { DrawImage( 0, line, 0xED ); DrawImage( 15, line, 0xEE + i ); } DrawValue( 30, 25 * i + 36, dfTCRM[i], 0, 0x1F, 4 ); } } }
__myevic__ void ShowRTCSpeed() { unsigned int cs; S_RTC_TIME_DATA_T rtd; DrawString( String_ClkSpeed, 4, 6 ); DrawHLine( 0, 16, 63, 1 ); GetRTC( &rtd ); DrawTimeSmall( 12, 20, &rtd, 0x1F ); cs = RTCGetClockSpeed(); DrawValue( 12, 40, cs, 0, 0x1F, 5 ); }
void AngularMeter::OnPaint(wxPaintEvent &event) { wxPaintDC old_dc(this); // wxPaintDC dc((wxWindow *) this); int w,h ; GetClientSize(&w,&h); if (w != _currentWidth || h != _currentHeight){ delete (_memBitmap); _currentWidth = w; _currentHeight = h; _memBitmap = new wxBitmap(_currentWidth, _currentHeight); } ///////////////// // Create a memory DC wxMemoryDC dc; dc.SelectObject(*_memBitmap); dc.SetBackground(*wxTheBrushList->FindOrCreateBrush(_backgroundColor,wxSOLID)); dc.SetBrush(*wxTheBrushList->FindOrCreateBrush(_backgroundColor,wxSOLID)); dc.Clear(); /////////////////// //Rettangolo dc.SetPen(*wxThePenList->FindOrCreatePen(_borderColor, 1, wxSOLID)); dc.DrawRectangle(0,0,w,h); //settori DrawSectors(dc) ; //tacche DrawTicks( dc ); //indicatore lancetta DrawLabel(dc); //testo valore if (_shouldDrawCurrent) DrawValue(dc); DrawNeedle(dc); //blit into the real DC old_dc.Blit(0,0,_currentWidth,_currentHeight,&dc,0,0); }
__myevic__ void CoilsIDraw( int it, int line, int sel ) { if ( it > 3 ) return; DrawFillRect( 32, line, 63, line+12, 0 ); int rez = 0; short img = 0xC0; switch ( it ) { case 0 : rez = dfRezNI; if (dfRezLockedNI) img = 0xC3; break; case 1 : rez = dfRezTI; if (dfRezLockedTI) img = 0xC3; break; case 2 : rez = dfRezSS; if (dfRezLockedSS) img = 0xC3; break; case 3 : rez = dfRezTCR; if (dfRezLockedTCR) img = 0xC3; break; } DrawValue( 34, line+2, rez, 2, 0x0B, 3 ); DrawImage( 56, line+2, img ); }
__myevic__ void ScreenSaveMenuIDraw( int it, int line, int sel ) { if ( ScrSaveTimes[it] ) { if ( sel ) { DrawFillRect( 0, line, 63, line+12, 1 ); DrawValueInv( 4, line+2, ScrSaveTimes[it], 0, 0x0B, 0 ); DrawStringInv( String_Min, 32, line+2 ); } else { DrawValue( 4, line+2, ScrSaveTimes[it], 0, 0x0B, 0 ); DrawString( String_Min, 32, line+2 ); } } }
void MeterM1::OnPaint() { CPaintDC dc(this); // device context for painting // 获得控件区域 GetClientRect (&m_rectCtrl); CMemDC memDC(&dc, &m_rectCtrl); // 选取圆盘边框半径 m_nRadiusFrame = max(m_rectCtrl.Height(), m_rectCtrl.Width())*9/21; // 获得仪表盘中心点 m_ptMeterCenter = m_rectCtrl.CenterPoint(); m_ptMeterCenter.y += m_nRadiusFrame/10; //绘制仪表盘 if(m_dcBackground.GetSafeHdc()== NULL|| (m_bitmapBackground.m_hObject == NULL)) { m_dcBackground.CreateCompatibleDC(&dc); m_bitmapBackground.CreateCompatibleBitmap(&dc, m_rectCtrl.Width(), m_rectCtrl.Height()) ; m_pBitmapOldBackground = m_dcBackground.SelectObject(&m_bitmapBackground) ; DrawMeterBackground(&m_dcBackground, m_rectCtrl); } memDC.BitBlt(0, 0, m_rectCtrl.Width(), m_rectCtrl.Height(), &m_dcBackground, 0, 0, SRCCOPY) ; // 绘制指针 DrawNeedle(&memDC); DrawNode(&memDC); DrawValue(&memDC); // Do not call CStatic::OnPaint() for painting messages }
int RepValue(int nRepStatus) const { int vlReturn; vlReturn = ((nRepStatus & 2) == 0 ? 0 : nDistance - BAN_VALUE) + ((nRepStatus & 4) == 0 ? 0 : BAN_VALUE - nDistance); return vlReturn == 0 ? DrawValue() : vlReturn; }
//========================================================================= //----- (00007684) -------------------------------------------------------- __myevic__ void ShowVersion() { DrawStringCentered( String_Version, 88 ); DrawValue( 6, 102, 303, 2, 0x52, 3 ); }
//========================================================================= //----- (00006874) -------------------------------------------------------- __myevic__ void ShowBoardTemp() { DrawStringCentered( String_Temp, 88 ); DrawValue( 16, 102, BoardTemp, 0, 0x52, 2 ); }
//========================================================================= //----- (0000683C) -------------------------------------------------------- __myevic__ void ShowBattVolts() { DrawStringCentered( String_Battery, 88 ); DrawValue( 6, 102, BatteryVoltage, 2, 0x29, 3 ); DrawImage( 46, 102, 0xB8 ); }
__myevic__ void DrawScreen() { if ( Screen == 2 && FireDuration && FireDuration != CurrentFD ) { CurrentFD = FireDuration; ScreenDuration = 1; ShowFDTimer = 0; gFlags.refresh_display = 1; } if ( gFlags.refresh_display ) { gFlags.refresh_display = 0; ClearScreenBuffer(); switch ( Screen ) { case 0: // Black break; case 1: // Main view case 3: // Main view (?) case 4: // (unused?) ShowMainView(); break; case 2: // Firing if ( !dfStealthOn ) { ShowMainView(); } break; case 5: // Black w/ Battery ShowBatCharging(); break; case 20: // No Atomizer Found ShowNoAtoFound(); break; case 21: // Atomizer Short ShowAtoShort(); break; case 22: // Atomizer Low ShowAtoLow(); break; case 23: // 10s Protection Show10sProtec(); break; case 24: // Battery Low ShowBatLow(); break; case 25: // Battery Low Lock ShowBatLowLock(); break; case 28: // Key Lock ShowKeyLock(); break; case 29: // Device too hot ShowDevTooHot(); break; case 31: // Key UnLock ShowKeyUnLock(); break; case 37: // Board Temp ShowBoardTemp(); break; case 40: // Stealth ON/OFF ShowStealthMode(); break; case 41: // Ti ON/OFF ShowTiOnOff(); break; case 50: // FW Version ShowVersion(); break; case 51: // New Coil ShowNewCoil(); break; case 54: // Battery Voltage ShowBattVolts(); break; case 59: // TCR Set Menu ShowTCRSet(); break; case 82: // LOGO Menu ShowLOGOMenu(); break; case 83: // Game Menu ShowGameMenu(); break; case 100: ShowInfos(); break; case 101: ShowContrast(); break; case 102: ShowMenus(); break; case 103: ShowRTCSpeed(); break; case 104: ShowRTCAdjust(); break; default: break; } if ( myDbgFlag & 1 ) { int nd = (Screen<100?Screen<10?1:2:3); DrawValue( 64-6*nd, 120, Screen, 0, 0x01, nd ); DrawValue( 0, 120, ScreenDuration, 0, 0x01, 0 ); } DisplayRefresh(); } if (( gFlags.firing ) && ISMODETC(dfMode)) { ShowFDTimer += 5; } else { ShowFDTimer += 1; } if ( ShowFDTimer < 10 ) return; ShowFDTimer = 0; if ( ScreenDuration && --ScreenDuration ) return; switch ( Screen ) { case 0: // Black if ( dfStatus.off ) { SleepTimer = 0; } break; case 2: // Firing if ( dfStealthOn ) { gFlags.refresh_display = 1; if ( !(gFlags.battery_charging) ) { Screen = 0; SleepTimer = 18000; } else { Screen = 5; } } else { MainView(); } break; case 5: // Black w/ Battery break; case 20: // No Atomizer Found case 21: // Atomizer Short MainView(); break; case 22: // Atomizer Low case 23: // 10s Protection case 24: // Battery Low case 25: // Battery Low Lock break; case 29: // Device too hot MainView(); break; case 101: // Contrast Menu case 102: // Menus case 103: // RTC Speed gFlags.edit_capture_evt = 0; // NOBREAK case 59: // TCR Set Menu case 82: // LOGO Menu case 83: // Game Menu UpdateDataFlash(); // NOBREAK case 1: // Main view case 28: // Key Lock case 31: // Key UnLock case 37: // Board Temp case 40: // Stealth ON/OFF case 41: // Ti ON/OFF case 54: // Battery Voltage case 100: // Ferox's page case 104: // Adjust Clock if ( !dfScreenSave ) { if ( Screen != 1 ) MainView(); break; } if ( !(gFlags.battery_charging) ) { gFlags.refresh_display = 1; Screen = 0; SleepTimer = 18000; } else { Screen = 5; } break; case 50: // FW Version break; case 51: // New Coil MainView(); break; default: break; } return; }
//========================================================================= // Additional initialisations //------------------------------------------------------------------------- __myevic__ void CustomStartup() { //------------------------------------------------------------------------- // EADC test if ( 0 ) { uint32_t s1, s2, s3; SetADCState( 0, 1 ); SetADCState( 4, 1 ); do { ClearScreenBuffer(); CLK_SysTickDelay( 10 ); s3 = ADC_Read( 4 ); CLK_SysTickDelay( 10 ); s1 = ADC_Read( 18 ); CLK_SysTickDelay( 10 ); s2 = ADC_Read( 0 ); DrawValue( 8, 0, s1, 0, 0x29, 4 ); DrawValue( 8, 20, s2, 0, 0x29, 4 ); DrawValue( 8, 40, s3, 0, 0x29, 4 ); DisplayRefresh(); WaitOnTMR2( 1000 ); } while ( PD3 ); } //------------------------------------------------------------------------- // Timer test 1 if ( 0 ) { TIMER_Stop( TIMER3 ); TIMER_Close( TIMER3 ); MemClear( gPlayfield.uc, 256 ); CLK_SetModuleClock( TMR3_MODULE, CLK_CLKSEL1_TMR3SEL_LIRC, 0 ); gPlayfield.ul[1] = TIMER_Open( TIMER3, TIMER_PERIODIC_MODE, 10 ); TIMER_EnableInt( TIMER3 ); TIMER_Start( TIMER3 ); } //------------------------------------------------------------------------- // Timer test 2 if ( 0 ) { TIMER_Close( TIMER2 ); TIMER_Close( TIMER3 ); MemClear( gPlayfield.uc, 256 ); CLK_SetModuleClock( TMR2_MODULE, CLK_CLKSEL1_TMR2SEL_HXT, 0 ); CLK_SetModuleClock( TMR3_MODULE, CLK_CLKSEL1_TMR3SEL_LIRC, 0 ); CLK_EnableModuleClock( TMR2_MODULE ); CLK_EnableModuleClock( TMR3_MODULE ); __set_PRIMASK(1); TIMER3->CTL |= TIMER_CTL_RSTCNT_Msk; TIMER2->CTL |= TIMER_CTL_RSTCNT_Msk; TIMER3->CMP = 1000; TIMER3->CTL = TIMER_CTL_CNTEN_Msk | TIMER_ONESHOT_MODE; TIMER2->CTL = TIMER_CTL_CNTEN_Msk | TIMER_CONTINUOUS_MODE; while(!(TIMER3->INTSTS & TIMER_INTSTS_TIF_Msk)); TIMER2->CTL = 0; gPlayfield.ul[0] = TIMER2->CNT; __set_PRIMASK(0); TIMER_Close( TIMER2 ); TIMER_Close( TIMER3 ); CLK_SetModuleClock( TMR2_MODULE, CLK_CLKSEL1_TMR2SEL_HIRC, 0 ); CLK_EnableModuleClock( TMR2_MODULE ); TIMER_Open( TIMER2, TIMER_PERIODIC_MODE, 1000 ); TIMER_EnableInt( TIMER2 ); TIMER_Start( TIMER2 ); CLK_SetModuleClock( TMR3_MODULE, CLK_CLKSEL1_TMR3SEL_HXT, 0 ); CLK_EnableModuleClock( TMR3_MODULE ); TIMER_Open( TIMER3, TIMER_PERIODIC_MODE, 10 ); TIMER_EnableInt( TIMER3 ); TIMER_Start( TIMER3 ); } return; }