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
9class IFWL_Widget;
10class IFWL_Content;
11#define FWL_CLASS_Grid L"FWL_GRID"
12#define FWL_CLASSHASH_Grid 3150298670
13#define FWL_GRIDSTYLEEXT_ShowGridLines (1L << 0)
14struct FWL_LAYOUTDATA {
15  FX_FLOAT fWidth;
16  FX_FLOAT fHeight;
17};
18enum FWL_GRIDUNIT {
19  FWL_GRIDUNIT_Auto = 0,
20  FWL_GRIDUNIT_Fixed,
21  FWL_GRIDUNIT_Scaled,
22  FWL_GRIDUNIT_Infinity,
23};
24enum FWL_GRIDMARGIN {
25  FWL_GRIDMARGIN_Left = 0,
26  FWL_GRIDMARGIN_Top,
27  FWL_GRIDMARGIN_Right,
28  FWL_GRIDMARGIN_Bottom,
29};
30enum 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};
38typedef struct _FWL_HGRIDCOLROW { void* pData; } * FWL_HGRIDCOLROW;
39class 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