Index: xfa/src/fwl/src/theme/formtp.cpp |
diff --git a/xfa/src/fwl/src/theme/formtp.cpp b/xfa/src/fwl/src/theme/formtp.cpp |
index 635244deb367c1f7da05e4cdf0a24053c1cbc36a..f70b4a1a2a8e75b4ed95108dea6b5412362b187d 100644 |
--- a/xfa/src/fwl/src/theme/formtp.cpp |
+++ b/xfa/src/fwl/src/theme/formtp.cpp |
@@ -1,887 +1,887 @@ |
-// Copyright 2014 PDFium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
- |
-#include "xfa/src/foxitlib.h" |
-#define FWLTHEME_CAPACITY_CXFormBorder 3 |
-#define FWLTHEME_CAPACITY_CYFormBorder 3 |
-#define FWLTHEME_CAPACITY_CYNarrowCaption 18 |
-#define FWLTHEME_CAPACITY_CYCaption 29 |
-#define FWLTHEME_CAPACITY_BigIconSize 32 |
-#define FWLTHEME_CAPACITY_SmallIconSize 16 |
-#define FWLTHEME_CAPACITY_FormTextColor 0xFFFFFFFF |
-#define FWLTHEME_FORMBTN_Margin 5 |
-#define FWLTHEME_FORMBTN_Span 2 |
-#define FWLTHEME_FORMBTN_Size 21 |
-CFWL_FormTP::CFWL_FormTP() : m_pActiveBitmap(NULL), m_pDeactivebitmap(NULL) { |
- m_pThemeData = new SBThemeData; |
- SetThemeData(0); |
- m_rtDisLBorder.Reset(); |
- m_rtDisRBorder.Reset(); |
- m_rtDisBBorder.Reset(); |
- m_rtDisCaption.Reset(); |
-} |
-CFWL_FormTP::~CFWL_FormTP() { |
- if (m_pThemeData) { |
- delete m_pThemeData; |
- m_pThemeData = NULL; |
- } |
-} |
-FWL_ERR CFWL_FormTP::Initialize() { |
- InitTTO(); |
- InitCaption(TRUE); |
- InitCaption(FALSE); |
- return CFWL_WidgetTP::Initialize(); |
-} |
-FWL_ERR CFWL_FormTP::Finalize() { |
- FinalizeTTO(); |
- if (m_pActiveBitmap) { |
- delete m_pActiveBitmap; |
- m_pActiveBitmap = NULL; |
- } |
- if (m_pDeactivebitmap) { |
- delete m_pDeactivebitmap; |
- m_pDeactivebitmap = NULL; |
- } |
- return CFWL_WidgetTP::Finalize(); |
-} |
-FX_BOOL CFWL_FormTP::IsValidWidget(IFWL_Widget* pWidget) { |
- if (!pWidget) |
- return FALSE; |
- FX_DWORD dwHash = pWidget->GetClassID(); |
- return dwHash == FWL_CLASSHASH_Form; |
-} |
-FX_DWORD CFWL_FormTP::SetThemeID(IFWL_Widget* pWidget, |
- FX_DWORD dwThemeID, |
- FX_BOOL bChildren) { |
- if (m_pThemeData) { |
- SetThemeData(FWL_GetThemeColor(dwThemeID)); |
- } |
- InitCaption(TRUE); |
- InitCaption(FALSE); |
- return CFWL_WidgetTP::SetThemeID(pWidget, dwThemeID, bChildren); |
-} |
-FX_BOOL CFWL_FormTP::DrawBackground(CFWL_ThemeBackground* pParams) { |
- if (!pParams) |
- return FALSE; |
- int32_t iActive = 0; |
- if (pParams->m_dwStates & FWL_PARTSTATE_FRM_Inactive) { |
- iActive = 1; |
- } |
- FWLTHEME_STATE eState = FWLTHEME_STATE_Normal; |
- switch (pParams->m_dwStates & 0x03) { |
- case FWL_PARTSTATE_FRM_Hover: { |
- eState = FWLTHEME_STATE_Hover; |
- break; |
- } |
- case FWL_PARTSTATE_FRM_Pressed: { |
- eState = FWLTHEME_STATE_Pressed; |
- break; |
- } |
- case FWL_PARTSTATE_FRM_Disabled: { |
- eState = FWLTHEME_STATE_Disabale; |
- break; |
- } |
- default: {} |
- } |
- switch (pParams->m_iPart) { |
- case FWL_PART_FRM_Border: { |
- DrawFormBorder(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
- &pParams->m_matrix, iActive); |
- break; |
- } |
- case FWL_PART_FRM_Edge: { |
- DrawEdge(pParams->m_pGraphics, pParams->m_pWidget->GetStyles(), |
- &pParams->m_rtPart, &pParams->m_matrix); |
- break; |
- } |
- case FWL_PART_FRM_Background: { |
- FillBackground(pParams->m_pGraphics, &pParams->m_rtPart, |
- &pParams->m_matrix); |
- break; |
- } |
- case FWL_PART_FRM_Caption: { |
- DrawCaption(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
- &pParams->m_matrix, iActive); |
- break; |
- } |
- case FWL_PART_FRM_NarrowCaption: { |
- DrawNarrowCaption(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
- &pParams->m_matrix, iActive); |
- break; |
- } |
- case FWL_PART_FRM_CloseBox: { |
- DrawCloseBox(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
- &pParams->m_matrix, iActive); |
- break; |
- } |
- case FWL_PART_FRM_MinimizeBox: { |
- DrawMinimizeBox(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
- &pParams->m_matrix, iActive); |
- break; |
- } |
- case FWL_PART_FRM_MaximizeBox: { |
- DrawMaximizeBox(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
- pParams->m_dwData, &pParams->m_matrix, iActive); |
- break; |
- } |
- case FWL_PART_FRM_Icon: { |
- DrawIconImage(pParams->m_pGraphics, pParams->m_pImage, &pParams->m_rtPart, |
- eState, &pParams->m_matrix, iActive); |
- break; |
- } |
- default: {} |
- } |
- return TRUE; |
-} |
-FX_BOOL CFWL_FormTP::DrawText(CFWL_ThemeText* pParams) { |
- if (!m_pTextOut) |
- return FALSE; |
- if (pParams->m_iPart == FWL_PART_FRM_Caption) { |
- m_pTextOut->SetTextColor(0xFFFFFFFF); |
- } else { |
- m_pTextOut->SetTextColor(0xFF000000); |
- } |
- return CFWL_WidgetTP::DrawText(pParams); |
-} |
-void* CFWL_FormTP::GetCapacity(CFWL_ThemePart* pThemePart, |
- FX_DWORD dwCapacity) { |
- FX_BOOL bDefPro = FALSE; |
- FX_BOOL bDwordVal = FALSE; |
- switch (dwCapacity) { |
- case FWL_WGTCAPACITY_CXBorder: { |
- m_fValue = FWLTHEME_CAPACITY_CXFormBorder; |
- break; |
- } |
- case FWL_WGTCAPACITY_CYBorder: { |
- m_fValue = FWLTHEME_CAPACITY_CYFormBorder; |
- break; |
- } |
- case FWL_WGTCAPACITY_FRM_CYCaption: { |
- m_fValue = FWLTHEME_CAPACITY_CYCaption; |
- break; |
- } |
- case FWL_WGTCAPACITY_FRM_CYNarrowCaption: { |
- m_fValue = FWLTHEME_CAPACITY_CYCaption; |
- break; |
- } |
- case FWL_WGTCAPACITY_TextColor: { |
- bDwordVal = TRUE; |
- m_dwValue = FWLTHEME_CAPACITY_FormTextColor; |
- break; |
- } |
- case FWL_WGTCAPACITY_FRM_BigIcon: { |
- m_fValue = FWLTHEME_CAPACITY_BigIconSize; |
- break; |
- } |
- case FWL_WGTCAPACITY_FRM_SmallIcon: { |
- m_fValue = FWLTHEME_CAPACITY_SmallIconSize; |
- break; |
- } |
- default: { bDefPro = TRUE; } |
- } |
- if (!bDefPro) { |
- if (bDwordVal) { |
- return &m_dwValue; |
- } |
- return &m_fValue; |
- } |
- return CFWL_WidgetTP::GetCapacity(pThemePart, dwCapacity); |
-} |
-FWL_ERR CFWL_FormTP::GetPartRect(CFWL_ThemePart* pThemePart, |
- CFX_RectF& rtPart) { |
- switch (pThemePart->m_iPart) { |
- case FWL_PART_FRM_CloseBox: { |
- CalCloseBox(pThemePart->m_pWidget, rtPart); |
- break; |
- } |
- case FWL_PART_FRM_MaximizeBox: { |
- CalMaxBox(pThemePart->m_pWidget, rtPart); |
- break; |
- } |
- case FWL_PART_FRM_MinimizeBox: { |
- CalMinBox(pThemePart->m_pWidget, rtPart); |
- break; |
- } |
- case FWL_PART_FRM_HeadText: { |
- CalCaption(pThemePart->m_pWidget, rtPart); |
- break; |
- } |
- case FWL_PART_FRM_Icon: { |
- CalIcon(pThemePart->m_pWidget, rtPart); |
- break; |
- } |
- default: {} |
- } |
- return FWL_ERR_Succeeded; |
-} |
-void CFWL_FormTP::CalCloseBox(IFWL_Widget* pWidget, CFX_RectF& rect) { |
- FX_DWORD dwStyles = pWidget->GetStyles(); |
- CFX_RectF rtWidget; |
- pWidget->GetWidgetRect(rtWidget); |
- rtWidget.Offset(-rtWidget.left, -rtWidget.top); |
- if (dwStyles & FWL_WGTSTYLE_CloseBox) { |
- rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Span, |
- rtWidget.top + FWLTHEME_FORMBTN_Margin, FWLTHEME_FORMBTN_Size, |
- FWLTHEME_FORMBTN_Size); |
- } else { |
- rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Span, |
- rtWidget.top + FWLTHEME_FORMBTN_Margin, 0, 0); |
- } |
-} |
-void CFWL_FormTP::CalMaxBox(IFWL_Widget* pWidget, CFX_RectF& rect) { |
- FX_DWORD dwStyles = pWidget->GetStyles(); |
- CFX_RectF rtWidget; |
- pWidget->GetWidgetRect(rtWidget); |
- rtWidget.Offset(-rtWidget.left, -rtWidget.top); |
- if (dwStyles & FWL_WGTSTYLE_MaximizeBox) { |
- rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Size + |
- FWLTHEME_FORMBTN_Span * 2, |
- rtWidget.top + FWLTHEME_FORMBTN_Margin, FWLTHEME_FORMBTN_Size, |
- FWLTHEME_FORMBTN_Size); |
- } else { |
- rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Size + |
- FWLTHEME_FORMBTN_Span * 2, |
- rtWidget.top + FWLTHEME_FORMBTN_Margin, 0, 0); |
- } |
-} |
-void CFWL_FormTP::CalMinBox(IFWL_Widget* pWidget, CFX_RectF& rect) { |
- FX_DWORD dwStyles = pWidget->GetStyles(); |
- CFX_RectF rtWidget; |
- pWidget->GetWidgetRect(rtWidget); |
- rtWidget.Offset(-rtWidget.left, -rtWidget.top); |
- if (dwStyles & FWL_WGTSTYLE_MinimizeBox) { |
- rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + |
- FWLTHEME_FORMBTN_Size * 2 + FWLTHEME_FORMBTN_Span * 3, |
- rtWidget.top + FWLTHEME_FORMBTN_Margin, FWLTHEME_FORMBTN_Size, |
- FWLTHEME_FORMBTN_Size); |
- } else { |
- rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + |
- FWLTHEME_FORMBTN_Size * 2 + FWLTHEME_FORMBTN_Span * 3, |
- rtWidget.top + FWLTHEME_FORMBTN_Margin, 0, 0); |
- } |
-} |
-void CFWL_FormTP::CalCaption(IFWL_Widget* pWidget, CFX_RectF& rect) { |
- CFX_RectF rtWidget; |
- pWidget->GetWidgetRect(rtWidget); |
- rtWidget.Offset(-rtWidget.left, -rtWidget.top); |
- rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin, |
- rtWidget.top + FWLTHEME_FORMBTN_Margin - 2, |
- rtWidget.width - FWLTHEME_FORMBTN_Margin * 2, |
- FWLTHEME_FORMBTN_Size + 2 * FWLTHEME_FORMBTN_Margin + 4); |
-} |
-void CFWL_FormTP::CalIcon(IFWL_Widget* pWidget, CFX_RectF& rect) {} |
-void CFWL_FormTP::DrawFormBorder(CFX_Graphics* pGraphics, |
- const CFX_RectF* pRect, |
- FWLTHEME_STATE eState, |
- CFX_Matrix* pMatrix, |
- int32_t iActive) { |
- CFX_RectF rt; |
- rt.Set(pRect->left, pRect->top, 1, pRect->height); |
- FX_FLOAT fBottom, fRight; |
- fBottom = pRect->bottom(); |
- fRight = pRect->right(); |
- CFX_Path path; |
- path.Create(); |
- CFX_Color clrLine; |
- path.Clear(); |
- path.MoveTo(pRect->left, pRect->top); |
- path.LineTo(pRect->left, fBottom - 1); |
- path.LineTo(fRight - 1, fBottom - 1); |
- path.LineTo(fRight - 1, pRect->top); |
- clrLine = m_pThemeData->clrFormBorder[iActive][2]; |
- pGraphics->SetStrokeColor(&clrLine); |
- pGraphics->StrokePath(&path, pMatrix); |
- path.Clear(); |
- path.MoveTo(pRect->left + 1, pRect->top); |
- path.LineTo(pRect->left + 1, fBottom - 2); |
- path.LineTo(fRight - 2, fBottom - 2); |
- path.LineTo(fRight - 2, pRect->top); |
- clrLine = m_pThemeData->clrFormBorder[iActive][1]; |
- pGraphics->SetStrokeColor(&clrLine); |
- pGraphics->StrokePath(&path, pMatrix); |
- path.Clear(); |
- path.MoveTo(pRect->left + 2, pRect->top); |
- path.LineTo(pRect->left + 2, fBottom - 3); |
- path.LineTo(fRight - 3, fBottom - 3); |
- path.LineTo(fRight - 3, pRect->top); |
- clrLine = m_pThemeData->clrFormBorder[iActive][0]; |
- pGraphics->SetStrokeColor(&clrLine); |
- pGraphics->StrokePath(&path, pMatrix); |
- path.Clear(); |
- path.MoveTo(pRect->left + 3, pRect->top); |
- path.LineTo(pRect->left + 3, fBottom - 4); |
- path.LineTo(fRight - 4, fBottom - 4); |
- path.LineTo(fRight - 4, pRect->top); |
- clrLine = m_pThemeData->clrFormBorder[iActive][4]; |
- pGraphics->SetStrokeColor(&clrLine); |
- pGraphics->StrokePath(&path, pMatrix); |
- m_rtDisLBorder.Set(pRect->left, pRect->top + 29, 4, pRect->height - 29); |
- m_rtDisRBorder.Set(pRect->right() - 4, pRect->top + 29, 4, |
- pRect->height - 29); |
- m_rtDisBBorder.Set(pRect->left, pRect->bottom() - 4, pRect->width, 4); |
- m_rtDisCaption.Set(pRect->left, pRect->top, pRect->width, 29); |
-} |
-void CFWL_FormTP::DrawCaption(CFX_Graphics* pGraphics, |
- const CFX_RectF* pRect, |
- FWLTHEME_STATE eState, |
- CFX_Matrix* pMatrix, |
- int32_t iActive) { |
- CFX_RectF rt; |
- FX_FLOAT fBottom, fRight; |
- fBottom = pRect->bottom(); |
- fRight = pRect->right(); |
- rt.Set(pRect->left, pRect->top, pRect->width, 1); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeTop[iActive][0], &rt, |
- pMatrix); |
- rt.Offset(0, 1); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeTop[iActive][1], &rt, |
- pMatrix); |
- rt.Offset(0, 1); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeTop[iActive][2], &rt, |
- pMatrix); |
- rt.Set(pRect->left, pRect->bottom() - 1, pRect->width, 1); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeBottom[iActive][2], &rt, |
- pMatrix); |
- rt.Offset(0, -1); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeBottom[iActive][1], &rt, |
- pMatrix); |
- rt.Set(pRect->left, pRect->top, 1, pRect->height); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeLeft[iActive][2], &rt, |
- pMatrix); |
- rt.Set(pRect->left + 1, pRect->top + 1, 1, fBottom - 1); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeLeft[iActive][1], &rt, |
- pMatrix); |
- rt.Set(pRect->left + 2, pRect->top + 2, 1, fBottom - 2); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeLeft[iActive][0], &rt, |
- pMatrix); |
- rt.Set(fRight - 1, pRect->top, pRect->width, pRect->height); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeRight[iActive][2], &rt, |
- pMatrix); |
- rt.Set(fRight - 2, pRect->top + 1, 1, fBottom - 1); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeRight[iActive][1], &rt, |
- pMatrix); |
- rt.Set(fRight - 3, pRect->top + 2, 1, fBottom - 2); |
- FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeRight[iActive][0], &rt, |
- pMatrix); |
- CFX_RectF rect(*pRect); |
- rect.Set(rect.left + 3, rect.top + 3, rect.width - 6, rect.height - 5); |
- if (iActive == 0) { |
- pGraphics->StretchImage(m_pActiveBitmap, rect, pMatrix); |
- } else { |
- pGraphics->StretchImage(m_pDeactivebitmap, rect, pMatrix); |
- } |
-} |
-void CFWL_FormTP::DrawNarrowCaption(CFX_Graphics* pGraphics, |
- const CFX_RectF* pRect, |
- FWLTHEME_STATE eState, |
- CFX_Matrix* pMatrix, |
- int32_t iActive) {} |
-void CFWL_FormTP::DrawCloseBox(CFX_Graphics* pGraphics, |
- const CFX_RectF* pRect, |
- FWLTHEME_STATE eState, |
- CFX_Matrix* pMatrix, |
- int32_t iActive) { |
- FX_FLOAT fRight = pRect->right(); |
- FX_FLOAT fBottom = pRect->bottom(); |
- FX_FLOAT fWidth = pRect->width; |
- FX_FLOAT fHeight = pRect->height; |
- pGraphics->SaveGraphState(); |
- CFX_RectF rt(*pRect); |
- pGraphics->SetLineWidth(1.0f); |
- CFX_Path path; |
- path.Create(); |
- path.AddRectangle(rt.left + 1, rt.top, fWidth - 2, 1); |
- path.AddRectangle(rt.left, rt.top + 1, 1, fHeight - 2); |
- path.AddRectangle(fRight - 1, rt.top + 1, 1, fHeight - 2); |
- path.AddRectangle(rt.left + 1, fBottom - 1, fWidth - 2, 1); |
- CFX_Color crFill; |
- crFill = m_pThemeData->clrBtnEdgeOut[iActive]; |
- pGraphics->SetFillColor(&crFill); |
- pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
- path.Clear(); |
- path.AddRectangle(rt.left + 1, rt.top + 1, 1, 1); |
- path.AddRectangle(fRight - 2, rt.top + 1, 1, 1); |
- path.AddRectangle(rt.left + 1, fBottom - 2, 1, 1); |
- path.AddRectangle(fRight - 2, fBottom - 2, 1, 1); |
- crFill = m_pThemeData->clrBtnCornerLight[iActive][eState - 1]; |
- pGraphics->SetFillColor(&crFill); |
- pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
- path.Clear(); |
- path.AddRectangle(rt.left + 2, rt.top + 1, fWidth - 4, 1); |
- path.AddRectangle(rt.left + 1, rt.top + 2, 1, fHeight - 4); |
- crFill = m_pThemeData->clrCloseBtEdgeLight[iActive][eState - 1]; |
- pGraphics->SetFillColor(&crFill); |
- pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
- path.Clear(); |
- path.AddRectangle(fRight - 2, rt.top + 2, 1, fHeight - 4); |
- path.AddRectangle(rt.left + 2, fBottom - 2, fWidth - 4, 1); |
- crFill = m_pThemeData->clrCloseBtEdgeDark[iActive][eState - 1]; |
- pGraphics->SetFillColor(&crFill); |
- pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
- path.Clear(); |
- path.AddRectangle(pRect->left + 2, pRect->top + 2, fWidth - 4, fHeight - 4); |
- DrawAxialShading(pGraphics, pRect->left + 2, pRect->top + 2, fRight - 2, |
- fBottom - 2, |
- m_pThemeData->clrCloseBtBKStart[iActive][eState - 1], |
- m_pThemeData->clrCloseBtBKEnd[iActive][eState - 1], &path, |
- FXFILL_WINDING, pMatrix); |
- CFX_RectF rtX(*pRect); |
- rtX.Inflate(-5, -5); |
- path.Clear(); |
- FX_FLOAT frtXRight = rtX.right(); |
- FX_FLOAT frtXBottom = rtX.bottom(); |
- path.AddLine(rtX.left, rtX.top + 1, frtXRight - 1, frtXBottom); |
- path.AddLine(rtX.left, rtX.top, frtXRight, frtXBottom); |
- path.AddLine(rtX.left + 1, rtX.top, frtXRight, frtXBottom - 1); |
- path.AddLine(rtX.left, frtXBottom - 1, frtXRight - 1, rtX.top); |
- path.AddLine(rtX.left, frtXBottom, frtXRight, rtX.top); |
- path.AddLine(rtX.left + 1, frtXBottom, frtXRight, rtX.top + 1); |
- CFX_Color clrLine(0xffffffff); |
- pGraphics->SetLineWidth(1.0f); |
- pGraphics->SetStrokeColor(&clrLine); |
- pGraphics->StrokePath(&path, pMatrix); |
- pGraphics->RestoreGraphState(); |
-} |
-void CFWL_FormTP::DrawMinMaxBoxCommon(CFX_Graphics* pGraphics, |
- const CFX_RectF* pRect, |
- FWLTHEME_STATE eState, |
- CFX_Matrix* pMatrix, |
- int32_t iActive) { |
- pGraphics->SaveGraphState(); |
- FX_FLOAT fRight = pRect->right(); |
- FX_FLOAT fBottom = pRect->bottom(); |
- FX_FLOAT fWidth = pRect->width; |
- FX_FLOAT fHeight = pRect->height; |
- CFX_RectF rt(*pRect); |
- pGraphics->SetLineWidth(1.0f); |
- CFX_Path path; |
- path.Create(); |
- path.AddRectangle(rt.left + 1, rt.top, fWidth - 2, 1); |
- path.AddRectangle(rt.left, rt.top + 1, 1, fHeight - 2); |
- path.AddRectangle(fRight - 1, rt.top + 1, 1, fHeight - 2); |
- path.AddRectangle(rt.left + 1, fBottom - 1, fWidth - 2, 1); |
- CFX_Color crFill; |
- crFill = m_pThemeData->clrBtnEdgeOut[iActive]; |
- pGraphics->SetFillColor(&crFill); |
- pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
- path.Clear(); |
- path.AddRectangle(rt.left + 1, rt.top + 1, 1, 1); |
- path.AddRectangle(fRight - 2, rt.top + 1, 1, 1); |
- path.AddRectangle(rt.left + 1, fBottom - 2, 1, 1); |
- path.AddRectangle(fRight - 2, fBottom - 2, 1, 1); |
- crFill = m_pThemeData->clrBtnCornerLight[iActive][eState - 1]; |
- pGraphics->SetFillColor(&crFill); |
- pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
- path.Clear(); |
- path.AddRectangle(rt.left + 2, rt.top + 1, fWidth - 4, 1); |
- path.AddRectangle(rt.left + 1, rt.top + 2, 1, fHeight - 4); |
- crFill = m_pThemeData->clrNormalBtEdgeLight[iActive][eState - 1]; |
- pGraphics->SetFillColor(&crFill); |
- pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
- path.Clear(); |
- path.AddRectangle(fRight - 2, rt.top + 2, 1, fHeight - 4); |
- path.AddRectangle(rt.left + 2, fBottom - 2, fWidth - 4, 1); |
- crFill = m_pThemeData->clrNormalBtEdgeDark[iActive][eState - 1]; |
- pGraphics->SetFillColor(&crFill); |
- pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
- pGraphics->RestoreGraphState(); |
- path.Clear(); |
- path.AddRectangle(pRect->left + 2, pRect->top + 2, fWidth - 4, fHeight - 4); |
- DrawAxialShading(pGraphics, pRect->left + 2, pRect->top + 2, fRight - 2, |
- fBottom - 2, |
- m_pThemeData->clrNormalBtBKStart[iActive][eState - 1], |
- m_pThemeData->clrNormalBtBKEnd[iActive][eState - 1], &path, |
- FXFILL_WINDING, pMatrix); |
-} |
-void CFWL_FormTP::DrawMinimizeBox(CFX_Graphics* pGraphics, |
- const CFX_RectF* pRect, |
- FWLTHEME_STATE eState, |
- CFX_Matrix* pMatrix, |
- int32_t iActive) { |
- DrawMinMaxBoxCommon(pGraphics, pRect, eState, pMatrix); |
- CFX_RectF rtMin; |
- rtMin.Set(pRect->left + 5, pRect->top + 13, pRect->width - 14, |
- pRect->height - 18); |
- FillSoildRect(pGraphics, 0xFFFFFFFF, &rtMin, pMatrix); |
-} |
-void CFWL_FormTP::DrawMaximizeBox(CFX_Graphics* pGraphics, |
- const CFX_RectF* pRect, |
- FWLTHEME_STATE eState, |
- FX_BOOL bMax, |
- CFX_Matrix* pMatrix, |
- int32_t iActive) { |
- DrawMinMaxBoxCommon(pGraphics, pRect, eState, pMatrix); |
- FX_FLOAT fWidth = pRect->width; |
- FX_FLOAT fHeight = pRect->height; |
- if (bMax) { |
- CFX_Path path; |
- path.Create(); |
- path.AddLine(pRect->left + 7, pRect->top + 6, pRect->left + 14, |
- pRect->top + 6); |
- path.AddLine(pRect->left + 4, pRect->top + 9, pRect->left + 11, |
- pRect->top + 9); |
- pGraphics->SaveGraphState(); |
- pGraphics->SetLineWidth(2); |
- CFX_Color crStroke(0xFFFFFFFF); |
- pGraphics->SetStrokeColor(&crStroke); |
- pGraphics->StrokePath(&path, pMatrix); |
- pGraphics->SetLineWidth(1); |
- path.Clear(); |
- path.AddLine(pRect->left + 4, pRect->top + 10, pRect->left + 4, |
- pRect->top + 14); |
- path.AddLine(pRect->left + 10, pRect->top + 10, pRect->left + 10, |
- pRect->top + 14); |
- path.AddLine(pRect->left + 13, pRect->top + 7, pRect->left + 13, |
- pRect->top + 11); |
- path.AddLine(pRect->left + 4, pRect->top + 14, pRect->left + 10, |
- pRect->top + 14); |
- path.AddLine(pRect->left + 12, pRect->top + 11, pRect->left + 12, |
- pRect->top + 11); |
- pGraphics->StrokePath(&path, pMatrix); |
- pGraphics->RestoreGraphState(); |
- } else { |
- CFX_RectF rtMax(*pRect); |
- rtMax.Inflate(-5, -5); |
- CFX_Path path; |
- path.Create(); |
- path.AddRectangle(pRect->left + 5, pRect->top + 5, fWidth - 10, |
- fHeight - 10); |
- path.AddRectangle(pRect->left + 6, pRect->top + 8, fWidth - 12, |
- fHeight - 14); |
- pGraphics->SaveGraphState(); |
- CFX_Color crFill(0xFFFFFFFF); |
- pGraphics->SetFillColor(&crFill); |
- pGraphics->FillPath(&path, FXFILL_ALTERNATE, pMatrix); |
- pGraphics->RestoreGraphState(); |
- } |
-} |
-void CFWL_FormTP::DrawIconImage(CFX_Graphics* pGraphics, |
- CFX_DIBitmap* pDIBitmap, |
- const CFX_RectF* pRect, |
- FWLTHEME_STATE eState, |
- CFX_Matrix* pMatrix, |
- int32_t iActive) { |
- pGraphics->StretchImage(pDIBitmap, *pRect, pMatrix); |
-} |
-void CFWL_FormTP::SetThemeData(FX_DWORD dwID) { |
- m_pThemeData->clrTransWhite = ArgbEncode(0x65, 255, 255, 255); |
- m_pThemeData->clrCloseBtBKStart[0][0] = ArgbEncode(0xff, 240, 166, 148); |
- m_pThemeData->clrCloseBtBKEnd[0][0] = ArgbEncode(0xff, 228, 61, 5); |
- m_pThemeData->clrCloseBtBKStart[0][1] = ArgbEncode(0xff, 255, 184, 176); |
- m_pThemeData->clrCloseBtBKEnd[0][1] = ArgbEncode(0xff, 252, 107, 71); |
- m_pThemeData->clrCloseBtBKStart[0][2] = ArgbEncode(0xff, 141, 44, 20); |
- m_pThemeData->clrCloseBtBKEnd[0][2] = ArgbEncode(0xff, 202, 72, 33); |
- m_pThemeData->clrCloseBtEdgeLight[0][0] = ArgbEncode(0xff, 255, 122, 107); |
- m_pThemeData->clrCloseBtEdgeDark[0][0] = ArgbEncode(0xff, 218, 77, 54); |
- m_pThemeData->clrCloseBtEdgeLight[0][1] = ArgbEncode(0xff, 255, 93, 74); |
- m_pThemeData->clrCloseBtEdgeDark[0][1] = ArgbEncode(0xff, 218, 74, 51); |
- m_pThemeData->clrCloseBtEdgeLight[0][2] = ArgbEncode(0xff, 191, 61, 28); |
- m_pThemeData->clrCloseBtEdgeDark[0][2] = ArgbEncode(0xff, 93, 30, 13); |
- if (dwID) { |
- m_pThemeData->clrHeadBK[0][0] = ArgbEncode(0xff, 194, 205, 149); |
- m_pThemeData->clrHeadBK[0][1] = ArgbEncode(0xff, 170, 184, 131); |
- m_pThemeData->clrHeadBK[0][2] = ArgbEncode(0xff, 168, 182, 128); |
- m_pThemeData->clrHeadBK[0][3] = ArgbEncode(0xff, 194, 205, 149); |
- m_pThemeData->clrHeadEdgeLeft[0][0] = ArgbEncode(0xff, 117, 141, 94); |
- m_pThemeData->clrHeadEdgeLeft[0][1] = ArgbEncode(0xff, 139, 161, 105); |
- m_pThemeData->clrHeadEdgeLeft[0][2] = ArgbEncode(0xff, 171, 189, 133); |
- m_pThemeData->clrHeadEdgeRight[0][0] = ArgbEncode(0xff, 155, 175, 125); |
- m_pThemeData->clrHeadEdgeRight[0][1] = ArgbEncode(0xff, 128, 146, 103); |
- m_pThemeData->clrHeadEdgeRight[0][2] = ArgbEncode(0xff, 94, 118, 79); |
- m_pThemeData->clrHeadEdgeTop[0][0] = ArgbEncode(0xff, 139, 161, 105); |
- m_pThemeData->clrHeadEdgeTop[0][1] = ArgbEncode(0xff, 234, 245, 201); |
- m_pThemeData->clrHeadEdgeTop[0][2] = ArgbEncode(0xff, 194, 205, 149); |
- m_pThemeData->clrHeadEdgeBottom[0][0] = ArgbEncode(0xff, 175, 189, 133); |
- m_pThemeData->clrHeadEdgeBottom[0][1] = ArgbEncode(0xff, 153, 168, 121); |
- m_pThemeData->clrHeadEdgeBottom[0][2] = ArgbEncode(0xff, 150, 168, 103); |
- m_pThemeData->clrNormalBtBKStart[0][0] = ArgbEncode(0xff, 182, 195, 162); |
- m_pThemeData->clrNormalBtBKEnd[0][0] = ArgbEncode(0xff, 128, 144, 84); |
- m_pThemeData->clrNormalBtBKStart[0][1] = ArgbEncode(0xff, 234, 241, 208); |
- m_pThemeData->clrNormalBtBKEnd[0][1] = ArgbEncode(0xff, 169, 186, 112); |
- m_pThemeData->clrNormalBtBKStart[0][2] = ArgbEncode(0xff, 199, 199, 190); |
- m_pThemeData->clrNormalBtBKEnd[0][2] = ArgbEncode(0xff, 133, 148, 88); |
- m_pThemeData->clrNormalBtEdgeLight[0][0] = ArgbEncode(0xff, 163, 176, 137); |
- m_pThemeData->clrNormalBtEdgeDark[0][0] = ArgbEncode(0xff, 118, 135, 83); |
- m_pThemeData->clrNormalBtEdgeLight[0][1] = ArgbEncode(0xff, 154, 174, 105); |
- m_pThemeData->clrNormalBtEdgeDark[0][1] = ArgbEncode(0xff, 154, 174, 105); |
- m_pThemeData->clrNormalBtEdgeLight[0][2] = ArgbEncode(0xff, 172, 193, 123); |
- m_pThemeData->clrNormalBtEdgeDark[0][2] = ArgbEncode(0xff, 154, 174, 105); |
- m_pThemeData->clrBtnCornerLight[0][0] = ArgbEncode(0xff, 220, 220, 220); |
- m_pThemeData->clrBtnCornerLight[0][1] = ArgbEncode(0xff, 255, 255, 255); |
- m_pThemeData->clrBtnCornerLight[0][2] = ArgbEncode(0xff, 225, 225, 225); |
- m_pThemeData->clrBtnEdgeOut[0] = ArgbEncode(0xff, 255, 255, 255); |
- m_pThemeData->clrFormBorder[0][0] = ArgbEncode(0xff, 117, 141, 94); |
- m_pThemeData->clrFormBorder[0][1] = ArgbEncode(0xff, 139, 161, 105); |
- m_pThemeData->clrFormBorder[0][2] = ArgbEncode(0xff, 171, 189, 133); |
- m_pThemeData->clrFormBorder[0][3] = ArgbEncode(0xff, 164, 178, 127); |
- m_pThemeData->clrFormBorder[0][4] = ArgbEncode(0xff, 255, 255, 255); |
- m_pThemeData->clrFormBorderLight[0] = ArgbEncode(0xff, 171, 189, 133); |
- } else { |
- m_pThemeData->clrHeadBK[0][0] = ArgbEncode(0xff, 3, 114, 255); |
- m_pThemeData->clrHeadBK[0][1] = ArgbEncode(0xff, 0, 85, 226); |
- m_pThemeData->clrHeadBK[0][2] = ArgbEncode(0xff, 0, 85, 226); |
- m_pThemeData->clrHeadBK[0][3] = ArgbEncode(0xff, 3, 114, 255); |
- m_pThemeData->clrHeadEdgeLeft[0][2] = ArgbEncode(0xff, 0, 32, 200); |
- m_pThemeData->clrHeadEdgeLeft[0][1] = ArgbEncode(0xff, 0, 61, 220); |
- m_pThemeData->clrHeadEdgeLeft[0][0] = ArgbEncode(0xff, 0, 54, 210); |
- m_pThemeData->clrHeadEdgeRight[0][0] = ArgbEncode(0xff, 0, 56, 234); |
- m_pThemeData->clrHeadEdgeRight[0][1] = ArgbEncode(0xff, 0, 50, 193); |
- m_pThemeData->clrHeadEdgeRight[0][2] = ArgbEncode(0xff, 0, 19, 139); |
- m_pThemeData->clrHeadEdgeTop[0][0] = ArgbEncode(0xff, 0, 88, 238); |
- m_pThemeData->clrHeadEdgeTop[0][1] = ArgbEncode(0xff, 63, 151, 255); |
- m_pThemeData->clrHeadEdgeTop[0][2] = ArgbEncode(0xff, 3, 114, 255); |
- m_pThemeData->clrHeadEdgeBottom[0][0] = ArgbEncode(0xff, 0, 96, 252); |
- m_pThemeData->clrHeadEdgeBottom[0][1] = ArgbEncode(0xff, 63, 151, 255); |
- m_pThemeData->clrHeadEdgeBottom[0][2] = ArgbEncode(0xff, 0, 67, 207); |
- m_pThemeData->clrNormalBtBKStart[0][2] = ArgbEncode(0xff, 0, 49, 112); |
- m_pThemeData->clrNormalBtBKEnd[0][2] = ArgbEncode(0xff, 0, 87, 188); |
- m_pThemeData->clrNormalBtBKStart[0][0] = ArgbEncode(0xff, 154, 183, 250); |
- m_pThemeData->clrNormalBtBKEnd[0][0] = ArgbEncode(0xff, 17, 110, 248); |
- m_pThemeData->clrNormalBtBKStart[0][1] = ArgbEncode(0xff, 164, 194, 255); |
- m_pThemeData->clrNormalBtBKEnd[0][1] = ArgbEncode(0xff, 29, 158, 255); |
- m_pThemeData->clrNormalBtEdgeLight[0][0] = ArgbEncode(0xff, 68, 120, 245); |
- m_pThemeData->clrNormalBtEdgeDark[0][0] = ArgbEncode(0xff, 24, 72, 187); |
- m_pThemeData->clrNormalBtEdgeLight[0][1] = ArgbEncode(0xff, 72, 122, 245); |
- m_pThemeData->clrNormalBtEdgeDark[0][1] = ArgbEncode(0xff, 35, 87, 195); |
- m_pThemeData->clrNormalBtEdgeLight[0][2] = ArgbEncode(0xff, 60, 114, 244); |
- m_pThemeData->clrNormalBtEdgeDark[0][2] = ArgbEncode(0xff, 21, 70, 185); |
- m_pThemeData->clrBtnCornerLight[0][0] = ArgbEncode(0xff, 220, 220, 220); |
- m_pThemeData->clrBtnCornerLight[0][1] = ArgbEncode(0xff, 255, 255, 255); |
- m_pThemeData->clrBtnCornerLight[0][2] = ArgbEncode(0xff, 225, 225, 225); |
- m_pThemeData->clrBtnEdgeOut[0] = ArgbEncode(0xff, 255, 255, 255); |
- m_pThemeData->clrFormBorder[0][0] = ArgbEncode(0xff, 0, 72, 241); |
- m_pThemeData->clrFormBorder[0][1] = ArgbEncode(0xff, 0, 61, 220); |
- m_pThemeData->clrFormBorder[0][2] = ArgbEncode(0xff, 0, 30, 160); |
- m_pThemeData->clrFormBorder[0][3] = ArgbEncode(0xff, 0, 19, 140); |
- m_pThemeData->clrFormBorder[0][4] = ArgbEncode(0xff, 255, 255, 255); |
- m_pThemeData->clrFormBorderLight[0] = ArgbEncode(0xff, 22, 106, 239); |
- } |
- m_pThemeData->clrCloseBtBKStart[1][0] = m_pThemeData->clrCloseBtBKStart[0][0]; |
- m_pThemeData->clrCloseBtBKEnd[1][0] = m_pThemeData->clrCloseBtBKEnd[0][0]; |
- m_pThemeData->clrCloseBtBKStart[1][1] = m_pThemeData->clrCloseBtBKStart[0][1]; |
- m_pThemeData->clrCloseBtBKEnd[1][1] = m_pThemeData->clrCloseBtBKEnd[0][1]; |
- m_pThemeData->clrCloseBtBKStart[1][2] = m_pThemeData->clrCloseBtBKStart[0][2]; |
- m_pThemeData->clrCloseBtBKEnd[1][2] = m_pThemeData->clrCloseBtBKEnd[0][2]; |
- m_pThemeData->clrCloseBtEdgeLight[1][0] = |
- m_pThemeData->clrCloseBtEdgeLight[0][0]; |
- m_pThemeData->clrCloseBtEdgeDark[1][0] = |
- m_pThemeData->clrCloseBtEdgeDark[0][0]; |
- m_pThemeData->clrCloseBtEdgeLight[1][1] = |
- m_pThemeData->clrCloseBtEdgeLight[0][1]; |
- m_pThemeData->clrCloseBtEdgeDark[1][1] = |
- m_pThemeData->clrCloseBtEdgeDark[0][1]; |
- m_pThemeData->clrCloseBtEdgeLight[1][2] = |
- m_pThemeData->clrCloseBtEdgeLight[0][2]; |
- m_pThemeData->clrCloseBtEdgeDark[1][2] = |
- m_pThemeData->clrCloseBtEdgeDark[0][2]; |
- m_pThemeData->clrHeadBK[1][0] = m_pThemeData->clrHeadBK[0][0]; |
- m_pThemeData->clrHeadBK[1][1] = m_pThemeData->clrHeadBK[0][1]; |
- m_pThemeData->clrHeadBK[1][2] = m_pThemeData->clrHeadBK[0][2]; |
- m_pThemeData->clrHeadBK[1][3] = m_pThemeData->clrHeadBK[0][3]; |
- m_pThemeData->clrHeadEdgeLeft[1][2] = m_pThemeData->clrHeadEdgeLeft[0][2]; |
- m_pThemeData->clrHeadEdgeLeft[1][1] = m_pThemeData->clrHeadEdgeLeft[0][1]; |
- m_pThemeData->clrHeadEdgeLeft[1][0] = m_pThemeData->clrHeadEdgeLeft[0][0]; |
- m_pThemeData->clrHeadEdgeRight[1][0] = m_pThemeData->clrHeadEdgeRight[0][0]; |
- m_pThemeData->clrHeadEdgeRight[1][1] = m_pThemeData->clrHeadEdgeRight[0][1]; |
- m_pThemeData->clrHeadEdgeRight[1][2] = m_pThemeData->clrHeadEdgeRight[0][2]; |
- m_pThemeData->clrHeadEdgeTop[1][0] = m_pThemeData->clrHeadEdgeTop[0][0]; |
- m_pThemeData->clrHeadEdgeTop[1][1] = m_pThemeData->clrHeadEdgeTop[0][1]; |
- m_pThemeData->clrHeadEdgeTop[1][2] = m_pThemeData->clrHeadEdgeTop[0][2]; |
- m_pThemeData->clrHeadEdgeBottom[1][0] = m_pThemeData->clrHeadEdgeBottom[0][0]; |
- m_pThemeData->clrHeadEdgeBottom[1][1] = m_pThemeData->clrHeadEdgeBottom[0][1]; |
- m_pThemeData->clrHeadEdgeBottom[1][2] = m_pThemeData->clrHeadEdgeBottom[0][2]; |
- m_pThemeData->clrNormalBtBKStart[1][2] = |
- m_pThemeData->clrNormalBtBKStart[0][2]; |
- m_pThemeData->clrNormalBtBKEnd[1][2] = m_pThemeData->clrNormalBtBKEnd[0][2]; |
- m_pThemeData->clrNormalBtBKStart[1][0] = |
- m_pThemeData->clrNormalBtBKStart[0][0]; |
- m_pThemeData->clrNormalBtBKEnd[1][0] = m_pThemeData->clrNormalBtBKEnd[1][0]; |
- m_pThemeData->clrNormalBtBKStart[1][1] = |
- m_pThemeData->clrNormalBtBKStart[0][1]; |
- m_pThemeData->clrNormalBtBKEnd[1][1] = m_pThemeData->clrNormalBtBKEnd[0][1]; |
- m_pThemeData->clrNormalBtEdgeLight[1][0] = |
- m_pThemeData->clrNormalBtEdgeLight[0][0]; |
- m_pThemeData->clrNormalBtEdgeDark[1][0] = |
- m_pThemeData->clrNormalBtEdgeDark[0][0]; |
- m_pThemeData->clrNormalBtEdgeLight[1][1] = |
- m_pThemeData->clrNormalBtEdgeLight[0][1]; |
- m_pThemeData->clrNormalBtEdgeDark[1][1] = |
- m_pThemeData->clrNormalBtEdgeDark[0][1]; |
- m_pThemeData->clrNormalBtEdgeLight[1][2] = |
- m_pThemeData->clrNormalBtEdgeLight[0][2]; |
- m_pThemeData->clrNormalBtEdgeDark[1][2] = |
- m_pThemeData->clrNormalBtEdgeDark[0][2]; |
- m_pThemeData->clrBtnCornerLight[1][0] = m_pThemeData->clrBtnCornerLight[0][0]; |
- m_pThemeData->clrBtnCornerLight[1][1] = m_pThemeData->clrBtnCornerLight[0][1]; |
- m_pThemeData->clrBtnCornerLight[1][2] = m_pThemeData->clrBtnCornerLight[0][2]; |
- m_pThemeData->clrBtnEdgeOut[1] = m_pThemeData->clrBtnEdgeOut[0]; |
- m_pThemeData->clrFormBorder[1][0] = m_pThemeData->clrFormBorder[0][0]; |
- m_pThemeData->clrFormBorder[1][1] = m_pThemeData->clrFormBorder[0][1]; |
- m_pThemeData->clrFormBorder[1][2] = m_pThemeData->clrFormBorder[0][2]; |
- m_pThemeData->clrFormBorder[1][3] = m_pThemeData->clrFormBorder[0][3]; |
- m_pThemeData->clrFormBorder[1][4] = m_pThemeData->clrFormBorder[0][4]; |
- m_pThemeData->clrFormBorderLight[1] = m_pThemeData->clrFormBorderLight[0]; |
- DeactiveForm(); |
-} |
-void CFWL_FormTP::DeactiveForm() { |
- TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][3]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeLeft[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeLeft[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeLeft[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeRight[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeRight[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeRight[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeTop[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeTop[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeTop[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeBottom[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeBottom[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrHeadEdgeBottom[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtBKStart[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtBKStart[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtBKStart[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtBKEnd[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtBKEnd[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtBKEnd[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtEdgeLight[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtEdgeLight[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtEdgeLight[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtEdgeDark[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtEdgeDark[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrNormalBtEdgeDark[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrBtnCornerLight[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrBtnCornerLight[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrBtnCornerLight[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrBtnEdgeOut[1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrFormBorder[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrFormBorder[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrFormBorder[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrFormBorder[1][3]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrFormBorder[1][4]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrFormBorderLight[1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtBKStart[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtBKStart[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtBKStart[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtBKEnd[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtBKEnd[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtBKEnd[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtEdgeLight[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtEdgeLight[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtEdgeLight[1][2]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtEdgeDark[1][0]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtEdgeDark[1][1]); |
- TransModeColor(m_pThemeData->clrTransWhite, |
- m_pThemeData->clrCloseBtEdgeDark[1][2]); |
-} |
-void CFWL_FormTP::TransModeColor(FX_ARGB clrFore, FX_ARGB& clrBack) { |
- int32_t iAlfaF, iRF, iGF, iBF; |
- int32_t iAlfaB, iRB, iGB, iBB; |
- ArgbDecode(clrFore, iAlfaF, iRF, iGF, iBF); |
- ArgbDecode(clrBack, iAlfaB, iRB, iGB, iBB); |
- clrBack = ArgbEncode(0xff, iRB + (iRF - iRB) * iAlfaF / 255, |
- iGB + (iGF - iGB) * iAlfaF / 255, |
- iBB + (iBF - iBB) * iAlfaF / 255); |
-} |
-void CFWL_FormTP::InitCaption(FX_BOOL bActive) { |
- if (bActive) { |
- CFX_FxgeDevice dev; |
- CFX_Graphics gs; |
- CFX_Path path; |
- path.Create(); |
- if (m_pActiveBitmap) { |
- delete m_pActiveBitmap; |
- m_pActiveBitmap = NULL; |
- } |
- m_pActiveBitmap = new CFX_DIBitmap; |
- m_pActiveBitmap->Create(1, FWLTHEME_CAPACITY_CYCaption, FXDIB_Argb); |
- dev.Attach(m_pActiveBitmap); |
- gs.Create(&dev); |
- path.AddRectangle(0, 0, 1, 5); |
- DrawAxialShading(&gs, 0, 0, 0, 5, m_pThemeData->clrHeadBK[0][0], |
- m_pThemeData->clrHeadBK[0][1], &path); |
- path.Clear(); |
- path.AddRectangle(0, 5, 1, 15); |
- DrawAxialShading(&gs, 0, 5, 0, 20, m_pThemeData->clrHeadBK[0][1], |
- m_pThemeData->clrHeadBK[0][2], &path); |
- path.Clear(); |
- path.AddRectangle(0, 20, 1, FWLTHEME_CAPACITY_CYCaption - 19); |
- DrawAxialShading(&gs, 0, 20, 0, FWLTHEME_CAPACITY_CYCaption, |
- m_pThemeData->clrHeadBK[0][2], |
- m_pThemeData->clrHeadBK[0][3], &path); |
- } else { |
- CFX_FxgeDevice dev; |
- CFX_Graphics gs; |
- CFX_Path path; |
- path.Create(); |
- if (m_pDeactivebitmap) { |
- delete m_pDeactivebitmap; |
- m_pDeactivebitmap = NULL; |
- } |
- m_pDeactivebitmap = new CFX_DIBitmap; |
- m_pDeactivebitmap->Create(1, FWLTHEME_CAPACITY_CYCaption, FXDIB_Argb); |
- dev.Attach(m_pDeactivebitmap); |
- gs.Create(&dev); |
- path.AddRectangle(0, 0, 1, 5); |
- DrawAxialShading(&gs, 0, 0, 0, 5, m_pThemeData->clrHeadBK[1][0], |
- m_pThemeData->clrHeadBK[1][1], &path); |
- path.Clear(); |
- path.AddRectangle(0, 5, 1, 15); |
- DrawAxialShading(&gs, 0, 5, 0, 20, m_pThemeData->clrHeadBK[1][1], |
- m_pThemeData->clrHeadBK[1][2], &path); |
- path.Clear(); |
- path.AddRectangle(0, 20, 1, FWLTHEME_CAPACITY_CYCaption - 19); |
- DrawAxialShading(&gs, 0, 20, 0, FWLTHEME_CAPACITY_CYCaption, |
- m_pThemeData->clrHeadBK[1][2], |
- m_pThemeData->clrHeadBK[1][3], &path); |
- } |
-} |
+// Copyright 2014 PDFium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+ |
+#include "xfa/src/foxitlib.h" |
+#define FWLTHEME_CAPACITY_CXFormBorder 3 |
+#define FWLTHEME_CAPACITY_CYFormBorder 3 |
+#define FWLTHEME_CAPACITY_CYNarrowCaption 18 |
+#define FWLTHEME_CAPACITY_CYCaption 29 |
+#define FWLTHEME_CAPACITY_BigIconSize 32 |
+#define FWLTHEME_CAPACITY_SmallIconSize 16 |
+#define FWLTHEME_CAPACITY_FormTextColor 0xFFFFFFFF |
+#define FWLTHEME_FORMBTN_Margin 5 |
+#define FWLTHEME_FORMBTN_Span 2 |
+#define FWLTHEME_FORMBTN_Size 21 |
+CFWL_FormTP::CFWL_FormTP() : m_pActiveBitmap(NULL), m_pDeactivebitmap(NULL) { |
+ m_pThemeData = new SBThemeData; |
+ SetThemeData(0); |
+ m_rtDisLBorder.Reset(); |
+ m_rtDisRBorder.Reset(); |
+ m_rtDisBBorder.Reset(); |
+ m_rtDisCaption.Reset(); |
+} |
+CFWL_FormTP::~CFWL_FormTP() { |
+ if (m_pThemeData) { |
+ delete m_pThemeData; |
+ m_pThemeData = NULL; |
+ } |
+} |
+FWL_ERR CFWL_FormTP::Initialize() { |
+ InitTTO(); |
+ InitCaption(TRUE); |
+ InitCaption(FALSE); |
+ return CFWL_WidgetTP::Initialize(); |
+} |
+FWL_ERR CFWL_FormTP::Finalize() { |
+ FinalizeTTO(); |
+ if (m_pActiveBitmap) { |
+ delete m_pActiveBitmap; |
+ m_pActiveBitmap = NULL; |
+ } |
+ if (m_pDeactivebitmap) { |
+ delete m_pDeactivebitmap; |
+ m_pDeactivebitmap = NULL; |
+ } |
+ return CFWL_WidgetTP::Finalize(); |
+} |
+FX_BOOL CFWL_FormTP::IsValidWidget(IFWL_Widget* pWidget) { |
+ if (!pWidget) |
+ return FALSE; |
+ FX_DWORD dwHash = pWidget->GetClassID(); |
+ return dwHash == FWL_CLASSHASH_Form; |
+} |
+FX_DWORD CFWL_FormTP::SetThemeID(IFWL_Widget* pWidget, |
+ FX_DWORD dwThemeID, |
+ FX_BOOL bChildren) { |
+ if (m_pThemeData) { |
+ SetThemeData(FWL_GetThemeColor(dwThemeID)); |
+ } |
+ InitCaption(TRUE); |
+ InitCaption(FALSE); |
+ return CFWL_WidgetTP::SetThemeID(pWidget, dwThemeID, bChildren); |
+} |
+FX_BOOL CFWL_FormTP::DrawBackground(CFWL_ThemeBackground* pParams) { |
+ if (!pParams) |
+ return FALSE; |
+ int32_t iActive = 0; |
+ if (pParams->m_dwStates & FWL_PARTSTATE_FRM_Inactive) { |
+ iActive = 1; |
+ } |
+ FWLTHEME_STATE eState = FWLTHEME_STATE_Normal; |
+ switch (pParams->m_dwStates & 0x03) { |
+ case FWL_PARTSTATE_FRM_Hover: { |
+ eState = FWLTHEME_STATE_Hover; |
+ break; |
+ } |
+ case FWL_PARTSTATE_FRM_Pressed: { |
+ eState = FWLTHEME_STATE_Pressed; |
+ break; |
+ } |
+ case FWL_PARTSTATE_FRM_Disabled: { |
+ eState = FWLTHEME_STATE_Disabale; |
+ break; |
+ } |
+ default: {} |
+ } |
+ switch (pParams->m_iPart) { |
+ case FWL_PART_FRM_Border: { |
+ DrawFormBorder(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
+ &pParams->m_matrix, iActive); |
+ break; |
+ } |
+ case FWL_PART_FRM_Edge: { |
+ DrawEdge(pParams->m_pGraphics, pParams->m_pWidget->GetStyles(), |
+ &pParams->m_rtPart, &pParams->m_matrix); |
+ break; |
+ } |
+ case FWL_PART_FRM_Background: { |
+ FillBackground(pParams->m_pGraphics, &pParams->m_rtPart, |
+ &pParams->m_matrix); |
+ break; |
+ } |
+ case FWL_PART_FRM_Caption: { |
+ DrawCaption(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
+ &pParams->m_matrix, iActive); |
+ break; |
+ } |
+ case FWL_PART_FRM_NarrowCaption: { |
+ DrawNarrowCaption(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
+ &pParams->m_matrix, iActive); |
+ break; |
+ } |
+ case FWL_PART_FRM_CloseBox: { |
+ DrawCloseBox(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
+ &pParams->m_matrix, iActive); |
+ break; |
+ } |
+ case FWL_PART_FRM_MinimizeBox: { |
+ DrawMinimizeBox(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
+ &pParams->m_matrix, iActive); |
+ break; |
+ } |
+ case FWL_PART_FRM_MaximizeBox: { |
+ DrawMaximizeBox(pParams->m_pGraphics, &pParams->m_rtPart, eState, |
+ pParams->m_dwData, &pParams->m_matrix, iActive); |
+ break; |
+ } |
+ case FWL_PART_FRM_Icon: { |
+ DrawIconImage(pParams->m_pGraphics, pParams->m_pImage, &pParams->m_rtPart, |
+ eState, &pParams->m_matrix, iActive); |
+ break; |
+ } |
+ default: {} |
+ } |
+ return TRUE; |
+} |
+FX_BOOL CFWL_FormTP::DrawText(CFWL_ThemeText* pParams) { |
+ if (!m_pTextOut) |
+ return FALSE; |
+ if (pParams->m_iPart == FWL_PART_FRM_Caption) { |
+ m_pTextOut->SetTextColor(0xFFFFFFFF); |
+ } else { |
+ m_pTextOut->SetTextColor(0xFF000000); |
+ } |
+ return CFWL_WidgetTP::DrawText(pParams); |
+} |
+void* CFWL_FormTP::GetCapacity(CFWL_ThemePart* pThemePart, |
+ FX_DWORD dwCapacity) { |
+ FX_BOOL bDefPro = FALSE; |
+ FX_BOOL bDwordVal = FALSE; |
+ switch (dwCapacity) { |
+ case FWL_WGTCAPACITY_CXBorder: { |
+ m_fValue = FWLTHEME_CAPACITY_CXFormBorder; |
+ break; |
+ } |
+ case FWL_WGTCAPACITY_CYBorder: { |
+ m_fValue = FWLTHEME_CAPACITY_CYFormBorder; |
+ break; |
+ } |
+ case FWL_WGTCAPACITY_FRM_CYCaption: { |
+ m_fValue = FWLTHEME_CAPACITY_CYCaption; |
+ break; |
+ } |
+ case FWL_WGTCAPACITY_FRM_CYNarrowCaption: { |
+ m_fValue = FWLTHEME_CAPACITY_CYCaption; |
+ break; |
+ } |
+ case FWL_WGTCAPACITY_TextColor: { |
+ bDwordVal = TRUE; |
+ m_dwValue = FWLTHEME_CAPACITY_FormTextColor; |
+ break; |
+ } |
+ case FWL_WGTCAPACITY_FRM_BigIcon: { |
+ m_fValue = FWLTHEME_CAPACITY_BigIconSize; |
+ break; |
+ } |
+ case FWL_WGTCAPACITY_FRM_SmallIcon: { |
+ m_fValue = FWLTHEME_CAPACITY_SmallIconSize; |
+ break; |
+ } |
+ default: { bDefPro = TRUE; } |
+ } |
+ if (!bDefPro) { |
+ if (bDwordVal) { |
+ return &m_dwValue; |
+ } |
+ return &m_fValue; |
+ } |
+ return CFWL_WidgetTP::GetCapacity(pThemePart, dwCapacity); |
+} |
+FWL_ERR CFWL_FormTP::GetPartRect(CFWL_ThemePart* pThemePart, |
+ CFX_RectF& rtPart) { |
+ switch (pThemePart->m_iPart) { |
+ case FWL_PART_FRM_CloseBox: { |
+ CalCloseBox(pThemePart->m_pWidget, rtPart); |
+ break; |
+ } |
+ case FWL_PART_FRM_MaximizeBox: { |
+ CalMaxBox(pThemePart->m_pWidget, rtPart); |
+ break; |
+ } |
+ case FWL_PART_FRM_MinimizeBox: { |
+ CalMinBox(pThemePart->m_pWidget, rtPart); |
+ break; |
+ } |
+ case FWL_PART_FRM_HeadText: { |
+ CalCaption(pThemePart->m_pWidget, rtPart); |
+ break; |
+ } |
+ case FWL_PART_FRM_Icon: { |
+ CalIcon(pThemePart->m_pWidget, rtPart); |
+ break; |
+ } |
+ default: {} |
+ } |
+ return FWL_ERR_Succeeded; |
+} |
+void CFWL_FormTP::CalCloseBox(IFWL_Widget* pWidget, CFX_RectF& rect) { |
+ FX_DWORD dwStyles = pWidget->GetStyles(); |
+ CFX_RectF rtWidget; |
+ pWidget->GetWidgetRect(rtWidget); |
+ rtWidget.Offset(-rtWidget.left, -rtWidget.top); |
+ if (dwStyles & FWL_WGTSTYLE_CloseBox) { |
+ rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Span, |
+ rtWidget.top + FWLTHEME_FORMBTN_Margin, FWLTHEME_FORMBTN_Size, |
+ FWLTHEME_FORMBTN_Size); |
+ } else { |
+ rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Span, |
+ rtWidget.top + FWLTHEME_FORMBTN_Margin, 0, 0); |
+ } |
+} |
+void CFWL_FormTP::CalMaxBox(IFWL_Widget* pWidget, CFX_RectF& rect) { |
+ FX_DWORD dwStyles = pWidget->GetStyles(); |
+ CFX_RectF rtWidget; |
+ pWidget->GetWidgetRect(rtWidget); |
+ rtWidget.Offset(-rtWidget.left, -rtWidget.top); |
+ if (dwStyles & FWL_WGTSTYLE_MaximizeBox) { |
+ rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Size + |
+ FWLTHEME_FORMBTN_Span * 2, |
+ rtWidget.top + FWLTHEME_FORMBTN_Margin, FWLTHEME_FORMBTN_Size, |
+ FWLTHEME_FORMBTN_Size); |
+ } else { |
+ rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Size + |
+ FWLTHEME_FORMBTN_Span * 2, |
+ rtWidget.top + FWLTHEME_FORMBTN_Margin, 0, 0); |
+ } |
+} |
+void CFWL_FormTP::CalMinBox(IFWL_Widget* pWidget, CFX_RectF& rect) { |
+ FX_DWORD dwStyles = pWidget->GetStyles(); |
+ CFX_RectF rtWidget; |
+ pWidget->GetWidgetRect(rtWidget); |
+ rtWidget.Offset(-rtWidget.left, -rtWidget.top); |
+ if (dwStyles & FWL_WGTSTYLE_MinimizeBox) { |
+ rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + |
+ FWLTHEME_FORMBTN_Size * 2 + FWLTHEME_FORMBTN_Span * 3, |
+ rtWidget.top + FWLTHEME_FORMBTN_Margin, FWLTHEME_FORMBTN_Size, |
+ FWLTHEME_FORMBTN_Size); |
+ } else { |
+ rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + |
+ FWLTHEME_FORMBTN_Size * 2 + FWLTHEME_FORMBTN_Span * 3, |
+ rtWidget.top + FWLTHEME_FORMBTN_Margin, 0, 0); |
+ } |
+} |
+void CFWL_FormTP::CalCaption(IFWL_Widget* pWidget, CFX_RectF& rect) { |
+ CFX_RectF rtWidget; |
+ pWidget->GetWidgetRect(rtWidget); |
+ rtWidget.Offset(-rtWidget.left, -rtWidget.top); |
+ rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin, |
+ rtWidget.top + FWLTHEME_FORMBTN_Margin - 2, |
+ rtWidget.width - FWLTHEME_FORMBTN_Margin * 2, |
+ FWLTHEME_FORMBTN_Size + 2 * FWLTHEME_FORMBTN_Margin + 4); |
+} |
+void CFWL_FormTP::CalIcon(IFWL_Widget* pWidget, CFX_RectF& rect) {} |
+void CFWL_FormTP::DrawFormBorder(CFX_Graphics* pGraphics, |
+ const CFX_RectF* pRect, |
+ FWLTHEME_STATE eState, |
+ CFX_Matrix* pMatrix, |
+ int32_t iActive) { |
+ CFX_RectF rt; |
+ rt.Set(pRect->left, pRect->top, 1, pRect->height); |
+ FX_FLOAT fBottom, fRight; |
+ fBottom = pRect->bottom(); |
+ fRight = pRect->right(); |
+ CFX_Path path; |
+ path.Create(); |
+ CFX_Color clrLine; |
+ path.Clear(); |
+ path.MoveTo(pRect->left, pRect->top); |
+ path.LineTo(pRect->left, fBottom - 1); |
+ path.LineTo(fRight - 1, fBottom - 1); |
+ path.LineTo(fRight - 1, pRect->top); |
+ clrLine = m_pThemeData->clrFormBorder[iActive][2]; |
+ pGraphics->SetStrokeColor(&clrLine); |
+ pGraphics->StrokePath(&path, pMatrix); |
+ path.Clear(); |
+ path.MoveTo(pRect->left + 1, pRect->top); |
+ path.LineTo(pRect->left + 1, fBottom - 2); |
+ path.LineTo(fRight - 2, fBottom - 2); |
+ path.LineTo(fRight - 2, pRect->top); |
+ clrLine = m_pThemeData->clrFormBorder[iActive][1]; |
+ pGraphics->SetStrokeColor(&clrLine); |
+ pGraphics->StrokePath(&path, pMatrix); |
+ path.Clear(); |
+ path.MoveTo(pRect->left + 2, pRect->top); |
+ path.LineTo(pRect->left + 2, fBottom - 3); |
+ path.LineTo(fRight - 3, fBottom - 3); |
+ path.LineTo(fRight - 3, pRect->top); |
+ clrLine = m_pThemeData->clrFormBorder[iActive][0]; |
+ pGraphics->SetStrokeColor(&clrLine); |
+ pGraphics->StrokePath(&path, pMatrix); |
+ path.Clear(); |
+ path.MoveTo(pRect->left + 3, pRect->top); |
+ path.LineTo(pRect->left + 3, fBottom - 4); |
+ path.LineTo(fRight - 4, fBottom - 4); |
+ path.LineTo(fRight - 4, pRect->top); |
+ clrLine = m_pThemeData->clrFormBorder[iActive][4]; |
+ pGraphics->SetStrokeColor(&clrLine); |
+ pGraphics->StrokePath(&path, pMatrix); |
+ m_rtDisLBorder.Set(pRect->left, pRect->top + 29, 4, pRect->height - 29); |
+ m_rtDisRBorder.Set(pRect->right() - 4, pRect->top + 29, 4, |
+ pRect->height - 29); |
+ m_rtDisBBorder.Set(pRect->left, pRect->bottom() - 4, pRect->width, 4); |
+ m_rtDisCaption.Set(pRect->left, pRect->top, pRect->width, 29); |
+} |
+void CFWL_FormTP::DrawCaption(CFX_Graphics* pGraphics, |
+ const CFX_RectF* pRect, |
+ FWLTHEME_STATE eState, |
+ CFX_Matrix* pMatrix, |
+ int32_t iActive) { |
+ CFX_RectF rt; |
+ FX_FLOAT fBottom, fRight; |
+ fBottom = pRect->bottom(); |
+ fRight = pRect->right(); |
+ rt.Set(pRect->left, pRect->top, pRect->width, 1); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeTop[iActive][0], &rt, |
+ pMatrix); |
+ rt.Offset(0, 1); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeTop[iActive][1], &rt, |
+ pMatrix); |
+ rt.Offset(0, 1); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeTop[iActive][2], &rt, |
+ pMatrix); |
+ rt.Set(pRect->left, pRect->bottom() - 1, pRect->width, 1); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeBottom[iActive][2], &rt, |
+ pMatrix); |
+ rt.Offset(0, -1); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeBottom[iActive][1], &rt, |
+ pMatrix); |
+ rt.Set(pRect->left, pRect->top, 1, pRect->height); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeLeft[iActive][2], &rt, |
+ pMatrix); |
+ rt.Set(pRect->left + 1, pRect->top + 1, 1, fBottom - 1); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeLeft[iActive][1], &rt, |
+ pMatrix); |
+ rt.Set(pRect->left + 2, pRect->top + 2, 1, fBottom - 2); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeLeft[iActive][0], &rt, |
+ pMatrix); |
+ rt.Set(fRight - 1, pRect->top, pRect->width, pRect->height); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeRight[iActive][2], &rt, |
+ pMatrix); |
+ rt.Set(fRight - 2, pRect->top + 1, 1, fBottom - 1); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeRight[iActive][1], &rt, |
+ pMatrix); |
+ rt.Set(fRight - 3, pRect->top + 2, 1, fBottom - 2); |
+ FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeRight[iActive][0], &rt, |
+ pMatrix); |
+ CFX_RectF rect(*pRect); |
+ rect.Set(rect.left + 3, rect.top + 3, rect.width - 6, rect.height - 5); |
+ if (iActive == 0) { |
+ pGraphics->StretchImage(m_pActiveBitmap, rect, pMatrix); |
+ } else { |
+ pGraphics->StretchImage(m_pDeactivebitmap, rect, pMatrix); |
+ } |
+} |
+void CFWL_FormTP::DrawNarrowCaption(CFX_Graphics* pGraphics, |
+ const CFX_RectF* pRect, |
+ FWLTHEME_STATE eState, |
+ CFX_Matrix* pMatrix, |
+ int32_t iActive) {} |
+void CFWL_FormTP::DrawCloseBox(CFX_Graphics* pGraphics, |
+ const CFX_RectF* pRect, |
+ FWLTHEME_STATE eState, |
+ CFX_Matrix* pMatrix, |
+ int32_t iActive) { |
+ FX_FLOAT fRight = pRect->right(); |
+ FX_FLOAT fBottom = pRect->bottom(); |
+ FX_FLOAT fWidth = pRect->width; |
+ FX_FLOAT fHeight = pRect->height; |
+ pGraphics->SaveGraphState(); |
+ CFX_RectF rt(*pRect); |
+ pGraphics->SetLineWidth(1.0f); |
+ CFX_Path path; |
+ path.Create(); |
+ path.AddRectangle(rt.left + 1, rt.top, fWidth - 2, 1); |
+ path.AddRectangle(rt.left, rt.top + 1, 1, fHeight - 2); |
+ path.AddRectangle(fRight - 1, rt.top + 1, 1, fHeight - 2); |
+ path.AddRectangle(rt.left + 1, fBottom - 1, fWidth - 2, 1); |
+ CFX_Color crFill; |
+ crFill = m_pThemeData->clrBtnEdgeOut[iActive]; |
+ pGraphics->SetFillColor(&crFill); |
+ pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
+ path.Clear(); |
+ path.AddRectangle(rt.left + 1, rt.top + 1, 1, 1); |
+ path.AddRectangle(fRight - 2, rt.top + 1, 1, 1); |
+ path.AddRectangle(rt.left + 1, fBottom - 2, 1, 1); |
+ path.AddRectangle(fRight - 2, fBottom - 2, 1, 1); |
+ crFill = m_pThemeData->clrBtnCornerLight[iActive][eState - 1]; |
+ pGraphics->SetFillColor(&crFill); |
+ pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
+ path.Clear(); |
+ path.AddRectangle(rt.left + 2, rt.top + 1, fWidth - 4, 1); |
+ path.AddRectangle(rt.left + 1, rt.top + 2, 1, fHeight - 4); |
+ crFill = m_pThemeData->clrCloseBtEdgeLight[iActive][eState - 1]; |
+ pGraphics->SetFillColor(&crFill); |
+ pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
+ path.Clear(); |
+ path.AddRectangle(fRight - 2, rt.top + 2, 1, fHeight - 4); |
+ path.AddRectangle(rt.left + 2, fBottom - 2, fWidth - 4, 1); |
+ crFill = m_pThemeData->clrCloseBtEdgeDark[iActive][eState - 1]; |
+ pGraphics->SetFillColor(&crFill); |
+ pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
+ path.Clear(); |
+ path.AddRectangle(pRect->left + 2, pRect->top + 2, fWidth - 4, fHeight - 4); |
+ DrawAxialShading(pGraphics, pRect->left + 2, pRect->top + 2, fRight - 2, |
+ fBottom - 2, |
+ m_pThemeData->clrCloseBtBKStart[iActive][eState - 1], |
+ m_pThemeData->clrCloseBtBKEnd[iActive][eState - 1], &path, |
+ FXFILL_WINDING, pMatrix); |
+ CFX_RectF rtX(*pRect); |
+ rtX.Inflate(-5, -5); |
+ path.Clear(); |
+ FX_FLOAT frtXRight = rtX.right(); |
+ FX_FLOAT frtXBottom = rtX.bottom(); |
+ path.AddLine(rtX.left, rtX.top + 1, frtXRight - 1, frtXBottom); |
+ path.AddLine(rtX.left, rtX.top, frtXRight, frtXBottom); |
+ path.AddLine(rtX.left + 1, rtX.top, frtXRight, frtXBottom - 1); |
+ path.AddLine(rtX.left, frtXBottom - 1, frtXRight - 1, rtX.top); |
+ path.AddLine(rtX.left, frtXBottom, frtXRight, rtX.top); |
+ path.AddLine(rtX.left + 1, frtXBottom, frtXRight, rtX.top + 1); |
+ CFX_Color clrLine(0xffffffff); |
+ pGraphics->SetLineWidth(1.0f); |
+ pGraphics->SetStrokeColor(&clrLine); |
+ pGraphics->StrokePath(&path, pMatrix); |
+ pGraphics->RestoreGraphState(); |
+} |
+void CFWL_FormTP::DrawMinMaxBoxCommon(CFX_Graphics* pGraphics, |
+ const CFX_RectF* pRect, |
+ FWLTHEME_STATE eState, |
+ CFX_Matrix* pMatrix, |
+ int32_t iActive) { |
+ pGraphics->SaveGraphState(); |
+ FX_FLOAT fRight = pRect->right(); |
+ FX_FLOAT fBottom = pRect->bottom(); |
+ FX_FLOAT fWidth = pRect->width; |
+ FX_FLOAT fHeight = pRect->height; |
+ CFX_RectF rt(*pRect); |
+ pGraphics->SetLineWidth(1.0f); |
+ CFX_Path path; |
+ path.Create(); |
+ path.AddRectangle(rt.left + 1, rt.top, fWidth - 2, 1); |
+ path.AddRectangle(rt.left, rt.top + 1, 1, fHeight - 2); |
+ path.AddRectangle(fRight - 1, rt.top + 1, 1, fHeight - 2); |
+ path.AddRectangle(rt.left + 1, fBottom - 1, fWidth - 2, 1); |
+ CFX_Color crFill; |
+ crFill = m_pThemeData->clrBtnEdgeOut[iActive]; |
+ pGraphics->SetFillColor(&crFill); |
+ pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
+ path.Clear(); |
+ path.AddRectangle(rt.left + 1, rt.top + 1, 1, 1); |
+ path.AddRectangle(fRight - 2, rt.top + 1, 1, 1); |
+ path.AddRectangle(rt.left + 1, fBottom - 2, 1, 1); |
+ path.AddRectangle(fRight - 2, fBottom - 2, 1, 1); |
+ crFill = m_pThemeData->clrBtnCornerLight[iActive][eState - 1]; |
+ pGraphics->SetFillColor(&crFill); |
+ pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
+ path.Clear(); |
+ path.AddRectangle(rt.left + 2, rt.top + 1, fWidth - 4, 1); |
+ path.AddRectangle(rt.left + 1, rt.top + 2, 1, fHeight - 4); |
+ crFill = m_pThemeData->clrNormalBtEdgeLight[iActive][eState - 1]; |
+ pGraphics->SetFillColor(&crFill); |
+ pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
+ path.Clear(); |
+ path.AddRectangle(fRight - 2, rt.top + 2, 1, fHeight - 4); |
+ path.AddRectangle(rt.left + 2, fBottom - 2, fWidth - 4, 1); |
+ crFill = m_pThemeData->clrNormalBtEdgeDark[iActive][eState - 1]; |
+ pGraphics->SetFillColor(&crFill); |
+ pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); |
+ pGraphics->RestoreGraphState(); |
+ path.Clear(); |
+ path.AddRectangle(pRect->left + 2, pRect->top + 2, fWidth - 4, fHeight - 4); |
+ DrawAxialShading(pGraphics, pRect->left + 2, pRect->top + 2, fRight - 2, |
+ fBottom - 2, |
+ m_pThemeData->clrNormalBtBKStart[iActive][eState - 1], |
+ m_pThemeData->clrNormalBtBKEnd[iActive][eState - 1], &path, |
+ FXFILL_WINDING, pMatrix); |
+} |
+void CFWL_FormTP::DrawMinimizeBox(CFX_Graphics* pGraphics, |
+ const CFX_RectF* pRect, |
+ FWLTHEME_STATE eState, |
+ CFX_Matrix* pMatrix, |
+ int32_t iActive) { |
+ DrawMinMaxBoxCommon(pGraphics, pRect, eState, pMatrix); |
+ CFX_RectF rtMin; |
+ rtMin.Set(pRect->left + 5, pRect->top + 13, pRect->width - 14, |
+ pRect->height - 18); |
+ FillSoildRect(pGraphics, 0xFFFFFFFF, &rtMin, pMatrix); |
+} |
+void CFWL_FormTP::DrawMaximizeBox(CFX_Graphics* pGraphics, |
+ const CFX_RectF* pRect, |
+ FWLTHEME_STATE eState, |
+ FX_BOOL bMax, |
+ CFX_Matrix* pMatrix, |
+ int32_t iActive) { |
+ DrawMinMaxBoxCommon(pGraphics, pRect, eState, pMatrix); |
+ FX_FLOAT fWidth = pRect->width; |
+ FX_FLOAT fHeight = pRect->height; |
+ if (bMax) { |
+ CFX_Path path; |
+ path.Create(); |
+ path.AddLine(pRect->left + 7, pRect->top + 6, pRect->left + 14, |
+ pRect->top + 6); |
+ path.AddLine(pRect->left + 4, pRect->top + 9, pRect->left + 11, |
+ pRect->top + 9); |
+ pGraphics->SaveGraphState(); |
+ pGraphics->SetLineWidth(2); |
+ CFX_Color crStroke(0xFFFFFFFF); |
+ pGraphics->SetStrokeColor(&crStroke); |
+ pGraphics->StrokePath(&path, pMatrix); |
+ pGraphics->SetLineWidth(1); |
+ path.Clear(); |
+ path.AddLine(pRect->left + 4, pRect->top + 10, pRect->left + 4, |
+ pRect->top + 14); |
+ path.AddLine(pRect->left + 10, pRect->top + 10, pRect->left + 10, |
+ pRect->top + 14); |
+ path.AddLine(pRect->left + 13, pRect->top + 7, pRect->left + 13, |
+ pRect->top + 11); |
+ path.AddLine(pRect->left + 4, pRect->top + 14, pRect->left + 10, |
+ pRect->top + 14); |
+ path.AddLine(pRect->left + 12, pRect->top + 11, pRect->left + 12, |
+ pRect->top + 11); |
+ pGraphics->StrokePath(&path, pMatrix); |
+ pGraphics->RestoreGraphState(); |
+ } else { |
+ CFX_RectF rtMax(*pRect); |
+ rtMax.Inflate(-5, -5); |
+ CFX_Path path; |
+ path.Create(); |
+ path.AddRectangle(pRect->left + 5, pRect->top + 5, fWidth - 10, |
+ fHeight - 10); |
+ path.AddRectangle(pRect->left + 6, pRect->top + 8, fWidth - 12, |
+ fHeight - 14); |
+ pGraphics->SaveGraphState(); |
+ CFX_Color crFill(0xFFFFFFFF); |
+ pGraphics->SetFillColor(&crFill); |
+ pGraphics->FillPath(&path, FXFILL_ALTERNATE, pMatrix); |
+ pGraphics->RestoreGraphState(); |
+ } |
+} |
+void CFWL_FormTP::DrawIconImage(CFX_Graphics* pGraphics, |
+ CFX_DIBitmap* pDIBitmap, |
+ const CFX_RectF* pRect, |
+ FWLTHEME_STATE eState, |
+ CFX_Matrix* pMatrix, |
+ int32_t iActive) { |
+ pGraphics->StretchImage(pDIBitmap, *pRect, pMatrix); |
+} |
+void CFWL_FormTP::SetThemeData(FX_DWORD dwID) { |
+ m_pThemeData->clrTransWhite = ArgbEncode(0x65, 255, 255, 255); |
+ m_pThemeData->clrCloseBtBKStart[0][0] = ArgbEncode(0xff, 240, 166, 148); |
+ m_pThemeData->clrCloseBtBKEnd[0][0] = ArgbEncode(0xff, 228, 61, 5); |
+ m_pThemeData->clrCloseBtBKStart[0][1] = ArgbEncode(0xff, 255, 184, 176); |
+ m_pThemeData->clrCloseBtBKEnd[0][1] = ArgbEncode(0xff, 252, 107, 71); |
+ m_pThemeData->clrCloseBtBKStart[0][2] = ArgbEncode(0xff, 141, 44, 20); |
+ m_pThemeData->clrCloseBtBKEnd[0][2] = ArgbEncode(0xff, 202, 72, 33); |
+ m_pThemeData->clrCloseBtEdgeLight[0][0] = ArgbEncode(0xff, 255, 122, 107); |
+ m_pThemeData->clrCloseBtEdgeDark[0][0] = ArgbEncode(0xff, 218, 77, 54); |
+ m_pThemeData->clrCloseBtEdgeLight[0][1] = ArgbEncode(0xff, 255, 93, 74); |
+ m_pThemeData->clrCloseBtEdgeDark[0][1] = ArgbEncode(0xff, 218, 74, 51); |
+ m_pThemeData->clrCloseBtEdgeLight[0][2] = ArgbEncode(0xff, 191, 61, 28); |
+ m_pThemeData->clrCloseBtEdgeDark[0][2] = ArgbEncode(0xff, 93, 30, 13); |
+ if (dwID) { |
+ m_pThemeData->clrHeadBK[0][0] = ArgbEncode(0xff, 194, 205, 149); |
+ m_pThemeData->clrHeadBK[0][1] = ArgbEncode(0xff, 170, 184, 131); |
+ m_pThemeData->clrHeadBK[0][2] = ArgbEncode(0xff, 168, 182, 128); |
+ m_pThemeData->clrHeadBK[0][3] = ArgbEncode(0xff, 194, 205, 149); |
+ m_pThemeData->clrHeadEdgeLeft[0][0] = ArgbEncode(0xff, 117, 141, 94); |
+ m_pThemeData->clrHeadEdgeLeft[0][1] = ArgbEncode(0xff, 139, 161, 105); |
+ m_pThemeData->clrHeadEdgeLeft[0][2] = ArgbEncode(0xff, 171, 189, 133); |
+ m_pThemeData->clrHeadEdgeRight[0][0] = ArgbEncode(0xff, 155, 175, 125); |
+ m_pThemeData->clrHeadEdgeRight[0][1] = ArgbEncode(0xff, 128, 146, 103); |
+ m_pThemeData->clrHeadEdgeRight[0][2] = ArgbEncode(0xff, 94, 118, 79); |
+ m_pThemeData->clrHeadEdgeTop[0][0] = ArgbEncode(0xff, 139, 161, 105); |
+ m_pThemeData->clrHeadEdgeTop[0][1] = ArgbEncode(0xff, 234, 245, 201); |
+ m_pThemeData->clrHeadEdgeTop[0][2] = ArgbEncode(0xff, 194, 205, 149); |
+ m_pThemeData->clrHeadEdgeBottom[0][0] = ArgbEncode(0xff, 175, 189, 133); |
+ m_pThemeData->clrHeadEdgeBottom[0][1] = ArgbEncode(0xff, 153, 168, 121); |
+ m_pThemeData->clrHeadEdgeBottom[0][2] = ArgbEncode(0xff, 150, 168, 103); |
+ m_pThemeData->clrNormalBtBKStart[0][0] = ArgbEncode(0xff, 182, 195, 162); |
+ m_pThemeData->clrNormalBtBKEnd[0][0] = ArgbEncode(0xff, 128, 144, 84); |
+ m_pThemeData->clrNormalBtBKStart[0][1] = ArgbEncode(0xff, 234, 241, 208); |
+ m_pThemeData->clrNormalBtBKEnd[0][1] = ArgbEncode(0xff, 169, 186, 112); |
+ m_pThemeData->clrNormalBtBKStart[0][2] = ArgbEncode(0xff, 199, 199, 190); |
+ m_pThemeData->clrNormalBtBKEnd[0][2] = ArgbEncode(0xff, 133, 148, 88); |
+ m_pThemeData->clrNormalBtEdgeLight[0][0] = ArgbEncode(0xff, 163, 176, 137); |
+ m_pThemeData->clrNormalBtEdgeDark[0][0] = ArgbEncode(0xff, 118, 135, 83); |
+ m_pThemeData->clrNormalBtEdgeLight[0][1] = ArgbEncode(0xff, 154, 174, 105); |
+ m_pThemeData->clrNormalBtEdgeDark[0][1] = ArgbEncode(0xff, 154, 174, 105); |
+ m_pThemeData->clrNormalBtEdgeLight[0][2] = ArgbEncode(0xff, 172, 193, 123); |
+ m_pThemeData->clrNormalBtEdgeDark[0][2] = ArgbEncode(0xff, 154, 174, 105); |
+ m_pThemeData->clrBtnCornerLight[0][0] = ArgbEncode(0xff, 220, 220, 220); |
+ m_pThemeData->clrBtnCornerLight[0][1] = ArgbEncode(0xff, 255, 255, 255); |
+ m_pThemeData->clrBtnCornerLight[0][2] = ArgbEncode(0xff, 225, 225, 225); |
+ m_pThemeData->clrBtnEdgeOut[0] = ArgbEncode(0xff, 255, 255, 255); |
+ m_pThemeData->clrFormBorder[0][0] = ArgbEncode(0xff, 117, 141, 94); |
+ m_pThemeData->clrFormBorder[0][1] = ArgbEncode(0xff, 139, 161, 105); |
+ m_pThemeData->clrFormBorder[0][2] = ArgbEncode(0xff, 171, 189, 133); |
+ m_pThemeData->clrFormBorder[0][3] = ArgbEncode(0xff, 164, 178, 127); |
+ m_pThemeData->clrFormBorder[0][4] = ArgbEncode(0xff, 255, 255, 255); |
+ m_pThemeData->clrFormBorderLight[0] = ArgbEncode(0xff, 171, 189, 133); |
+ } else { |
+ m_pThemeData->clrHeadBK[0][0] = ArgbEncode(0xff, 3, 114, 255); |
+ m_pThemeData->clrHeadBK[0][1] = ArgbEncode(0xff, 0, 85, 226); |
+ m_pThemeData->clrHeadBK[0][2] = ArgbEncode(0xff, 0, 85, 226); |
+ m_pThemeData->clrHeadBK[0][3] = ArgbEncode(0xff, 3, 114, 255); |
+ m_pThemeData->clrHeadEdgeLeft[0][2] = ArgbEncode(0xff, 0, 32, 200); |
+ m_pThemeData->clrHeadEdgeLeft[0][1] = ArgbEncode(0xff, 0, 61, 220); |
+ m_pThemeData->clrHeadEdgeLeft[0][0] = ArgbEncode(0xff, 0, 54, 210); |
+ m_pThemeData->clrHeadEdgeRight[0][0] = ArgbEncode(0xff, 0, 56, 234); |
+ m_pThemeData->clrHeadEdgeRight[0][1] = ArgbEncode(0xff, 0, 50, 193); |
+ m_pThemeData->clrHeadEdgeRight[0][2] = ArgbEncode(0xff, 0, 19, 139); |
+ m_pThemeData->clrHeadEdgeTop[0][0] = ArgbEncode(0xff, 0, 88, 238); |
+ m_pThemeData->clrHeadEdgeTop[0][1] = ArgbEncode(0xff, 63, 151, 255); |
+ m_pThemeData->clrHeadEdgeTop[0][2] = ArgbEncode(0xff, 3, 114, 255); |
+ m_pThemeData->clrHeadEdgeBottom[0][0] = ArgbEncode(0xff, 0, 96, 252); |
+ m_pThemeData->clrHeadEdgeBottom[0][1] = ArgbEncode(0xff, 63, 151, 255); |
+ m_pThemeData->clrHeadEdgeBottom[0][2] = ArgbEncode(0xff, 0, 67, 207); |
+ m_pThemeData->clrNormalBtBKStart[0][2] = ArgbEncode(0xff, 0, 49, 112); |
+ m_pThemeData->clrNormalBtBKEnd[0][2] = ArgbEncode(0xff, 0, 87, 188); |
+ m_pThemeData->clrNormalBtBKStart[0][0] = ArgbEncode(0xff, 154, 183, 250); |
+ m_pThemeData->clrNormalBtBKEnd[0][0] = ArgbEncode(0xff, 17, 110, 248); |
+ m_pThemeData->clrNormalBtBKStart[0][1] = ArgbEncode(0xff, 164, 194, 255); |
+ m_pThemeData->clrNormalBtBKEnd[0][1] = ArgbEncode(0xff, 29, 158, 255); |
+ m_pThemeData->clrNormalBtEdgeLight[0][0] = ArgbEncode(0xff, 68, 120, 245); |
+ m_pThemeData->clrNormalBtEdgeDark[0][0] = ArgbEncode(0xff, 24, 72, 187); |
+ m_pThemeData->clrNormalBtEdgeLight[0][1] = ArgbEncode(0xff, 72, 122, 245); |
+ m_pThemeData->clrNormalBtEdgeDark[0][1] = ArgbEncode(0xff, 35, 87, 195); |
+ m_pThemeData->clrNormalBtEdgeLight[0][2] = ArgbEncode(0xff, 60, 114, 244); |
+ m_pThemeData->clrNormalBtEdgeDark[0][2] = ArgbEncode(0xff, 21, 70, 185); |
+ m_pThemeData->clrBtnCornerLight[0][0] = ArgbEncode(0xff, 220, 220, 220); |
+ m_pThemeData->clrBtnCornerLight[0][1] = ArgbEncode(0xff, 255, 255, 255); |
+ m_pThemeData->clrBtnCornerLight[0][2] = ArgbEncode(0xff, 225, 225, 225); |
+ m_pThemeData->clrBtnEdgeOut[0] = ArgbEncode(0xff, 255, 255, 255); |
+ m_pThemeData->clrFormBorder[0][0] = ArgbEncode(0xff, 0, 72, 241); |
+ m_pThemeData->clrFormBorder[0][1] = ArgbEncode(0xff, 0, 61, 220); |
+ m_pThemeData->clrFormBorder[0][2] = ArgbEncode(0xff, 0, 30, 160); |
+ m_pThemeData->clrFormBorder[0][3] = ArgbEncode(0xff, 0, 19, 140); |
+ m_pThemeData->clrFormBorder[0][4] = ArgbEncode(0xff, 255, 255, 255); |
+ m_pThemeData->clrFormBorderLight[0] = ArgbEncode(0xff, 22, 106, 239); |
+ } |
+ m_pThemeData->clrCloseBtBKStart[1][0] = m_pThemeData->clrCloseBtBKStart[0][0]; |
+ m_pThemeData->clrCloseBtBKEnd[1][0] = m_pThemeData->clrCloseBtBKEnd[0][0]; |
+ m_pThemeData->clrCloseBtBKStart[1][1] = m_pThemeData->clrCloseBtBKStart[0][1]; |
+ m_pThemeData->clrCloseBtBKEnd[1][1] = m_pThemeData->clrCloseBtBKEnd[0][1]; |
+ m_pThemeData->clrCloseBtBKStart[1][2] = m_pThemeData->clrCloseBtBKStart[0][2]; |
+ m_pThemeData->clrCloseBtBKEnd[1][2] = m_pThemeData->clrCloseBtBKEnd[0][2]; |
+ m_pThemeData->clrCloseBtEdgeLight[1][0] = |
+ m_pThemeData->clrCloseBtEdgeLight[0][0]; |
+ m_pThemeData->clrCloseBtEdgeDark[1][0] = |
+ m_pThemeData->clrCloseBtEdgeDark[0][0]; |
+ m_pThemeData->clrCloseBtEdgeLight[1][1] = |
+ m_pThemeData->clrCloseBtEdgeLight[0][1]; |
+ m_pThemeData->clrCloseBtEdgeDark[1][1] = |
+ m_pThemeData->clrCloseBtEdgeDark[0][1]; |
+ m_pThemeData->clrCloseBtEdgeLight[1][2] = |
+ m_pThemeData->clrCloseBtEdgeLight[0][2]; |
+ m_pThemeData->clrCloseBtEdgeDark[1][2] = |
+ m_pThemeData->clrCloseBtEdgeDark[0][2]; |
+ m_pThemeData->clrHeadBK[1][0] = m_pThemeData->clrHeadBK[0][0]; |
+ m_pThemeData->clrHeadBK[1][1] = m_pThemeData->clrHeadBK[0][1]; |
+ m_pThemeData->clrHeadBK[1][2] = m_pThemeData->clrHeadBK[0][2]; |
+ m_pThemeData->clrHeadBK[1][3] = m_pThemeData->clrHeadBK[0][3]; |
+ m_pThemeData->clrHeadEdgeLeft[1][2] = m_pThemeData->clrHeadEdgeLeft[0][2]; |
+ m_pThemeData->clrHeadEdgeLeft[1][1] = m_pThemeData->clrHeadEdgeLeft[0][1]; |
+ m_pThemeData->clrHeadEdgeLeft[1][0] = m_pThemeData->clrHeadEdgeLeft[0][0]; |
+ m_pThemeData->clrHeadEdgeRight[1][0] = m_pThemeData->clrHeadEdgeRight[0][0]; |
+ m_pThemeData->clrHeadEdgeRight[1][1] = m_pThemeData->clrHeadEdgeRight[0][1]; |
+ m_pThemeData->clrHeadEdgeRight[1][2] = m_pThemeData->clrHeadEdgeRight[0][2]; |
+ m_pThemeData->clrHeadEdgeTop[1][0] = m_pThemeData->clrHeadEdgeTop[0][0]; |
+ m_pThemeData->clrHeadEdgeTop[1][1] = m_pThemeData->clrHeadEdgeTop[0][1]; |
+ m_pThemeData->clrHeadEdgeTop[1][2] = m_pThemeData->clrHeadEdgeTop[0][2]; |
+ m_pThemeData->clrHeadEdgeBottom[1][0] = m_pThemeData->clrHeadEdgeBottom[0][0]; |
+ m_pThemeData->clrHeadEdgeBottom[1][1] = m_pThemeData->clrHeadEdgeBottom[0][1]; |
+ m_pThemeData->clrHeadEdgeBottom[1][2] = m_pThemeData->clrHeadEdgeBottom[0][2]; |
+ m_pThemeData->clrNormalBtBKStart[1][2] = |
+ m_pThemeData->clrNormalBtBKStart[0][2]; |
+ m_pThemeData->clrNormalBtBKEnd[1][2] = m_pThemeData->clrNormalBtBKEnd[0][2]; |
+ m_pThemeData->clrNormalBtBKStart[1][0] = |
+ m_pThemeData->clrNormalBtBKStart[0][0]; |
+ m_pThemeData->clrNormalBtBKEnd[1][0] = m_pThemeData->clrNormalBtBKEnd[1][0]; |
+ m_pThemeData->clrNormalBtBKStart[1][1] = |
+ m_pThemeData->clrNormalBtBKStart[0][1]; |
+ m_pThemeData->clrNormalBtBKEnd[1][1] = m_pThemeData->clrNormalBtBKEnd[0][1]; |
+ m_pThemeData->clrNormalBtEdgeLight[1][0] = |
+ m_pThemeData->clrNormalBtEdgeLight[0][0]; |
+ m_pThemeData->clrNormalBtEdgeDark[1][0] = |
+ m_pThemeData->clrNormalBtEdgeDark[0][0]; |
+ m_pThemeData->clrNormalBtEdgeLight[1][1] = |
+ m_pThemeData->clrNormalBtEdgeLight[0][1]; |
+ m_pThemeData->clrNormalBtEdgeDark[1][1] = |
+ m_pThemeData->clrNormalBtEdgeDark[0][1]; |
+ m_pThemeData->clrNormalBtEdgeLight[1][2] = |
+ m_pThemeData->clrNormalBtEdgeLight[0][2]; |
+ m_pThemeData->clrNormalBtEdgeDark[1][2] = |
+ m_pThemeData->clrNormalBtEdgeDark[0][2]; |
+ m_pThemeData->clrBtnCornerLight[1][0] = m_pThemeData->clrBtnCornerLight[0][0]; |
+ m_pThemeData->clrBtnCornerLight[1][1] = m_pThemeData->clrBtnCornerLight[0][1]; |
+ m_pThemeData->clrBtnCornerLight[1][2] = m_pThemeData->clrBtnCornerLight[0][2]; |
+ m_pThemeData->clrBtnEdgeOut[1] = m_pThemeData->clrBtnEdgeOut[0]; |
+ m_pThemeData->clrFormBorder[1][0] = m_pThemeData->clrFormBorder[0][0]; |
+ m_pThemeData->clrFormBorder[1][1] = m_pThemeData->clrFormBorder[0][1]; |
+ m_pThemeData->clrFormBorder[1][2] = m_pThemeData->clrFormBorder[0][2]; |
+ m_pThemeData->clrFormBorder[1][3] = m_pThemeData->clrFormBorder[0][3]; |
+ m_pThemeData->clrFormBorder[1][4] = m_pThemeData->clrFormBorder[0][4]; |
+ m_pThemeData->clrFormBorderLight[1] = m_pThemeData->clrFormBorderLight[0]; |
+ DeactiveForm(); |
+} |
+void CFWL_FormTP::DeactiveForm() { |
+ TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][3]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeLeft[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeLeft[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeLeft[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeRight[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeRight[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeRight[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeTop[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeTop[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeTop[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeBottom[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeBottom[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrHeadEdgeBottom[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtBKStart[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtBKStart[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtBKStart[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtBKEnd[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtBKEnd[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtBKEnd[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtEdgeLight[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtEdgeLight[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtEdgeLight[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtEdgeDark[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtEdgeDark[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrNormalBtEdgeDark[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrBtnCornerLight[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrBtnCornerLight[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrBtnCornerLight[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrBtnEdgeOut[1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrFormBorder[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrFormBorder[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrFormBorder[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrFormBorder[1][3]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrFormBorder[1][4]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrFormBorderLight[1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtBKStart[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtBKStart[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtBKStart[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtBKEnd[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtBKEnd[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtBKEnd[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtEdgeLight[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtEdgeLight[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtEdgeLight[1][2]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtEdgeDark[1][0]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtEdgeDark[1][1]); |
+ TransModeColor(m_pThemeData->clrTransWhite, |
+ m_pThemeData->clrCloseBtEdgeDark[1][2]); |
+} |
+void CFWL_FormTP::TransModeColor(FX_ARGB clrFore, FX_ARGB& clrBack) { |
+ int32_t iAlfaF, iRF, iGF, iBF; |
+ int32_t iAlfaB, iRB, iGB, iBB; |
+ ArgbDecode(clrFore, iAlfaF, iRF, iGF, iBF); |
+ ArgbDecode(clrBack, iAlfaB, iRB, iGB, iBB); |
+ clrBack = ArgbEncode(0xff, iRB + (iRF - iRB) * iAlfaF / 255, |
+ iGB + (iGF - iGB) * iAlfaF / 255, |
+ iBB + (iBF - iBB) * iAlfaF / 255); |
+} |
+void CFWL_FormTP::InitCaption(FX_BOOL bActive) { |
+ if (bActive) { |
+ CFX_FxgeDevice dev; |
+ CFX_Graphics gs; |
+ CFX_Path path; |
+ path.Create(); |
+ if (m_pActiveBitmap) { |
+ delete m_pActiveBitmap; |
+ m_pActiveBitmap = NULL; |
+ } |
+ m_pActiveBitmap = new CFX_DIBitmap; |
+ m_pActiveBitmap->Create(1, FWLTHEME_CAPACITY_CYCaption, FXDIB_Argb); |
+ dev.Attach(m_pActiveBitmap); |
+ gs.Create(&dev); |
+ path.AddRectangle(0, 0, 1, 5); |
+ DrawAxialShading(&gs, 0, 0, 0, 5, m_pThemeData->clrHeadBK[0][0], |
+ m_pThemeData->clrHeadBK[0][1], &path); |
+ path.Clear(); |
+ path.AddRectangle(0, 5, 1, 15); |
+ DrawAxialShading(&gs, 0, 5, 0, 20, m_pThemeData->clrHeadBK[0][1], |
+ m_pThemeData->clrHeadBK[0][2], &path); |
+ path.Clear(); |
+ path.AddRectangle(0, 20, 1, FWLTHEME_CAPACITY_CYCaption - 19); |
+ DrawAxialShading(&gs, 0, 20, 0, FWLTHEME_CAPACITY_CYCaption, |
+ m_pThemeData->clrHeadBK[0][2], |
+ m_pThemeData->clrHeadBK[0][3], &path); |
+ } else { |
+ CFX_FxgeDevice dev; |
+ CFX_Graphics gs; |
+ CFX_Path path; |
+ path.Create(); |
+ if (m_pDeactivebitmap) { |
+ delete m_pDeactivebitmap; |
+ m_pDeactivebitmap = NULL; |
+ } |
+ m_pDeactivebitmap = new CFX_DIBitmap; |
+ m_pDeactivebitmap->Create(1, FWLTHEME_CAPACITY_CYCaption, FXDIB_Argb); |
+ dev.Attach(m_pDeactivebitmap); |
+ gs.Create(&dev); |
+ path.AddRectangle(0, 0, 1, 5); |
+ DrawAxialShading(&gs, 0, 0, 0, 5, m_pThemeData->clrHeadBK[1][0], |
+ m_pThemeData->clrHeadBK[1][1], &path); |
+ path.Clear(); |
+ path.AddRectangle(0, 5, 1, 15); |
+ DrawAxialShading(&gs, 0, 5, 0, 20, m_pThemeData->clrHeadBK[1][1], |
+ m_pThemeData->clrHeadBK[1][2], &path); |
+ path.Clear(); |
+ path.AddRectangle(0, 20, 1, FWLTHEME_CAPACITY_CYCaption - 19); |
+ DrawAxialShading(&gs, 0, 20, 0, FWLTHEME_CAPACITY_CYCaption, |
+ m_pThemeData->clrHeadBK[1][2], |
+ m_pThemeData->clrHeadBK[1][3], &path); |
+ } |
+} |