void CDBPickView::DrawWindow(int nWindow, CDC *pDC) { CBrush WhiteBrush(RGB(255,255,255)); CBrush GrayBrush(RGB(192,192,192)); CBrush BlueBrush(RGB(0,0,128)); CPen WhitePen(PS_SOLID,1,RGB(255,255,255)); CPen DarkPen(PS_SOLID,1,RGB(0,0,0)); CPen BluePen(PS_SOLID,1,RGB(0,0,255)); CPen YellowPen(PS_SOLID,1,RGB(255,255,0)); int xw1=WaveformInfo[nWindow]->xw1; int xw2=WaveformInfo[nWindow]->xw2; int yw1=WaveformInfo[nWindow]->yw1; int yw2=WaveformInfo[nWindow]->yw2; int x1=WaveformInfo[nWindow]->x1; int x2=WaveformInfo[nWindow]->x2; int y1=WaveformInfo[nWindow]->y1; int y2=WaveformInfo[nWindow]->y2; long amin=WaveformInfo[nWindow]->amin; long amax=WaveformInfo[nWindow]->amax; CPen *oldPen=pDC->GetCurrentPen(); CFont *oldFont=pDC->GetCurrentFont(); CBrush *oldBrush=pDC->GetCurrentBrush(); CRect rc(xw1, MaxY-yw2, xw2, MaxY-yw1); pDC->FillRect(&rc, &BlueBrush); pDC->SelectObject(&DarkPen); //*********************************************************** pDC->SelectObject(&WhitePen); pDC->MoveTo(xw1,MaxY-yw2); pDC->LineTo(xw2,MaxY-yw2); pDC->MoveTo(xw1,MaxY-yw2); pDC->LineTo(xw1,MaxY-yw1); pDC->MoveTo(xw1+1,MaxY-yw2); pDC->LineTo(xw1+1,MaxY-yw1); pDC->SelectObject(&DarkPen); pDC->MoveTo(xw2,MaxY-yw1); pDC->LineTo(xw2,MaxY-yw2); pDC->MoveTo(xw2,MaxY-yw1); pDC->LineTo(xw1,MaxY-yw1); pDC->SelectObject(&DarkPen); pDC->MoveTo(xw1+WindowInfoXsize,MaxY-yw1); pDC->LineTo(xw1+WindowInfoXsize,MaxY-yw2); pDC->SelectObject(&WhitePen); pDC->MoveTo(xw1+WindowInfoXsize+1,MaxY-yw1); pDC->LineTo(xw1+WindowInfoXsize+1,MaxY-yw2); pDC->MoveTo(xw1+WindowInfoXsize+2,MaxY-yw1); pDC->LineTo(xw1+WindowInfoXsize+2,MaxY-yw2); //************************************************************* // Draw Ampl (Y) Axis // CRect rc1(xw1, MaxY-yw2, xw1+WindowInfoXsize-1, MaxY-yw1); pDC->FillRect(&rc1, &GrayBrush); pDC->SelectObject(&DarkPen); pDC->SetTextColor(RGB(0,0,0)); pDC->MoveTo(xw1+WindowInfoXsize-8,MaxY-(yw1+8)); pDC->LineTo(xw1+WindowInfoXsize-8,MaxY-(yw2-8)); pDC->MoveTo(xw1+WindowInfoXsize-8,MaxY-(yw1+8)); pDC->LineTo(xw1+WindowInfoXsize-8+4,MaxY-(yw1+8)); pDC->MoveTo(xw1+WindowInfoXsize-8,MaxY-(yw2-8)); pDC->LineTo(xw1+WindowInfoXsize-8+4,MaxY-(yw2-8)); pDC->SelectObject(&WhitePen); { RECT rcText; char cText[64]; sprintf(cText,"%d",amax); CRect rcc1(xw1,MaxY-(yw2-8),xw1+WindowInfoXsize-8-2, MaxY-(yw2-8-13)); pDC->DrawText(cText,rcc1,DT_RIGHT); sprintf(cText,"%d",amin); GetTextRectangle(cText, rcText); CRect rcc2(xw1,MaxY-(yw1+8+13),xw1+WindowInfoXsize-8-2, MaxY-(yw1-8)); pDC->DrawText(cText,rcc2,DT_RIGHT); CRect rcc3(xw1+5,(MaxY-yw2),xw1+WindowInfoXsize-8-2, (MaxY-yw1)); sprintf(cText,"%s::%s",WaveformInfo[nWindow]->StaName, WaveformInfo[nWindow]->ChanName); pDC->DrawText(cText,rcc3, DT_VCENTER|DT_SINGLELINE ); } //************************************************************** int nXferBlocks=this->pRTDisplay->WaveformInfo[nWindow]->xferData.GetSize(); double ttt=-1.; double dSpS=WaveformInfo[nWindow]->dSpS; pDC->SelectObject(&YellowPen); for(int j=0; j<nXferBlocks; ++j) { CDataBlock *xfd=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]; double t1packet=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->beg; double t2packet=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->end; int nsamp=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->nsamp; for(int k=0; k<nsamp; ++k) { long a=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->data[k]; double tt=t1packet+(1./dSpS)*k; int x,y; if(tt<t1) continue; if(tt>t2) break; x=(int)((tt-t1)*(x2-x1)/(t2-t1)+x1); if(a>amax) a=amax; if(a<amin) a=amin; y=(a-amin)*(y2-y1)/(amax-amin)+y1; y=MaxY-y; if(tt-ttt>1.1/dSpS) { pDC->MoveTo(x,y); } else { pDC->LineTo(x,y); } ttt=tt; } } DrawGaps(nWindow,pDC); pDC->SelectObject(oldPen); pDC->SelectObject(oldBrush); pDC->SelectObject(oldFont); }
void TeamsWindow::UpdateMemoryImage( void ) { PaintRealWindow prw(Handle()); PaintCompatibleWindow pcw_client(prw.DC()); PaintCompatibleWindow pcw_car(prw.DC()); HPALETTE hOldPalette; HPALETTE hOldPalette2; Cursor cursor(IDC_WAIT); unsigned short usX; unsigned short usY; unsigned short usTmpX; unsigned short usTmpY; unsigned short usTeamIndex; unsigned short i; cursor.Select(); { hOldPalette = SelectPalette(pcw_client.DC(), hPalette, FALSE); hOldPalette2 = SelectPalette(pcw_car.DC(), hPalette, FALSE); ASSERT(pClientBitmap != NULL); pcw_client.SelectBitmap(pClientBitmap); ASSERT(pF1CarSmallBitmap != NULL); pcw_car.SelectBitmap(pF1CarSmallBitmap); { RECT rRect; SolidBrush GrayBrush(RGB(192,192,192)); rRect.left = 0; rRect.right = usClientWidth; rRect.top = 0; rRect.bottom = usClientHeight; pcw_client.FillRect(&rRect, &GrayBrush); usTeamIndex = 0; for (usY = 0; usY < TEAMS_NUM_Y; usY++) { for (usX = 0; usX < TEAMS_NUM_X; usX++) { usTmpX = (usX % TEAMS_NUM_X) * usMiniCarWidth; usTmpY = (usY % TEAMS_NUM_Y) * usMiniCarHeight; for (i = 0; i < NUM_ELEMENTS(car_regions); i++) { (void) SelectObject(pcw_car.DC(), car_regions[i].hRgn); SolidBrush brush(PALETTEINDEX(team_colours[usTeamIndex].usRegionColour[i])); (void) FillRgn(pcw_car.DC(), car_regions[i].hRgn, (HBRUSH) brush.Handle()); } BitBlt( pcw_client.DC(), usTmpX, usTmpY, pF1CarSmallBitmap->Width(), pF1CarSmallBitmap->Height(), pcw_car.DC(), 0, 0, SRCCOPY ); (void) FrameTeam(&pcw_client, usTeamIndex, usTeamIndex == usSelectedTeam); ++usTeamIndex; } } } pcw_client.DeselectBitmap(); pcw_car.DeselectBitmap(); (void) SelectPalette(pcw_client.DC(), hOldPalette, FALSE); (void) SelectPalette(pcw_car.DC(), hOldPalette2, FALSE); } cursor.Deselect(); RepaintWindow(); }
void CDBPickView::DrawWaveforms() { CWaitCursor wc; this->pRTDisplay->Critical.Lock(); RECT rc; CDC MemDC; CDC *pDC=GetDC(); CBitmap Bitmap1; CalculateWindowsSize(); rc.left=rc.top=0; rc.right=MaxX; rc.bottom=MaxY; Bitmap1.CreateCompatibleBitmap(pDC,rc.right,rc.bottom); MemDC.CreateCompatibleDC(pDC); ReleaseDC(pDC); CBitmap *poldBMP=MemDC.SelectObject(&Bitmap1); CBrush WhiteBrush(RGB(255,255,255)); CBrush GrayBrush(RGB(192,192,192)); CBrush BlueBrush(RGB(0,0,128)); CPen WhitePen(PS_SOLID,1,RGB(255,255,255)); CPen DarkPen(PS_SOLID,1,RGB(0,0,0)); CPen BluePen(PS_SOLID,1,RGB(0,0,255)); CPen YellowPen(PS_SOLID,1,RGB(255,255,0)); CPen WhitePen2(PS_SOLID,2,RGB(255,255,255)); CPen GrayPen2(PS_SOLID,2,RGB(128,128,128)); CPen *oldPen=MemDC.GetCurrentPen(); CFont *oldFont=MemDC.GetCurrentFont(); CBrush *oldBrush=MemDC.GetCurrentBrush(); MemDC.SetBkMode(TRANSPARENT); MemDC.FillRect(&rc, &BlueBrush); MemDC.SelectObject(CFont::FromHandle((HFONT)GetStockObject(ANSI_VAR_FONT))); MemDC.SelectObject(&DarkPen); MemDC.MoveTo(0,0); MemDC.LineTo(0,MaxY); DrawTimePanel(&MemDC); for(int i=0; i<WaveformInfo.GetSize(); ++i) { DrawWindow(i,&MemDC); } MemDC.SelectObject(poldBMP); MemDC.SelectObject(oldPen); MemDC.SelectObject(oldBrush); MemDC.SelectObject(oldFont); MemDC.DeleteDC(); this->pRTDisplay->Critical.Unlock(); ScreenBitmapCriticalSection.Lock(); if(Bitmap.m_hObject!=NULL) { Bitmap.DeleteObject(); } HGDIOBJ pBmp=Bitmap1.Detach(); Bitmap.Attach(pBmp); ScreenBitmapCriticalSection.Unlock(); InvalidateRect(NULL,FALSE); }
void CPreview::DrawPreviewBitmap() { if(!bContinue) return; MaxX=width(); MaxY=height(); QPixmap tmpBitmap(MaxX, MaxY); QPainter DC(&tmpBitmap); QRect rc=rect(); x1=4; x2=MaxX-4; y1=4; y2=MaxY-4; xw1=1; xw2=MaxX; yw1=0; yw2=MaxY; QBrush WhiteBrush(QColor(255,255,255)); QBrush GrayBrush(QColor(192,192,192)); QBrush BlueBrush(QColor(0,0,255)); QPen WhitePen(QColor(255,255,255)); QPen DarkPen(QColor(0,0,0)); QPen BluePen(QColor(0,0,255)); QPen YellowPen(QColor(255,255,0)); QPen WhitePen2(QColor(255,255,255),2); QPen GrayPen2(QColor(128,128,128),2); //******************************************************************** DC.setPen(BluePen); DC.fillRect(rc, BlueBrush); // DC.SelectObject(CFont::FromHandle((HFONT)GetStockObject(ANSI_VAR_FONT))); int xl=(int)((pDisplay->t1 - pDisplay->tB1)*(x2-x1)/(pDisplay->tB2-pDisplay->tB1)+x1+0.5); int xr=(int)((pDisplay->t2 - pDisplay->tB1)*(x2-x1)/(pDisplay->tB2-pDisplay->tB1)+x1+0.5); DC.setPen(WhitePen2); DC.moveTo(xw1,MaxY-yw2); DC.lineTo(xw2,MaxY-yw2); DC.moveTo(xw1,MaxY-yw2); DC.lineTo(xw1,MaxY-yw1); DC.setPen(GrayPen2); DC.moveTo(xw2,MaxY-yw1); DC.lineTo(xw2,MaxY-yw2); DC.moveTo(xw2,MaxY-yw1); DC.lineTo(xw1,MaxY-yw1); DrawWaveform(DC); DC.setPen(WhitePen2); DC.moveTo(xl,MaxY-y1); DC.lineTo(xr,MaxY-y1); DC.lineTo(xr,MaxY-y2); DC.lineTo(xl,MaxY-y2); DC.lineTo(xl,MaxY-y1); //******************************************************************** ScreenBitmapCriticalSection.lock(); Bitmap=tmpBitmap; bDrawBitmap=TRUE; ScreenBitmapCriticalSection.unlock(); repaint(FALSE); }