BOOL CQC_EyesDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here GetDlgItem( IDC_REFERENCE_FILENAME )->SetWindowText( "filename_reference" ); GetDlgItem( IDC_EXPRESSIONS_FILENAME )->SetWindowText( "filename_expressions" ); GetDlgItem( IDC_MODEL_FILENAME )->SetWindowText( "filename_model" ); GetDlgItem( IDC_IRIS_SIZE )->SetWindowText( "0.63" ); GetDlgItem( IDC_EYEBALL_SIZE )->SetWindowText( "1.0" ); ::SendMessage( ::GetDlgItem( m_hWnd, IDC_Y_AXIS_UP ), BM_SETCHECK, BST_CHECKED, 0 ); ::SendMessage( ::GetDlgItem( m_hWnd, IDC_DEFAULT_CONTROLS ), BM_SETCHECK, BST_CHECKED, 0 ); ::SendMessage( ::GetDlgItem( m_hWnd, IDC_IRIS_COLOR_BROWN ), BM_SETCHECK, BST_CHECKED, 0 ); ::SendMessage( ::GetDlgItem( m_hWnd, IDC_EYE_COLOR_LIGHT ), BM_SETCHECK, BST_CHECKED, 0 ); m_hOutputText = ::GetDlgItem( m_hWnd, IDC_OUTPUT_TEXT ); m_PictureControl.SetBitmap( GetCachedBitmap( IDB_EYE_DEFAULT ) ); OnDefaultControls(); // Hide the advanced controls. return TRUE; // return TRUE unless you set the focus to a control }
void CQC_EyesDlg::SetupBitmapLabel( UINT iBitmapResourceID, const char *pString, ... ) { char msg[4096]; va_list marker; va_start( marker, pString ); _vsnprintf( msg, sizeof( msg ), pString, marker ); msg[ ARRAYSIZE(msg) - 1 ] = 0; va_end( marker ); m_PictureControl.SetBitmap( GetCachedBitmap( iBitmapResourceID ) ); GetDlgItem( IDC_PICTURE_LABEL )->SetWindowText( msg ); }
void AudioRenderer::Render(wxDC &dc, wxPoint origin, const int start, const int length, const AudioRenderingStyle style) { assert(start >= 0); if (!provider) return; if (!renderer) return; if (length <= 0) return; // One past last absolute pixel strip to render const int end = start + length; // One past last X coordinate to render on const int lastx = origin.x + length; // Figure out which range of bitmaps are required const int firstbitmap = start / cache_bitmap_width; // And the offset in it to start its use at const int firstbitmapoffset = start % cache_bitmap_width; // The last bitmap required const int lastbitmap = std::min<int>(end / cache_bitmap_width, NumBlocks(provider->GetDecodedSamples()) - 1); // Set a clipping region so that the first and last bitmaps don't draw // outside the requested range const wxDCClipper clipper(dc, wxRect(origin, wxSize(length, pixel_height))); origin.x -= firstbitmapoffset; for (int i = firstbitmap; i <= lastbitmap; ++i) { dc.DrawBitmap(GetCachedBitmap(i, style), origin); origin.x += cache_bitmap_width; } // Now render blank audio from origin to end if (origin.x < lastx) renderer->RenderBlank(dc, wxRect(origin.x-1, origin.y, lastx-origin.x+1, pixel_height), style); if (needs_age) { bitmaps[style].Age(cache_bitmap_maxsize); renderer->AgeCache(cache_renderer_maxsize); needs_age = false; } }
//@mFunc draws the listbox items in their proper state void CQSLItemList::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ) { CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); QSLItemData itemData; GetItemData( lpDrawItemStruct->itemID, itemData ); #ifdef USECACHE RImage* pImage = GetCachedBitmap( lpDrawItemStruct->itemID ) ; #else RImage* pImage = itemData.GetImage(); if (!itemData.m_pImage) { itemData.m_pImage = pImage; SetItemData( lpDrawItemStruct->itemID, itemData ); } // HBITMAP hBitmap = itemData.m_hBitmap ; // HPALETTE hPalette = itemData.m_hPalette ; // if (!itemData.m_pImage) // { // hBitmap = itemData.m_hBitmap = // LoadBitmapPreview( lpDrawItemStruct->itemID, &itemData.m_hPalette ) ; // hPalette = itemData.m_hPalette; // // // Save the new data into the control // SetItemData( lpDrawItemStruct->itemID, itemData ); // } // // // If we have a palette with the bitmap, realize it into the DC prior to painting. // if (hPalette != NULL) // { // CPalette palBitmap; // palBitmap.Attach( hPalette ); // CPalette *pOldPal = pDC->SelectPalette( &palBitmap, TRUE ); // pDC->RealizePalette(); // pDC->SelectPalette( pOldPal, TRUE ); // palBitmap.Detach(); // } #endif BITMAP bm= { 0, 0, 0, 0, 0, 0, NULL }; HBITMAP hBitmap = NULL; if (pImage) { hBitmap = (HBITMAP) pImage->GetSystemHandle(); ::GetObject( hBitmap, sizeof( bm ), &bm ); } // Determine colors to use for drawing text and selection // COLORREF crFillColor = GetSysColor( COLOR_WINDOW ) ; COLORREF crTextColor = GetSysColor( COLOR_WINDOWTEXT ) ; if (lpDrawItemStruct->itemState & ODS_SELECTED) { crFillColor = GetSysColor( COLOR_HIGHLIGHT ) ; crTextColor = GetSysColor( COLOR_HIGHLIGHTTEXT ) ; } // Handle drawing according to action // // Setup DC COLORREF oldTextColor = pDC->SetTextColor( crTextColor ); COLORREF oldBkColor = pDC->SetBkColor( crFillColor ); CFont* pOldFont = pDC->SelectObject( GetParent()->GetFont() ); // Determine location to draw bitmap. This information // is needed for all drawing modes, so might as well // just determine it once, and in one place. CSize szExtent = pDC->GetTextExtent( itemData.m_strDesc ); RIntRect cellRect( lpDrawItemStruct->rcItem ); cellRect.Inset( RIntSize( 4, 4 ) ); cellRect.m_Bottom -= szExtent.cy + 2; // + 2 is for spacing between graphic & text RIntRect imgRect( 0, 0, bm.bmWidth - 1, bm.bmHeight - 1 ); imgRect.ShrinkToFit( cellRect ); imgRect.CenterRectInRect( cellRect ); CSize szImage( imgRect.Width(), imgRect.Height() ); // CPoint centerPt( cellRect.CenterPoint() ); // CPoint ptTopLeft( centerPt.x - szImage.cx / 2, centerPt.y - szImage.cy / 2 - 2 ); switch (lpDrawItemStruct->itemAction) { case ODA_DRAWENTIRE: { CDC memDC; memDC.CreateCompatibleDC( pDC ); // Get the bitmap CBitmap* pBmp = CBitmap::FromHandle( hBitmap ); CBitmap* pOldBmp = memDC.SelectObject( pBmp ); pDC->StretchBlt( imgRect.m_Left, imgRect.m_Top, imgRect.Width(), imgRect.Height(), &memDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY ); memDC.SelectObject( pOldBmp ); if (!(lpDrawItemStruct->itemState & ODS_SELECTED)) { break ; } // Fall through } case ODA_SELECT: { // Draw/Clear the highlight rect // CRect bmpRect( ptTopLeft.x, ptTopLeft.y, ptTopLeft.x + bm.bmWidth, ptTopLeft.y + bm.bmHeight); CRect bmpRect( imgRect ); bmpRect.InflateRect( 2, 2 ); CPen pen( PS_SOLID, 2, crFillColor ); CPen* pOldPen = pDC->SelectObject( &pen ); pDC->MoveTo( bmpRect.left, bmpRect.top ); pDC->LineTo( bmpRect.right, bmpRect.top ); pDC->LineTo( bmpRect.right, bmpRect.bottom ); pDC->LineTo( bmpRect.left, bmpRect.bottom ); pDC->LineTo( bmpRect.left, bmpRect.top ); pDC->SelectObject( pOldPen ); } } // switch // Draw the text CPoint ptText( cellRect.m_Left + (cellRect.Width() - szExtent.cx) / 2, cellRect.m_Bottom + 4 ); pDC->TextOut( ptText.x, ptText.y, itemData.m_strDesc ); // pDC->DrawText( itemData.m_strDesc, &textRect, DT_CALCRECT | DT_SINGLELINE ); // textRect.OffsetRect( -textRect.Width() / 2, 2 ); // pDC->DrawText( itemData.m_strDesc, &textRect, DT_CENTER | DT_VCENTER ); // restore DC pDC->SelectObject( pOldFont ); pDC->SetTextColor( oldTextColor ); pDC->SetBkColor( oldBkColor ); }