1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7 #ifndef SCPAGEOUTPUT_H
8 #define SCPAGEOUTPUT_H
9 
10 #include <QRect>
11 #include <QRectF>
12 
13 #include "scribusapi.h"
14 #include "sccolor.h"
15 #include "scpainterexbase.h"
16 #include "scimage.h"
17 
18 class CharStyle;
19 struct GlyphLayout;
20 class ScPage;
21 class PageItem;
22 class PageItem_Arc;
23 class PageItem_Group;
24 class PageItem_ImageFrame;
25 class PageItem_Line;
26 class PageItem_PathText;
27 class PageItem_Polygon;
28 class PageItem_PolyLine;
29 class PageItem_Spiral;
30 class PageItem_RegularPolygon;
31 class PageItem_Table;
32 class PageItem_TextFrame;
33 class ScLayer;
34 class ScribusDoc;
35 
36 class SCRIBUS_API MarksOptions
37 {
38 public:
39 	MarksOptions(void);
40 	MarksOptions(struct PrintOptions& opt);
41 	double markLength;
42 	double markOffset;
43 	double BleedTop;
44 	double BleedLeft;
45 	double BleedRight;
46 	double BleedBottom;
47 	bool   cropMarks;
48 	bool   bleedMarks;
49 	bool   registrationMarks;
50 	bool   colorMarks;
51 	bool   docInfoMarks;
52 };
53 
54 class SCRIBUS_API ScPageOutput
55 {
56 	friend class ScPageOutputPainter;
57 
58 public:
59 	ScPageOutput(ScribusDoc* doc, bool reloadImages = false, int resolution = 72, bool useProfiles = false);
~ScPageOutput()60 	virtual ~ScPageOutput() { }
61 
begin(void)62 	virtual void begin(void) {};
drawPage(ScPage * page)63 	virtual void drawPage( ScPage* page ) {};
64 	virtual void drawPage( ScPage* page, ScPainterExBase* painter);
end(void)65 	virtual void end(void) {};
66 
setMarksOptions(const MarksOptions & opt)67 	void setMarksOptions(const MarksOptions& opt) { m_marksOptions = opt; }
68 
69 protected:
70 	ScribusDoc* m_doc;
71 
72 	bool m_reloadImages;
73 	int  m_imageRes;
74 	bool m_useProfiles;
75 	MarksOptions m_marksOptions;
76 
77 	virtual void fillPath( PageItem* item, ScPainterExBase* painter, QRect clip );
78 	virtual void strokePath( PageItem* item, ScPainterExBase* painter, QRect clip );
79 
80 	virtual void drawMasterItems( ScPainterExBase *painter, ScPage *page, ScLayer& layer, QRect clip);
81 	virtual void drawPageItems( ScPainterExBase *painter, ScPage *page, ScLayer& layer, QRect clip);
82 
83 	virtual void drawItem( PageItem* item, ScPainterExBase* painter, QRect clip );
84 	virtual void drawItem_Pre( PageItem* item, ScPainterExBase* painter );
85 	virtual void drawItem_Post( PageItem* item, ScPainterExBase* painter );
86 
87 	virtual void drawItem_Embedded( PageItem* item, ScPainterExBase *p, QRect clip, const CharStyle& style, PageItem* cembedded);
88 	virtual void drawPattern(PageItem* item, ScPainterExBase* painter, QRect clip);
89 	virtual void drawStrokePattern(PageItem* item, ScPainterExBase* painter, const QPainterPath& path);
90 
91 	virtual void drawItem_Arc( PageItem_Arc* item, ScPainterExBase* painter, QRect clip );
92 	virtual void drawItem_Group( PageItem_Group* item, ScPainterExBase* painter, QRect clip );
93 	virtual void drawItem_ImageFrame( PageItem_ImageFrame* item, ScPainterExBase* painter, QRect clip );
94 	virtual void drawItem_Line( PageItem_Line* item, ScPainterExBase* painter, QRect clip);
95 	virtual void drawItem_Polygon ( PageItem_Polygon* item , ScPainterExBase* painter, QRect clip );
96 	virtual void drawItem_PolyLine( PageItem_PolyLine* item, ScPainterExBase* painte, QRect clip );
97 	virtual void drawItem_RegularPolygon( PageItem_RegularPolygon* item, ScPainterExBase* painte, QRect clip );
98 	virtual void drawItem_Spiral( PageItem_Spiral* item, ScPainterExBase* painter, QRect clip );
99 	virtual void drawItem_Table( PageItem_Table* item, ScPainterExBase* painter, QRect clip );
100 	virtual void drawItem_Text( PageItem* item, ScPainterExBase* painter, QRect clip );
101 
102 	virtual void drawArrow(ScPainterExBase* painter, PageItem* item, QTransform &arrowTrans, int arrowIndex);
103 	virtual void drawMarks( ScPage* page, ScPainterExBase* painter, const MarksOptions& options );
104 	virtual void drawBoxMarks( ScPainterExBase* painter, const QRectF& box, const QRectF& bleedBox, double offset , double markSize);
105 	virtual void drawRegistrationCross( ScPainterExBase* painter );
106 
107 	ScImage::RequestType translateImageModeToRequest( ScPainterExBase::ImageMode mode);
108 
109 	friend class CollapsedTablePainterEx;
110 };
111 
112 #endif
113