Home | History | Annotate | Download | only in fwl
      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_FWL_CFWL_CARET_H_
      8 #define XFA_FWL_CFWL_CARET_H_
      9 
     10 #include <memory>
     11 
     12 #include "xfa/fwl/cfwl_timer.h"
     13 #include "xfa/fwl/cfwl_widget.h"
     14 #include "xfa/fxgraphics/cfx_color.h"
     15 
     16 class CFWL_WidgetProperties;
     17 class CFWL_Widget;
     18 
     19 #define FWL_STATE_CAT_HightLight 1
     20 
     21 class CFWL_Caret : public CFWL_Widget {
     22  public:
     23   CFWL_Caret(const CFWL_App* app,
     24              std::unique_ptr<CFWL_WidgetProperties> properties,
     25              CFWL_Widget* pOuter);
     26   ~CFWL_Caret() override;
     27 
     28   // CFWL_Widget
     29   FWL_Type GetClassID() const override;
     30   void DrawWidget(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix) override;
     31   void OnProcessMessage(CFWL_Message* pMessage) override;
     32   void OnDrawWidget(CFX_Graphics* pGraphics,
     33                     const CFX_Matrix* pMatrix) override;
     34   void Update() override;
     35 
     36   void ShowCaret();
     37   void HideCaret();
     38 
     39  private:
     40   class Timer : public CFWL_Timer {
     41    public:
     42     explicit Timer(CFWL_Caret* pCaret);
     43     ~Timer() override {}
     44 
     45     void Run(CFWL_TimerInfo* hTimer) override;
     46   };
     47   friend class CFWL_Caret::Timer;
     48 
     49   void DrawCaretBK(CFX_Graphics* pGraphics,
     50                    IFWL_ThemeProvider* pTheme,
     51                    const CFX_Matrix* pMatrix);
     52 
     53   std::unique_ptr<CFWL_Caret::Timer> m_pTimer;
     54   CFWL_TimerInfo* m_pTimerInfo;  // not owned.
     55 };
     56 
     57 #endif  // XFA_FWL_CFWL_CARET_H_
     58