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); ~Timer()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