1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved.
2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file.
4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/foxitlib.h"
8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFWL_EditTP::CFWL_EditTP() {}
9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFWL_EditTP::~CFWL_EditTP() {}
10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_EditTP::IsValidWidget(IFWL_Widget* pWidget) {
11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  if (!pWidget)
12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    return FALSE;
13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return pWidget->GetClassID() == FWL_CLASSHASH_Edit;
14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFWL_EditTP::DrawBackground(CFWL_ThemeBackground* pParams) {
16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (pParams->m_iPart) {
17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case FWL_PART_EDT_Border: {
18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      DrawBorder(pParams->m_pGraphics, &pParams->m_rtPart, &pParams->m_matrix);
19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    }
21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case FWL_PART_EDT_Edge: {
22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      DrawEdge(pParams->m_pGraphics, pParams->m_pWidget->GetStyles(),
23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann               &pParams->m_rtPart, &pParams->m_matrix);
24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    }
26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case FWL_PART_EDT_Background: {
27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      if (pParams->m_pPath) {
28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        CFX_Graphics* pGraphics = pParams->m_pGraphics;
29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        pGraphics->SaveGraphState();
30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        CFX_Color crSelected(FWL_GetThemeColor(m_dwThemeID) == 0
31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                 ? FWLTHEME_COLOR_BKSelected
32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                 : FWLTHEME_COLOR_Green_BKSelected);
33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        pGraphics->SetFillColor(&crSelected);
34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        pGraphics->FillPath(pParams->m_pPath, FXFILL_WINDING,
35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                            &pParams->m_matrix);
36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        pGraphics->RestoreGraphState();
37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      } else {
38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        FX_BOOL bStatic =
39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann            pParams->m_dwData == FWL_PARTDATA_EDT_StaticBackground;
40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        CFX_Path path;
41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        path.Create();
42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        path.AddRectangle(pParams->m_rtPart.left, pParams->m_rtPart.top,
43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                          pParams->m_rtPart.width, pParams->m_rtPart.height);
44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        CFX_Color cr(FWLTHEME_COLOR_Background);
45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        if (!bStatic) {
46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann          if ((pParams->m_dwStates & FWL_PARTSTATE_EDT_Disable) ==
47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann              FWL_PARTSTATE_EDT_Disable) {
48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann            cr.Set(FWLTHEME_COLOR_EDGERB1);
49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann          } else if ((pParams->m_dwStates & FWL_PARTSTATE_EDT_ReadOnly) ==
50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                     FWL_PARTSTATE_EDT_ReadOnly) {
51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann            cr.Set(ArgbEncode(255, 236, 233, 216));
52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann          } else {
53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann            cr.Set(0xFFFFFFFF);
54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann          }
55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        }
56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        pParams->m_pGraphics->SaveGraphState();
57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        pParams->m_pGraphics->SetFillColor(&cr);
58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING,
59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                       &pParams->m_matrix);
60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann        pParams->m_pGraphics->RestoreGraphState();
61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      }
62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    }
64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case FWL_PART_EDT_CombTextLine: {
65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      FX_ARGB cr = 0xFF000000;
66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      FX_FLOAT fWidth = 1.0f;
67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      CFX_Color crLine(cr);
68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      pParams->m_pGraphics->SetStrokeColor(&crLine);
69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      pParams->m_pGraphics->SetLineWidth(fWidth);
70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      pParams->m_pGraphics->StrokePath(pParams->m_pPath, &pParams->m_matrix);
71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    }
73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default: { break; }
74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return TRUE;
76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFWL_ERR CFWL_EditTP::Initialize() {
78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  InitTTO();
79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return CFWL_WidgetTP::Initialize();
80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFWL_ERR CFWL_EditTP::Finalize() {
82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  FinalizeTTO();
83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return CFWL_WidgetTP::Finalize();
84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
85