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 FPDFSDK_INCLUDE_PDFWINDOW_PWL_LISTCTRL_H_
8 #define FPDFSDK_INCLUDE_PDFWINDOW_PWL_LISTCTRL_H_
9 
10 #include "PWL_Wnd.h"
11 
12 class CPWL_ListCtrl : public CPWL_Wnd {
13  public:
14   CPWL_ListCtrl();
15   ~CPWL_ListCtrl() override;
16 
17   void SetScrollPos(const CPDF_Point& point);
18   CPDF_Point GetScrollPos() const;
19   CPDF_Rect GetScrollArea() const;
20   void SetItemSpace(FX_FLOAT fSpace);
21   void SetTopSpace(FX_FLOAT fSpace);
22   void SetBottomSpace(FX_FLOAT fSpace);
23   void ResetFace();
24   void ResetContent(int32_t nStart);
25   int32_t GetItemIndex(CPWL_Wnd* pItem);
26   FX_FLOAT GetContentsHeight(FX_FLOAT fLimitWidth);
27   CPDF_Point InToOut(const CPDF_Point& point) const;
28   CPDF_Point OutToIn(const CPDF_Point& point) const;
29   CPDF_Rect InToOut(const CPDF_Rect& rect) const;
30   CPDF_Rect OutToIn(const CPDF_Rect& rect) const;
31 
32  protected:
33   // CPWL_Wnd
34   void RePosChildWnd() override;
35   void DrawChildAppearance(CFX_RenderDevice* pDevice,
36                            CFX_Matrix* pUser2Device) override;
37 
38  private:
39   void ResetAll(FX_BOOL bMove, int32_t nStart);
40 
41   CPDF_Rect m_rcContent;
42   CPDF_Point m_ptScroll;
43   FX_FLOAT m_fItemSpace;
44   FX_FLOAT m_fTopSpace;
45   FX_FLOAT m_fBottomSpace;
46 };
47 
48 #endif  // FPDFSDK_INCLUDE_PDFWINDOW_PWL_LISTCTRL_H_
49