KiCad PCB EDA Suite
painter.h
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
5  * Copyright (C) 2013 CERN
6  * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors.
7  *
8  * @author Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
9  * @author Maciej Suminski <maciej.suminski@cern.ch>
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13  * as published by the Free Software Foundation; either version 2
14  * of the License, or (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, you may find one here:
23  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
24  * or you may search the http://www.gnu.org website for the version 2 license,
25  * or you may write to the Free Software Foundation, Inc.,
26  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
27  */
28 
29 #ifndef __CLASS_PAINTER_H
30 #define __CLASS_PAINTER_H
31 
32 #include <map>
33 #include <set>
34 
35 #include <wx/dc.h>
36 
37 #include <gal/color4d.h>
38 #include <render_settings.h>
40 #include <memory>
41 
42 namespace KIGFX
43 {
44 class GAL;
45 class VIEW_ITEM;
46 
57 class PAINTER
58 {
59 public:
67  PAINTER( GAL* aGal );
68  virtual ~PAINTER();
69 
75  void SetGAL( GAL* aGal )
76  {
77  m_gal = aGal;
78  }
79 
85  virtual RENDER_SETTINGS* GetSettings() = 0;
86 
96  virtual bool Draw( const VIEW_ITEM* aItem, int aLayer ) = 0;
97 
98 protected:
102 };
103 
104 } // namespace KIGFX
105 
106 #endif /* __CLASS_PAINTER_H */
The Cairo implementation of the graphics abstraction layer.
Definition: color4d.cpp:175
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
PAINTER(GAL *aGal)
Initialize this object for painting on any of the polymorphic GRAPHICS_ABSTRACTION_LAYER* derivatives...
Definition: painter.cpp:32
virtual ~PAINTER()
Definition: painter.cpp:38
An abstract base class for deriving all objects that can be added to a VIEW.
Definition: view_item.h:81
GAL * m_gal
Instance of graphic abstraction layer that gives an interface to call commands used to draw (eg.
Definition: painter.h:101
Contains all the knowledge about how to draw graphical object onto any particular output device.
Definition: painter.h:57
virtual bool Draw(const VIEW_ITEM *aItem, int aLayer)=0
Takes an instance of VIEW_ITEM and passes it to a function that knows how to draw the item.
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.
Board layer functions and definitions.
void SetGAL(GAL *aGal)
Changes Graphics Abstraction Layer used for drawing items for a new one.
Definition: painter.h:75
Abstract interface for drawing on a 2D-surface.