KiCad PCB EDA Suite
Loading...
Searching...
No Matches
plotter.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) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr
5 * Copyright The 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, see <https://www.gnu.org/licenses/>.
19 */
20
21#ifndef PLOT_COMMON_H_
22#define PLOT_COMMON_H_
23
24#include <set>
25#include <vector>
26#include <eda_fill.h>
27#include <geometry/eda_angle.h>
28#include <math/box2.h>
29#include <gr_text.h>
30#include <page_info.h>
31#include <gal/color4d.h>
32#include <stroke_params.h>
33#include <render_settings.h>
34#include <font/font.h>
35
36
37class COLOR_SETTINGS;
38class EDA_SHAPE;
39class SHAPE_ARC;
40class SHAPE_POLY_SET;
43class PROJECT;
44class FOOTPRINT;
45
46using KIGFX::COLOR4D;
48
49
50// Must be in the same order as the drop-down list in the plot dialog inside pcbnew
51// Units (inch/mm for DXF plotter
52enum class DXF_UNITS
53{
54 INCH = 0, // Do not use MM: it conficts with a Windows header
55 MM = 1
56};
57
58
77
82{
83 SKETCH = 0, // sketch mode: draw segments outlines only
84 FILLED = 1 // normal mode: solid segments
85};
86
107
109{
110public:
111 virtual DXF_OUTLINE_MODE GetDXFPlotMode() const { wxFAIL; return DXF_OUTLINE_MODE::FILLED; }
113};
114
115
130
138{
139public:
140 // These values are used as flag for pen or aperture selection
141 static const int DO_NOT_SET_LINE_WIDTH = -2; // Skip selection
142 static const int USE_DEFAULT_LINE_WIDTH = -1; // use the default pen
143
144 PLOTTER( const PROJECT* aProject = nullptr );
145
146 virtual ~PLOTTER();
147
153 virtual PLOT_FORMAT GetPlotterType() const = 0;
154
155 virtual bool StartPlot( const wxString& aPageNumber ) = 0;
156 virtual bool EndPlot() = 0;
157
158 virtual void SetNegative( bool aNegative ) { m_negativeMode = aNegative; }
159
165 virtual void SetColorMode( bool aColorMode ) { m_colorMode = aColorMode; }
166 bool GetColorMode() const { return m_colorMode; }
167
168 void SetRenderSettings( RENDER_SETTINGS* aSettings ) { m_renderSettings = aSettings; }
170
171 virtual void SetPageSettings( const PAGE_INFO& aPageSettings ) { m_pageInfo = aPageSettings; }
173
174 void SetPlotMirrored( bool aMirror ) { m_plotMirror = aMirror; };
175 bool GetPlotMirrored() const { return m_plotMirror; }
176
183 virtual void SetCurrentLineWidth( int width, void* aData = nullptr ) = 0;
184 virtual int GetCurrentLineWidth() const { return m_currentPenWidth; }
185
186 virtual void SetColor( const COLOR4D& color ) = 0;
187
188 virtual void SetDash( int aLineWidth, LINE_STYLE aLineStyle ) = 0;
189
190 virtual void SetCreator( const wxString& aCreator ) { m_creator = aCreator; }
191 virtual void SetTitle( const wxString& aTitle ) { m_title = aTitle; }
192 virtual void SetAuthor( const wxString& aAuthor ) { m_author = aAuthor; }
193 virtual void SetSubject( const wxString& aSubject ) { m_subject = aSubject; }
194
200 void AddLineToHeader( const wxString& aExtraString )
201 {
202 m_headerExtraLines.Add( aExtraString );
203 }
204
209 {
210 m_headerExtraLines.Clear();
211 }
212
223 virtual void SetViewport( const VECTOR2I& aOffset, double aIusPerDecimil,
224 double aScale, bool aMirror ) = 0;
225
236 void SetLayersToExport( const std::vector<std::pair<PCB_LAYER_ID, wxString>>& aLayersToExport )
237 {
238 m_layersToExport = aLayersToExport;
239 }
240
248 PCB_LAYER_ID GetLayer() const { return m_layer; }
249
257 void SetLayer( PCB_LAYER_ID aLayer ) { m_layer = aLayer; }
258
263 void MarkFootprintPlotted( const FOOTPRINT* aFootprint ) { m_plottedFootprints.insert( aFootprint ); }
264
265 bool WasFootprintPlotted( const FOOTPRINT* aFootprint ) const
266 {
267 return m_plottedFootprints.count( aFootprint ) > 0;
268 }
269
271
281 virtual bool OpenFile( const wxString& aFullFilename );
282
288 double GetIUsPerDecimil() const { return m_IUsPerDecimil; }
289
290 int GetPlotterArcLowDef() const { return m_IUsPerDecimil * 8; }
291 int GetPlotterArcHighDef() const { return m_IUsPerDecimil * 2; }
292
293 // Low level primitives
294 virtual void Rect( const VECTOR2I& p1, const VECTOR2I& p2, FILL_T fill, int width,
295 int aCornerRadius = 0 ) = 0;
296 virtual void Circle( const VECTOR2I& pos, int diametre, FILL_T fill, int width ) = 0;
297
298 virtual void Arc( const VECTOR2D& aStart, const VECTOR2D& aMid, const VECTOR2D& aEnd,
299 FILL_T aFill, int aWidth );
300
301 virtual void Arc( const VECTOR2D& aCenter, const EDA_ANGLE& aStartAngle,
302 const EDA_ANGLE& aAngle, double aRadius, FILL_T aFill,
303 int aWidth );
304
310 virtual void BezierCurve( const VECTOR2I& aStart, const VECTOR2I& aControl1,
311 const VECTOR2I& aControl2, const VECTOR2I& aEnd,
312 int aTolerance, int aLineThickness );
313
322 virtual void PenTo( const VECTOR2I& pos, char plume ) = 0;
323
324 // Convenience functions for PenTo
325 void MoveTo( const VECTOR2I& pos )
326 {
327 PenTo( pos, 'U' );
328 }
329
330 void LineTo( const VECTOR2I& pos )
331 {
332 PenTo( pos, 'D' );
333 }
334
335 void FinishTo( const VECTOR2I& pos )
336 {
337 PenTo( pos, 'D' );
338 PenTo( pos, 'Z' );
339 }
340
342 {
343 // The point is not important with Z motion
344 PenTo( VECTOR2I( 0, 0 ), 'Z' );
345 }
346
355 virtual void PlotPoly( const std::vector<VECTOR2I>& aCornerList, FILL_T aFill, int aWidth,
356 void* aData ) = 0;
357
367 virtual void PlotPoly( const SHAPE_LINE_CHAIN& aLineChain, FILL_T aFill, int aWidth, void* aData );
368
379 virtual void PlotImage( const wxImage& aImage, const VECTOR2I& aPos, double aScaleFactor );
380
381 // Higher level primitives -- can be drawn as line, sketch or 'filled'
382 virtual void ThickSegment( const VECTOR2I& start, const VECTOR2I& end, int width, void* aData );
383
384 virtual void ThickArc( const EDA_SHAPE& aArcShape, void* aData, int aWidth );
385
386 virtual void ThickArc( const VECTOR2D& aCentre, const EDA_ANGLE& aStAngle,
387 const EDA_ANGLE& aAngle, double aRadius, int aWidth, void* aData );
388
389 virtual void ThickRect( const VECTOR2I& p1, const VECTOR2I& p2, int width, void* aData );
390
391 virtual void ThickCircle( const VECTOR2I& pos, int diametre, int width, void* aData );
392
393 virtual void FilledCircle( const VECTOR2I& pos, int diametre, void* aData );
394
395 virtual void ThickOval( const VECTOR2I& aPos, const VECTOR2I& aSize, const EDA_ANGLE& aOrient,
396 int aWidth, void* aData );
397
398 virtual void ThickPoly( const SHAPE_POLY_SET& aPoly, int aWidth, void* aData );
399
400 // Flash primitives
401
407 virtual void FlashPadCircle( const VECTOR2I& aPadPos, int aDiameter, void* aData ) = 0;
408
415 virtual void FlashPadOval( const VECTOR2I& aPadPos, const VECTOR2I& aSize,
416 const EDA_ANGLE& aPadOrient, void* aData ) = 0;
417
424 virtual void FlashPadRect( const VECTOR2I& aPadPos, const VECTOR2I& aSize,
425 const EDA_ANGLE& aPadOrient, void* aData ) = 0;
426
434 virtual void FlashPadRoundRect( const VECTOR2I& aPadPos, const VECTOR2I& aSize,
435 int aCornerRadius, const EDA_ANGLE& aOrient,
436 void* aData ) = 0;
437
445 virtual void FlashPadCustom( const VECTOR2I& aPadPos, const VECTOR2I& aSize,
446 const EDA_ANGLE& aPadOrient, SHAPE_POLY_SET* aPolygons,
447 void* aData ) = 0;
448
458 virtual void FlashPadTrapez( const VECTOR2I& aPadPos, const VECTOR2I* aCorners,
459 const EDA_ANGLE& aPadOrient, void* aData ) = 0;
460
471 virtual void FlashRegularPolygon( const VECTOR2I& aShapePos, int aDiameter, int aCornerCount,
472 const EDA_ANGLE& aOrient, void* aData ) = 0;
473
497 virtual void Text( const VECTOR2I& aPos,
498 const COLOR4D& aColor,
499 const wxString& aText,
500 const EDA_ANGLE& aOrient,
501 const VECTOR2I& aSize,
502 enum GR_TEXT_H_ALIGN_T aH_justify,
503 enum GR_TEXT_V_ALIGN_T aV_justify,
504 int aPenWidth,
505 bool aItalic,
506 bool aBold,
507 bool aMultilineAllowed,
508 KIFONT::FONT* aFont,
509 const KIFONT::METRICS& aFontMetrics,
510 void* aData = nullptr );
511
512 virtual void PlotText( const VECTOR2I& aPos,
513 const COLOR4D& aColor,
514 const wxString& aText,
515 const TEXT_ATTRIBUTES& aAttributes,
516 KIFONT::FONT* aFont = nullptr,
517 const KIFONT::METRICS& aFontMetrics = KIFONT::METRICS::Default(),
518 void* aData = nullptr );
525 virtual void HyperlinkBox( const BOX2I& aBox, const wxString& aDestinationURL )
526 {
527 // NOP for most plotters.
528 }
529
536 virtual void HyperlinkMenu( const BOX2I& aBox, const std::vector<wxString>& aDestURLs )
537 {
538 // NOP for most plotters.
539 }
540
548 virtual void Bookmark( const BOX2I& aBox, const wxString& aName,
549 const wxString& aGroupName = wxEmptyString )
550 {
551 // NOP for most plotters.
552 }
553
557 static const unsigned MARKER_COUNT = 58;
558
566 void Marker( const VECTOR2I& aPosition, int aDiameter, unsigned aShapeId );
567
577 virtual void SetLayerPolarity( bool aPositive )
578 {
579 // NOP for most plotters
580 }
581
587 virtual void SetTextMode( PLOT_TEXT_MODE mode )
588 {
589 // NOP for most plotters.
590 }
591
592 virtual void SetGerberCoordinatesFormat( int aResolution, bool aUseInches = false )
593 {
594 // NOP for most plotters. Only for Gerber plotter
595 }
596
598 virtual void SetSvgCoordinatesFormat( unsigned aPrecision )
599 {
600 // NOP for most plotters. Only for SVG plotter
601 }
602
609 virtual void SetPlotBBox( const BOX2I& aBBoxIU )
610 {
611 // NOP for most plotters. Only for SVG plotter
612 }
613
621 virtual void StartBlock( void* aData ) {}
622
630 virtual void EndBlock( void* aData ) {}
631
636
640 double GetPlotScale() const { return m_plotScale; }
641
642
643protected:
654 virtual void polyArc( const VECTOR2D& aCentre, const EDA_ANGLE& aStartAngle,
655 const EDA_ANGLE& aAngle, double aRadius, FILL_T aFill, int aWidth );
656
657 // These are marker subcomponents
661 void markerCircle( const VECTOR2I& pos, int radius );
662
666 void markerHBar( const VECTOR2I& pos, int radius );
667
671 void markerSlash( const VECTOR2I& pos, int radius );
672
676 void markerBackSlash( const VECTOR2I& pos, int radius );
677
681 void markerVBar( const VECTOR2I& pos, int radius );
682
686 void markerSquare( const VECTOR2I& position, int radius );
687
691 void markerLozenge( const VECTOR2I& position, int radius );
692
693 // Helper function for sketched filler segment
694
695
696 // Coordinate and scaling conversion functions
697
703 virtual VECTOR2D userToDeviceCoordinates( const VECTOR2I& aCoordinate );
704
708 virtual VECTOR2D userToDeviceSize( const VECTOR2I& size );
709
713 virtual double userToDeviceSize( double size ) const;
714
715 double GetDotMarkLenIU( int aLineWidth ) const;
716
717 double GetDashMarkLenIU( int aLineWidth ) const;
718
719 double GetDashGapLenIU( int aLineWidth ) const;
720
721
722protected: // variables used in most of plotters:
723
726
727 /* Caller scale (how many IUs in a decimil - always); it's a double
728 * because in Eeschema there are 0.1 IUs in a decimil (Eeschema
729 * always works in mils internally) while PcbNew can work in decimil
730 * or nanometers, so this value would be >= 1 */
732
733 double m_iuPerDeviceUnit; // Device scale (from IUs to plotter device units;
734 // usually decimils)
735 VECTOR2I m_plotOffset; // Plot offset (in IUs)
736 bool m_plotMirror; // X axis orientation (SVG)
737 // and plot mirrored (only for PS, PDF and SVG)
738 bool m_mirrorIsHorizontal; // true to mirror horizontally (else vertically)
739 bool m_yaxisReversed; // true if the Y axis is top to bottom (SVG)
740
743
744 // Pen handling
745 bool m_colorMode; // true to plot in color, otherwise black & white
746 bool m_negativeMode; // true to generate a negative image (PS mode mainly)
748 char m_penState; // current pen state: 'U', 'D' or 'Z' (see PenTo)
749 VECTOR2I m_penLastpos; // last pen position; -1,-1 when pen is at rest
750
751 wxString m_creator;
752 wxString m_filename;
753 wxString m_title;
754 wxString m_author;
755 wxString m_subject;
757 VECTOR2I m_paperSize; // Paper size in IU - not in mils
758
759 wxArrayString m_headerExtraLines; // a set of string to print in header file
760
762
764 std::vector<std::pair<PCB_LAYER_ID, wxString>> m_layersToExport;
765
767
768 std::set<const FOOTPRINT*> m_plottedFootprints;
769};
770
771
772class TITLE_BLOCK;
773
774void PlotDrawingSheet( PLOTTER* plotter, const PROJECT* aProject, const TITLE_BLOCK& aTitleBlock,
775 const PAGE_INFO& aPageInfo, const std::map<wxString, wxString>* aProperties,
776 const wxString& aSheetNumber, int aSheetCount, const wxString& aSheetName,
777 const wxString& aSheetPath, const wxString& aFilename, COLOR4D aColor = COLOR4D::UNSPECIFIED,
778 bool aIsFirstPage = true, const wxString& aVariantName = wxEmptyString,
779 const wxString& aVariantDesc = wxEmptyString );
780
784wxString GetDefaultPlotExtension( PLOT_FORMAT aFormat );
785
786
787#endif // PLOT_COMMON_H_
BOX2< VECTOR2I > BOX2I
Definition box2.h:914
static const COLOR4D UNSPECIFIED
For legacy support; used as a value to indicate color hasn't been set yet.
Definition color4d.h:400
Color settings are a bit different than most of the settings objects in that there can be more than o...
Information which can be added in a gerber file as attribute of an object.
FONT is an abstract base class for both outline and stroke fonts.
Definition font.h:94
static const METRICS & Default()
Definition font.cpp:49
A color representation with 4 components: red, green, blue, alpha.
Definition color4d.h:101
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:75
Base plotter engine class.
Definition plotter.h:138
double GetDotMarkLenIU(int aLineWidth) const
Definition plotter.cpp:132
PCB_LAYER_ID GetLayer() const
Gets the ID of the current layer.
Definition plotter.h:248
virtual void PlotImage(const wxImage &aImage, const VECTOR2I &aPos, double aScaleFactor)
Only PostScript plotters can plot bitmaps.
Definition plotter.cpp:258
virtual void FlashPadRoundRect(const VECTOR2I &aPadPos, const VECTOR2I &aSize, int aCornerRadius, const EDA_ANGLE &aOrient, void *aData)=0
wxArrayString m_headerExtraLines
Definition plotter.h:759
static const unsigned MARKER_COUNT
Draw a marker (used for the drill map).
Definition plotter.h:557
double GetDashGapLenIU(int aLineWidth) const
Definition plotter.cpp:144
const PROJECT * m_project
Definition plotter.h:763
virtual void Circle(const VECTOR2I &pos, int diametre, FILL_T fill, int width)=0
std::vector< std::pair< PCB_LAYER_ID, wxString > > m_layersToExport
Definition plotter.h:764
virtual bool OpenFile(const wxString &aFullFilename)
Open or create the plot file aFullFilename.
Definition plotter.cpp:75
wxString m_subject
Definition plotter.h:755
virtual void SetAuthor(const wxString &aAuthor)
Definition plotter.h:192
bool m_mirrorIsHorizontal
Definition plotter.h:738
virtual void SetNegative(bool aNegative)
Definition plotter.h:158
virtual void SetSvgCoordinatesFormat(unsigned aPrecision)
Set the number of digits for mantissa in coordinates in mm for SVG plotter.
Definition plotter.h:598
void Marker(const VECTOR2I &aPosition, int aDiameter, unsigned aShapeId)
Draw a pattern shape number aShapeId, to coord position.
Definition plotter.cpp:364
virtual void ThickPoly(const SHAPE_POLY_SET &aPoly, int aWidth, void *aData)
Definition plotter.cpp:527
void MarkFootprintPlotted(const FOOTPRINT *aFootprint)
Record that aFootprint was drawn on the page being plotted, so that hyperlinks and bookmarks can cove...
Definition plotter.h:263
virtual void SetPageSettings(const PAGE_INFO &aPageSettings)
Definition plotter.h:171
void SetLayer(PCB_LAYER_ID aLayer)
Sets the ID of the current layer.
Definition plotter.h:257
void SetRenderSettings(RENDER_SETTINGS *aSettings)
Definition plotter.h:168
PAGE_INFO m_pageInfo
Definition plotter.h:756
bool m_plotMirror
Definition plotter.h:736
static const int USE_DEFAULT_LINE_WIDTH
Definition plotter.h:142
virtual void SetTitle(const wxString &aTitle)
Definition plotter.h:191
virtual void FilledCircle(const VECTOR2I &pos, int diametre, void *aData)
Definition plotter.cpp:521
virtual bool EndPlot()=0
virtual void FlashPadOval(const VECTOR2I &aPadPos, const VECTOR2I &aSize, const EDA_ANGLE &aPadOrient, void *aData)=0
void MoveTo(const VECTOR2I &pos)
Definition plotter.h:325
virtual void FlashPadRect(const VECTOR2I &aPadPos, const VECTOR2I &aSize, const EDA_ANGLE &aPadOrient, void *aData)=0
double GetPlotScale() const
Definition plotter.h:640
virtual void ThickOval(const VECTOR2I &aPos, const VECTOR2I &aSize, const EDA_ANGLE &aOrient, int aWidth, void *aData)
Definition plotter.cpp:389
virtual void SetDash(int aLineWidth, LINE_STYLE aLineStyle)=0
void markerSlash(const VECTOR2I &pos, int radius)
Plot a / bar centered on the position.
Definition plotter.cpp:343
void FinishTo(const VECTOR2I &pos)
Definition plotter.h:335
wxString m_author
Definition plotter.h:754
bool m_yaxisReversed
Definition plotter.h:739
virtual bool StartPlot(const wxString &aPageNumber)=0
virtual void polyArc(const VECTOR2D &aCentre, const EDA_ANGLE &aStartAngle, const EDA_ANGLE &aAngle, double aRadius, FILL_T aFill, int aWidth)
Generic fallback: arc rendered as a polyline.
Definition plotter.cpp:181
void SetLayersToExport(const std::vector< std::pair< PCB_LAYER_ID, wxString > > &aLayersToExport)
Sets the list of layers to export to the specified vector.
Definition plotter.h:236
double m_iuPerDeviceUnit
Definition plotter.h:733
PCB_LAYER_ID m_layer
Definition plotter.h:766
RENDER_SETTINGS * RenderSettings()
Definition plotter.h:169
VECTOR2I m_plotOffset
Definition plotter.h:735
VECTOR2I m_penLastpos
Definition plotter.h:749
virtual VECTOR2D userToDeviceCoordinates(const VECTOR2I &aCoordinate)
Modify coordinates according to the orientation, scale factor, and offsets trace.
Definition plotter.cpp:91
void ClearPlottedFootprints()
Definition plotter.h:270
virtual ~PLOTTER()
Definition plotter.cpp:67
double GetIUsPerDecimil() const
The IUs per decimil are an essential scaling factor when plotting; they are set and saved when establ...
Definition plotter.h:288
virtual void SetGerberCoordinatesFormat(int aResolution, bool aUseInches=false)
Definition plotter.h:592
bool GetPlotMirrored() const
Definition plotter.h:175
VECTOR2I m_paperSize
Definition plotter.h:757
virtual void FlashRegularPolygon(const VECTOR2I &aShapePos, int aDiameter, int aCornerCount, const EDA_ANGLE &aOrient, void *aData)=0
Flash a regular polygon.
virtual VECTOR2D userToDeviceSize(const VECTOR2I &size)
Modify size according to the plotter scale factors (VECTOR2I version, returns a VECTOR2D).
Definition plotter.cpp:116
virtual void Bookmark(const BOX2I &aBox, const wxString &aName, const wxString &aGroupName=wxEmptyString)
Create a bookmark to a symbol.
Definition plotter.h:548
virtual PLOT_FORMAT GetPlotterType() const =0
Return the effective plot engine in use.
virtual void ThickArc(const EDA_SHAPE &aArcShape, void *aData, int aWidth)
Definition plotter.cpp:484
virtual void SetTextMode(PLOT_TEXT_MODE mode)
Change the current text mode.
Definition plotter.h:587
virtual void Rect(const VECTOR2I &p1, const VECTOR2I &p2, FILL_T fill, int width, int aCornerRadius=0)=0
int GetPlotterArcHighDef() const
Definition plotter.h:291
char m_penState
Definition plotter.h:748
virtual void BezierCurve(const VECTOR2I &aStart, const VECTOR2I &aControl1, const VECTOR2I &aControl2, const VECTOR2I &aEnd, int aTolerance, int aLineThickness)
Generic fallback: Cubic Bezier curve rendered as a polyline.
Definition plotter.cpp:230
wxString m_creator
Definition plotter.h:751
virtual void SetCreator(const wxString &aCreator)
Definition plotter.h:190
void markerHBar(const VECTOR2I &pos, int radius)
Plot a - bar centered on the position.
Definition plotter.cpp:336
int m_currentPenWidth
Definition plotter.h:747
virtual void HyperlinkBox(const BOX2I &aBox, const wxString &aDestinationURL)
Create a clickable hyperlink with a rectangular click area.
Definition plotter.h:525
double m_plotScale
Plot scale - chosen by the user (even implicitly with 'fit in a4')
Definition plotter.h:725
VECTOR2I GetPlotOffsetUserUnits()
Definition plotter.h:635
void ClearHeaderLinesList()
Remove all lines from the list of free lines to print at the beginning of the file.
Definition plotter.h:208
void markerCircle(const VECTOR2I &pos, int radius)
Plot a circle centered on the position.
Definition plotter.cpp:303
virtual void FlashPadTrapez(const VECTOR2I &aPadPos, const VECTOR2I *aCorners, const EDA_ANGLE &aPadOrient, void *aData)=0
Flash a trapezoidal pad.
bool GetColorMode() const
Definition plotter.h:166
PLOTTER(const PROJECT *aProject=nullptr)
Definition plotter.cpp:46
PAGE_INFO & PageSettings()
Definition plotter.h:172
virtual void SetViewport(const VECTOR2I &aOffset, double aIusPerDecimil, double aScale, bool aMirror)=0
Set the plot offset and scaling for the current plot.
void AddLineToHeader(const wxString &aExtraString)
Add a line to the list of free lines to print at the beginning of the file.
Definition plotter.h:200
FILE * m_outputFile
Output file.
Definition plotter.h:742
virtual void SetColorMode(bool aColorMode)
Plot in B/W or color.
Definition plotter.h:165
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.
std::set< const FOOTPRINT * > m_plottedFootprints
Definition plotter.h:768
void LineTo(const VECTOR2I &pos)
Definition plotter.h:330
virtual void StartBlock(void *aData)
calling this function allows one to define the beginning of a group of drawing items,...
Definition plotter.h:621
virtual void PenTo(const VECTOR2I &pos, char plume)=0
Moveto/lineto primitive, moves the 'pen' to the specified direction.
virtual void FlashPadCustom(const VECTOR2I &aPadPos, const VECTOR2I &aSize, const EDA_ANGLE &aPadOrient, SHAPE_POLY_SET *aPolygons, void *aData)=0
void PenFinish()
Definition plotter.h:341
static const int DO_NOT_SET_LINE_WIDTH
Definition plotter.h:141
virtual void ThickSegment(const VECTOR2I &start, const VECTOR2I &end, int width, void *aData)
Definition plotter.cpp:442
virtual void PlotText(const VECTOR2I &aPos, const COLOR4D &aColor, const wxString &aText, const TEXT_ATTRIBUTES &aAttributes, KIFONT::FONT *aFont=nullptr, const KIFONT::METRICS &aFontMetrics=KIFONT::METRICS::Default(), void *aData=nullptr)
Definition plotter.cpp:618
void markerLozenge(const VECTOR2I &position, int radius)
Plot a lozenge centered on the position.
Definition plotter.cpp:309
virtual void PlotPoly(const std::vector< VECTOR2I > &aCornerList, FILL_T aFill, int aWidth, void *aData)=0
Draw a polygon ( filled or not ).
virtual void ThickRect(const VECTOR2I &p1, const VECTOR2I &p2, int width, void *aData)
Definition plotter.cpp:509
virtual void FlashPadCircle(const VECTOR2I &aPadPos, int aDiameter, void *aData)=0
RENDER_SETTINGS * m_renderSettings
Definition plotter.h:761
virtual void Text(const VECTOR2I &aPos, const COLOR4D &aColor, const wxString &aText, const EDA_ANGLE &aOrient, const VECTOR2I &aSize, enum GR_TEXT_H_ALIGN_T aH_justify, enum GR_TEXT_V_ALIGN_T aV_justify, int aPenWidth, bool aItalic, bool aBold, bool aMultilineAllowed, KIFONT::FONT *aFont, const KIFONT::METRICS &aFontMetrics, void *aData=nullptr)
Draw text with the plotter.
Definition plotter.cpp:548
void markerBackSlash(const VECTOR2I &pos, int radius)
Plot a \ bar centered on the position.
Definition plotter.cpp:350
virtual void SetPlotBBox(const BOX2I &aBBoxIU)
Set an explicit bounding box for the plotted content (in IUs).
Definition plotter.h:609
virtual void SetSubject(const wxString &aSubject)
Definition plotter.h:193
int GetPlotterArcLowDef() const
Definition plotter.h:290
bool m_negativeMode
Definition plotter.h:746
void SetPlotMirrored(bool aMirror)
Definition plotter.h:174
virtual void HyperlinkMenu(const BOX2I &aBox, const std::vector< wxString > &aDestURLs)
Create a clickable hyperlink menu with a rectangular click area.
Definition plotter.h:536
virtual void SetLayerPolarity(bool aPositive)
Set the current Gerber layer polarity to positive or negative by writing %LPD*% or %LPC*% to the Gerb...
Definition plotter.h:577
double m_IUsPerDecimil
Definition plotter.h:731
bool WasFootprintPlotted(const FOOTPRINT *aFootprint) const
Definition plotter.h:265
void markerVBar(const VECTOR2I &pos, int radius)
Plot a | bar centered on the position.
Definition plotter.cpp:357
wxString m_title
Definition plotter.h:753
void markerSquare(const VECTOR2I &position, int radius)
Plot a square centered on the position.
Definition plotter.cpp:275
virtual void ThickCircle(const VECTOR2I &pos, int diametre, int width, void *aData)
Definition plotter.cpp:515
virtual int GetCurrentLineWidth() const
Definition plotter.h:184
bool m_colorMode
Definition plotter.h:745
double GetDashMarkLenIU(int aLineWidth) const
Definition plotter.cpp:138
virtual void SetColor(const COLOR4D &color)=0
wxString m_filename
Definition plotter.h:752
virtual void Arc(const VECTOR2D &aStart, const VECTOR2D &aMid, const VECTOR2D &aEnd, FILL_T aFill, int aWidth)
Definition plotter.cpp:150
virtual void EndBlock(void *aData)
calling this function allows one to define the end of a group of drawing items for instance in SVG or...
Definition plotter.h:630
virtual DXF_OUTLINE_MODE GetDXFPlotMode() const
Definition plotter.h:111
virtual PLOT_TEXT_MODE GetTextMode() const
Definition plotter.h:112
Container for project specific data.
Definition project.h:63
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
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:38
FILL_T
Definition eda_fill.h:29
static const bool FILLED
Definition gr_basic.cpp:30
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:56
DXF_UNITS
Definition plotter.h:53
PLOT_TEXT_MODE
Which kind of text to output with the PSLIKE plotters.
Definition plotter.h:101
wxString GetDefaultPlotExtension(PLOT_FORMAT aFormat)
Return the default plot extension for a format.
DXF_LAYER_OUTPUT_MODE
Specifies the output mode for the DXF layer.
Definition plotter.h:124
DXF_OUTLINE_MODE
Options to draw items with thickness ( segments, arcs, circles, texts...)
Definition plotter.h:82
@ SKETCH
Definition plotter.h:83
@ FILLED
Definition plotter.h:84
PLOT_FORMAT
The set of supported output plot formats.
Definition plotter.h:65
@ LAST_FORMAT
Definition plotter.h:75
@ FIRST_FORMAT
Definition plotter.h:67
void PlotDrawingSheet(PLOTTER *plotter, const PROJECT *aProject, const TITLE_BLOCK &aTitleBlock, const PAGE_INFO &aPageInfo, const std::map< wxString, wxString > *aProperties, const wxString &aSheetNumber, int aSheetCount, const wxString &aSheetName, const wxString &aSheetPath, const wxString &aFilename, COLOR4D aColor=COLOR4D::UNSPECIFIED, bool aIsFirstPage=true, const wxString &aVariantName=wxEmptyString, const wxString &aVariantDesc=wxEmptyString)
@ INCH
Definition rs274x.cpp:61
LINE_STYLE
Dashed line types.
static const long long MM
int radius
VECTOR2I end
GR_TEXT_H_ALIGN_T
This is API surface mapped to common.types.HorizontalAlignment.
GR_TEXT_V_ALIGN_T
This is API surface mapped to common.types.VertialAlignment.
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:708
VECTOR2< double > VECTOR2D
Definition vector2d.h:707