KReport

KReportScriptDraw.cpp
1 /* This file is part of the KDE project
2  * Copyright (C) 2007-2008 by Adam Pigg ([email protected])
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #include "KReportScriptDraw.h"
19 #include "KReportRenderObjects.h"
20 
21 #include <QFont>
22 #include <QFontMetrics>
23 
24 KReportScriptDraw::KReportScriptDraw(QObject *parent)
25  : QObject(parent)
26 {
27  m_curPage = nullptr;
28 }
29 
30 
31 KReportScriptDraw::~KReportScriptDraw()
32 {
33 }
34 
35 void KReportScriptDraw::setPage(OROPage *p)
36 {
37  m_curPage = p;
38 }
39 
40 void KReportScriptDraw::setOffset(QPointF off)
41 {
42  m_curOffset = off;
43 }
44 
45 void KReportScriptDraw::rectangle(qreal x, qreal y, qreal w, qreal h, const QString& lc, const QString& fc, qreal lw, int a)
46 {
47  if (m_curPage) {
48  ORORect *r = new ORORect();
49 
50  r->setRect(QRectF(KReportItemBase::scenePosition(QPointF(x, y)) + m_curOffset, KReportItemBase::sceneSize(QSizeF(w, h))));
51 
52  QPen pen(QColor(lc), lw);
53  QColor c(fc);
54  c.setAlpha(a);
55  QBrush bru(c);
56 
57  r->setBrush(bru);
58  r->setPen(pen);
59  m_curPage->insertPrimitive(r);
60  }
61 }
62 
63 void KReportScriptDraw::ellipse(qreal x, qreal y, qreal w, qreal h, const QString& lc, const QString& fc, qreal lw, int a)
64 {
65  if (m_curPage) {
66  OROEllipse *e = new OROEllipse();
67 
68  e->setRect(QRectF(KReportItemBase::scenePosition(QPointF(x, y)) + m_curOffset, KReportItemBase::sceneSize(QSizeF(w, h))));
69 
70  QPen pen(QColor(lc), lw);
71  QColor c(fc);
72  c.setAlpha(a);
73  QBrush bru(c);
74 
75  e->setBrush(bru);
76  e->setPen(pen);
77  m_curPage->insertPrimitive(e);
78  }
79 }
80 
81 void KReportScriptDraw::line(qreal x1, qreal y1, qreal x2, qreal y2, const QString& lc)
82 {
83  if (m_curPage) {
84  OROLine *ln = new OROLine();
85 
86  ln->setStartPoint(KReportItemBase::scenePosition(QPointF(x1, y1) + m_curOffset));
87  ln->setEndPoint(KReportItemBase::scenePosition(QPointF(x2, y2) + m_curOffset));
88 
90  ls.setColor(QColor(lc));
91  ls.setWeight(1);
92  ls.setPenStyle(Qt::SolidLine);
93 
94  ln->setLineStyle(ls);
95  m_curPage->insertPrimitive(ln);
96  }
97 }
98 
99 void KReportScriptDraw::text(qreal x, qreal y, const QString &txt, const QString &fnt, int pt, const QString &fc, const QString&bc, const QString &lc, qreal lw, int o)
100 {
101  if (m_curPage) {
102  QFont f(fnt, pt);
103  QRectF r = QFontMetricsF(f).boundingRect(txt);
104 
105  KReportTextStyleData ts;
106  ts.font = f;
107  ts.backgroundColor = QColor(bc);
108  ts.foregroundColor = QColor(fc);
109  ts.backgroundOpacity = o;
110 
111  KReportLineStyle ls;
112  ls.setColor(QColor(lc));
113  ls.setWeight(lw);
114  if (lw <= 0)
115  ls.setPenStyle(Qt::NoPen);
116  else
117  ls.setPenStyle(Qt::SolidLine);
118 
119 
120  OROTextBox *tb = new OROTextBox();
121  tb->setPosition(QPointF(x, y) + m_curOffset);
122  tb->setSize(r.size());
123  tb->setTextStyle(ts);
124  tb->setLineStyle(ls);
125 
126  tb->setText(txt);
127 
128  m_curPage->insertPrimitive(tb);
129 
130  }
131 }
132 
A text box primitive it defines a box region and text that will be rendered inside that region,...
The KReportLineStyle class represents line style.
void ellipse(qreal, qreal, qreal, qreal, const QString &, const QString &, qreal, int)
Draw an ellipse.
void line(qreal, qreal, qreal, qreal, const QString &)
Draw a line.
Represents a single page in a document and may contain zero or more OROPrimitive objects all of which...
Defines a rectangle.
QRectF boundingRect(const QString &text) const const
static QPointF scenePosition(const QPointF &ptPos)
Helper function mapping to screen units (pixels), ptPos is in points.
static QSizeF sceneSize(const QSizeF &ptSize)
Helper function mapping to screen units (pixels), ptSize is in points.
void setAlpha(int alpha)
Defines an ellipse.
QSizeF size() const const
void text(qreal, qreal, const QString &, const QString &fnt=QLatin1String("Helvetica"), int pt=12, const QString &fc=QLatin1String("#000000"), const QString &bc=QLatin1String("#ffffff"), const QString &lc=QLatin1String("#ffffff"), qreal lw=0, int o=0)
Draw some text.
Defines a line with a width/weight.
SolidLine
void rectangle(qreal, qreal, qreal, qreal, const QString &, const QString &, qreal, int)
Draw a rectangle.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Dec 8 2023 04:08:19 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.