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_CARET_IMP_H 8 #define _FWL_CARET_IMP_H 9 10 #include "xfa/include/fwl/core/fwl_timer.h" 11 12 class CFWL_WidgetImp; 13 class CFWL_WidgetImpProperties; 14 class CFWL_WidgetImpDelegate; 15 class IFWL_Widget; 16 class CFWL_CaretImp; 17 class CFWL_CaretImpDelegate; 18 class CFWL_CaretImp : public CFWL_WidgetImp { 19 public: 20 CFWL_CaretImp(const CFWL_WidgetImpProperties& properties, 21 IFWL_Widget* pOuter); 22 virtual ~CFWL_CaretImp(); 23 24 virtual FWL_ERR GetClassName(CFX_WideString& wsClass) const; 25 virtual FX_DWORD GetClassID() const; 26 27 virtual FWL_ERR Initialize(); 28 virtual FWL_ERR Finalize(); 29 30 virtual FWL_ERR DrawWidget(CFX_Graphics* pGraphics, 31 const CFX_Matrix* pMatrix = NULL); 32 33 virtual FWL_ERR ShowCaret(FX_BOOL bFlag = TRUE); 34 virtual FWL_ERR GetFrequency(FX_DWORD& elapse); 35 virtual FWL_ERR SetFrequency(FX_DWORD elapse); 36 virtual FWL_ERR SetColor(CFX_Color crFill); 37 38 protected: 39 FX_BOOL DrawCaretBK(CFX_Graphics* pGraphics, 40 IFWL_ThemeProvider* pTheme, 41 const CFX_Matrix* pMatrix); 42 class CFWL_CaretTimer : public IFWL_Timer { 43 public: 44 CFWL_CaretTimer(CFWL_CaretImp* m_pCaret); 45 ~CFWL_CaretTimer() override {} 46 int32_t Run(FWL_HTIMER hTimer) override; 47 CFWL_CaretImp* m_pCaret; 48 }; 49 CFWL_CaretTimer* m_pTimer; 50 FWL_HTIMER m_hTimer; 51 FX_DWORD m_dwElapse; 52 CFX_Color m_crFill; 53 FX_BOOL m_bSetColor; 54 friend class CFWL_CaretImpDelegate; 55 friend class CFWL_CaretTimer; 56 }; 57 class CFWL_CaretImpDelegate : public CFWL_WidgetImpDelegate { 58 public: 59 CFWL_CaretImpDelegate(CFWL_CaretImp* pOwner); 60 int32_t OnProcessMessage(CFWL_Message* pMessage) override; 61 FWL_ERR OnDrawWidget(CFX_Graphics* pGraphics, 62 const CFX_Matrix* pMatrix = NULL) override; 63 64 protected: 65 CFWL_CaretImp* m_pOwner; 66 }; 67 #endif 68