1 /*
2 	Copyright 2006-2019 The QElectroTech Team
3 	This file is part of QElectroTech.
4 
5 	QElectroTech is free software: you can redistribute it and/or modify
6 	it under the terms of the GNU General Public License as published by
7 	the Free Software Foundation, either version 2 of the License, or
8 	(at your option) any later version.
9 
10 	QElectroTech is distributed in the hope that it will be useful,
11 	but WITHOUT ANY WARRANTY; without even the implied warranty of
12 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 	GNU General Public License for more details.
14 
15 	You should have received a copy of the GNU General Public License
16 	along with QElectroTech.  If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef TITLEBLOCK_TEMPLATE_RENDERER_H
19 #define TITLEBLOCK_TEMPLATE_RENDERER_H
20 #include <QPicture>
21 #include "diagramcontext.h"
22 
23 class TitleBlockTemplate;
24 
25 class TitleBlockTemplateRenderer : public QObject
26 {
27 	Q_OBJECT
28 
29 	public:
30 		TitleBlockTemplateRenderer(QObject * = nullptr);
31 		~TitleBlockTemplateRenderer() override;
32 
33 		const TitleBlockTemplate *titleBlockTemplate() const;
34 		void setTitleBlockTemplate(const TitleBlockTemplate *);
35 
36 		void setContext(const DiagramContext &context);
37 		DiagramContext context()const;
38 
39 		int height() const;
40 		void render(QPainter *, int);
41 		void renderDxf(QRectF &, int, QString &, int);
42 		void invalidateRenderedTemplate();
43 		void setUseCache(bool);
44 		bool useCache() const;
45 
46 	private:
47 		void renderToQPicture(int);
48 
49 	private:
50 		const TitleBlockTemplate *m_titleblock_template;
51 		bool m_use_cache;
52 		QPicture m_rendered_template;
53 		DiagramContext m_context;
54 		int m_last_known_titleblock_width;
55 };
56 #endif
57