| // 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 XFA_FDE_FDE_VISUALSET_H_ | 
 | #define XFA_FDE_FDE_VISUALSET_H_ | 
 |  | 
 | #include "core/fxcrt/include/fx_coordinates.h" | 
 | #include "core/fxcrt/include/fx_system.h" | 
 | #include "core/fxge/include/fx_dib.h" | 
 | #include "xfa/fde/cfde_path.h" | 
 | #include "xfa/fde/fde_object.h" | 
 | #include "xfa/fgas/crt/fgas_memory.h" | 
 | #include "xfa/fgas/font/fgas_font.h" | 
 |  | 
 | enum FDE_VISUALOBJTYPE { | 
 |   FDE_VISUALOBJ_Canvas = 0x00, | 
 |   FDE_VISUALOBJ_Text = 0x01 | 
 | }; | 
 |  | 
 | struct FDE_TEXTEDITPIECE { | 
 |   int32_t nStart; | 
 |   int32_t nCount; | 
 |   int32_t nBidiLevel; | 
 |   CFX_RectF rtPiece; | 
 |   uint32_t dwCharStyles; | 
 | }; | 
 |  | 
 | class IFDE_VisualSet { | 
 |  public: | 
 |   virtual ~IFDE_VisualSet() {} | 
 |   virtual FDE_VISUALOBJTYPE GetType() = 0; | 
 |   virtual void GetRect(FDE_TEXTEDITPIECE* hVisualObj, CFX_RectF& rt) = 0; | 
 | }; | 
 |  | 
 | class IFDE_CanvasSet : public IFDE_VisualSet { | 
 |  public: | 
 |   virtual FX_POSITION GetFirstPosition() = 0; | 
 |   virtual FDE_TEXTEDITPIECE* GetNext(FX_POSITION& pos, | 
 |                                      IFDE_VisualSet*& pVisualSet) = 0; | 
 | }; | 
 |  | 
 | class IFDE_TextSet : public IFDE_VisualSet { | 
 |  public: | 
 |   virtual int32_t GetString(FDE_TEXTEDITPIECE* hText, | 
 |                             CFX_WideString& wsText) = 0; | 
 |   virtual CFGAS_GEFont* GetFont() = 0; | 
 |   virtual FX_FLOAT GetFontSize() = 0; | 
 |   virtual FX_ARGB GetFontColor() = 0; | 
 |   virtual int32_t GetDisplayPos(FDE_TEXTEDITPIECE* hText, | 
 |                                 FXTEXT_CHARPOS* pCharPos, | 
 |                                 FX_BOOL bCharCode = FALSE, | 
 |                                 CFX_WideString* pWSForms = nullptr) = 0; | 
 |   virtual int32_t GetCharRects(const FDE_TEXTEDITPIECE* hText, | 
 |                                CFX_RectFArray& rtArray, | 
 |                                FX_BOOL bbox) = 0; | 
 | }; | 
 |  | 
 | #endif  // XFA_FDE_FDE_VISUALSET_H_ |