1// Copyright 2016 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 CORE_FPDFAPI_RENDER_CPDF_TEXTRENDERER_H_
8#define CORE_FPDFAPI_RENDER_CPDF_TEXTRENDERER_H_
9
10#include <vector>
11
12#include "core/fxcrt/fx_coordinates.h"
13#include "core/fxcrt/fx_string.h"
14#include "core/fxcrt/fx_system.h"
15#include "core/fxge/fx_dib.h"
16
17class CFX_RenderDevice;
18class CFX_GraphStateData;
19class CFX_PathData;
20class CPDF_RenderOptions;
21class CPDF_Font;
22
23class CPDF_TextRenderer {
24 public:
25  static void DrawTextString(CFX_RenderDevice* pDevice,
26                             FX_FLOAT origin_x,
27                             FX_FLOAT origin_y,
28                             CPDF_Font* pFont,
29                             FX_FLOAT font_size,
30                             const CFX_Matrix* matrix,
31                             const CFX_ByteString& str,
32                             FX_ARGB fill_argb,
33                             const CFX_GraphStateData* pGraphState,
34                             const CPDF_RenderOptions* pOptions);
35
36  static bool DrawTextPath(CFX_RenderDevice* pDevice,
37                           const std::vector<uint32_t>& charCodes,
38                           const std::vector<FX_FLOAT>& charPos,
39                           CPDF_Font* pFont,
40                           FX_FLOAT font_size,
41                           const CFX_Matrix* pText2User,
42                           const CFX_Matrix* pUser2Device,
43                           const CFX_GraphStateData* pGraphState,
44                           FX_ARGB fill_argb,
45                           FX_ARGB stroke_argb,
46                           CFX_PathData* pClippingPath,
47                           int nFlag);
48
49  static bool DrawNormalText(CFX_RenderDevice* pDevice,
50                             const std::vector<uint32_t>& charCodes,
51                             const std::vector<FX_FLOAT>& charPos,
52                             CPDF_Font* pFont,
53                             FX_FLOAT font_size,
54                             const CFX_Matrix* pText2Device,
55                             FX_ARGB fill_argb,
56                             const CPDF_RenderOptions* pOptions);
57};
58
59#endif  // CORE_FPDFAPI_RENDER_CPDF_TEXTRENDERER_H_
60