Home | History | Annotate | Download | only in include
      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