OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fwl/theme/cfwl_widgettp.h" | 7 #include "xfa/fwl/theme/cfwl_widgettp.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 m_pTextOut->SetEllipsisString(L"..."); | 213 m_pTextOut->SetEllipsisString(L"..."); |
214 return FWL_ERR_Succeeded; | 214 return FWL_ERR_Succeeded; |
215 } | 215 } |
216 FX_ERR CFWL_WidgetTP::FinalizeTTO() { | 216 FX_ERR CFWL_WidgetTP::FinalizeTTO() { |
217 if (m_pTextOut) { | 217 if (m_pTextOut) { |
218 m_pTextOut->Release(); | 218 m_pTextOut->Release(); |
219 m_pTextOut = NULL; | 219 m_pTextOut = NULL; |
220 } | 220 } |
221 return FWL_ERR_Succeeded; | 221 return FWL_ERR_Succeeded; |
222 } | 222 } |
223 #ifdef THEME_XPSimilar | 223 |
224 void CFWL_WidgetTP::DrawEdge(CFX_Graphics* pGraphics, | 224 void CFWL_WidgetTP::DrawEdge(CFX_Graphics* pGraphics, |
225 uint32_t dwStyles, | 225 uint32_t dwStyles, |
226 const CFX_RectF* pRect, | 226 const CFX_RectF* pRect, |
227 CFX_Matrix* pMatrix) { | 227 CFX_Matrix* pMatrix) { |
228 if (!pGraphics) | 228 if (!pGraphics) |
229 return; | 229 return; |
230 if (!pRect) | 230 if (!pRect) |
231 return; | 231 return; |
232 pGraphics->SaveGraphState(); | 232 pGraphics->SaveGraphState(); |
233 CFX_Color crStroke(FWL_GetThemeColor(m_dwThemeID) == 0 | 233 CFX_Color crStroke(FWL_GetThemeColor(m_dwThemeID) == 0 |
234 ? ArgbEncode(255, 127, 157, 185) | 234 ? ArgbEncode(255, 127, 157, 185) |
235 : FWLTHEME_COLOR_Green_BKSelected); | 235 : FWLTHEME_COLOR_Green_BKSelected); |
236 pGraphics->SetStrokeColor(&crStroke); | 236 pGraphics->SetStrokeColor(&crStroke); |
237 CFX_Path path; | 237 CFX_Path path; |
238 path.Create(); | 238 path.Create(); |
239 path.AddRectangle(pRect->left, pRect->top, pRect->width - 1, | 239 path.AddRectangle(pRect->left, pRect->top, pRect->width - 1, |
240 pRect->height - 1); | 240 pRect->height - 1); |
241 pGraphics->StrokePath(&path, pMatrix); | 241 pGraphics->StrokePath(&path, pMatrix); |
242 path.Clear(); | 242 path.Clear(); |
243 crStroke = ArgbEncode(255, 255, 255, 255); | 243 crStroke = ArgbEncode(255, 255, 255, 255); |
244 pGraphics->SetStrokeColor(&crStroke); | 244 pGraphics->SetStrokeColor(&crStroke); |
245 path.AddRectangle(pRect->left + 1, pRect->top + 1, pRect->width - 3, | 245 path.AddRectangle(pRect->left + 1, pRect->top + 1, pRect->width - 3, |
246 pRect->height - 3); | 246 pRect->height - 3); |
247 pGraphics->StrokePath(&path, pMatrix); | 247 pGraphics->StrokePath(&path, pMatrix); |
248 pGraphics->RestoreGraphState(); | 248 pGraphics->RestoreGraphState(); |
249 } | 249 } |
250 #else | 250 |
251 void CFWL_WidgetTP::DrawEdge(CFX_Graphics* pGraphics, | |
252 uint32_t dwStyles, | |
253 const CFX_RectF* pRect, | |
254 CFX_Matrix* pMatrix) { | |
255 if (!pGraphics) | |
256 return; | |
257 if (!pRect) | |
258 return; | |
259 FWLTHEME_EDGE eType; | |
260 FX_FLOAT fWidth; | |
261 switch (dwStyles & FWL_WGTSTYLE_EdgeMask) { | |
262 case FWL_WGTSTYLE_EdgeRaised: { | |
263 eType = FWLTHEME_EDGE_Raised, fWidth = FWLTHEME_CAPACITY_EdgeRaised; | |
264 break; | |
265 } | |
266 case FWL_WGTSTYLE_EdgeSunken: { | |
267 eType = FWLTHEME_EDGE_Sunken, fWidth = FWLTHEME_CAPACITY_EdgeSunken; | |
268 break; | |
269 } | |
270 case FWL_WGTSTYLE_EdgeFlat: | |
271 default: { return; } | |
272 } | |
273 Draw3DRect(pGraphics, eType, fWidth, pRect, FWLTHEME_COLOR_EDGELT1, | |
274 FWLTHEME_COLOR_EDGELT2, FWLTHEME_COLOR_EDGERB1, | |
275 FWLTHEME_COLOR_EDGERB2, pMatrix); | |
276 } | |
277 #endif | |
278 void CFWL_WidgetTP::Draw3DRect(CFX_Graphics* pGraphics, | 251 void CFWL_WidgetTP::Draw3DRect(CFX_Graphics* pGraphics, |
279 FWLTHEME_EDGE eType, | 252 FWLTHEME_EDGE eType, |
280 FX_FLOAT fWidth, | 253 FX_FLOAT fWidth, |
281 const CFX_RectF* pRect, | 254 const CFX_RectF* pRect, |
282 FX_ARGB cr1, | 255 FX_ARGB cr1, |
283 FX_ARGB cr2, | 256 FX_ARGB cr2, |
284 FX_ARGB cr3, | 257 FX_ARGB cr3, |
285 FX_ARGB cr4, | 258 FX_ARGB cr4, |
286 CFX_Matrix* pMatrix) { | 259 CFX_Matrix* pMatrix) { |
287 if (!pGraphics) | 260 if (!pGraphics) |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
667 FWLTHEME_STATE eState, | 640 FWLTHEME_STATE eState, |
668 CFX_Matrix* pMatrix) { | 641 CFX_Matrix* pMatrix) { |
669 DrawBtn(pGraphics, pRect, eState, pMatrix); | 642 DrawBtn(pGraphics, pRect, eState, pMatrix); |
670 if (!CFWL_ArrowData::IsInstance()) { | 643 if (!CFWL_ArrowData::IsInstance()) { |
671 CFWL_ArrowData::GetInstance()->SetColorData(FWL_GetThemeColor(m_dwThemeID)); | 644 CFWL_ArrowData::GetInstance()->SetColorData(FWL_GetThemeColor(m_dwThemeID)); |
672 } | 645 } |
673 CFWL_ArrowData::CColorData* pColorData = | 646 CFWL_ArrowData::CColorData* pColorData = |
674 CFWL_ArrowData::GetInstance()->m_pColorData; | 647 CFWL_ArrowData::GetInstance()->m_pColorData; |
675 DrawArrow(pGraphics, pRect, eDict, pColorData->clrSign[eState - 1], pMatrix); | 648 DrawArrow(pGraphics, pRect, eDict, pColorData->clrSign[eState - 1], pMatrix); |
676 } | 649 } |
677 FWLCOLOR CFWL_WidgetTP::BlendColor(FWLCOLOR srcColor, | |
678 FWLCOLOR renderColor, | |
679 uint8_t scale) { | |
680 FWLCOLOR dstColor; | |
681 uint8_t n = 255 - scale; | |
682 dstColor.a = (uint8_t)( | |
683 ((uint16_t)srcColor.a * n + (uint16_t)renderColor.a * scale) >> 8); | |
684 dstColor.r = (uint8_t)( | |
685 ((uint16_t)srcColor.r * n + (uint16_t)renderColor.r * scale) >> 8); | |
686 dstColor.g = (uint8_t)( | |
687 ((uint16_t)srcColor.g * n + (uint16_t)renderColor.g * scale) >> 8); | |
688 dstColor.b = (uint8_t)( | |
689 ((uint16_t)srcColor.b * n + (uint16_t)renderColor.b * scale) >> 8); | |
690 return dstColor; | |
691 } | |
692 CFWL_ArrowData::CFWL_ArrowData() : m_pColorData(NULL) { | 650 CFWL_ArrowData::CFWL_ArrowData() : m_pColorData(NULL) { |
693 SetColorData(0); | 651 SetColorData(0); |
694 } | 652 } |
695 CFWL_FontData::CFWL_FontData() | 653 CFWL_FontData::CFWL_FontData() |
696 : m_dwStyles(0), | 654 : m_dwStyles(0), |
697 m_dwCodePage(0), | 655 m_dwCodePage(0), |
698 m_pFont(0), | 656 m_pFont(0), |
699 m_pFontMgr(NULL) | 657 m_pFontMgr(NULL) |
700 #if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ | 658 #if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ |
701 , | 659 , |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 void FWLTHEME_Release() { | 730 void FWLTHEME_Release() { |
773 CFWL_ArrowData::DestroyInstance(); | 731 CFWL_ArrowData::DestroyInstance(); |
774 CFWL_FontManager::DestroyInstance(); | 732 CFWL_FontManager::DestroyInstance(); |
775 } | 733 } |
776 uint32_t FWL_GetThemeLayout(uint32_t dwThemeID) { | 734 uint32_t FWL_GetThemeLayout(uint32_t dwThemeID) { |
777 return 0xffff0000 & dwThemeID; | 735 return 0xffff0000 & dwThemeID; |
778 } | 736 } |
779 uint32_t FWL_GetThemeColor(uint32_t dwThemeID) { | 737 uint32_t FWL_GetThemeColor(uint32_t dwThemeID) { |
780 return 0x0000ffff & dwThemeID; | 738 return 0x0000ffff & dwThemeID; |
781 } | 739 } |
782 uint32_t FWL_MakeThemeID(uint32_t dwLayout, uint32_t dwColor) { | 740 |
783 return (dwLayout << 16) | (0x0000FFFF & dwColor); | |
784 } | |
785 CFWL_ArrowData* CFWL_ArrowData::m_pInstance = NULL; | 741 CFWL_ArrowData* CFWL_ArrowData::m_pInstance = NULL; |
786 CFWL_ArrowData* CFWL_ArrowData::GetInstance() { | 742 CFWL_ArrowData* CFWL_ArrowData::GetInstance() { |
787 if (!m_pInstance) { | 743 if (!m_pInstance) { |
788 m_pInstance = new CFWL_ArrowData; | 744 m_pInstance = new CFWL_ArrowData; |
789 } | 745 } |
790 return m_pInstance; | 746 return m_pInstance; |
791 } | 747 } |
792 FX_BOOL CFWL_ArrowData::IsInstance() { | 748 FX_BOOL CFWL_ArrowData::IsInstance() { |
793 return (m_pInstance != NULL); | 749 return (m_pInstance != NULL); |
794 } | 750 } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
837 m_pColorData->clrEnd[0] = ArgbEncode(255, 175, 204, 251); | 793 m_pColorData->clrEnd[0] = ArgbEncode(255, 175, 204, 251); |
838 m_pColorData->clrEnd[1] = ArgbEncode(255, 185, 218, 251); | 794 m_pColorData->clrEnd[1] = ArgbEncode(255, 185, 218, 251); |
839 m_pColorData->clrEnd[2] = ArgbEncode(255, 210, 222, 235); | 795 m_pColorData->clrEnd[2] = ArgbEncode(255, 210, 222, 235); |
840 m_pColorData->clrEnd[3] = ArgbEncode(255, 243, 241, 236); | 796 m_pColorData->clrEnd[3] = ArgbEncode(255, 243, 241, 236); |
841 m_pColorData->clrSign[0] = ArgbEncode(255, 77, 97, 133); | 797 m_pColorData->clrSign[0] = ArgbEncode(255, 77, 97, 133); |
842 m_pColorData->clrSign[1] = ArgbEncode(255, 77, 97, 133); | 798 m_pColorData->clrSign[1] = ArgbEncode(255, 77, 97, 133); |
843 m_pColorData->clrSign[2] = ArgbEncode(255, 77, 97, 133); | 799 m_pColorData->clrSign[2] = ArgbEncode(255, 77, 97, 133); |
844 m_pColorData->clrSign[3] = ArgbEncode(255, 128, 128, 128); | 800 m_pColorData->clrSign[3] = ArgbEncode(255, 128, 128, 128); |
845 } | 801 } |
846 } | 802 } |
OLD | NEW |