LibreOffice Module sdext (master)  1
contentsink.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #ifndef INCLUDED_SDEXT_SOURCE_PDFIMPORT_INC_CONTENTSINK_HXX
21 #define INCLUDED_SDEXT_SOURCE_PDFIMPORT_INC_CONTENTSINK_HXX
22 
23 #include <com/sun/star/uno/Reference.hxx>
24 #include <com/sun/star/uno/Sequence.hxx>
25 #include <com/sun/star/rendering/ARGBColor.hpp>
26 #include <memory>
27 
28 namespace com::sun::star {
29  namespace rendering
30  {
31  class XPolyPolygon2D;
32  }
33  namespace geometry
34  {
35  struct Matrix2D;
36  struct AffineMatrix2D;
37  struct RealRectangle2D;
38  struct RealPoint2D;
39  struct RealSize2D;
40  }
41  namespace beans
42  {
43  struct PropertyValue;
44  }
45 }
46 
47 namespace pdfi
48 {
50  {
51  FontAttributes( const OUString& familyName_,
52  bool isBold_,
53  bool isItalic_,
54  bool isUnderline_,
55  double size_,
56  double ascent_) :
57  familyName(familyName_),
58  isBold(isBold_),
59  isItalic(isItalic_),
60  isUnderline(isUnderline_),
61  isOutline(false),
62  size(size_),
63  ascent(ascent_)
64  {}
65 
67  familyName(),
68  isBold(false),
69  isItalic(false),
70  isUnderline(false),
71  isOutline(false),
72  size(0.0),
73  ascent(1.0)
74  {}
75 
76  OUString familyName;
77  bool isBold;
78  bool isItalic;
80  bool isOutline;
81  double size; // device pixel
82  double ascent;
83 
84  bool operator==(const FontAttributes& rFont) const
85  {
86  return familyName == rFont.familyName &&
87  !isBold == !rFont.isBold &&
88  !isItalic == !rFont.isItalic &&
89  !isUnderline == !rFont.isUnderline &&
90  !isOutline == !rFont.isOutline &&
91  size == rFont.size &&
92  ascent == rFont.ascent;
93  }
94  };
95 
101  struct ContentSink
102  {
103  virtual ~ContentSink() {}
104 
106  virtual void setPageNum( sal_Int32 nNumPages ) = 0;
107  virtual void startPage( const css::geometry::RealSize2D& rSize ) = 0;
108  virtual void endPage() = 0;
109 
110  virtual void hyperLink( const css::geometry::RealRectangle2D& rBounds,
111  const OUString& rURI ) = 0;
112 
113  virtual void pushState() = 0;
114  virtual void popState() = 0;
115 
116  virtual void setFlatness( double ) = 0;
117  virtual void setTransformation( const css::geometry::AffineMatrix2D& rMatrix ) = 0;
118  virtual void setLineDash( const css::uno::Sequence<double>& dashes,
119  double start ) = 0;
120  virtual void setLineJoin( sal_Int8 lineJoin ) = 0;
121  virtual void setLineCap( sal_Int8 lineCap ) = 0;
122  virtual void setMiterLimit(double) = 0;
123  virtual void setLineWidth(double) = 0;
124  virtual void setFillColor( const css::rendering::ARGBColor& rColor ) = 0;
125  virtual void setStrokeColor( const css::rendering::ARGBColor& rColor ) = 0;
126  virtual void setFont( const FontAttributes& rFont ) = 0;
127  virtual void setTextRenderMode( sal_Int32 ) = 0;
128 
129 
130  virtual void strokePath( const css::uno::Reference<
131  css::rendering::XPolyPolygon2D >& rPath ) = 0;
132  virtual void fillPath( const css::uno::Reference<
133  css::rendering::XPolyPolygon2D >& rPath ) = 0;
134  virtual void eoFillPath( const css::uno::Reference<
135  css::rendering::XPolyPolygon2D >& rPath ) = 0;
136 
137  virtual void intersectClip(const css::uno::Reference<
138  css::rendering::XPolyPolygon2D >& rPath) = 0;
139  virtual void intersectEoClip(const css::uno::Reference<
140  css::rendering::XPolyPolygon2D >& rPath) = 0;
141 
142  virtual void drawGlyphs( const OUString& rGlyphs,
143  const css::geometry::RealRectangle2D& rRect,
144  const css::geometry::Matrix2D& rFontMatrix,
145  double fontSize) = 0;
146 
148  virtual void endText() = 0;
149 
151  virtual void drawMask(const css::uno::Sequence<
152  css::beans::PropertyValue>& xBitmap,
153  bool bInvert ) = 0;
155  virtual void drawImage(const css::uno::Sequence<
156  css::beans::PropertyValue>& xBitmap ) = 0;
161  virtual void drawColorMaskedImage(const css::uno::Sequence<
162  css::beans::PropertyValue>& xBitmap,
163  const css::uno::Sequence<
164  css::uno::Any>& xMaskColors ) = 0;
165  virtual void drawMaskedImage(const css::uno::Sequence<
166  css::beans::PropertyValue>& xBitmap,
167  const css::uno::Sequence<
168  css::beans::PropertyValue>& xMask,
169  bool bInvertMask) = 0;
170  virtual void drawAlphaMaskedImage(const css::uno::Sequence<
171  css::beans::PropertyValue>& xImage,
172  const css::uno::Sequence<
173  css::beans::PropertyValue>& xMask) = 0;
174  };
175 
176  typedef std::shared_ptr<ContentSink> ContentSinkSharedPtr;
177 }
178 
179 #endif // INCLUDED_SDEXT_SOURCE_PDFIMPORT_INC_CONTENTSINK_HXX
180 
181 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual void hyperLink(const css::geometry::RealRectangle2D &rBounds, const OUString &rURI)=0
virtual void endText()=0
issued when a sequence of associated glyphs is drawn
virtual void drawMaskedImage(const css::uno::Sequence< css::beans::PropertyValue > &xBitmap, const css::uno::Sequence< css::beans::PropertyValue > &xMask, bool bInvertMask)=0
virtual void intersectEoClip(const css::uno::Reference< css::rendering::XPolyPolygon2D > &rPath)=0
signed char sal_Int8
virtual void setFillColor(const css::rendering::ARGBColor &rColor)=0
virtual void setPageNum(sal_Int32 nNumPages)=0
Total number of pages for upcoming document.
virtual void setLineDash(const css::uno::Sequence< double > &dashes, double start)=0
virtual void setTextRenderMode(sal_Int32)=0
virtual ~ContentSink()
exports com.sun.star. rendering
exports com.sun.star. geometry
virtual void drawGlyphs(const OUString &rGlyphs, const css::geometry::RealRectangle2D &rRect, const css::geometry::Matrix2D &rFontMatrix, double fontSize)=0
virtual void pushState()=0
virtual void drawImage(const css::uno::Sequence< css::beans::PropertyValue > &xBitmap)=0
Given image must already be color-mapped and normalized to sRGB.
FontAttributes(const OUString &familyName_, bool isBold_, bool isItalic_, bool isUnderline_, double size_, double ascent_)
Definition: contentsink.hxx:51
virtual void setMiterLimit(double)=0
virtual void setFont(const FontAttributes &rFont)=0
virtual void intersectClip(const css::uno::Reference< css::rendering::XPolyPolygon2D > &rPath)=0
virtual void strokePath(const css::uno::Reference< css::rendering::XPolyPolygon2D > &rPath)=0
virtual void setLineWidth(double)=0
virtual void setLineCap(sal_Int8 lineCap)=0
virtual void setLineJoin(sal_Int8 lineJoin)=0
virtual void setStrokeColor(const css::rendering::ARGBColor &rColor)=0
virtual void eoFillPath(const css::uno::Reference< css::rendering::XPolyPolygon2D > &rPath)=0
virtual void drawMask(const css::uno::Sequence< css::beans::PropertyValue > &xBitmap, bool bInvert)=0
draws given bitmap as a mask (using current fill color)
exports com.sun.star. beans
(preliminary) API wrapper around xpdf
virtual void fillPath(const css::uno::Reference< css::rendering::XPolyPolygon2D > &rPath)=0
bool operator==(const FontAttributes &rFont) const
Definition: contentsink.hxx:84
virtual void startPage(const css::geometry::RealSize2D &rSize)=0
virtual void popState()=0
virtual void drawColorMaskedImage(const css::uno::Sequence< css::beans::PropertyValue > &xBitmap, const css::uno::Sequence< css::uno::Any > &xMaskColors)=0
Given image must already be color-mapped and normalized to sRGB.
virtual void drawAlphaMaskedImage(const css::uno::Sequence< css::beans::PropertyValue > &xImage, const css::uno::Sequence< css::beans::PropertyValue > &xMask)=0
virtual void endPage()=0
virtual void setFlatness(double)=0
std::shared_ptr< ContentSink > ContentSinkSharedPtr
virtual void setTransformation(const css::geometry::AffineMatrix2D &rMatrix)=0