KiCad PCB EDA Suite
Loading...
Searching...
No Matches
ds_proxy_view_item.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) 2013 CERN
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 * @author Maciej Suminski <[email protected]>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22#ifndef DS_PROXY_VIEW_ITEM_H
23#define DS_PROXY_VIEW_ITEM_H
24
25#include <eda_item.h>
26#include <eda_units.h>
27#include <functional>
28#include <vector>
29
30class BOARD;
31class PAGE_INFO;
32class PROJECT;
33class TITLE_BLOCK;
40struct TEXT_VAR_REF_KEY;
41
42namespace KIGFX
43{
44class VIEW;
45class GAL;
46}
47
49{
50public:
51 DS_PROXY_VIEW_ITEM( const EDA_IU_SCALE& aIuScale, const PAGE_INFO* aPageInfo,
52 const PROJECT* aProject, const TITLE_BLOCK* aTitleBlock,
53 const std::map<wxString, wxString>* aProperties );
54
58 void SetFileName( const std::string& aFileName ) { m_fileName = aFileName; }
59
63 void SetSheetName( const std::string& aSheetName ) { m_sheetName = aSheetName; }
64
68 void SetSheetPath( const std::string& aSheetPath ) { m_sheetPath = aSheetPath; }
69
73 void SetPageNumber( const std::string& aPageNumber ) { m_pageNumber = aPageNumber; }
74
78 void SetSheetCount( int aSheetCount ) { m_sheetCount = aSheetCount; }
79
86 void SetIsFirstPage( bool aIsFirstPage ) { m_isFirstPage = aIsFirstPage; }
87
91 void SetVariantName( const std::string& aVariant ) { m_variantName = aVariant; }
92 void SetVariantDesc( const std::string& aVariantDesc ) { m_variantDesc = aVariantDesc; }
93
98 void SetColorLayer( int aLayerId ) { m_colorLayer = aLayerId; }
99
105 void SetPageBorderColorLayer( int aLayerId ) { m_pageBorderColorLayer = aLayerId; }
106
107 const PAGE_INFO& GetPageInfo() { return *m_pageInfo; }
109
111 const BOX2I ViewBBox() const override;
112
114 void ViewDraw( int aLayer, KIGFX::VIEW* aView ) const override;
115
117 std::vector<int> ViewGetLayers() const override;
118
119#if defined(DEBUG)
121 void Show( int x, std::ostream& st ) const override { }
122#endif
123
129 virtual wxString GetClass() const override
130 {
131 return wxT( "DS_PROXY_VIEW_ITEM" );
132 }
133
134 bool HitTestDrawingSheetItems( KIGFX::VIEW* aView, const VECTOR2I& aPosition );
135
143 std::vector<TEXT_VAR_REF_KEY> CollectTextVarKeys() const;
144
159 void AttachToTracker( TEXT_VAR_TRACKER* aTracker );
160
161 ~DS_PROXY_VIEW_ITEM() override;
162
163protected:
164 void buildDrawList( KIGFX::VIEW* aView, const std::map<wxString, wxString>* aProperties,
165 DS_DRAW_ITEM_LIST* aDrawList ) const;
166
167protected:
169
170 std::string m_fileName;
171 std::string m_sheetName;
172 std::string m_sheetPath;
175 std::string m_pageNumber;
178 std::string m_variantName;
179 std::string m_variantDesc;
181
182 const std::map<wxString, wxString>* m_properties;
183
189
192
196};
197
198#endif /* DS_PROXY_VIEW_ITEM_H */
BOX2< VECTOR2I > BOX2I
Definition box2.h:918
Information pertinent to a Pcbnew printed circuit board.
Definition board.h:372
Store the list of graphic items: rect, lines, polygons and texts to draw/plot the title block and fra...
Non filled rectangle with thick segment.
A graphic text.
void SetSheetPath(const std::string &aSheetPath)
Set the sheet path displayed in the title block.
void SetSheetCount(int aSheetCount)
Change the sheet-count number displayed in the title block.
void SetVariantName(const std::string &aVariant)
Set the current variant name and description to be shown on the drawing sheet.
const PROJECT * m_project
std::vector< int > ViewGetLayers() const override
void SetVariantDesc(const std::string &aVariantDesc)
void SetPageNumber(const std::string &aPageNumber)
Change the page number displayed in the title block.
int m_colorLayer
Layer that is used for drawing sheet color (LAYER_DRAWINGSHEET is always used for visibility).
const BOX2I ViewBBox() const override
const TITLE_BLOCK * m_titleBlock
void SetSheetName(const std::string &aSheetName)
Set the sheet name displayed in the title block.
void SetPageBorderColorLayer(int aLayerId)
Override the layer used to pick the color of the page border (normally LAYER_GRID)
const PAGE_INFO & GetPageInfo()
const EDA_IU_SCALE & m_iuScale
void SetIsFirstPage(bool aIsFirstPage)
Change if this is first page.
const std::map< wxString, wxString > * m_properties
void AttachToTracker(TEXT_VAR_TRACKER *aTracker)
Register this proxy with aTracker as a dependent on every title-block source variable its current tem...
const TITLE_BLOCK & GetTitleBlock()
bool HitTestDrawingSheetItems(KIGFX::VIEW *aView, const VECTOR2I &aPosition)
TEXT_VAR_TRACKER * m_attachedTracker
Tracker this proxy is currently registered with (null if detached).
void SetFileName(const std::string &aFileName)
Set the file name displayed in the title block.
void ViewDraw(int aLayer, KIGFX::VIEW *aView) const override
DS_PROXY_VIEW_ITEM(const EDA_IU_SCALE &aIuScale, const PAGE_INFO *aPageInfo, const PROJECT *aProject, const TITLE_BLOCK *aTitleBlock, const std::map< wxString, wxString > *aProperties)
void SetColorLayer(int aLayerId)
Can be used to override which layer ID is used for drawing sheet item colors.
void buildDrawList(KIGFX::VIEW *aView, const std::map< wxString, wxString > *aProperties, DS_DRAW_ITEM_LIST *aDrawList) const
virtual wxString GetClass() const override
Get class name.
const PAGE_INFO * m_pageInfo
int m_pageBorderColorLayer
Layer that is used for page border color.
std::vector< TEXT_VAR_REF_KEY > CollectTextVarKeys() const
Walk the current drawing-sheet definition and collect every ${...} reference encountered in its text ...
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:37
Abstract interface for drawing on a 2D-surface.
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition view.h:63
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition page_info.h:75
Container for project specific data.
Definition project.h:62
Coordinates the dependency index with change notifications.
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition title_block.h:37
The Cairo implementation of the graphics abstraction layer.
Definition eda_group.h:29
Identifies a single resolvable source that a text item's ${...} reference depends on.
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683