summaryrefslogtreecommitdiff
path: root/xfa/fwl/theme/cfwl_edittp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fwl/theme/cfwl_edittp.cpp')
-rw-r--r--xfa/fwl/theme/cfwl_edittp.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/xfa/fwl/theme/cfwl_edittp.cpp b/xfa/fwl/theme/cfwl_edittp.cpp
new file mode 100644
index 0000000000..92f32dcaa9
--- /dev/null
+++ b/xfa/fwl/theme/cfwl_edittp.cpp
@@ -0,0 +1,92 @@
+// 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_edittp.h"
+
+#include "xfa/fwl/basewidget/ifwl_edit.h"
+#include "xfa/fwl/core/cfwl_themebackground.h"
+#include "xfa/fwl/core/ifwl_widget.h"
+#include "xfa/fxgraphics/cfx_color.h"
+#include "xfa/fxgraphics/cfx_path.h"
+
+CFWL_EditTP::CFWL_EditTP() {}
+CFWL_EditTP::~CFWL_EditTP() {}
+
+FX_BOOL CFWL_EditTP::IsValidWidget(IFWL_Widget* pWidget) {
+ if (!pWidget)
+ return FALSE;
+ return pWidget->GetClassID() == FWL_CLASSHASH_Edit;
+}
+FX_BOOL CFWL_EditTP::DrawBackground(CFWL_ThemeBackground* pParams) {
+ switch (pParams->m_iPart) {
+ case FWL_PART_EDT_Border: {
+ DrawBorder(pParams->m_pGraphics, &pParams->m_rtPart, &pParams->m_matrix);
+ break;
+ }
+ case FWL_PART_EDT_Edge: {
+ DrawEdge(pParams->m_pGraphics, pParams->m_pWidget->GetStyles(),
+ &pParams->m_rtPart, &pParams->m_matrix);
+ break;
+ }
+ case FWL_PART_EDT_Background: {
+ if (pParams->m_pPath) {
+ CFX_Graphics* pGraphics = pParams->m_pGraphics;
+ pGraphics->SaveGraphState();
+ CFX_Color crSelected(FWL_GetThemeColor(m_dwThemeID) == 0
+ ? FWLTHEME_COLOR_BKSelected
+ : FWLTHEME_COLOR_Green_BKSelected);
+ pGraphics->SetFillColor(&crSelected);
+ pGraphics->FillPath(pParams->m_pPath, FXFILL_WINDING,
+ &pParams->m_matrix);
+ pGraphics->RestoreGraphState();
+ } else {
+ FX_BOOL bStatic =
+ pParams->m_dwData == FWL_PARTDATA_EDT_StaticBackground;
+ CFX_Path path;
+ path.Create();
+ path.AddRectangle(pParams->m_rtPart.left, pParams->m_rtPart.top,
+ pParams->m_rtPart.width, pParams->m_rtPart.height);
+ CFX_Color cr(FWLTHEME_COLOR_Background);
+ if (!bStatic) {
+ if ((pParams->m_dwStates & FWL_PARTSTATE_EDT_Disable) ==
+ FWL_PARTSTATE_EDT_Disable) {
+ cr.Set(FWLTHEME_COLOR_EDGERB1);
+ } else if ((pParams->m_dwStates & FWL_PARTSTATE_EDT_ReadOnly) ==
+ FWL_PARTSTATE_EDT_ReadOnly) {
+ cr.Set(ArgbEncode(255, 236, 233, 216));
+ } else {
+ cr.Set(0xFFFFFFFF);
+ }
+ }
+ pParams->m_pGraphics->SaveGraphState();
+ pParams->m_pGraphics->SetFillColor(&cr);
+ pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING,
+ &pParams->m_matrix);
+ pParams->m_pGraphics->RestoreGraphState();
+ }
+ break;
+ }
+ case FWL_PART_EDT_CombTextLine: {
+ FX_ARGB cr = 0xFF000000;
+ FX_FLOAT fWidth = 1.0f;
+ CFX_Color crLine(cr);
+ pParams->m_pGraphics->SetStrokeColor(&crLine);
+ pParams->m_pGraphics->SetLineWidth(fWidth);
+ pParams->m_pGraphics->StrokePath(pParams->m_pPath, &pParams->m_matrix);
+ break;
+ }
+ default: { break; }
+ }
+ return TRUE;
+}
+FWL_ERR CFWL_EditTP::Initialize() {
+ InitTTO();
+ return CFWL_WidgetTP::Initialize();
+}
+FWL_ERR CFWL_EditTP::Finalize() {
+ FinalizeTTO();
+ return CFWL_WidgetTP::Finalize();
+}