// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef FPDFSDK_PDFWINDOW_PWL_CARET_H_ #define FPDFSDK_PDFWINDOW_PWL_CARET_H_ #include "fpdfsdk/pdfwindow/PWL_Wnd.h" struct PWL_CARET_INFO { public: PWL_CARET_INFO() : bVisible(FALSE), ptHead(0, 0), ptFoot(0, 0) {} FX_BOOL bVisible; CFX_FloatPoint ptHead; CFX_FloatPoint ptFoot; }; class CPWL_Caret : public CPWL_Wnd { public: CPWL_Caret(); ~CPWL_Caret() override; // CPWL_Wnd CFX_ByteString GetClassName() const override; void GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) override; void DrawThisAppearance(CFX_RenderDevice* pDevice, CFX_Matrix* pUser2Device) override; void InvalidateRect(CFX_FloatRect* pRect = nullptr) override; void SetVisible(FX_BOOL bVisible) override {} void TimerProc() override; void SetCaret(FX_BOOL bVisible, const CFX_FloatPoint& ptHead, const CFX_FloatPoint& ptFoot); CFX_ByteString GetCaretAppearanceStream(const CFX_FloatPoint& ptOffset); void SetInvalidRect(CFX_FloatRect rc) { m_rcInvalid = rc; } private: void GetCaretApp(CFX_ByteTextBuf& sAppStream, const CFX_FloatPoint& ptOffset); CFX_FloatRect GetCaretRect() const; FX_BOOL m_bFlash; CFX_FloatPoint m_ptHead; CFX_FloatPoint m_ptFoot; FX_FLOAT m_fWidth; int32_t m_nDelay; CFX_FloatRect m_rcInvalid; }; #endif // FPDFSDK_PDFWINDOW_PWL_CARET_H_