diff options
Diffstat (limited to 'xfa/fwl/theme/cfwl_datetimepickertp.cpp')
-rw-r--r-- | xfa/fwl/theme/cfwl_datetimepickertp.cpp | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/xfa/fwl/theme/cfwl_datetimepickertp.cpp b/xfa/fwl/theme/cfwl_datetimepickertp.cpp new file mode 100644 index 0000000000..a303a4ea1f --- /dev/null +++ b/xfa/fwl/theme/cfwl_datetimepickertp.cpp @@ -0,0 +1,103 @@ +// 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/fwl/theme/cfwl_datetimepickertp.h" + +#include "xfa/fwl/basewidget/ifwl_datetimepicker.h" +#include "xfa/fwl/core/cfwl_themebackground.h" + +CFWL_DateTimePickerTP::CFWL_DateTimePickerTP() { + m_pThemeData = new DTPThemeData; + initThemeData(); +} + +CFWL_DateTimePickerTP::~CFWL_DateTimePickerTP() { + delete m_pThemeData; +} + +bool CFWL_DateTimePickerTP::IsValidWidget(IFWL_Widget* pWidget) { + return pWidget && pWidget->GetClassID() == FWL_Type::DateTimePicker; +} + +FX_BOOL CFWL_DateTimePickerTP::DrawBackground(CFWL_ThemeBackground* pParams) { + if (!pParams) + return FALSE; + switch (pParams->m_iPart) { + case CFWL_Part::Border: { + DrawBorder(pParams->m_pGraphics, &pParams->m_rtPart, &pParams->m_matrix); + break; + } + case CFWL_Part::Edge: { + DrawEdge(pParams->m_pGraphics, pParams->m_pWidget->GetStyles(), + &pParams->m_rtPart, &pParams->m_matrix); + break; + } + case CFWL_Part::DropDownButton: { + DrawDropDownButton(pParams, &pParams->m_matrix); + break; + } + default: {} + } + return TRUE; +} + +void CFWL_DateTimePickerTP::DrawDropDownButton(CFWL_ThemeBackground* pParams, + CFX_Matrix* pMatrix) { + uint32_t dwStates = pParams->m_dwStates; + dwStates &= 0x03; + FWLTHEME_STATE eState = FWLTHEME_STATE_Normal; + switch (eState & dwStates) { + case CFWL_PartState_Normal: { + eState = FWLTHEME_STATE_Normal; + break; + } + case CFWL_PartState_Hovered: { + eState = FWLTHEME_STATE_Hover; + break; + } + case CFWL_PartState_Pressed: { + eState = FWLTHEME_STATE_Pressed; + break; + } + case CFWL_PartState_Disabled: { + eState = FWLTHEME_STATE_Disabale; + break; + } + default: {} + } + DrawArrowBtn(pParams->m_pGraphics, &pParams->m_rtPart, + FWLTHEME_DIRECTION_Down, eState, pMatrix); +} + +void CFWL_DateTimePickerTP::initThemeData() { + uint32_t* pData = (uint32_t*)&m_pThemeData->BoxBkColor; + *pData++ = 0; + *pData++ = 0; + *pData++ = ArgbEncode(255, 220, 220, 215), + *pData++ = ArgbEncode(255, 255, 255, 255), + *pData++ = ArgbEncode(255, 255, 240, 207), + *pData++ = ArgbEncode(255, 248, 179, 48), + *pData++ = ArgbEncode(255, 176, 176, 167), + *pData++ = ArgbEncode(255, 241, 239, 239), + *pData++ = ArgbEncode(255, 255, 255, 255), + *pData++ = ArgbEncode(255, 255, 255, 255), + *pData++ = ArgbEncode(255, 220, 220, 215), + *pData++ = ArgbEncode(255, 255, 255, 255), + *pData++ = ArgbEncode(255, 255, 240, 207), + *pData++ = ArgbEncode(255, 248, 179, 48), + *pData++ = ArgbEncode(255, 176, 176, 167), + *pData++ = ArgbEncode(255, 241, 239, 239), + *pData++ = ArgbEncode(255, 255, 255, 255), + *pData++ = ArgbEncode(255, 255, 255, 255), + *pData++ = ArgbEncode(255, 220, 220, 215), + *pData++ = ArgbEncode(255, 255, 255, 255), + *pData++ = ArgbEncode(255, 255, 240, 207), + *pData++ = ArgbEncode(255, 248, 179, 48), + *pData++ = ArgbEncode(255, 176, 176, 167), + *pData++ = ArgbEncode(255, 241, 239, 239), + *pData++ = ArgbEncode(255, 255, 255, 255), + *pData++ = ArgbEncode(255, 255, 255, 255); +} |