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#ifndef _FWL_THEME_H 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define _FWL_THEME_H 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFWL_Widget; 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemePart; 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeBackground; 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeText; 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeElement; 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFWL_ThemeProvider; 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_CXBorder 1 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_CYBorder 2 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_ScrollBarWidth 3 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_EdgeFlat 4 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_EdgeRaised 5 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_EdgeSunken 6 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_Font 7 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_FontSize 8 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_TextColor 9 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_TextSelColor 10 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_LineHeight 11 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_UIMargin 12 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_SpaceAboveBelow 13 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_MAX 65535 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemePart { 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemePart() 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_pWidget(NULL), m_iPart(0), m_dwStates(0), m_dwData(0), m_pData(NULL) { 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rtPart.Reset(); 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_matrix.SetIdentity(); 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix m_matrix; 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectF m_rtPart; 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_Widget* m_pWidget; 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iPart; 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD m_dwStates; 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD m_dwData; 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* m_pData; 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeBackground : public CFWL_ThemePart { 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeBackground() : m_pGraphics(NULL), m_pImage(NULL), m_pPath(NULL) {} 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Graphics* m_pGraphics; 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_DIBitmap* m_pImage; 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Path* m_pPath; 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeText : public CFWL_ThemePart { 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_ThemeText() : m_pGraphics(NULL) {} 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString m_wsText; 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD m_dwTTOStyles; 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iTTOAlign; 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Graphics* m_pGraphics; 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFWL_ThemeProvider { 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual ~IFWL_ThemeProvider() {} 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL IsValidWidget(IFWL_Widget* pWidget) = 0; 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_DWORD GetThemeID(IFWL_Widget* pWidget) = 0; 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_DWORD SetThemeID(IFWL_Widget* pWidget, 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwThemeID, 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bChildren = TRUE) = 0; 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FWL_ERR GetThemeMatrix(IFWL_Widget* pWidget, CFX_Matrix& matrix) = 0; 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FWL_ERR SetThemeMatrix(IFWL_Widget* pWidget, 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix& matrix) = 0; 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawBackground(CFWL_ThemeBackground* pParams) = 0; 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL DrawText(CFWL_ThemeText* pParams) = 0; 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void* GetCapacity(CFWL_ThemePart* pThemePart, 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwCapacity) = 0; 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL IsCustomizedLayout(IFWL_Widget* pWidget) = 0; 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FWL_ERR GetPartRect(CFWL_ThemePart* pThemePart, 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectF& rtPart) = 0; 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL IsInPart(CFWL_ThemePart* pThemePart, 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fx, 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fy) = 0; 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_BOOL CalcTextRect(CFWL_ThemeText* pParams, CFX_RectF& rect) = 0; 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 83