Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
cpdf_type3char.cpp
Go to the documentation of this file.
1
// Copyright 2016 The PDFium Authors
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
#
include
"core/fpdfapi/font/cpdf_type3char.h"
8
9
#
include
<
utility
>
10
11
#
include
"core/fxcrt/fx_system.h"
12
#
include
"core/fxge/dib/cfx_dibitmap.h"
13
#
include
"core/fxge/dib/fx_dib.h"
14
15
namespace
{
16
17
constexpr
float
kTextUnitInGlyphUnit = 1000.0f;
18
19
}
// namespace
20
21
CPDF_Type3Char
::
CPDF_Type3Char
() =
default
;
22
23
CPDF_Type3Char
::~
CPDF_Type3Char
() =
default
;
24
25
// static
26
float
CPDF_Type3Char
::
TextUnitToGlyphUnit
(
float
fTextUnit) {
27
return
fTextUnit * kTextUnitInGlyphUnit;
28
}
29
30
// static
31
void
CPDF_Type3Char
::
TextUnitRectToGlyphUnitRect
(
CFX_FloatRect
* pRect) {
32
pRect
->
Scale
(
kTextUnitInGlyphUnit
)
;
33
}
34
35
bool
CPDF_Type3Char
::
LoadBitmapFromSoleImageOfForm
() {
36
if
(m_pBitmap || !m_pForm)
37
return
true
;
38
39
if
(m_bColored)
40
return
false
;
41
42
auto
result = m_pForm->GetBitmapAndMatrixFromSoleImageOfForm();
43
if
(!result.has_value())
44
return
false
;
45
46
std
::tie(m_pBitmap, m_ImageMatrix) = result.value();
47
m_pForm.reset();
48
return
true
;
49
}
50
51
void
CPDF_Type3Char
::
InitializeFromStreamData
(
bool
bColored,
52
pdfium::span<
const
float
> pData) {
53
m_bColored = bColored;
54
m_Width = FXSYS_roundf(
TextUnitToGlyphUnit
(
pData[0]
)
);
55
m_BBox
.
left
= FXSYS_roundf(
TextUnitToGlyphUnit
(
pData[2]
)
);
56
m_BBox
.
bottom
= FXSYS_roundf(
TextUnitToGlyphUnit
(
pData[3]
)
);
57
m_BBox
.
right
= FXSYS_roundf(
TextUnitToGlyphUnit
(
pData[4]
)
);
58
m_BBox
.
top
= FXSYS_roundf(
TextUnitToGlyphUnit
(
pData[5]
)
);
59
}
60
61
void
CPDF_Type3Char
::
WillBeDestroyed
() {
62
// Break cycles.
63
m_pForm.reset();
64
}
65
66
void
CPDF_Type3Char
::
Transform
(
CPDF_Font
::
FormIface
* pForm,
67
const
CFX_Matrix
& matrix) {
68
m_Width = m_Width * matrix
.
GetXUnit
(
)
+ 0.5f;
69
70
CFX_FloatRect
char_rect;
71
if
(m_BBox
.
right
<= m_BBox
.
left
|| m_BBox
.
bottom
>= m_BBox
.
top
) {
72
char_rect
=
pForm
->
CalcBoundingBox
(
)
;
73
TextUnitRectToGlyphUnitRect
(
&char_rect
)
;
74
}
else
{
75
char_rect
=
CFX_FloatRect
(
m_BBox
)
;
76
}
77
78
m_BBox
=
matrix
.
TransformRect
(
char_rect
)
.
ToRoundedFxRect
(
)
;
79
}
80
81
void
CPDF_Type3Char
::
SetForm
(std::unique_ptr<CPDF_Font::FormIface> pForm) {
82
m_pForm = std::move(pForm);
83
}
84
85
RetainPtr
<CFX_DIBitmap>
CPDF_Type3Char
::
GetBitmap
() {
86
return
m_pBitmap;
87
}
CFX_FloatRect
Definition
fx_coordinates.h:185
CFX_FloatRect::ToRoundedFxRect
FX_RECT ToRoundedFxRect() const
Definition
fx_coordinates.cpp:321
CFX_FloatRect::CFX_FloatRect
CFX_FloatRect(const FX_RECT &rect)
Definition
fx_coordinates.cpp:130
CFX_FloatRect::operator=
CFX_FloatRect & operator=(const CFX_FloatRect &that)=default
CFX_FloatRect::Scale
void Scale(float fScale)
Definition
fx_coordinates.cpp:296
CFX_Matrix
Definition
fx_coordinates.h:440
CFX_Matrix::TransformRect
CFX_FloatRect TransformRect(const CFX_FloatRect &rect) const
Definition
fx_coordinates.cpp:475
CFX_Matrix::GetXUnit
float GetXUnit() const
Definition
fx_coordinates.cpp:434
CPDF_Font::FormIface
Definition
cpdf_font.h:40
CPDF_Font::FormIface::CalcBoundingBox
virtual CFX_FloatRect CalcBoundingBox() const =0
CPDF_Font
Definition
cpdf_font.h:37
CPDF_Type3Char
Definition
cpdf_type3char.h:21
CPDF_Type3Char::WillBeDestroyed
void WillBeDestroyed()
Definition
cpdf_type3char.cpp:61
CPDF_Type3Char::TextUnitToGlyphUnit
static float TextUnitToGlyphUnit(float fTextUnit)
Definition
cpdf_type3char.cpp:26
CPDF_Type3Char::CPDF_Type3Char
CPDF_Type3Char()
CPDF_Type3Char::Transform
void Transform(CPDF_Font::FormIface *pForm, const CFX_Matrix &matrix)
Definition
cpdf_type3char.cpp:66
CPDF_Type3Char::InitializeFromStreamData
void InitializeFromStreamData(bool bColored, pdfium::span< const float > pData)
Definition
cpdf_type3char.cpp:51
CPDF_Type3Char::~CPDF_Type3Char
~CPDF_Type3Char()
CPDF_Type3Char::GetBitmap
RetainPtr< CFX_DIBitmap > GetBitmap()
Definition
cpdf_type3char.cpp:85
CPDF_Type3Char::TextUnitRectToGlyphUnitRect
static void TextUnitRectToGlyphUnitRect(CFX_FloatRect *pRect)
Definition
cpdf_type3char.cpp:31
CPDF_Type3Char::LoadBitmapFromSoleImageOfForm
bool LoadBitmapFromSoleImageOfForm()
Definition
cpdf_type3char.cpp:35
CPDF_Type3Char::SetForm
void SetForm(std::unique_ptr< CPDF_Font::FormIface > pForm)
Definition
cpdf_type3char.cpp:81
fxcrt::RetainPtr
Definition
retain_ptr.h:28
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
FX_RECT::operator=
FX_RECT & operator=(const FX_RECT &that)=default
FX_RECT::bottom
int32_t bottom
Definition
fx_coordinates.h:181
FX_RECT::right
int32_t right
Definition
fx_coordinates.h:180
FX_RECT::top
int32_t top
Definition
fx_coordinates.h:179
FX_RECT::left
int32_t left
Definition
fx_coordinates.h:178
qtwebengine
src
3rdparty
chromium
third_party
pdfium
core
fpdfapi
font
cpdf_type3char.cpp
Generated on
for Qt by
1.18.0