xref: /aosp_15_r20/external/pdfium/xfa/fwl/cfwl_checkbox.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker 
5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6*3ac0a46fSAndroid Build Coastguard Worker 
7*3ac0a46fSAndroid Build Coastguard Worker #ifndef XFA_FWL_CFWL_CHECKBOX_H_
8*3ac0a46fSAndroid Build Coastguard Worker #define XFA_FWL_CFWL_CHECKBOX_H_
9*3ac0a46fSAndroid Build Coastguard Worker 
10*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fwl/cfwl_event.h"
11*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fwl/cfwl_widget.h"
12*3ac0a46fSAndroid Build Coastguard Worker 
13*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STYLEEXT_CKB_3State (1L << 6)
14*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STYLEEXT_CKB_RadioButton (1L << 7)
15*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STYLEEXT_CKB_SignShapeCheck 0
16*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STYLEEXT_CKB_SignShapeCircle (1L << 10)
17*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STYLEEXT_CKB_SignShapeCross (2L << 10)
18*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STYLEEXT_CKB_SignShapeDiamond (3L << 10)
19*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STYLEEXT_CKB_SignShapeSquare (4L << 10)
20*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STYLEEXT_CKB_SignShapeStar (5L << 10)
21*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STYLEEXT_CKB_SignShapeMask (7L << 10)
22*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STATE_CKB_Hovered (1 << FWL_STATE_WGT_MAX)
23*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STATE_CKB_Pressed (1 << (FWL_STATE_WGT_MAX + 1))
24*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STATE_CKB_Unchecked 0
25*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STATE_CKB_Checked (1 << (FWL_STATE_WGT_MAX + 2))
26*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STATE_CKB_Neutral (2 << (FWL_STATE_WGT_MAX + 2))
27*3ac0a46fSAndroid Build Coastguard Worker #define FWL_STATE_CKB_CheckMask (3L << (FWL_STATE_WGT_MAX + 2))
28*3ac0a46fSAndroid Build Coastguard Worker 
29*3ac0a46fSAndroid Build Coastguard Worker class CFWL_MessageKey;
30*3ac0a46fSAndroid Build Coastguard Worker class CFWL_MessageMouse;
31*3ac0a46fSAndroid Build Coastguard Worker 
32*3ac0a46fSAndroid Build Coastguard Worker class CFWL_CheckBox final : public CFWL_Widget {
33*3ac0a46fSAndroid Build Coastguard Worker  public:
34*3ac0a46fSAndroid Build Coastguard Worker   CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
35*3ac0a46fSAndroid Build Coastguard Worker   ~CFWL_CheckBox() override;
36*3ac0a46fSAndroid Build Coastguard Worker 
37*3ac0a46fSAndroid Build Coastguard Worker   // CFWL_Widget
38*3ac0a46fSAndroid Build Coastguard Worker   FWL_Type GetClassID() const override;
39*3ac0a46fSAndroid Build Coastguard Worker   void Update() override;
40*3ac0a46fSAndroid Build Coastguard Worker   void DrawWidget(CFGAS_GEGraphics* pGraphics,
41*3ac0a46fSAndroid Build Coastguard Worker                   const CFX_Matrix& matrix) override;
42*3ac0a46fSAndroid Build Coastguard Worker 
43*3ac0a46fSAndroid Build Coastguard Worker   void OnProcessMessage(CFWL_Message* pMessage) override;
44*3ac0a46fSAndroid Build Coastguard Worker   void OnDrawWidget(CFGAS_GEGraphics* pGraphics,
45*3ac0a46fSAndroid Build Coastguard Worker                     const CFX_Matrix& matrix) override;
46*3ac0a46fSAndroid Build Coastguard Worker 
47*3ac0a46fSAndroid Build Coastguard Worker   void SetBoxSize(float fHeight);
48*3ac0a46fSAndroid Build Coastguard Worker 
49*3ac0a46fSAndroid Build Coastguard Worker  private:
50*3ac0a46fSAndroid Build Coastguard Worker   explicit CFWL_CheckBox(CFWL_App* pApp);
51*3ac0a46fSAndroid Build Coastguard Worker 
52*3ac0a46fSAndroid Build Coastguard Worker   void SetCheckState(int32_t iCheck);
53*3ac0a46fSAndroid Build Coastguard Worker   void Layout();
54*3ac0a46fSAndroid Build Coastguard Worker   Mask<CFWL_PartState> GetPartStates() const;
55*3ac0a46fSAndroid Build Coastguard Worker   void UpdateTextOutStyles();
56*3ac0a46fSAndroid Build Coastguard Worker   void NextStates();
57*3ac0a46fSAndroid Build Coastguard Worker   void OnFocusGained();
58*3ac0a46fSAndroid Build Coastguard Worker   void OnFocusLost();
59*3ac0a46fSAndroid Build Coastguard Worker   void OnLButtonDown();
60*3ac0a46fSAndroid Build Coastguard Worker   void OnLButtonUp(CFWL_MessageMouse* pMsg);
61*3ac0a46fSAndroid Build Coastguard Worker   void OnMouseMove(CFWL_MessageMouse* pMsg);
62*3ac0a46fSAndroid Build Coastguard Worker   void OnMouseLeave();
63*3ac0a46fSAndroid Build Coastguard Worker   void OnKeyDown(CFWL_MessageKey* pMsg);
64*3ac0a46fSAndroid Build Coastguard Worker 
65*3ac0a46fSAndroid Build Coastguard Worker   CFX_RectF m_ClientRect;
66*3ac0a46fSAndroid Build Coastguard Worker   CFX_RectF m_BoxRect;
67*3ac0a46fSAndroid Build Coastguard Worker   CFX_RectF m_CaptionRect;
68*3ac0a46fSAndroid Build Coastguard Worker   CFX_RectF m_FocusRect;
69*3ac0a46fSAndroid Build Coastguard Worker   FDE_TextStyle m_TTOStyles;
70*3ac0a46fSAndroid Build Coastguard Worker   FDE_TextAlignment m_iTTOAlign = FDE_TextAlignment::kCenter;
71*3ac0a46fSAndroid Build Coastguard Worker   bool m_bBtnDown = false;
72*3ac0a46fSAndroid Build Coastguard Worker   float m_fBoxHeight = 16.0f;
73*3ac0a46fSAndroid Build Coastguard Worker };
74*3ac0a46fSAndroid Build Coastguard Worker 
75*3ac0a46fSAndroid Build Coastguard Worker #endif  // XFA_FWL_CFWL_CHECKBOX_H_
76