| OLD | NEW |
| (Empty) |
| 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 #ifndef XFA_SRC_FWL_CORE_FWL_GRIDIMP_H_ | |
| 8 #define XFA_SRC_FWL_CORE_FWL_GRIDIMP_H_ | |
| 9 | |
| 10 #include "xfa/include/fwl/core/fwl_app.h" | |
| 11 #include "xfa/include/fwl/core/fwl_content.h" | |
| 12 #include "xfa/include/fwl/core/fwl_grid.h" | |
| 13 #include "xfa/src/fwl/core/fwl_contentimp.h" | |
| 14 | |
| 15 class CFWL_GridLength { | |
| 16 public: | |
| 17 CFWL_GridLength() : fLength(0), eUnit(FWL_GRIDUNIT_Fixed) {} | |
| 18 CFWL_GridLength(FX_FLOAT fValue, FWL_GRIDUNIT e) | |
| 19 : fLength(fValue), eUnit(e) {} | |
| 20 FX_FLOAT fLength; | |
| 21 FWL_GRIDUNIT eUnit; | |
| 22 }; | |
| 23 | |
| 24 class CFWL_GridColRow { | |
| 25 public: | |
| 26 CFWL_GridColRow() | |
| 27 : m_Size(1, FWL_GRIDUNIT_Scaled), | |
| 28 m_MinSize(0, FWL_GRIDUNIT_Fixed), | |
| 29 m_MaxSize(0, FWL_GRIDUNIT_Infinity), | |
| 30 m_fActualSize(0), | |
| 31 m_fActualPos(0) {} | |
| 32 CFWL_GridLength m_Size; | |
| 33 CFWL_GridLength m_MinSize; | |
| 34 CFWL_GridLength m_MaxSize; | |
| 35 FX_FLOAT m_fActualSize; | |
| 36 FX_FLOAT m_fActualPos; | |
| 37 }; | |
| 38 | |
| 39 class CFWL_GridWidgetInfo { | |
| 40 public: | |
| 41 CFWL_GridWidgetInfo() | |
| 42 : m_iColumn(0), | |
| 43 m_iColumnSpan(1), | |
| 44 m_iRow(0), | |
| 45 m_iRowSpan(1), | |
| 46 m_dwMarginFlag(0), | |
| 47 m_fActualWidth(0), | |
| 48 m_fActualHeight(0) { | |
| 49 m_Size[FWL_GRIDSIZE_Width].eUnit = FWL_GRIDUNIT_Auto; | |
| 50 m_Size[FWL_GRIDSIZE_Width].fLength = 0; | |
| 51 m_Size[FWL_GRIDSIZE_Height].eUnit = FWL_GRIDUNIT_Auto; | |
| 52 m_Size[FWL_GRIDSIZE_Height].fLength = 0; | |
| 53 m_Size[FWL_GRIDSIZE_MinWidth].eUnit = FWL_GRIDUNIT_Fixed; | |
| 54 m_Size[FWL_GRIDSIZE_MinWidth].fLength = 0; | |
| 55 m_Size[FWL_GRIDSIZE_MaxWidth].eUnit = FWL_GRIDUNIT_Infinity; | |
| 56 m_Size[FWL_GRIDSIZE_MaxWidth].fLength = 0; | |
| 57 m_Size[FWL_GRIDSIZE_MinHeight].eUnit = FWL_GRIDUNIT_Fixed; | |
| 58 m_Size[FWL_GRIDSIZE_MinHeight].fLength = 0; | |
| 59 m_Size[FWL_GRIDSIZE_MaxHeight].eUnit = FWL_GRIDUNIT_Infinity; | |
| 60 m_Size[FWL_GRIDSIZE_MaxHeight].fLength = 0; | |
| 61 m_Margin[0] = m_Margin[1] = m_Margin[2] = m_Margin[3] = 0; | |
| 62 } | |
| 63 int32_t m_iColumn; | |
| 64 int32_t m_iColumnSpan; | |
| 65 int32_t m_iRow; | |
| 66 int32_t m_iRowSpan; | |
| 67 CFWL_GridLength m_Size[6]; | |
| 68 FX_DWORD m_dwMarginFlag; | |
| 69 FX_FLOAT m_Margin[4]; | |
| 70 FX_FLOAT m_fActualWidth; | |
| 71 FX_FLOAT m_fActualHeight; | |
| 72 }; | |
| 73 | |
| 74 class CFWL_GridImp : public CFWL_ContentImp { | |
| 75 public: | |
| 76 CFWL_GridImp(const CFWL_WidgetImpProperties& properties, IFWL_Widget* pOuter); | |
| 77 virtual ~CFWL_GridImp(); | |
| 78 virtual FWL_ERR GetClassName(CFX_WideString& wsClass) const; | |
| 79 virtual FX_DWORD GetClassID() const; | |
| 80 virtual FWL_ERR Initialize(); | |
| 81 virtual FWL_ERR Finalize(); | |
| 82 virtual FWL_ERR GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize = FALSE); | |
| 83 virtual FWL_ERR SetWidgetRect(const CFX_RectF& rect); | |
| 84 virtual FWL_ERR Update(); | |
| 85 virtual FWL_ERR DrawWidget(CFX_Graphics* pGraphics, | |
| 86 const CFX_Matrix* pMatrix = NULL); | |
| 87 | |
| 88 virtual FWL_ERR InsertWidget(IFWL_Widget* pChild, int32_t nIndex = -1); | |
| 89 virtual FWL_ERR RemoveWidget(IFWL_Widget* pWidget); | |
| 90 virtual FWL_HGRIDCOLROW InsertColRow(FX_BOOL bColumn, int32_t nIndex = -1); | |
| 91 virtual int32_t CountColRows(FX_BOOL bColumn); | |
| 92 virtual FWL_HGRIDCOLROW GetColRow(FX_BOOL bColumn, int32_t nIndex); | |
| 93 virtual int32_t GetIndex(FWL_HGRIDCOLROW hColRow); | |
| 94 virtual FX_FLOAT GetSize(FWL_HGRIDCOLROW hColRow, FWL_GRIDUNIT& eUnit); | |
| 95 virtual FWL_ERR SetSize(FWL_HGRIDCOLROW hColRow, | |
| 96 FX_FLOAT fSize, | |
| 97 FWL_GRIDUNIT eUnit); | |
| 98 FX_FLOAT GetMinSize(FWL_HGRIDCOLROW hColRow, FWL_GRIDUNIT& eUnit); | |
| 99 FWL_ERR SetMinSize(FWL_HGRIDCOLROW hColRow, | |
| 100 FX_FLOAT fSize, | |
| 101 FWL_GRIDUNIT eUnit); | |
| 102 FX_FLOAT GetMaxSize(FWL_HGRIDCOLROW hColRow, FWL_GRIDUNIT& eUnit); | |
| 103 FWL_ERR SetMaxSize(FWL_HGRIDCOLROW hColRow, | |
| 104 FX_FLOAT fSize, | |
| 105 FWL_GRIDUNIT eUnit); | |
| 106 virtual FX_BOOL DeleteColRow(FWL_HGRIDCOLROW hColRow); | |
| 107 virtual FX_BOOL IsColumn(FWL_HGRIDCOLROW hColRow); | |
| 108 virtual int32_t GetWidgetPos(IFWL_Widget* pWidget, FX_BOOL bColumn); | |
| 109 virtual FWL_ERR SetWidgetPos(IFWL_Widget* pWidget, | |
| 110 int32_t iPos, | |
| 111 FX_BOOL bColumn); | |
| 112 virtual int32_t GetWidgetSpan(IFWL_Widget* pWidget, FX_BOOL bColumn); | |
| 113 virtual FWL_ERR SetWidgetSpan(IFWL_Widget* pWidget, | |
| 114 int32_t iSpan, | |
| 115 FX_BOOL bColumn); | |
| 116 virtual FX_FLOAT GetWidgetSize(IFWL_Widget* pWidget, | |
| 117 FWL_GRIDSIZE eSize, | |
| 118 FWL_GRIDUNIT& eUnit); | |
| 119 virtual FWL_ERR SetWidgetSize(IFWL_Widget* pWidget, | |
| 120 FWL_GRIDSIZE eSize, | |
| 121 FX_FLOAT fSize, | |
| 122 FWL_GRIDUNIT eUit); | |
| 123 virtual FX_BOOL GetWidgetMargin(IFWL_Widget* pWidget, | |
| 124 FWL_GRIDMARGIN eMargin, | |
| 125 FX_FLOAT& fMargin); | |
| 126 virtual FWL_ERR SetWidgetMargin(IFWL_Widget* pWidget, | |
| 127 FWL_GRIDMARGIN eMargin, | |
| 128 FX_FLOAT fMargin); | |
| 129 virtual FWL_ERR RemoveWidgetMargin(IFWL_Widget* pWidget, | |
| 130 FWL_GRIDMARGIN eMargin); | |
| 131 virtual FX_FLOAT GetGridSize(FWL_GRIDSIZE eSize, FWL_GRIDUNIT& eUnit); | |
| 132 virtual FWL_ERR SetGridSize(FWL_GRIDSIZE eSize, | |
| 133 FX_FLOAT fSize, | |
| 134 FWL_GRIDUNIT eUit); | |
| 135 | |
| 136 protected: | |
| 137 CFWL_GridWidgetInfo* GetWidgetInfo(IFWL_Widget* pWidget); | |
| 138 void ProcFixedColRow(CFWL_GridColRow* pColRow, | |
| 139 int32_t nIndex, | |
| 140 FX_FLOAT fColRowSize, | |
| 141 FX_BOOL bColumn); | |
| 142 void ProcAutoColRow(CFWL_GridColRow* pColRow, | |
| 143 int32_t nIndex, | |
| 144 FX_BOOL bColumn); | |
| 145 void ProcScaledColRow(CFWL_GridColRow* pColRow, | |
| 146 int32_t nIndex, | |
| 147 FX_FLOAT fColRowSize, | |
| 148 FX_BOOL bColumn); | |
| 149 void CalcWidgetWidth(IFWL_Widget* pWidget, | |
| 150 CFWL_GridWidgetInfo* pInfo, | |
| 151 FX_FLOAT fColunmWidth); | |
| 152 void CalcWidgetHeigt(IFWL_Widget* pWidget, | |
| 153 CFWL_GridWidgetInfo* pInfo, | |
| 154 FX_FLOAT fRowHeigt); | |
| 155 FX_FLOAT CalcAutoColumnWidgetWidth(IFWL_Widget* pWidget, | |
| 156 CFWL_GridWidgetInfo* pInfo); | |
| 157 FX_FLOAT CalcAutoColumnWidgetHeight(IFWL_Widget* pWidget, | |
| 158 CFWL_GridWidgetInfo* pInfo); | |
| 159 FX_FLOAT ProcessColumns(FX_FLOAT fWidth); | |
| 160 FX_FLOAT ProcessRows(FX_FLOAT fHeight); | |
| 161 FX_FLOAT ProcessUnCertainColumns(); | |
| 162 FX_FLOAT ProcessUnCertainRows(); | |
| 163 FX_BOOL SetColRowActualSize(CFWL_GridColRow* pColRow, | |
| 164 FX_FLOAT fSize, | |
| 165 FX_BOOL bSetBeyond = FALSE); | |
| 166 FX_FLOAT SetWidgetActualWidth(CFWL_GridWidgetInfo* pInfo, FX_FLOAT fWidth); | |
| 167 FX_FLOAT SetWidgetActualHeight(CFWL_GridWidgetInfo* pInfo, FX_FLOAT fHeight); | |
| 168 void SetAllWidgetsRect(); | |
| 169 FX_BOOL IsGrid(IFWL_Widget* pWidget); | |
| 170 void SetSpanAutoColRowSize(const CFX_PtrArray& spanAutos, | |
| 171 FX_FLOAT fTotalSize); | |
| 172 void SetSpanScaledColRowSize(const CFX_PtrArray& spanScaleds, | |
| 173 FX_FLOAT fTotalSize, | |
| 174 FX_FLOAT fTotalScaledNum); | |
| 175 void SetScaledColRowsSize(const CFX_PtrArray& spanScaleds, | |
| 176 FX_FLOAT fTotalSize, | |
| 177 FX_FLOAT fTotalScaledNum); | |
| 178 CFX_PtrArray m_Rows; | |
| 179 CFX_PtrArray m_Columns; | |
| 180 CFX_PtrArray m_Widgets; | |
| 181 CFX_MapPtrToPtr m_mapWidgetInfo; | |
| 182 CFWL_GridLength m_Size[6]; | |
| 183 friend class CFWL_GridImpDelegate; | |
| 184 }; | |
| 185 | |
| 186 class CFWL_GridImpDelegate : public CFWL_WidgetImpDelegate { | |
| 187 public: | |
| 188 CFWL_GridImpDelegate(CFWL_GridImp* pOwner); | |
| 189 int32_t OnProcessMessage(CFWL_Message* pMessage) override; | |
| 190 FWL_ERR OnDrawWidget(CFX_Graphics* pGraphics, | |
| 191 const CFX_Matrix* pMatrix = NULL) override; | |
| 192 | |
| 193 protected: | |
| 194 CFWL_GridImp* m_pOwner; | |
| 195 }; | |
| 196 | |
| 197 #endif // XFA_SRC_FWL_CORE_FWL_GRIDIMP_H_ | |
| OLD | NEW |