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