KiCad PCB EDA Suite
Loading...
Searching...
No Matches
ds_draw_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-2014 Jean-Pierre Charras, jp.charras at wanadoo.fr
5 * Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25#ifndef DS_DRAW_ITEM_H
26#define DS_DRAW_ITEM_H
27
28#include <core/typeinfo.h>
29#include <math/vector2d.h>
30#include <eda_text.h>
31#include "widgets/msgpanel.h"
33#include <eda_item.h>
34#include <eda_units.h>
35
36#include <algorithm>
37#include <vector>
38
39class DS_DATA_ITEM;
40class TITLE_BLOCK;
41class PAGE_INFO;
42class EDA_ITEM;
43class EDA_DRAW_FRAME;
44class PROJECT;
45
59{
60public:
61 virtual ~DS_DRAW_ITEM_BASE() {}
62
63 DS_DATA_ITEM* GetPeer() const { return m_peer; }
64 int GetIndexInPeer() const { return m_index; }
65
66 void ViewGetLayers( int aLayers[], int& aCount ) const override;
67
68 virtual void SetEnd( const VECTOR2I& aPos ) { /* not all types will need this */ }
69
70 virtual int GetPenWidth() const
71 {
72 if( m_penWidth > 0 )
73 return m_penWidth;
74 else
75 return 1;
76 }
77
78 const KIFONT::METRICS& GetFontMetrics() const;
79
80 // The function to print a WS_DRAW_ITEM
81 virtual void PrintWsItem( const RENDER_SETTINGS* aSettings )
82 {
83 PrintWsItem( aSettings, VECTOR2I( 0, 0 ) );
84 }
85
86 // More advanced version of DrawWsItem. This is what must be defined in the derived type.
87 virtual void PrintWsItem( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset ) = 0;
88
89 // We can't cache bounding boxes because we're recreated for each draw event. This method
90 // can be overridden by items whose real bounding boxes are expensive to calculate. It is
91 // used to determine if we're in the current view, so it can be sloppy.
92 virtual const BOX2I GetApproxBBox()
93 {
94 return GetBoundingBox();
95 }
96
97 // Derived types must define GetBoundingBox() as a minimum, and can then override the
98 // two HitTest() functions if they need something more specific.
99 const BOX2I GetBoundingBox() const override = 0;
100
101 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override
102 {
103 // This is just here to prevent annoying compiler warnings about hidden overloaded
104 // virtual functions
105 return EDA_ITEM::HitTest( aPosition, aAccuracy );
106 }
107
108 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
109
110 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
111
112protected:
113 DS_DRAW_ITEM_BASE( DS_DATA_ITEM* aPeer, int aIndex, KICAD_T aType ) :
114 EDA_ITEM( aType )
115 {
116 m_peer = aPeer;
117 m_index = aIndex;
118 m_penWidth = 0;
119 m_flags = 0;
120 }
121
122protected:
123 DS_DATA_ITEM* m_peer; // the parent DS_DATA_ITEM item in the DS_DATA_MODEL
124 int m_index; // the index in the parent's repeat count
126};
127
128
129// This class draws a thick segment
131{
132public:
133 DS_DRAW_ITEM_LINE( DS_DATA_ITEM* aPeer, int aIndex, VECTOR2I aStart, VECTOR2I aEnd,
134 int aPenWidth ) :
135 DS_DRAW_ITEM_BASE( aPeer, aIndex, WSG_LINE_T )
136 {
137 m_start = aStart;
138 m_end = aEnd;
139 m_penWidth = aPenWidth;
140 }
141
142 virtual wxString GetClass() const override { return wxT( "DS_DRAW_ITEM_LINE" ); }
143
144 const VECTOR2I& GetStart() const { return m_start; }
145 void SetStart( const VECTOR2I& aPos ) { m_start = aPos; }
146 const VECTOR2I& GetEnd() const { return m_end; }
147 void SetEnd( const VECTOR2I& aPos ) override { m_end = aPos; }
148
149 VECTOR2I GetPosition() const override { return GetStart(); }
150 void SetPosition( const VECTOR2I& aPos ) override { SetStart( aPos ); }
151
152 const BOX2I GetBoundingBox() const override;
153
154 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
155
156 void PrintWsItem( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset ) override;
157
158 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
159
160#if defined(DEBUG)
161 void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
162#endif
163
164private:
165 VECTOR2I m_start; // start point of line/rect
166 VECTOR2I m_end; // end point
167};
168
169
171{
172public:
173 DS_DRAW_ITEM_POLYPOLYGONS( DS_DATA_ITEM* aPeer, int aIndex, VECTOR2I aPos, int aPenWidth ) :
174 DS_DRAW_ITEM_BASE( aPeer, aIndex, WSG_POLY_T )
175 {
176 m_penWidth = aPenWidth;
177 m_pos = aPos;
178 }
179
180 virtual wxString GetClass() const override { return wxT( "DS_DRAW_ITEM_POLYPOLYGONS" ); }
181
183 VECTOR2I GetPosition() const override { return m_pos; }
184 void SetPosition( const VECTOR2I& aPos ) override;
185
186 const BOX2I GetBoundingBox() const override;
187
188 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
189 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
190
191 void PrintWsItem( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset ) override;
192
193 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
194
195#if defined(DEBUG)
196 void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
197#endif
198
199public:
207
208private:
209 VECTOR2I m_pos; // position of reference point, from the DS_DATA_ITEM_POLYGONS parent
210 // (used only in drawing sheet editor to draw anchors)
211};
212
213
218{
219public:
220 DS_DRAW_ITEM_RECT( DS_DATA_ITEM* aPeer, int aIndex, VECTOR2I aStart, VECTOR2I aEnd,
221 int aPenWidth ) :
222 DS_DRAW_ITEM_BASE( aPeer, aIndex, WSG_RECT_T )
223 {
224 m_start = aStart;
225 m_end = aEnd;
226 m_penWidth = aPenWidth;
227 }
228
229 virtual wxString GetClass() const override { return wxT( "DS_DRAW_ITEM_RECT" ); }
230
231 const VECTOR2I& GetStart() const { return m_start; }
232 void SetStart( const VECTOR2I& aPos ) { m_start = aPos; }
233 const VECTOR2I& GetEnd() const { return m_end; }
234 void SetEnd( const VECTOR2I& aPos ) override { m_end = aPos; }
235
236 VECTOR2I GetPosition() const override { return GetStart(); }
237 void SetPosition( const VECTOR2I& aPos ) override { SetStart( aPos ); }
238
239 void PrintWsItem( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset ) override;
240
241 const BOX2I GetBoundingBox() const override;
242
243 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
244 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
245
246 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
247
248#if defined(DEBUG)
249 void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
250#endif
251
252private:
253 VECTOR2I m_start; // start point of line/rect
254 VECTOR2I m_end; // end point
255};
256
257
266{
267public:
268 DS_DRAW_ITEM_PAGE( int aPenWidth, double aMarkerSize ) :
269 DS_DRAW_ITEM_BASE( nullptr, 0, WSG_PAGE_T )
270 {
271 m_penWidth = aPenWidth;
272 m_markerSize = aMarkerSize;
273 }
274
275 virtual wxString GetClass() const override { return wxT( "DS_DRAW_ITEM_PAGE" ); }
276
277 void SetPageSize( const VECTOR2I& aSize ) { m_pageSize = aSize; }
278 VECTOR2I GetPageSize() const { return m_pageSize; }
279
280 const VECTOR2I& GetMarkerPos() const { return m_markerPos; }
281 void SetMarkerPos( const VECTOR2I& aPos ) { m_markerPos = aPos; }
282
283 double GetMarkerSize() const { return m_markerSize; }
284
285 VECTOR2I GetPosition() const override { return VECTOR2I( 0, 0 ); }
286 void SetPosition( const VECTOR2I& aPos ) override { /* do nothing */ }
287
288 void PrintWsItem( const RENDER_SETTINGS* , const VECTOR2I& ) override { /* do nothing */ }
289
290 const BOX2I GetBoundingBox() const override;
291 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override { return false; }
292
293 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
294
295#if defined(DEBUG)
296 void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
297#endif
298
299private:
300 VECTOR2I m_markerPos; // position of the marker
301 VECTOR2I m_pageSize; // full size of the page
303};
304
305
313{
314public:
315 DS_DRAW_ITEM_TEXT( const EDA_IU_SCALE& aIuScale, DS_DATA_ITEM* aPeer, int aIndex,
316 const wxString& aText, const VECTOR2I& aPos, const VECTOR2I& aSize,
317 int aPenWidth, KIFONT::FONT* aFont,
318 bool aItalic = false, bool aBold = false,
320 DS_DRAW_ITEM_BASE( aPeer, aIndex, WSG_TEXT_T),
321 EDA_TEXT( aIuScale, aText )
322 {
323 SetTextPos( aPos );
324 SetTextSize( aSize );
325 SetTextThickness( aPenWidth );
326 SetFont( aFont );
327 SetItalic( aItalic );
328 SetBold( aBold );
329 SetTextColor( aColor );
330 }
331
332 virtual wxString GetClass() const override { return wxT( "DS_DRAW_ITEM_TEXT" ); }
333
334 void PrintWsItem( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset ) override;
335
336 VECTOR2I GetPosition() const override { return GetTextPos(); }
337 void SetPosition( const VECTOR2I& aPos ) override { SetTextPos( aPos ); }
338
339 virtual const BOX2I GetApproxBBox() override;
340
341 const BOX2I GetBoundingBox() const override;
342
343 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
344 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
345
346 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
347
348#if defined(DEBUG)
349 void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
350#endif
351
352protected:
353 const KIFONT::METRICS& getFontMetrics() const override { return GetFontMetrics(); }
354};
355
356
361{
362public:
363 DS_DRAW_ITEM_BITMAP( DS_DATA_ITEM* aPeer, int aIndex, VECTOR2I aPos ) :
364 DS_DRAW_ITEM_BASE( aPeer, aIndex, WSG_BITMAP_T )
365 {
366 m_pos = aPos;
367 }
368
370
371 virtual wxString GetClass() const override { return wxT( "DS_DRAW_ITEM_BITMAP" ); }
372
373 VECTOR2I GetPosition() const override { return m_pos; }
374 void SetPosition( const VECTOR2I& aPos ) override { m_pos = aPos; }
375
376 void PrintWsItem( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset ) override;
377
378 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
379 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
380
381 const BOX2I GetBoundingBox() const override;
382
383 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
384
385#if defined(DEBUG)
386 void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
387#endif
388
389private:
390 VECTOR2I m_pos; // position of reference point
391};
392
393
401{
402public:
403 DS_DRAW_ITEM_LIST( const EDA_IU_SCALE& aIuScale ) :
404 m_iuScale( aIuScale )
405 {
406 m_idx = 0;
407 m_plotterMilsToIu = 0.0;
408 m_penSize = 1;
409 m_pageNumber = "1";
410 m_sheetCount = 1;
411 m_titleBlock = nullptr;
412 m_project = nullptr;
413 m_isFirstPage = true;
414 m_properties = nullptr;
415 }
416
418 {
419 // Items in the m_graphicList are owned by their respective DS_DATA_ITEMs.
420 // for( DS_DRAW_ITEM_BASE* item : m_graphicList )
421 // delete item;
422 }
423
424 void SetProject( const PROJECT* aProject ) { m_project = aProject; }
425
429 void SetTitleBlock( const TITLE_BLOCK* aTblock ) { m_titleBlock = aTblock; }
430
434 void SetProperties( const std::map<wxString, wxString>* aProps ) { m_properties = aProps; }
435
439 void SetPaperFormat( const wxString& aFormatName ) { m_paperFormat = aFormatName; }
440
444 void SetFileName( const wxString& aFileName ) { m_fileName = aFileName; }
445
449 void SetSheetName( const wxString& aSheetName ) { m_sheetName = aSheetName; }
450
454 void SetSheetPath( const wxString& aSheetPath ) { m_sheetPath = aSheetPath; }
455
459 void SetSheetLayer( const wxString& aSheetLayer ) { m_sheetLayer = aSheetLayer; }
460
461 void SetDefaultPenSize( int aPenSize ) { m_penSize = aPenSize; }
462 int GetDefaultPenSize() const { return m_penSize; }
463
467 void SetPlotterMilsToIUfactor( double aMils2Iu ) { m_plotterMilsToIu = aMils2Iu; }
468
476 {
477 if( m_plotterMilsToIu > 0.0 )
478 return m_plotterMilsToIu;
479 else
480 return m_iuScale.IU_PER_MILS;
481 }
482
483 const EDA_IU_SCALE& GetIuScale() const { return m_iuScale; }
484
488 void SetPageNumber( const wxString& aPageNumber ) { m_pageNumber = aPageNumber; }
489
493 void SetIsFirstPage( bool aIsFirstPage ) { m_isFirstPage = aIsFirstPage; }
494
498 void SetSheetCount( int aSheetCount ) { m_sheetCount = aSheetCount; }
499
501 {
502 m_graphicList.push_back( aItem );
503 }
504
506 {
507 auto newEnd = std::remove( m_graphicList.begin(), m_graphicList.end(), aItem );
508 m_graphicList.erase( newEnd, m_graphicList.end() );
509 }
510
512 {
513 m_idx = 0;
514
515 if( m_graphicList.size() )
516 return m_graphicList[0];
517 else
518 return nullptr;
519 }
520
522 {
523 m_idx++;
524
525 if( m_graphicList.size() > m_idx )
526 return m_graphicList[m_idx];
527 else
528 return nullptr;
529 }
530
534 void Print( const RENDER_SETTINGS* aSettings );
535
552 void BuildDrawItemsList( const PAGE_INFO& aPageInfo, const TITLE_BLOCK& aTitleBlock );
553
554 static void GetTextVars( wxArrayString* aVars );
555
560 wxString BuildFullText( const wxString& aTextbase );
561
562protected:
563 std::vector <DS_DRAW_ITEM_BASE*> m_graphicList; // Items to draw/plot
564 const EDA_IU_SCALE& m_iuScale; // IU scale for drawing
565 double m_plotterMilsToIu; // IU scale for plotting
566
567 unsigned m_idx; // for GetFirst, GetNext functions
568 int m_penSize; // The default line width for drawings.
569 // used when an item has a pen size = 0
572 // for text variable references, in schematic
573 const TITLE_BLOCK* m_titleBlock; // for text variable references
574 wxString m_paperFormat; // for text variable references
575 wxString m_fileName; // for text variable references
576 wxString m_sheetName; // for text variable references
577 wxString m_sheetPath; // for text variable references
578 wxString m_pageNumber;
579 wxString m_sheetLayer; // for text variable references
580 const PROJECT* m_project; // for project-based text variable references
581
582 const std::map<wxString, wxString>* m_properties; // for text variable references
583};
584
585
586#endif // DS_DRAW_ITEM_H
Drawing sheet structure type definitions.
Definition: ds_data_item.h:96
Base class to handle basic graphic items.
Definition: ds_draw_item.h:59
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
Definition: ds_draw_item.h:101
virtual void PrintWsItem(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset)=0
const BOX2I GetBoundingBox() const override=0
Return the orthogonal bounding box of this object for display purposes.
int GetIndexInPeer() const
Definition: ds_draw_item.h:64
virtual void SetEnd(const VECTOR2I &aPos)
Definition: ds_draw_item.h:68
virtual int GetPenWidth() const
Definition: ds_draw_item.h:70
virtual void PrintWsItem(const RENDER_SETTINGS *aSettings)
Definition: ds_draw_item.h:81
virtual const BOX2I GetApproxBBox()
Definition: ds_draw_item.h:92
void ViewGetLayers(int aLayers[], int &aCount) const override
Return the all the layers within the VIEW the object is painted on.
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
DS_DATA_ITEM * GetPeer() const
Definition: ds_draw_item.h:63
DS_DRAW_ITEM_BASE(DS_DATA_ITEM *aPeer, int aIndex, KICAD_T aType)
Definition: ds_draw_item.h:113
const KIFONT::METRICS & GetFontMetrics() const
DS_DATA_ITEM * m_peer
Definition: ds_draw_item.h:123
virtual ~DS_DRAW_ITEM_BASE()
Definition: ds_draw_item.h:61
virtual wxString GetClass() const override
Return the class name.
Definition: ds_draw_item.h:371
VECTOR2I GetPosition() const override
Definition: ds_draw_item.h:373
DS_DRAW_ITEM_BITMAP(DS_DATA_ITEM *aPeer, int aIndex, VECTOR2I aPos)
Definition: ds_draw_item.h:363
void PrintWsItem(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset) override
void SetPosition(const VECTOR2I &aPos) override
Definition: ds_draw_item.h:374
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
virtual wxString GetClass() const override
Return the class name.
Definition: ds_draw_item.h:142
void SetEnd(const VECTOR2I &aPos) override
Definition: ds_draw_item.h:147
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
void PrintWsItem(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset) override
void SetStart(const VECTOR2I &aPos)
Definition: ds_draw_item.h:145
const VECTOR2I & GetStart() const
Definition: ds_draw_item.h:144
VECTOR2I GetPosition() const override
Definition: ds_draw_item.h:149
DS_DRAW_ITEM_LINE(DS_DATA_ITEM *aPeer, int aIndex, VECTOR2I aStart, VECTOR2I aEnd, int aPenWidth)
Definition: ds_draw_item.h:133
void SetPosition(const VECTOR2I &aPos) override
Definition: ds_draw_item.h:150
const VECTOR2I & GetEnd() const
Definition: ds_draw_item.h:146
Store the list of graphic items: rect, lines, polygons and texts to draw/plot the title block and fra...
Definition: ds_draw_item.h:401
void SetPlotterMilsToIUfactor(double aMils2Iu)
Set the scalar to convert pages units (mils) to plot units.
Definition: ds_draw_item.h:467
void SetTitleBlock(const TITLE_BLOCK *aTblock)
Set the title block (mainly for drawing sheet editor)
Definition: ds_draw_item.h:429
int m_sheetCount
The number of sheets.
Definition: ds_draw_item.h:571
DS_DRAW_ITEM_LIST(const EDA_IU_SCALE &aIuScale)
Definition: ds_draw_item.h:403
DS_DRAW_ITEM_BASE * GetFirst()
Definition: ds_draw_item.h:511
void BuildDrawItemsList(const PAGE_INFO &aPageInfo, const TITLE_BLOCK &aTitleBlock)
Drawing or plot the drawing sheet.
int GetDefaultPenSize() const
Definition: ds_draw_item.h:462
wxString m_sheetPath
Definition: ds_draw_item.h:577
void SetSheetPath(const wxString &aSheetPath)
Set the sheet path to draw/plot.
Definition: ds_draw_item.h:454
static void GetTextVars(wxArrayString *aVars)
Definition: ds_painter.cpp:97
const std::map< wxString, wxString > * m_properties
Definition: ds_draw_item.h:582
const EDA_IU_SCALE & GetIuScale() const
Definition: ds_draw_item.h:483
void SetFileName(const wxString &aFileName)
Set the filename to draw/plot.
Definition: ds_draw_item.h:444
void SetDefaultPenSize(int aPenSize)
Definition: ds_draw_item.h:461
wxString BuildFullText(const wxString &aTextbase)
Definition: ds_painter.cpp:115
wxString m_sheetLayer
Definition: ds_draw_item.h:579
void Print(const RENDER_SETTINGS *aSettings)
Draws the item list created by BuildDrawItemsList.
void SetSheetName(const wxString &aSheetName)
Set the sheet name to draw/plot.
Definition: ds_draw_item.h:449
wxString m_paperFormat
Definition: ds_draw_item.h:574
void SetIsFirstPage(bool aIsFirstPage)
Set if the page is the first page.
Definition: ds_draw_item.h:493
void SetProperties(const std::map< wxString, wxString > *aProps)
Set properties used for text variable resolution.
Definition: ds_draw_item.h:434
const TITLE_BLOCK * m_titleBlock
Definition: ds_draw_item.h:573
const PROJECT * m_project
Definition: ds_draw_item.h:580
void SetSheetLayer(const wxString &aSheetLayer)
Set the sheet layer to draw/plot.
Definition: ds_draw_item.h:459
void SetSheetCount(int aSheetCount)
Set the value of the count of sheets, for basic inscriptions.
Definition: ds_draw_item.h:498
double m_plotterMilsToIu
Definition: ds_draw_item.h:565
bool m_isFirstPage
Is this the first page or not.
Definition: ds_draw_item.h:570
void Append(DS_DRAW_ITEM_BASE *aItem)
Definition: ds_draw_item.h:500
void SetPageNumber(const wxString &aPageNumber)
Set the value of the sheet number.
Definition: ds_draw_item.h:488
double GetMilsToIUfactor()
Get the scalar to convert pages units (mils) to draw/plot units.
Definition: ds_draw_item.h:475
std::vector< DS_DRAW_ITEM_BASE * > m_graphicList
Definition: ds_draw_item.h:563
DS_DRAW_ITEM_BASE * GetNext()
Definition: ds_draw_item.h:521
wxString m_pageNumber
The actual page number displayed in the title block.
Definition: ds_draw_item.h:578
void Remove(DS_DRAW_ITEM_BASE *aItem)
Definition: ds_draw_item.h:505
wxString m_sheetName
Definition: ds_draw_item.h:576
void SetPaperFormat(const wxString &aFormatName)
Set the paper format name (mainly for drawing sheet editor)
Definition: ds_draw_item.h:439
const EDA_IU_SCALE & m_iuScale
Definition: ds_draw_item.h:564
void SetProject(const PROJECT *aProject)
Definition: ds_draw_item.h:424
A rectangle with thick segment showing the page limits and a marker showing the coordinate origin.
Definition: ds_draw_item.h:266
const VECTOR2I & GetMarkerPos() const
Definition: ds_draw_item.h:280
double GetMarkerSize() const
Definition: ds_draw_item.h:283
VECTOR2I m_markerPos
Definition: ds_draw_item.h:300
void SetPageSize(const VECTOR2I &aSize)
Definition: ds_draw_item.h:277
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
Definition: ds_draw_item.h:291
void SetPosition(const VECTOR2I &aPos) override
Definition: ds_draw_item.h:286
DS_DRAW_ITEM_PAGE(int aPenWidth, double aMarkerSize)
Definition: ds_draw_item.h:268
void PrintWsItem(const RENDER_SETTINGS *, const VECTOR2I &) override
Definition: ds_draw_item.h:288
virtual wxString GetClass() const override
Return the class name.
Definition: ds_draw_item.h:275
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
void SetMarkerPos(const VECTOR2I &aPos)
Definition: ds_draw_item.h:281
VECTOR2I GetPageSize() const
Definition: ds_draw_item.h:278
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
VECTOR2I GetPosition() const override
Definition: ds_draw_item.h:285
SHAPE_POLY_SET m_Polygons
The list of polygons.
Definition: ds_draw_item.h:206
virtual wxString GetClass() const override
Return the class name.
Definition: ds_draw_item.h:180
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
VECTOR2I GetPosition() const override
Definition: ds_draw_item.h:183
SHAPE_POLY_SET & GetPolygons()
Definition: ds_draw_item.h:182
void SetPosition(const VECTOR2I &aPos) override
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
void PrintWsItem(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset) override
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
DS_DRAW_ITEM_POLYPOLYGONS(DS_DATA_ITEM *aPeer, int aIndex, VECTOR2I aPos, int aPenWidth)
Definition: ds_draw_item.h:173
Non filled rectangle with thick segment.
Definition: ds_draw_item.h:218
const VECTOR2I & GetEnd() const
Definition: ds_draw_item.h:233
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
const VECTOR2I & GetStart() const
Definition: ds_draw_item.h:231
virtual wxString GetClass() const override
Return the class name.
Definition: ds_draw_item.h:229
VECTOR2I GetPosition() const override
Definition: ds_draw_item.h:236
void PrintWsItem(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset) override
void SetEnd(const VECTOR2I &aPos) override
Definition: ds_draw_item.h:234
void SetPosition(const VECTOR2I &aPos) override
Definition: ds_draw_item.h:237
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
DS_DRAW_ITEM_RECT(DS_DATA_ITEM *aPeer, int aIndex, VECTOR2I aStart, VECTOR2I aEnd, int aPenWidth)
Definition: ds_draw_item.h:220
void SetStart(const VECTOR2I &aPos)
Definition: ds_draw_item.h:232
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
A graphic text.
Definition: ds_draw_item.h:313
void PrintWsItem(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset) override
DS_DRAW_ITEM_TEXT(const EDA_IU_SCALE &aIuScale, DS_DATA_ITEM *aPeer, int aIndex, const wxString &aText, const VECTOR2I &aPos, const VECTOR2I &aSize, int aPenWidth, KIFONT::FONT *aFont, bool aItalic=false, bool aBold=false, const KIGFX::COLOR4D &aColor=KIGFX::COLOR4D::UNSPECIFIED)
Definition: ds_draw_item.h:315
const KIFONT::METRICS & getFontMetrics() const override
Definition: ds_draw_item.h:353
void SetPosition(const VECTOR2I &aPos) override
Definition: ds_draw_item.h:337
virtual wxString GetClass() const override
Return the class name.
Definition: ds_draw_item.h:332
virtual const BOX2I GetApproxBBox() override
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
VECTOR2I GetPosition() const override
Definition: ds_draw_item.h:336
The base class for create windows for drawing purpose.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:89
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:499
virtual bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const
Test if aPosition is inside or on the boundary of this item.
Definition: eda_item.h:216
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
Definition: eda_text.h:79
void SetTextColor(const COLOR4D &aColor)
Definition: eda_text.h:226
const VECTOR2I & GetTextPos() const
Definition: eda_text.h:230
void SetTextSize(VECTOR2I aNewSize, bool aEnforceMinTextSize=true)
Definition: eda_text.cpp:373
void SetTextPos(const VECTOR2I &aPoint)
Definition: eda_text.cpp:418
void SetTextThickness(int aWidth)
The TextThickness is that set by the user.
Definition: eda_text.cpp:196
void SetBold(bool aBold)
Definition: eda_text.cpp:220
void SetItalic(bool aItalic)
Definition: eda_text.cpp:212
void SetFont(KIFONT::FONT *aFont)
Definition: eda_text.cpp:357
FONT is an abstract base class for both outline and stroke fonts.
Definition: font.h:131
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:104
static const COLOR4D UNSPECIFIED
For legacy support; used as a value to indicate color hasn't been set yet.
Definition: color4d.h:398
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:59
Container for project specific data.
Definition: project.h:62
Represent a set of closed polygons.
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:41
Message panel definition file.
const double IU_PER_MILS
Definition: base_units.h:77
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition: typeinfo.h:78
@ WSG_POLY_T
Definition: typeinfo.h:217
@ WSG_LINE_T
Definition: typeinfo.h:215
@ WSG_TEXT_T
Definition: typeinfo.h:218
@ WSG_PAGE_T
Definition: typeinfo.h:220
@ WSG_RECT_T
Definition: typeinfo.h:216
@ WSG_BITMAP_T
Definition: typeinfo.h:219
VECTOR2< int32_t > VECTOR2I
Definition: vector2d.h:673