void ScopeView::NewData(int16* data, bool non_null_frame) { // Ceci ralentit l'execution, alors ne l'utilisez que si vous faites du // resize dynamique de la vue de l'oscilloscope. //delete m_bitmap; //m_bitmap = new BBitmap(BRect(0, 0, m_w, m_h), B_COLOR_8_BIT); // Draw dark black backgroundB_TRANSPARENT_8_BIT memset((uint8 *)m_bitmap->Bits(), m_back_color, m_bitmap->BytesPerRow() * (size_t)m_h); //OliverESP transparent? // memset((uint8 *)m_bitmap->Bits(), B_TRANSPARENT_8_BIT, m_bitmap->BytesPerRow() * (size_t)m_h); //OliverESP transparent? //OliverESP: Null scope if (non_null_frame) // Remplir le bitmap des points correspondant au wave. FillBitmap((int16*)data,m_beam_color); else // Remplir le bitmap des points correspondant au wave. FillBitmap((int16*)data,m_null_color); // On affiche le bitmap a l'ecran. if( Window()->LockWithTimeout(100000) == B_OK ) { DrawBitmap(m_bitmap, Bounds(), BRect(0, 20, m_w, m_h)); Window()->Unlock(); } }
//--------------------------------------------------------------------------- void __fastcall TFileViewDlg::LoadCurrentBitmap(Graphics::TBitmap *pBitmap) { if( (m_CurFile < pCurPage->pList->Count) && (pCurPage->pList != NULL) ){ MultProc(); SetCurrentDirectory(pCurPage->m_Folder.c_str()); MultProc(); if( ::LoadImage(pBitmap, pCurPage->pList->Get(m_CurFile)) == FALSE ){ FillBitmap(pBitmap, clWhite); } } else { FillBitmap(pBitmap, clWhite); } }
//--------------------------------------------------------------------------- void __fastcall TFileViewDlg::LoadFile(Graphics::TBitmap *pBitmap, LPCSTR pName) { if( pCurPage->m_Type >= 3 ){ int xw = m_RectS.Right; int yw = m_RectS.Bottom; pBitmap->Width = xw; pBitmap->Height = yw; FillBitmap(pBitmap, clBtnFace); WORD Icon = 0; HICON hIcon = ::ExtractAssociatedIcon(HInstance, (LPSTR)pName, &Icon); if( hIcon != NULL ){ TIcon *pIcon = new TIcon; pIcon->Handle = hIcon; pBitmap->Canvas->Draw((xw - pIcon->Width)/2, (yw >= 64) ? (yw - pIcon->Height)/2 : 0, pIcon); delete pIcon; } pBitmap->Canvas->Font->Height = -12; int fw = pBitmap->Canvas->TextWidth(pName); int fh = pBitmap->Canvas->TextHeight(pName); int tm = ::SetBkMode(pBitmap->Canvas->Handle, TRANSPARENT); int x = (xw - fw) / 2; if( x < 0 ) x = 0; pBitmap->Canvas->TextOut(x, hIcon != NULL ? yw - fh : (yw - fh)/2, pName); ::SetBkMode(pBitmap->Canvas->Handle, tm); } else if( pCurPage->m_Type ){ CDrawGroup *pGroup = new CDrawGroup; if( LoadTemplate(pGroup, pName, pBitmap->Canvas) == TRUE ){ pBitmap->Width = pGroup->m_SX; pBitmap->Height = pGroup->m_SY; FillBitmap(pBitmap, pGroup->m_TransCol); MultProc(); pGroup->Draw(pBitmap->Canvas); } pGroup->FreeItem(); delete pGroup; } else { ::LoadImage(pBitmap, pName); } }
//--------------------------------------------------------------------------- void __fastcall TFileViewDlg::MakeThImage(int mm) { int mc = mm*mm; if( (m_CurFile < 0) || (pCurPage->pList == NULL) ) return; Mmsstv->pBitmapTXM = RemakeBitmap(Mmsstv->pBitmapTXM, -1); FillBitmap(Mmsstv->pBitmapTXM, sys.m_PicClipColor); Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); Graphics::TBitmap *pBitmapQ = new Graphics::TBitmap(); MultProc(); SetCurrentDirectory(pCurPage->m_Folder.c_str()); MultProc(); int Y1 = 0; // int Y2 = Mmsstv->pBitmapTXM->Height; int Y2 = Mmsstv->m_TXPH; int X2 = Mmsstv->pBitmapTXM->Width; if( Mmsstv->SBUseTemp->Down && Mmsstv->DrawMain.m_Cnt ){ Mmsstv->DrawMain.GetColorBarPos(Y1, Y2); } int XW = X2 / mm; int YW = (Y2-Y1) / mm; int x, y, i; int n = m_CurFile; for( i = 0; i < mc; i++, n++ ){ MultProc(); if( n >= pCurPage->pList->Count ) n = 0; ::LoadImage(pBitmap, pCurPage->pList->Get(n)); x = (i % mm) * XW; y = Y1 + ((i / mm) * YW); if( ((i % mm) == (mm - 1)) && (x + XW) != X2 ){ pBitmapQ->Width = X2 - x; } else { pBitmapQ->Width = XW; } if( ((i / mm) == (mm - 1)) && (y + YW) != Y2 ){ pBitmapQ->Height = Y2 - y; } else { pBitmapQ->Height = YW; } MultProc(); StretchCopyBitmapHW(pBitmapQ, pBitmap); Mmsstv->pBitmapTXM->Canvas->Draw(x, y, pBitmapQ); MultProc(); } delete pBitmapQ; delete pBitmap; Mmsstv->UpdatePic(); }
//--------------------------------------------------------------------- void __fastcall TLogPicDlg::LoadPic(void) { m_Cur = 0; int i; for( i = 0; i < m_Cnt; i++ ){ char fname[256]; char abf[2]; abf[0] = abf[1] = 0; if( LastC(sys.m_AutoSaveDir.c_str()) != '\\' ) abf[0] = '\\'; sprintf(fname, "%s%s20%s.jpg", sys.m_AutoSaveDir.c_str(), abf, m_List[i].c_str()); if( LoadJPEG(pBitmapS[i], fname) != TRUE ){ sprintf(fname, "%s%s20%s.bmp", sys.m_AutoSaveDir.c_str(), abf, m_List[i].c_str()); if( LoadBitmap(pBitmapS[i], fname) != TRUE ){ FillBitmap(pBitmapS[i], clWhite); } } } pBitmap->Assign(pBitmapS[0]); }
//--------------------------------------------------------------------------- void __fastcall TFileViewDlg::LoadImage(void) { if( !m_Max ) return; if( pCurPage->pList == NULL ) LoadFileList(); m_CurFile = -1; UpdateStat(); CWaitCursor wait; MultProc(); SetCurrentDirectory(pCurPage->m_Folder.c_str()); Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); pBitmap->PixelFormat = pf24bit; pBitmap->Width = 16; pBitmap->Height = 16; MultProc(); int i; int n = pCurPage->m_CurPage * m_Max; SetBitmapSize(); for( i = 0; i < m_Max; i++, n++ ){ TRect rc; GetRect(rc, i); if( n < pCurPage->pList->Count ){ USHORT crc; LPCSTR pn = pCurPage->pList->Get(crc, n); if( !pCurPage->m_Thumb.LoadThumb(n, pCurPage->pBitmapS, rc, crc, pCurPage->m_Size[i]) ){ LoadFile(pBitmap, pn); pCurPage->m_Size[i] = (pBitmap->Height << 16) + pBitmap->Width; Graphics::TBitmap *pBitmapT = CreateBitmap(m_RectS.Right, m_RectS.Bottom, -1); ::SetStretchBltMode(pBitmapT->Canvas->Handle, HALFTONE); MultProcA(); if( sys.m_FileViewKeep ){ FillBitmap(pBitmapT, clGray); if( ((pBitmap->Width <= pBitmapT->Width) && (pBitmap->Height <= pBitmapT->Height)) ){ pBitmapT->Canvas->Draw(0, 0, pBitmap); } else { KeepAspectDraw(pBitmapT->Canvas, pBitmapT->Width, pBitmapT->Height, pBitmap); } } else { pBitmapT->Canvas->StretchDraw(m_RectS, pBitmap); } pCurPage->m_Thumb.SaveThumb(n, pBitmapT, m_RectS, crc, pCurPage->m_Size[i]); pCurPage->pBitmapS->Canvas->CopyRect(rc, pBitmapT->Canvas, m_RectS); if( pBox[i] != NULL ){ pBox[i]->Canvas->Draw(0, 0, pBitmapT); } delete pBitmapT; } } else { pCurPage->pBitmapS->Canvas->Brush->Style = bsSolid; pCurPage->pBitmapS->Canvas->Brush->Color = clWhite; pCurPage->pBitmapS->Canvas->FillRect(rc); } MultProc(); } delete pBitmap; UpdateBitmap(); }