KD Reports API Documentation
2.2
Loading...
Searching...
No Matches
source
src
KDReports
KDReportsFrame.cpp
Go to the documentation of this file.
1
/****************************************************************************
2
**
3
** This file is part of the KD Reports library.
4
**
5
** SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6
**
7
** SPDX-License-Identifier: MIT
8
**
9
****************************************************************************/
10
11
#include "
KDReportsFrame.h
"
12
#include "
KDReportsElement.h
"
13
#include "
KDReportsElementData_p.h
"
14
#include "
KDReportsLayoutHelper_p.h
"
15
#include "
KDReportsReportBuilder_p.h
"
16
17
#include <QDebug>
18
#include <QTextFrame>
19
20
class
KDReports::FramePrivate
21
{
22
public
:
23
FramePrivate()
24
: m_width(0)
25
, m_height(0)
26
, m_padding(0.5)
27
, m_border(1.0)
28
, m_widthUnit(
KDReports
::
Millimeters
)
29
, m_heightUnit(
KDReports
::
Millimeters
)
30
{
31
}
32
~FramePrivate()
33
{
34
}
35
QList<KDReports::ElementData>
m_elements;
36
qreal m_width;
37
qreal m_height;
38
qreal m_padding;
39
qreal m_border;
40
KDReports::Unit
m_widthUnit;
41
KDReports::Unit
m_heightUnit;
42
KDReports::Frame::Position
m_position =
KDReports::Frame::InFlow
;
43
};
44
45
KDReports::Frame::Frame
()
46
: d(new FramePrivate)
47
{
48
}
49
50
KDReports::Frame::Frame
(
const
Frame
&other)
51
:
Element
(other)
52
, d(new FramePrivate(*other.d))
53
{
54
}
55
56
KDReports::Frame
&
KDReports::Frame::operator=
(
const
Frame
&other)
57
{
58
if
(&other ==
this
)
59
return
*
this
;
60
Element::operator=
(other);
61
*d = *other.d;
62
return
*
this
;
63
}
64
65
void
KDReports::Frame::setWidth
(qreal width,
KDReports::Unit
unit)
66
{
67
d->m_width = width;
68
d->m_widthUnit = unit;
69
}
70
71
void
KDReports::Frame::setHeight
(qreal height,
KDReports::Unit
unit)
72
{
73
d->m_height = height;
74
d->m_heightUnit = unit;
75
}
76
77
void
KDReports::Frame::setPadding
(qreal padding)
78
{
79
d->m_padding = padding;
80
}
81
82
qreal
KDReports::Frame::padding
()
const
83
{
84
return
d->m_padding;
85
}
86
87
void
KDReports::Frame::setBorder
(qreal border)
88
{
89
d->m_border = border;
90
}
91
92
qreal
KDReports::Frame::border
()
const
93
{
94
return
d->m_border;
95
}
96
97
void
KDReports::Frame::setPosition
(
Position
pos)
98
{
99
d->m_position = pos;
100
}
101
102
KDReports::Frame::Position
KDReports::Frame::position
()
const
103
{
104
return
d->m_position;
105
}
106
107
KDReports::Frame::~Frame
()
108
{
109
}
110
111
void
KDReports::Frame::addInlineElement
(
const
Element
&element)
112
{
113
d->m_elements.append(
KDReports::ElementData
(element.
clone
()));
114
}
115
116
void
KDReports::Frame::addElement
(
const
Element
&element,
Qt::AlignmentFlag
horizontalAlignment)
117
{
118
d->m_elements.append(
KDReports::ElementData
(element.
clone
(), horizontalAlignment));
119
}
120
121
void
KDReports::Frame::addVariable
(
VariableType
variable)
122
{
123
d->m_elements.append(
KDReports::ElementData
(variable));
124
}
125
126
void
KDReports::Frame::build
(
ReportBuilder
&builder)
const
127
{
128
// prepare the frame
129
QTextFrameFormat
format;
130
if
(d->m_width) {
131
if
(d->m_widthUnit ==
Millimeters
) {
132
format.
setWidth
(
QTextLength
(
QTextLength::FixedLength
,
mmToPixels
(d->m_width)));
133
}
else
{
134
format.
setWidth
(
QTextLength
(
QTextLength::PercentageLength
, d->m_width));
135
}
136
}
137
if
(d->m_height) {
138
if
(d->m_heightUnit ==
Millimeters
) {
139
format.
setHeight
(
QTextLength
(
QTextLength::FixedLength
,
mmToPixels
(d->m_height)));
140
}
else
{
141
format.
setHeight
(
QTextLength
(
QTextLength::PercentageLength
, d->m_height));
142
}
143
}
144
145
format.
setPadding
(
mmToPixels
(padding()));
146
format.
setBorder
(d->m_border);
147
// TODO borderBrush like in AbstractTableElement
148
format.
setPosition
(
static_cast<
QTextFrameFormat::Position
>
(d->m_position));
// those enums have the same value
149
150
QTextCursor
&textDocCursor = builder.
cursor
();
151
152
QTextFrame
*frame = textDocCursor.
insertFrame
(format);
153
154
QTextCursor
contentsCursor = frame->
firstCursorPosition
();
155
156
ReportBuilder
contentsBuilder(builder.
currentDocumentData
(), contentsCursor, builder.
report
());
157
contentsBuilder.
copyStateFrom
(builder);
158
159
foreach
(
const
KDReports::ElementData
&ed, d->m_elements) {
160
switch
(ed.
m_type
) {
161
case
KDReports::ElementData::Inline
:
162
contentsBuilder.
addInlineElement
(*ed.
m_element
);
163
break
;
164
case
KDReports::ElementData::Block
:
165
contentsBuilder.
addBlockElement
(*ed.
m_element
, ed.
m_align
);
166
break
;
167
case
KDReports::ElementData::Variable
:
168
contentsBuilder.
addVariable
(ed.
m_variableType
);
169
break
;
170
case
KDReports::ElementData::VerticalSpacing
:
171
contentsBuilder.
addVerticalSpacing
(ed.
m_value
);
172
break
;
173
}
174
}
175
176
textDocCursor.
movePosition
(
QTextCursor::End
);
177
}
178
179
KDReports::Element
*
KDReports::Frame::clone
()
const
180
{
181
return
new
Frame
(*
this
);
182
}
KDReportsElementData_p.h
KDReportsElement.h
KDReportsFrame.h
KDReportsLayoutHelper_p.h
KDReportsReportBuilder_p.h
KDReports::Element
Definition
KDReportsElement.h:35
KDReports::Element::operator=
Element & operator=(const Element &other)
Definition
KDReportsElement.cpp:30
KDReports::Element::clone
virtual Element * clone() const =0
KDReports::Frame
Definition
KDReportsFrame.h:32
KDReports::Frame::addVariable
void addVariable(VariableType variable)
Definition
KDReportsFrame.cpp:121
KDReports::Frame::setBorder
void setBorder(qreal border)
Definition
KDReportsFrame.cpp:87
KDReports::Frame::Position
Position
Definition
KDReportsFrame.h:88
KDReports::Frame::InFlow
@ InFlow
The frame is part of the flow of the paragraph (default)
Definition
KDReportsFrame.h:89
KDReports::Frame::padding
qreal padding() const
Definition
KDReportsFrame.cpp:82
KDReports::Frame::operator=
Frame & operator=(const Frame &other)
Definition
KDReportsFrame.cpp:56
KDReports::Frame::setWidth
void setWidth(qreal width, Unit unit=Millimeters)
Definition
KDReportsFrame.cpp:65
KDReports::Frame::clone
Element * clone() const override
Definition
KDReportsFrame.cpp:179
KDReports::Frame::setPosition
void setPosition(Position pos)
Definition
KDReportsFrame.cpp:97
KDReports::Frame::border
qreal border() const
Definition
KDReportsFrame.cpp:92
KDReports::Frame::~Frame
~Frame() override
Definition
KDReportsFrame.cpp:107
KDReports::Frame::addInlineElement
void addInlineElement(const Element &element)
Definition
KDReportsFrame.cpp:111
KDReports::Frame::setHeight
void setHeight(qreal height, Unit unit=Millimeters)
Definition
KDReportsFrame.cpp:71
KDReports::Frame::addElement
void addElement(const Element &element, Qt::AlignmentFlag horizontalAlignment=Qt::AlignLeft)
Definition
KDReportsFrame.cpp:116
KDReports::Frame::setPadding
void setPadding(qreal padding)
Definition
KDReportsFrame.cpp:77
KDReports::Frame::build
void build(ReportBuilder &builder) const override
Definition
KDReportsFrame.cpp:126
KDReports::Frame::Frame
Frame()
Definition
KDReportsFrame.cpp:45
KDReports::Frame::position
Position position() const
Definition
KDReportsFrame.cpp:102
KDReports::ReportBuilder
Definition
KDReportsReportBuilder_p.h:36
KDReports::ReportBuilder::currentDocumentData
TextDocumentData & currentDocumentData()
Definition
KDReportsReportBuilder_p.h:68
KDReports::ReportBuilder::report
Report * report()
Definition
KDReportsReportBuilder_p.h:49
KDReports::ReportBuilder::addVerticalSpacing
virtual void addVerticalSpacing(qreal space)
Definition
KDReportsReportBuilder.cpp:108
KDReports::ReportBuilder::cursor
QTextCursor & cursor()
Definition
KDReportsReportBuilder_p.h:44
KDReports::ReportBuilder::addBlockElement
virtual void addBlockElement(const Element &element, Qt::AlignmentFlag horizontalAlignment, const QColor &backgroundColor=QColor())
Definition
KDReportsReportBuilder.cpp:42
KDReports::ReportBuilder::addVariable
virtual void addVariable(KDReports::VariableType variable)
Definition
KDReportsReportBuilder.cpp:83
KDReports::ReportBuilder::addInlineElement
virtual void addInlineElement(const Element &element)
Definition
KDReportsReportBuilder.cpp:28
KDReports::ReportBuilder::copyStateFrom
void copyStateFrom(const ReportBuilder &parentBuilder)
Definition
KDReportsReportBuilder.cpp:173
KDReports
Definition
KDReportsAbstractReportLayout_p.h:24
KDReports::VariableType
VariableType
Definition
KDReportsVariableType.h:24
KDReports::Unit
Unit
Definition
KDReportsUnit.h:20
KDReports::Millimeters
@ Millimeters
Millimeters (the default)
Definition
KDReportsUnit.h:21
KDReports::mmToPixels
KDREPORTS_EXPORT qreal mmToPixels(qreal mm)
Definition
KDReportsLayoutHelper.cpp:17
QList
Qt::AlignmentFlag
AlignmentFlag
QTextCursor
QTextCursor::End
End
QTextCursor::insertFrame
QTextFrame * insertFrame(const QTextFrameFormat &format)
QTextCursor::movePosition
bool movePosition(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode, int n)
QTextFrame
QTextFrame::firstCursorPosition
QTextCursor firstCursorPosition() const const
QTextFrameFormat
QTextFrameFormat::Position
Position
QTextFrameFormat::setBorder
void setBorder(qreal width)
QTextFrameFormat::setHeight
void setHeight(qreal height)
QTextFrameFormat::setPadding
void setPadding(qreal width)
QTextFrameFormat::setPosition
void setPosition(QTextFrameFormat::Position policy)
QTextFrameFormat::setWidth
void setWidth(qreal width)
QTextLength
QTextLength::FixedLength
FixedLength
KDReports::ElementData
Definition
KDReportsElementData_p.h:36
KDReports::ElementData::m_type
Type m_type
Definition
KDReportsElementData_p.h:102
KDReports::ElementData::m_element
Element * m_element
Definition
KDReportsElementData_p.h:101
KDReports::ElementData::m_value
qreal m_value
Definition
KDReportsElementData_p.h:106
KDReports::ElementData::m_align
Qt::AlignmentFlag m_align
Definition
KDReportsElementData_p.h:105
KDReports::ElementData::m_variableType
KDReports::VariableType m_variableType
Definition
KDReportsElementData_p.h:104
KDReports::ElementData::Block
@ Block
Definition
KDReportsElementData_p.h:40
KDReports::ElementData::VerticalSpacing
@ VerticalSpacing
Definition
KDReportsElementData_p.h:42
KDReports::ElementData::Inline
@ Inline
Definition
KDReportsElementData_p.h:39
KDReports::ElementData::Variable
@ Variable
Definition
KDReportsElementData_p.h:41
© Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-reports/
Generated on Wed Apr 24 2024 04:08:14 for KD Reports API Documentation by doxygen 1.9.8