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/include/fwl/theme/checkboxtp.h" | 7 #include "xfa/include/fwl/theme/checkboxtp.h" |
8 | 8 |
9 #include "xfa/fde/tto/fde_textout.h" | 9 #include "xfa/fde/tto/fde_textout.h" |
10 #include "xfa/fwl/basewidget/ifwl_checkbox.h" | 10 #include "xfa/fwl/basewidget/ifwl_checkbox.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 } | 34 } |
35 if (m_pCheckPath) { | 35 if (m_pCheckPath) { |
36 m_pCheckPath->Clear(); | 36 m_pCheckPath->Clear(); |
37 delete m_pCheckPath; | 37 delete m_pCheckPath; |
38 m_pCheckPath = NULL; | 38 m_pCheckPath = NULL; |
39 } | 39 } |
40 } | 40 } |
41 FX_BOOL CFWL_CheckBoxTP::IsValidWidget(IFWL_Widget* pWidget) { | 41 FX_BOOL CFWL_CheckBoxTP::IsValidWidget(IFWL_Widget* pWidget) { |
42 return pWidget && pWidget->GetClassID() == FWL_CLASSHASH_CheckBox; | 42 return pWidget && pWidget->GetClassID() == FWL_CLASSHASH_CheckBox; |
43 } | 43 } |
44 FX_DWORD CFWL_CheckBoxTP::SetThemeID(IFWL_Widget* pWidget, | 44 uint32_t CFWL_CheckBoxTP::SetThemeID(IFWL_Widget* pWidget, |
45 FX_DWORD dwThemeID, | 45 uint32_t dwThemeID, |
46 FX_BOOL bChildren) { | 46 FX_BOOL bChildren) { |
47 if (m_pThemeData) { | 47 if (m_pThemeData) { |
48 SetThemeData(FWL_GetThemeColor(dwThemeID)); | 48 SetThemeData(FWL_GetThemeColor(dwThemeID)); |
49 } | 49 } |
50 return CFWL_WidgetTP::SetThemeID(pWidget, dwThemeID, bChildren); | 50 return CFWL_WidgetTP::SetThemeID(pWidget, dwThemeID, bChildren); |
51 } | 51 } |
52 FX_BOOL CFWL_CheckBoxTP::DrawText(CFWL_ThemeText* pParams) { | 52 FX_BOOL CFWL_CheckBoxTP::DrawText(CFWL_ThemeText* pParams) { |
53 if (!m_pTextOut) | 53 if (!m_pTextOut) |
54 return FALSE; | 54 return FALSE; |
55 m_pTextOut->SetTextColor((pParams->m_dwStates & FWL_PARTSTATE_CKB_Mask1) == | 55 m_pTextOut->SetTextColor((pParams->m_dwStates & FWL_PARTSTATE_CKB_Mask1) == |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 InitTTO(); | 104 InitTTO(); |
105 return CFWL_WidgetTP::Initialize(); | 105 return CFWL_WidgetTP::Initialize(); |
106 } | 106 } |
107 FWL_ERR CFWL_CheckBoxTP::Finalize() { | 107 FWL_ERR CFWL_CheckBoxTP::Finalize() { |
108 FinalizeTTO(); | 108 FinalizeTTO(); |
109 return CFWL_WidgetTP::Finalize(); | 109 return CFWL_WidgetTP::Finalize(); |
110 } | 110 } |
111 void CFWL_CheckBoxTP::DrawBoxBk(IFWL_Widget* pWidget, | 111 void CFWL_CheckBoxTP::DrawBoxBk(IFWL_Widget* pWidget, |
112 CFX_Graphics* pGraphics, | 112 CFX_Graphics* pGraphics, |
113 const CFX_RectF* pRect, | 113 const CFX_RectF* pRect, |
114 FX_DWORD dwStates, | 114 uint32_t dwStates, |
115 CFX_Matrix* pMatrix) { | 115 CFX_Matrix* pMatrix) { |
116 dwStates &= 0x03; | 116 dwStates &= 0x03; |
117 int32_t fillMode = FXFILL_WINDING; | 117 int32_t fillMode = FXFILL_WINDING; |
118 FX_DWORD dwStyleEx = pWidget->GetStylesEx(); | 118 uint32_t dwStyleEx = pWidget->GetStylesEx(); |
119 dwStyleEx &= FWL_STYLEEXT_CKB_ShapeMask; | 119 dwStyleEx &= FWL_STYLEEXT_CKB_ShapeMask; |
120 CFX_Path path; | 120 CFX_Path path; |
121 path.Create(); | 121 path.Create(); |
122 FX_FLOAT fRight = pRect->right(); | 122 FX_FLOAT fRight = pRect->right(); |
123 FX_FLOAT fBottom = pRect->bottom(); | 123 FX_FLOAT fBottom = pRect->bottom(); |
124 FX_BOOL bClipSign = | 124 FX_BOOL bClipSign = |
125 (dwStates & FWL_PARTSTATE_CKB_Mask1) == FWL_PARTSTATE_CKB_Hovered; | 125 (dwStates & FWL_PARTSTATE_CKB_Mask1) == FWL_PARTSTATE_CKB_Hovered; |
126 if ((dwStyleEx == FWL_STYLEEXT_CKB_ShapeSolidSquare) || | 126 if ((dwStyleEx == FWL_STYLEEXT_CKB_ShapeSolidSquare) || |
127 (dwStyleEx == FWL_STYLEEXT_CKB_ShapeSunkenSquare)) { | 127 (dwStyleEx == FWL_STYLEEXT_CKB_ShapeSunkenSquare)) { |
128 path.AddRectangle(pRect->left, pRect->top, pRect->width, pRect->height); | 128 path.AddRectangle(pRect->left, pRect->top, pRect->width, pRect->height); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 FWL_PARTSTATE_CKB_Neutral) { | 169 FWL_PARTSTATE_CKB_Neutral) { |
170 iTheme += 8; | 170 iTheme += 8; |
171 } | 171 } |
172 DrawAxialShading(pGraphics, pRect->left - 1, pRect->top - 1, fRight, fBottom, | 172 DrawAxialShading(pGraphics, pRect->left - 1, pRect->top - 1, fRight, fBottom, |
173 m_pThemeData->clrBoxBk[iTheme][0], | 173 m_pThemeData->clrBoxBk[iTheme][0], |
174 m_pThemeData->clrBoxBk[iTheme][1], &path, fillMode, pMatrix); | 174 m_pThemeData->clrBoxBk[iTheme][1], &path, fillMode, pMatrix); |
175 } | 175 } |
176 void CFWL_CheckBoxTP::DrawSign(IFWL_Widget* pWidget, | 176 void CFWL_CheckBoxTP::DrawSign(IFWL_Widget* pWidget, |
177 CFX_Graphics* pGraphics, | 177 CFX_Graphics* pGraphics, |
178 const CFX_RectF* pRtBox, | 178 const CFX_RectF* pRtBox, |
179 FX_DWORD dwStates, | 179 uint32_t dwStates, |
180 CFX_Matrix* pMatrix) { | 180 CFX_Matrix* pMatrix) { |
181 CFX_RectF rtSign(*pRtBox); | 181 CFX_RectF rtSign(*pRtBox); |
182 rtSign.Deflate(CHECKBOX_SIZE_SIGNMARGIN, CHECKBOX_SIZE_SIGNMARGIN); | 182 rtSign.Deflate(CHECKBOX_SIZE_SIGNMARGIN, CHECKBOX_SIZE_SIGNMARGIN); |
183 FX_DWORD dwColor = m_pThemeData->clrSignCheck; | 183 uint32_t dwColor = m_pThemeData->clrSignCheck; |
184 FX_BOOL bCheck = TRUE; | 184 FX_BOOL bCheck = TRUE; |
185 if (((dwStates & FWL_PARTSTATE_CKB_Mask1) == FWL_PARTSTATE_CKB_Disabled) && | 185 if (((dwStates & FWL_PARTSTATE_CKB_Mask1) == FWL_PARTSTATE_CKB_Disabled) && |
186 ((dwStates & FWL_PARTSTATE_CKB_Mask2) == FWL_PARTSTATE_CKB_Checked)) { | 186 ((dwStates & FWL_PARTSTATE_CKB_Mask2) == FWL_PARTSTATE_CKB_Checked)) { |
187 dwColor = m_pThemeData->clrSignBorderDisable; | 187 dwColor = m_pThemeData->clrSignBorderDisable; |
188 } else if ((dwStates & FWL_PARTSTATE_CKB_Mask2) == | 188 } else if ((dwStates & FWL_PARTSTATE_CKB_Mask2) == |
189 FWL_PARTSTATE_CKB_Neutral) { | 189 FWL_PARTSTATE_CKB_Neutral) { |
190 switch (dwStates & FWL_PARTSTATE_CKB_Mask1) { | 190 switch (dwStates & FWL_PARTSTATE_CKB_Mask1) { |
191 case FWL_PARTSTATE_CKB_Normal: { | 191 case FWL_PARTSTATE_CKB_Normal: { |
192 bCheck = FALSE; | 192 bCheck = FALSE; |
193 dwColor = m_pThemeData->clrSignNeutralNormal; | 193 dwColor = m_pThemeData->clrSignNeutralNormal; |
194 break; | 194 break; |
195 } | 195 } |
196 case FWL_PARTSTATE_CKB_Hovered: { | 196 case FWL_PARTSTATE_CKB_Hovered: { |
197 bCheck = FALSE; | 197 bCheck = FALSE; |
198 dwColor = m_pThemeData->clrSignNeutralHover; | 198 dwColor = m_pThemeData->clrSignNeutralHover; |
199 break; | 199 break; |
200 } | 200 } |
201 case FWL_PARTSTATE_CKB_Pressed: { | 201 case FWL_PARTSTATE_CKB_Pressed: { |
202 bCheck = FALSE, dwColor = m_pThemeData->clrSignNeutralPressed; | 202 bCheck = FALSE, dwColor = m_pThemeData->clrSignNeutralPressed; |
203 break; | 203 break; |
204 } | 204 } |
205 case FWL_PARTSTATE_CKB_Disabled: { | 205 case FWL_PARTSTATE_CKB_Disabled: { |
206 bCheck = FALSE, dwColor = m_pThemeData->clrSignBorderDisable; | 206 bCheck = FALSE, dwColor = m_pThemeData->clrSignBorderDisable; |
207 break; | 207 break; |
208 } | 208 } |
209 } | 209 } |
210 } | 210 } |
211 if (bCheck) { | 211 if (bCheck) { |
212 FX_DWORD dwStyle = pWidget->GetStylesEx(); | 212 uint32_t dwStyle = pWidget->GetStylesEx(); |
213 switch (dwStyle & FWL_STYLEEXT_CKB_SignShapeMask) { | 213 switch (dwStyle & FWL_STYLEEXT_CKB_SignShapeMask) { |
214 case FWL_STYLEEXT_CKB_SignShapeCheck: { | 214 case FWL_STYLEEXT_CKB_SignShapeCheck: { |
215 DrawSignCheck(pGraphics, &rtSign, dwColor, pMatrix); | 215 DrawSignCheck(pGraphics, &rtSign, dwColor, pMatrix); |
216 break; | 216 break; |
217 } | 217 } |
218 case FWL_STYLEEXT_CKB_SignShapeCircle: { | 218 case FWL_STYLEEXT_CKB_SignShapeCircle: { |
219 rtSign.Deflate(1, 1); | 219 rtSign.Deflate(1, 1); |
220 DrawSignCircle(pGraphics, &rtSign, dwColor, pMatrix); | 220 DrawSignCircle(pGraphics, &rtSign, dwColor, pMatrix); |
221 break; | 221 break; |
222 } | 222 } |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 break; | 386 break; |
387 } | 387 } |
388 case FWL_STYLEEXT_CKB_ShapeSunkenCircle: { | 388 case FWL_STYLEEXT_CKB_ShapeSunkenCircle: { |
389 Draw3DCircle(pGraphics, FWLTHEME_EDGE_Sunken, CHECKBOX_SIZE_SIGNBORDER, | 389 Draw3DCircle(pGraphics, FWLTHEME_EDGE_Sunken, CHECKBOX_SIZE_SIGNBORDER, |
390 pRtBox, CHECKBOX_COLOR_BOXLT1, CHECKBOX_COLOR_BOXLT2, | 390 pRtBox, CHECKBOX_COLOR_BOXLT1, CHECKBOX_COLOR_BOXLT2, |
391 CHECKBOX_COLOR_BOXRB1, CHECKBOX_COLOR_BOXRB2, pMatrix); | 391 CHECKBOX_COLOR_BOXRB1, CHECKBOX_COLOR_BOXRB2, pMatrix); |
392 break; | 392 break; |
393 } | 393 } |
394 } | 394 } |
395 } | 395 } |
396 void CFWL_CheckBoxTP::SetThemeData(FX_DWORD dwID) { | 396 void CFWL_CheckBoxTP::SetThemeData(uint32_t dwID) { |
397 FX_DWORD* pData = (FX_DWORD*)&m_pThemeData->clrBoxBk; | 397 uint32_t* pData = (uint32_t*)&m_pThemeData->clrBoxBk; |
398 if (dwID) { | 398 if (dwID) { |
399 *pData++ = 0, *pData++ = 0, *pData++ = ArgbEncode(255, 220, 220, 215), | 399 *pData++ = 0, *pData++ = 0, *pData++ = ArgbEncode(255, 220, 220, 215), |
400 *pData++ = ArgbEncode(255, 255, 255, 255), | 400 *pData++ = ArgbEncode(255, 255, 255, 255), |
401 *pData++ = ArgbEncode(255, 255, 240, 207), | 401 *pData++ = ArgbEncode(255, 255, 240, 207), |
402 *pData++ = ArgbEncode(255, 248, 179, 48), | 402 *pData++ = ArgbEncode(255, 248, 179, 48), |
403 *pData++ = ArgbEncode(255, 176, 176, 167), | 403 *pData++ = ArgbEncode(255, 176, 176, 167), |
404 *pData++ = ArgbEncode(255, 241, 239, 239), | 404 *pData++ = ArgbEncode(255, 241, 239, 239), |
405 *pData++ = ArgbEncode(255, 255, 255, 255), | 405 *pData++ = ArgbEncode(255, 255, 255, 255), |
406 *pData++ = ArgbEncode(255, 255, 255, 255), | 406 *pData++ = ArgbEncode(255, 255, 255, 255), |
407 *pData++ = ArgbEncode(255, 220, 220, 215), | 407 *pData++ = ArgbEncode(255, 220, 220, 215), |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
527 pt1.x + px2 * FWLTHEME_BEZIER, | 527 pt1.x + px2 * FWLTHEME_BEZIER, |
528 pt1.y + py2 * FWLTHEME_BEZIER, pt1.x, pt1.y); | 528 pt1.y + py2 * FWLTHEME_BEZIER, pt1.x, pt1.y); |
529 FX_FLOAT fScale = fCheckLen / CHECKBOX_SIZE_SIGNPATH; | 529 FX_FLOAT fScale = fCheckLen / CHECKBOX_SIZE_SIGNPATH; |
530 CFX_Matrix mt; | 530 CFX_Matrix mt; |
531 mt.Set(1, 0, 0, 1, 0, 0); | 531 mt.Set(1, 0, 0, 1, 0, 0); |
532 mt.Scale(fScale, fScale); | 532 mt.Scale(fScale, fScale); |
533 CFX_PathData* pData = m_pCheckPath->GetPathData(); | 533 CFX_PathData* pData = m_pCheckPath->GetPathData(); |
534 pData->Transform(&mt); | 534 pData->Transform(&mt); |
535 } | 535 } |
536 } | 536 } |
OLD | NEW |