//***************************************************************************** void CMacStyle::DrawNcBtn (CDC* pDC, const CRect& rect, UINT nButton, BCGBUTTON_STATE state, BOOL bActive) { ASSERT_VALID (pDC); CBCGPToolBarImages* pImage = NULL; if (nButton == SC_CLOSE) { pImage = &m_SysBtnClose; } else if (nButton == SC_MINIMIZE) { pImage = &m_SysBtnMinimize; } else if (nButton == SC_MAXIMIZE) { pImage = &m_SysBtnMaximize; } else if (nButton == SC_RESTORE) { pImage = &m_SysBtnRestore; } else { return; } CBCGPToolBarImages::ImageAlignHorz horz = CBCGPToolBarImages::ImageAlignHorzCenter; CBCGPToolBarImages::ImageAlignVert vert = CBCGPToolBarImages::ImageAlignVertCenter; CRect rtBtnImage (CPoint (0, 0), pImage->GetImageSize ()); if (!bActive) { rtBtnImage.OffsetRect (0, pImage->GetImageSize ().cy); } int index = 0; if (!bActive) { index = 3; } else if (state != ButtonsIsRegular) { if (state == ButtonsIsPressed) { index = 2; } else { index = 1; } } m_ctrlSysBtnBack.Draw (pDC, rect, index); pImage->DrawEx (pDC, rect, 0, horz, vert, rtBtnImage); }
BOOL CBCGPTagManager::ParseToolBarImages (const CString& strItem, CBCGPToolBarImages& value, LPCTSTR lpszID) { CBCGPTagManager tm (strItem); CSize size (value.GetImageSize ()); value.Clear (); value.SetTransparentColor ((COLORREF)(-1)); tm.ReadSize (s_Size, size); BOOL bPreMultiplyCheck = TRUE; tm.ReadBool (s_PreMltCheck, bPreMultiplyCheck); value.SetPreMultiplyAutoCheck (bPreMultiplyCheck); if (size != CSize (0, 0)) { value.SetImageSize (size); } value.LoadStr (lpszID); if (size == CSize (0, 0)) { value.SetSingleImage (); } COLORREF clrTransparent = CLR_DEFAULT; if (tm.ReadColor (s_Transparent, clrTransparent)) { value.SetTransparentColor (clrTransparent); } #ifndef _BCGSUITE_ if (m_clrBase != (COLORREF)-1 && m_clrTarget != (COLORREF)-1) { value.AddaptColors (m_clrBase, m_clrTarget); } #endif if (CBCGPToolBarImages::IsRTL () && value.GetImageWell () != NULL && clrTransparent == CLR_DEFAULT) { BITMAP bmp; if (::GetObject (value.GetImageWell (), sizeof (BITMAP), &bmp) != 0) { if (bmp.bmBitsPixel == 32) { value.Mirror (); } } } return TRUE; }
//*********************************************************************************** void CBCGPMenuImages::SetColor (CBCGPMenuImages::IMAGE_STATE state, COLORREF color) { Initialize (); CBCGPLocalResource locaRes; CBCGPToolBarImages imagesTmp; imagesTmp.SetImageSize (CSize (iImageWidth, iImageHeight)); imagesTmp.Load (globalData.Is32BitIcons () ? IDB_BCGBARRES_MENU_IMAGES24 : IDB_BCGBARRES_MENU_IMAGES); imagesTmp.SetTransparentColor (clrTransparent); #ifndef _BCGSUITE_ if (imagesTmp.IsRTL ()) { CBCGPToolBarImages::MirrorBitmap (imagesTmp.m_hbmImageWell, imagesTmp.GetImageSize ().cx); } #endif CBCGPToolBarImages& images = (state == ImageBlack) ? m_ImagesBlack : (state == ImageGray) ? m_ImagesGray : (state == ImageDkGray) ? m_ImagesDkGray : (state == ImageLtGray) ? m_ImagesLtGray : (state == ImageWhite) ? m_ImagesWhite : m_ImagesBlack2; if (color != (COLORREF)-1) { imagesTmp.MapTo3dColors (TRUE, RGB (0, 0, 0), color); } #ifndef _BCGSUITE_ if (!m_bInitializing) { imagesTmp.SmoothResize (globalData.GetRibbonImageScale ()); } #endif images.Clear (); imagesTmp.CopyTo (images); }
void BCGPResizeImage32 ( CBCGPToolBarImages& imageSrc, CBCGPToolBarImages& imageDst, int index, CBCGPToolBarImages::ImageAlignHorz horz, CBCGPToolBarImages::ImageAlignVert vert, CBCGPZoomKernel::XFilterType ft ) { CSize sizeSrc (imageSrc.GetImageSize ()); CSize sizeDst (imageDst.GetImageSize ()); imageDst.Clear (); imageDst.SetPreMultiplyAutoCheck (TRUE); imageDst.SetTransparentColor ((COLORREF) -1); imageDst.SetImageSize (sizeDst); if (sizeSrc != sizeDst) { CSize size (sizeDst); if (horz == CBCGPToolBarImages::ImageAlignHorzStretch) { size.cx = sizeSrc.cx; } if (vert == CBCGPToolBarImages::ImageAlignVertStretch) { size.cy = sizeSrc.cy; } int nStart = 0; int nEnd = imageSrc.GetCount (); if (index != -1) { nStart = index; nEnd = nStart + 1; } for (int i = nStart; i < nEnd; i++) { CMemoryDC dc; dc.SetSize (size); CBitmap* bmpImage = &dc.GetBitmap (); imageSrc.DrawEx (&dc.GetDC (), CRect (CPoint (0, 0), size), i, horz, vert); CMemoryDC dcImage; if (horz == CBCGPToolBarImages::ImageAlignHorzStretch || vert == CBCGPToolBarImages::ImageAlignVertStretch) { dcImage.SetSize (sizeDst); bmpImage = &dcImage.GetBitmap (); CBCGPScanlinerBitmap ms; ms.Attach ((HBITMAP) dc.GetBitmap ()); CBCGPScanlinerBitmap md; md.Attach ((HBITMAP) dcImage.GetBitmap ()); BCGPResizeImage32 (md, sizeDst.cx, sizeDst.cy, ms, size.cx, size.cy, ft); } CBitmap bitmap; bitmap.Attach (CBCGPDrawManager::CreateBitmap_32 (*bmpImage)); imageDst.AddImage (bitmap, TRUE); } } else { imageDst.AddImage (imageSrc, index); } }
//******************************************************************************** BOOL CButtonAppearanceDlg::OnInitDialog() { CDialog::OnInitDialog(); if (AfxGetMainWnd () != NULL && (AfxGetMainWnd ()->GetExStyle () & WS_EX_LAYOUTRTL)) { ModifyStyleEx (0, WS_EX_LAYOUTRTL); } if (m_pImages != NULL) { m_wndButtonList.SetImages (m_pImages); RebuildImageList (); m_wndButtonList.SelectButton (m_iSelImage); } else { m_wndButtonList.EnableWindow (FALSE); m_wndUserImageBtn.EnableWindow (FALSE); if (m_iSelImage < 0) { CWnd* pWndImage = GetDlgItem (IDC_BCGBARRES_IMAGE); VERIFY(pWndImage != NULL); pWndImage->EnableWindow (FALSE); CWnd* pWndImageText = GetDlgItem (IDC_BCGBARRES_IMAGE_TEXT); VERIFY(pWndImageText != NULL); pWndImageText->EnableWindow (FALSE); } } if (m_bUserButton && !m_pButton->IsLocked ()) { m_wndUserImageBtn.SetCheck (1); } else { m_wndDefautImageBtn.SetCheck (1); } if (m_bImage) { if (m_bText) { CheckDlgButton (IDC_BCGBARRES_IMAGE_TEXT, TRUE); } else { CheckDlgButton (IDC_BCGBARRES_IMAGE, TRUE); } } else { ASSERT (m_bText); CheckDlgButton (IDC_BCGBARRES_TEXT, TRUE); m_bText = TRUE; m_wndButtonList.EnableWindow (FALSE); } int iTabOffset = m_pButton->m_strText.Find (_T('\t')); if (iTabOffset >= 0) { m_strButtonText = m_pButton->m_strText.Left (iTabOffset); m_strAccel = m_pButton->m_strText.Mid (iTabOffset + 1); } else { m_strButtonText = m_pButton->m_strText; } CFrameWnd* pWndFrame = GetParentFrame (); if (pWndFrame != NULL) { pWndFrame->GetMessageString (m_pButton->m_nID, m_strButtonDescr); } if (m_bMenuMode) { CWnd* pWndImage = GetDlgItem (IDC_BCGBARRES_IMAGE); VERIFY(pWndImage != NULL); pWndImage->EnableWindow (FALSE); } if (m_pButton->m_bTextBelow) { CWnd* pWndImage = GetDlgItem (IDC_BCGBARRES_IMAGE); VERIFY(pWndImage != NULL); pWndImage->EnableWindow (FALSE); } m_wndDefaultImageArea.GetClientRect (&m_rectDefaultImage); m_wndDefaultImageArea.MapWindowPoints (this, &m_rectDefaultImage); CSize sizePreview (16, 16); CBCGPToolBarImages* pImages = CBCGPToolBar::GetImages (); if (pImages != NULL) { CSize sizeImage = pImages->GetImageSize (); sizePreview.cx = min (sizePreview.cx, sizeImage.cx); sizePreview.cy = min (sizePreview.cy, sizeImage.cy); } m_rectDefaultImage.right = m_rectDefaultImage.left + sizePreview.cx; m_rectDefaultImage.bottom = m_rectDefaultImage.top + sizePreview.cy; EnableControls (); UpdateData (FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }