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 _FWL_GRID_H 8 #define _FWL_GRID_H 9 class IFWL_Widget; 10 class IFWL_Content; 11 #define FWL_CLASS_Grid L"FWL_GRID" 12 #define FWL_CLASSHASH_Grid 3150298670 13 #define FWL_GRIDSTYLEEXT_ShowGridLines (1L << 0) 14 struct FWL_LAYOUTDATA { 15 FX_FLOAT fWidth; 16 FX_FLOAT fHeight; 17 }; 18 enum FWL_GRIDUNIT { 19 FWL_GRIDUNIT_Auto = 0, 20 FWL_GRIDUNIT_Fixed, 21 FWL_GRIDUNIT_Scaled, 22 FWL_GRIDUNIT_Infinity, 23 }; 24 enum FWL_GRIDMARGIN { 25 FWL_GRIDMARGIN_Left = 0, 26 FWL_GRIDMARGIN_Top, 27 FWL_GRIDMARGIN_Right, 28 FWL_GRIDMARGIN_Bottom, 29 }; 30 enum FWL_GRIDSIZE { 31 FWL_GRIDSIZE_Width = 0, 32 FWL_GRIDSIZE_Height, 33 FWL_GRIDSIZE_MinWidth, 34 FWL_GRIDSIZE_MinHeight, 35 FWL_GRIDSIZE_MaxWidth, 36 FWL_GRIDSIZE_MaxHeight, 37 }; 38 typedef struct _FWL_HGRIDCOLROW { void* pData; } * FWL_HGRIDCOLROW; 39 class IFWL_Grid : public IFWL_Content { 40 public: 41 static IFWL_Grid* Create(const CFWL_WidgetImpProperties& properties); 42 43 FWL_HGRIDCOLROW InsertColRow(FX_BOOL bColumn, int32_t nIndex = -1); 44 int32_t CountColRows(FX_BOOL bColumn); 45 FWL_HGRIDCOLROW GetColRow(FX_BOOL bColumn, int32_t nIndex); 46 int32_t GetIndex(FWL_HGRIDCOLROW hColRow); 47 FX_FLOAT GetSize(FWL_HGRIDCOLROW hColRow, FWL_GRIDUNIT& eUnit); 48 FWL_ERR SetSize(FWL_HGRIDCOLROW hColRow, FX_FLOAT fSize, FWL_GRIDUNIT eUnit); 49 FX_FLOAT GetMinSize(FWL_HGRIDCOLROW hColRow, FWL_GRIDUNIT& eUnit); 50 FWL_ERR SetMinSize(FWL_HGRIDCOLROW hColRow, 51 FX_FLOAT fSize, 52 FWL_GRIDUNIT eUnit); 53 FX_FLOAT GetMaxSize(FWL_HGRIDCOLROW hColRow, FWL_GRIDUNIT& eUnit); 54 FWL_ERR SetMaxSize(FWL_HGRIDCOLROW hColRow, 55 FX_FLOAT fSize, 56 FWL_GRIDUNIT eUnit); 57 FX_BOOL DeleteColRow(FWL_HGRIDCOLROW hColRow); 58 FX_BOOL IsColumn(FWL_HGRIDCOLROW hColRow); 59 int32_t GetWidgetPos(IFWL_Widget* pWidget, FX_BOOL bColumn); 60 FWL_ERR SetWidgetPos(IFWL_Widget* pWidget, int32_t iPos, FX_BOOL bColumn); 61 int32_t GetWidgetSpan(IFWL_Widget* pWidget, FX_BOOL bColumn); 62 FWL_ERR SetWidgetSpan(IFWL_Widget* pWidget, int32_t iSpan, FX_BOOL bColumn); 63 FX_FLOAT GetWidgetSize(IFWL_Widget* pWidget, 64 FWL_GRIDSIZE eSize, 65 FWL_GRIDUNIT& eUnit); 66 FWL_ERR SetWidgetSize(IFWL_Widget* pWidget, 67 FWL_GRIDSIZE eSize, 68 FX_FLOAT fSize, 69 FWL_GRIDUNIT eUit); 70 FX_BOOL GetWidgetMargin(IFWL_Widget* pWidget, 71 FWL_GRIDMARGIN eMargin, 72 FX_FLOAT& fMargin); 73 FWL_ERR SetWidgetMargin(IFWL_Widget* pWidget, 74 FWL_GRIDMARGIN eMargin, 75 FX_FLOAT fMargin); 76 FWL_ERR RemoveWidgetMargin(IFWL_Widget* pWidget, FWL_GRIDMARGIN eMargin); 77 FX_FLOAT GetGridSize(FWL_GRIDSIZE eSize, FWL_GRIDUNIT& eUnit); 78 FWL_ERR SetGridSize(FWL_GRIDSIZE eSize, FX_FLOAT fSize, FWL_GRIDUNIT eUit); 79 80 protected: 81 IFWL_Grid(); 82 }; 83 #endif 84