summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qpdf_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2015-03-09 17:32:15 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-04-09 12:22:13 +0000
commitc52bcf733742837f7fbeedbb788c3c9285a24bb6 (patch)
tree59d41bad3da08b2d71270436cc54ead4f46bc813 /src/gui/painting/qpdf_p.h
parent50bf54c62767e1d99f7349b01c21380e9c05fb95 (diff)
Support gradients natively in the PDF generator
Add native support for linear and radial gradients to our PDF generator. This fixes a couple of issues with both the quality of the generated PDFs as well as sizes of the files. Task-number: QTBUG-42758 Change-Id: Ib905457e11e4dc52443c76b3761bca8d1fbe9bfc Reviewed-by: Stephen Chu <stephen@ju-ju.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src/gui/painting/qpdf_p.h')
-rw-r--r--src/gui/painting/qpdf_p.h13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/gui/painting/qpdf_p.h b/src/gui/painting/qpdf_p.h
index e7ff09cd3b..94e74f30b9 100644
--- a/src/gui/painting/qpdf_p.h
+++ b/src/gui/painting/qpdf_p.h
@@ -58,8 +58,6 @@
#include "private/qfontsubset_p.h"
#include "qpagelayout.h"
-// #define USE_NATIVE_GRADIENTS
-
QT_BEGIN_NAMESPACE
const char *qt_real_to_string(qreal val, char *buf);
@@ -116,9 +114,6 @@ namespace QPdf {
QByteArray generateMatrix(const QTransform &matrix);
QByteArray generateDashes(const QPen &pen);
QByteArray patternForBrush(const QBrush &b);
-#ifdef USE_NATIVE_GRADIENTS
- QByteArray generateLinearGradientShader(const QLinearGradient *lg, const QPointF *page_rect, bool alpha = false);
-#endif
struct Stroker {
Stroker();
@@ -276,9 +271,11 @@ public:
QPageLayout m_pageLayout;
private:
-#ifdef USE_NATIVE_GRADIENTS
- int gradientBrush(const QBrush &b, const QMatrix &matrix, int *gStateObject);
-#endif
+ int gradientBrush(const QBrush &b, const QTransform &matrix, int *gStateObject);
+ int generateGradientShader(const QGradient *gradient, const QTransform &matrix, bool alpha = false);
+ int generateLinearGradientShader(const QLinearGradient *lg, const QTransform &matrix, bool alpha);
+ int generateRadialGradientShader(const QRadialGradient *gradient, const QTransform &matrix, bool alpha);
+ int createShadingFunction(const QGradient *gradient, int from, int to, bool reflect, bool alpha);
void writeInfo();
void writePageRoot();