KiCad PCB EDA Suite
Loading...
Searching...
No Matches
KIGFX::PCB_PAINTER Class Reference

Contains methods for drawing PCB-specific items. More...

#include <pcb_painter.h>

Inheritance diagram for KIGFX::PCB_PAINTER:
KIGFX::PAINTER KIGFX::PCB_PRINT_PAINTER ZONE_PAINTER

Public Member Functions

 PCB_PAINTER (GAL *aGal, FRAME_T aFrameType)
 
virtual PCB_RENDER_SETTINGSGetSettings () override
 Return a pointer to current settings that are going to be used when drawing items. More...
 
virtual bool Draw (const VIEW_ITEM *aItem, int aLayer) override
 Takes an instance of VIEW_ITEM and passes it to a function that knows how to draw the item. More...
 
void SetGAL (GAL *aGal)
 Changes Graphics Abstraction Layer used for drawing items for a new one. More...
 

Protected Member Functions

PCB_VIEWERS_SETTINGS_BASEviewer_settings ()
 
void draw (const PCB_TRACK *aTrack, int aLayer)
 
void draw (const PCB_ARC *aArc, int aLayer)
 
void draw (const PCB_VIA *aVia, int aLayer)
 
void draw (const PAD *aPad, int aLayer)
 
void draw (const PCB_SHAPE *aSegment, int aLayer)
 
void draw (const PCB_REFERENCE_IMAGE *aBitmap, int aLayer)
 
void draw (const PCB_TEXT *aText, int aLayer)
 
void draw (const PCB_TEXTBOX *aText, int aLayer)
 
void draw (const PCB_TABLE *aTable, int aLayer)
 
void draw (const FOOTPRINT *aFootprint, int aLayer)
 
void draw (const PCB_GROUP *aGroup, int aLayer)
 
void draw (const ZONE *aZone, int aLayer)
 
void draw (const PCB_DIMENSION_BASE *aDimension, int aLayer)
 
void draw (const PCB_TARGET *aTarget)
 
void draw (const PCB_MARKER *aMarker, int aLayer)
 
int getLineThickness (int aActualThickness) const
 Get the thickness to draw for a line (e.g. More...
 
virtual int getDrillShape (const PAD *aPad) const
 Return drill shape of a pad. More...
 
virtual SHAPE_SEGMENT getPadHoleShape (const PAD *aPad) const
 Return hole shape for a pad (internal units). More...
 
virtual int getViaDrillSize (const PCB_VIA *aVia) const
 Return drill diameter for a via (internal units). More...
 
void strokeText (const wxString &aText, const VECTOR2I &aPosition, const TEXT_ATTRIBUTES &aAttrs, const KIFONT::METRICS &aFontMetrics)
 
void renderNetNameForSegment (const SHAPE_SEGMENT &aSeg, const COLOR4D &aColor, const wxString &aNetName) const
 

Protected Attributes

PCB_RENDER_SETTINGS m_pcbSettings
 
FRAME_T m_frameType
 
int m_maxError
 
int m_holePlatingThickness
 
int m_lockedShadowMargin
 
GALm_gal
 Instance of graphic abstraction layer that gives an interface to call commands used to draw (eg. More...
 

Detailed Description

Contains methods for drawing PCB-specific items.

Definition at line 163 of file pcb_painter.h.

Constructor & Destructor Documentation

◆ PCB_PAINTER()

PCB_PAINTER::PCB_PAINTER ( GAL aGal,
FRAME_T  aFrameType 
)

Definition at line 495 of file pcb_painter.cpp.

Member Function Documentation

◆ draw() [1/15]

◆ draw() [2/15]

void PCB_PAINTER::draw ( const PAD aPad,
int  aLayer 
)
protected

Definition at line 1135 of file pcb_painter.cpp.

References SEG::A, ANGLE_90, ANGLE_HORIZONTAL, SHAPE_POLY_SET::Append(), EDA_ANGLE::AsRadians(), SEG::B, B_Mask, B_Paste, KIGFX::GAL::BitmapText(), BOX2< Vec >::Centre(), color, SHAPE_SIMPLE::CPoint(), SHAPE_POLY_SET::Deflate(), KIGFX::GAL::DrawCircle(), KIGFX::GAL::DrawPolygon(), KIGFX::GAL::DrawRectangle(), KIGFX::GAL::DrawSegment(), BOARD_ITEM::Duplicate(), ERROR_INSIDE, F_Mask, F_Paste, PAD::FlashLayer(), KIGFX::RENDER_SETTINGS::GetActiveLayer(), PAD::GetAttribute(), BOARD_ITEM::GetBoard(), EDA_SHAPE::GetBotRight(), PAD::GetBoundingBox(), SHAPE_CIRCLE::GetCenter(), PCB_SHAPE::GetCenter(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), PAD::GetDrillSize(), PAD::GetEffectiveHoleShape(), PAD::GetEffectiveShape(), BOARD::GetEnabledLayers(), SHAPE_RECT::GetHeight(), KIGFX::RENDER_SETTINGS::GetLayerColor(), PAD::GetNumber(), PAD::GetOrientation(), PAD::GetOwnClearance(), getPadHoleShape(), BOARD_ITEM::GetParentFootprint(), PAD::GetPinFunction(), SHAPE_RECT::GetPosition(), PAD::GetPrimitives(), KIGFX::RENDER_SETTINGS::GetPrintLayers(), SHAPE_CIRCLE::GetRadius(), SHAPE_SEGMENT::GetSeg(), SHAPE_SIMPLE::GetSegment(), SHAPE_SIMPLE::GetSegmentCount(), EDA_SHAPE::GetShape(), PAD::GetShape(), SHAPE_RECT::GetSize(), BOX2< Vec >::GetSize(), PAD::GetSize(), PAD::GetSolderMaskExpansion(), PAD::GetSolderPasteMargin(), EDA_SHAPE::GetTopLeft(), BOARD_CONNECTED_ITEM::GetUnescapedShortNetname(), BOARD::GetVisibleLayers(), SHAPE_RECT::GetWidth(), SHAPE_SEGMENT::GetWidth(), GR_TEXT_H_ALIGN_CENTER, GR_TEXT_V_ALIGN_CENTER, FOOTPRINT::GraphicalItems(), IsCopperLayer(), EDA_ITEM::IsEntered(), PAD::IsFreePad(), IsNetnameLayer(), PAD::IsNoConnectPad(), KIGFX::RENDER_SETTINGS::IsPrinting(), PCB_SHAPE::IsProxyItem(), EDA_ITEM::IsSelected(), KiROUND(), LAYER_NON_PLATEDHOLES, LAYER_PAD_HOLEWALLS, LAYER_PAD_PLATEDHOLES, LAYER_PADS_SMD_BK, LAYER_PADS_SMD_FR, LAYER_PADS_TH, PCBNEW_SETTINGS::m_Display, PCB_VIEWERS_SETTINGS_BASE::VIEWERS_DISPLAY_OPTIONS::m_DisplayPadFill, KIGFX::PCB_RENDER_SETTINGS::m_ForcePadSketchModeOn, KIGFX::PAINTER::m_gal, m_holePlatingThickness, KIGFX::RENDER_SETTINGS::m_isPrinting, m_maxError, PCBNEW_SETTINGS::DISPLAY_OPTIONS::m_NetNames, KIGFX::RENDER_SETTINGS::m_outlineWidth, PCBNEW_SETTINGS::DISPLAY_OPTIONS::m_PadClearance, m_pcbSettings, PCB_VIEWERS_SETTINGS_BASE::m_ViewersDisplay, KIGFX::PCB_RENDER_SETTINGS::MAX_FONT_SIZE, SHAPE_POLY_SET::NewOutline(), SHAPE_POLY_SET::Outline(), PCB_SHAPE_T, pcbconfig(), SHAPE_LINE_CHAIN::PointCount(), SHAPE_SIMPLE::PointCount(), PrintableCharCount(), KIGFX::GAL::ResetTextAttributes(), KIGFX::GAL::Restore(), KIGFX::GAL::Rotate(), RotatePoint(), KIGFX::GAL::Save(), KIGFX::GAL::SetFillColor(), KIGFX::GAL::SetFontBold(), KIGFX::GAL::SetFontItalic(), KIGFX::GAL::SetFontUnderlined(), KIGFX::GAL::SetGlyphSize(), KIGFX::GAL::SetHorizontalJustify(), KIGFX::GAL::SetIsFill(), KIGFX::GAL::SetIsStroke(), KIGFX::GAL::SetLineWidth(), KIGFX::GAL::SetStrokeColor(), KIGFX::GAL::SetTextMirrored(), KIGFX::GAL::SetVerticalJustify(), SH_CIRCLE, SH_RECT, SH_SEGMENT, SH_SIMPLE, PAD::ShapePos(), ToLAYER_ID(), PAD::TransformShapeToPolygon(), KIGFX::GAL::Translate(), UnescapeString(), SHAPE_SIMPLE::Vertices(), viewer_settings(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ draw() [3/15]

◆ draw() [4/15]

◆ draw() [5/15]

◆ draw() [6/15]

◆ draw() [7/15]

◆ draw() [8/15]

void PCB_PAINTER::draw ( const PCB_SHAPE aSegment,
int  aLayer 
)
protected

Definition at line 1696 of file pcb_painter.cpp.

References SHAPE_POLY_SET::Append(), SHAPE_POLY_SET::CacheTriangulation(), EDA_SHAPE::CalcArcAngles(), color, KIGFX::GAL::DrawArcSegment(), KIGFX::GAL::DrawCircle(), KIGFX::GAL::DrawCurve(), KIGFX::GAL::DrawLine(), KIGFX::GAL::DrawPolygon(), KIGFX::GAL::DrawSegment(), KIGFX::GAL::DrawSegmentChain(), EDA_SHAPE::GetBezierC1(), EDA_SHAPE::GetBezierC2(), PCB_SHAPE::GetCenter(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), EDA_SHAPE::GetEnd(), STROKE_PARAMS::GetLineStyle(), getLineThickness(), BOARD_CONNECTED_ITEM::GetNetCode(), BEZIER_POLY::GetPoly(), EDA_SHAPE::GetRadius(), EDA_SHAPE::GetRectCorners(), EDA_SHAPE::GetShape(), EDA_SHAPE::GetStart(), PCB_SHAPE::GetStroke(), BOARD_CONNECTED_ITEM::GetUnescapedShortNetname(), PCB_SHAPE::GetWidth(), EDA_SHAPE::IsFilled(), IsNetnameLayer(), KIGFX::GAL::IsOpenGlEngine(), PCB_SHAPE::IsProxyItem(), SHAPE_POLY_SET::IsTriangulationUpToDate(), LAYER_LOCKED_ITEM_SHADOW, PCB_VIEWERS_SETTINGS_BASE::VIEWERS_DISPLAY_OPTIONS::m_DisplayGraphicsFill, m_frameType, KIGFX::PAINTER::m_gal, m_lockedShadowMargin, m_maxError, KIGFX::RENDER_SETTINGS::m_outlineWidth, m_pcbSettings, PCB_VIEWERS_SETTINGS_BASE::m_ViewersDisplay, EDA_SHAPE::MakeEffectiveShapes(), SHAPE_POLY_SET::NewOutline(), SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), pcbconfig(), renderNetNameForSegment(), VECTOR2< T >::Resize(), KIGFX::GAL::SetFillColor(), KIGFX::GAL::SetIsFill(), KIGFX::GAL::SetIsStroke(), KIGFX::GAL::SetLineWidth(), KIGFX::GAL::SetStrokeColor(), STROKE_PARAMS::Stroke(), NETINFO_LIST::UNCONNECTED, and viewer_settings().

◆ draw() [9/15]

◆ draw() [10/15]

◆ draw() [11/15]

void PCB_PAINTER::draw ( const PCB_TEXT aText,
int  aLayer 
)
protected

Definition at line 2051 of file pcb_painter.cpp.

References color, KIGFX::GAL::DrawGlyphs(), KIGFX::GAL::DrawLine(), KIGFX::GAL::DrawPolygon(), ERROR_INSIDE, ERROR_OUTSIDE, SHAPE_POLY_SET::Fracture(), EDA_TEXT::GetAttributes(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), KIGFX::RENDER_SETTINGS::GetDefaultFont(), PCB_TEXT::GetDrawRotation(), EDA_TEXT::GetEffectiveTextPenWidth(), EDA_TEXT::GetFont(), KIFONT::FONT::GetFont(), BOARD_ITEM::GetFontMetrics(), BOARD_ITEM::GetLayer(), BOARD_ITEM::GetLayerSet(), getLineThickness(), BOARD_ITEM::GetParentFootprint(), FOOTPRINT::GetPosition(), EDA_TEXT::GetRenderCache(), PCB_TEXT::GetShownText(), EDA_TEXT::GetTextPos(), EDA_TEXT::IsBold(), KIGFX::GAL::IsFlippedX(), EDA_TEXT::IsItalic(), BOARD_ITEM::IsKnockout(), KIFONT::FONT::IsOutline(), EDA_ITEM::IsSelected(), LAYER_ANCHOR, LAYER_HIDDEN_TEXT, LAYER_LOCKED_ITEM_SHADOW, TEXT_ATTRIBUTES::m_Angle, PCB_VIEWERS_SETTINGS_BASE::VIEWERS_DISPLAY_OPTIONS::m_DisplayTextFill, KIGFX::PAINTER::m_gal, TEXT_ATTRIBUTES::m_Halign, m_lockedShadowMargin, m_maxError, TEXT_ATTRIBUTES::m_Mirrored, KIGFX::RENDER_SETTINGS::m_outlineWidth, m_pcbSettings, TEXT_ATTRIBUTES::m_StrokeWidth, PCB_VIEWERS_SETTINGS_BASE::m_ViewersDisplay, TEXT_ATTRIBUTES::m_Visible, SHAPE_POLY_SET::PM_FAST, KIGFX::GAL::SetFillColor(), KIGFX::GAL::SetIsFill(), KIGFX::GAL::SetIsStroke(), KIGFX::GAL::SetLineWidth(), KIGFX::GAL::SetStrokeColor(), LSET::SideSpecificMask(), strokeText(), PCB_TEXT::TransformShapeToPolygon(), PCB_TEXT::TransformTextToPolySet(), and viewer_settings().

◆ draw() [12/15]

◆ draw() [13/15]

◆ draw() [14/15]

void PCB_PAINTER::draw ( const PCB_VIA aVia,
int  aLayer 
)
protected

Definition at line 907 of file pcb_painter.cpp.

References ANGLE_HORIZONTAL, B_Mask, KIGFX::GAL::BitmapText(), PCB_VIA::BottomLayer(), KIGFX::COLOR4D::CLEAR, color, DEGREES_T, draw(), KIGFX::GAL::DrawArc(), KIGFX::GAL::DrawCircle(), F_Mask, PCB_VIA::FlashLayer(), KIGFX::RENDER_SETTINGS::GetActiveLayer(), BOARD_ITEM::GetBoard(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), BOARD::GetCopperLayerCount(), BOARD::GetDesignSettings(), BOARD::GetEnabledLayers(), BOARD_CONNECTED_ITEM::GetNetname(), BOARD_CONNECTED_ITEM::GetOwnClearance(), KIGFX::RENDER_SETTINGS::GetPrintLayers(), PCB_TRACK::GetStart(), BOARD_CONNECTED_ITEM::GetUnescapedShortNetname(), getViaDrillSize(), PCB_VIA::GetViaType(), BOARD::GetVisibleLayers(), PCB_TRACK::GetWidth(), GR_TEXT_H_ALIGN_CENTER, GR_TEXT_V_ALIGN_CENTER, IsNetnameLayer(), PCB_VIA::IsOnLayer(), KIGFX::RENDER_SETTINGS::IsPrinting(), EDA_ITEM::IsSelected(), LAYER_LOCKED_ITEM_SHADOW, LAYER_VIA_BBLIND, LAYER_VIA_HOLES, LAYER_VIA_HOLEWALLS, LAYER_VIA_MICROVIA, LAYER_VIA_THROUGH, PCB_VIA::LayerPair(), PCBNEW_SETTINGS::m_Display, PCBNEW_SETTINGS::DISPLAY_OPTIONS::m_DisplayViaFill, KIGFX::PAINTER::m_gal, m_holePlatingThickness, KIGFX::RENDER_SETTINGS::m_isPrinting, m_lockedShadowMargin, PCBNEW_SETTINGS::DISPLAY_OPTIONS::m_NetNames, KIGFX::RENDER_SETTINGS::m_outlineWidth, m_pcbSettings, BOARD_DESIGN_SETTINGS::m_SolderMaskExpansion, PCBNEW_SETTINGS::DISPLAY_OPTIONS::m_TrackClearance, KIGFX::PCB_RENDER_SETTINGS::MAX_FONT_SIZE, pcbconfig(), PrintableCharCount(), KIGFX::GAL::ResetTextAttributes(), KIGFX::GAL::Restore(), KIGFX::GAL::Save(), KIGFX::GAL::SetFillColor(), KIGFX::GAL::SetFontBold(), KIGFX::GAL::SetFontItalic(), KIGFX::GAL::SetFontUnderlined(), KIGFX::GAL::SetGlyphSize(), KIGFX::GAL::SetHorizontalJustify(), KIGFX::GAL::SetIsFill(), KIGFX::GAL::SetIsStroke(), KIGFX::GAL::SetLineWidth(), KIGFX::GAL::SetStrokeColor(), KIGFX::GAL::SetTextMirrored(), KIGFX::GAL::SetVerticalJustify(), SHOW_WITH_VIA_ALWAYS, PCB_VIA::TopLayer(), KIGFX::GAL::Translate(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ Draw()

bool PCB_PAINTER::Draw ( const VIEW_ITEM aItem,
int  aLayer 
)
overridevirtual

Takes an instance of VIEW_ITEM and passes it to a function that knows how to draw the item.

Parameters
aItemis an item to be drawn.
aLayertells which layer is currently rendered so that draw functions may know what to draw (eg. for pads there are separate layers for holes, because they have other dimensions then the pad itself.

Implements KIGFX::PAINTER.

Reimplemented in ZONE_PAINTER.

Definition at line 536 of file pcb_painter.cpp.

References ARC_HIGH_DEF, SHAPE_POLY_SET::COutline(), CYAN, draw(), KIGFX::GAL::DrawPolyline(), KIGFX::GAL::DrawRectangle(), F_SilkS, BOARD_ITEM::GetBoard(), EDA_ITEM::GetBoundingBox(), FOOTPRINT::GetBoundingHull(), KIGFX::RENDER_SETTINGS::GetDrawBoundingBoxes(), BOX2< Vec >::GetEnd(), BOARD_DESIGN_SETTINGS::GetHolePlatingThickness(), BOARD_ITEM::GetLayerSet(), BOARD_DESIGN_SETTINGS::GetLineThickness(), BOX2< Vec >::GetOrigin(), BOARD_ITEM::GetParentFootprint(), FOOTPRINT::GetPrivateLayers(), IsPcbLayer(), EDA_ITEM::IsSelected(), KIGFX::PAINTER::m_gal, m_holePlatingThickness, m_lockedShadowMargin, BOARD_DESIGN_SETTINGS::m_MaxError, m_maxError, m_pcbSettings, MAGENTA, PCB_ARC_T, PCB_DIM_ALIGNED_T, PCB_DIM_CENTER_T, PCB_DIM_LEADER_T, PCB_DIM_ORTHOGONAL_T, PCB_DIM_RADIAL_T, PCB_FIELD_T, PCB_FOOTPRINT_T, PCB_GROUP_T, PCB_MARKER_T, PCB_PAD_T, PCB_REFERENCE_IMAGE_T, PCB_SHAPE_T, PCB_TABLE_T, PCB_TARGET_T, PCB_TEXT_T, PCB_TEXTBOX_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_T, LSET::Seq(), KIGFX::GAL::SetIsFill(), KIGFX::GAL::SetIsStroke(), KIGFX::GAL::SetLineWidth(), KIGFX::GAL::SetStrokeColor(), and EDA_ITEM::Type().

Referenced by ZONE_PAINTER::Draw().

◆ draw() [15/15]

◆ getDrillShape()

int PCB_PAINTER::getDrillShape ( const PAD aPad) const
protectedvirtual

Return drill shape of a pad.

Reimplemented in KIGFX::PCB_PRINT_PAINTER.

Definition at line 517 of file pcb_painter.cpp.

References PAD::GetDrillShape().

Referenced by KIGFX::PCB_PRINT_PAINTER::getDrillShape().

◆ getLineThickness()

int PCB_PAINTER::getLineThickness ( int  aActualThickness) const
protected

Get the thickness to draw for a line (e.g.

0 thickness lines get a minimum value).

Parameters
aActualThicknessline own thickness
Returns
the thickness to draw

Definition at line 505 of file pcb_painter.cpp.

References KIGFX::RENDER_SETTINGS::m_outlineWidth, and m_pcbSettings.

Referenced by draw().

◆ getPadHoleShape()

SHAPE_SEGMENT PCB_PAINTER::getPadHoleShape ( const PAD aPad) const
protectedvirtual

Return hole shape for a pad (internal units).

Reimplemented in KIGFX::PCB_PRINT_PAINTER.

Definition at line 523 of file pcb_painter.cpp.

References PAD::GetEffectiveHoleShape().

Referenced by draw(), and KIGFX::PCB_PRINT_PAINTER::getPadHoleShape().

◆ GetSettings()

◆ getViaDrillSize()

int PCB_PAINTER::getViaDrillSize ( const PCB_VIA aVia) const
protectedvirtual

Return drill diameter for a via (internal units).

Reimplemented in KIGFX::PCB_PRINT_PAINTER.

Definition at line 530 of file pcb_painter.cpp.

References PCB_VIA::GetDrillValue().

Referenced by draw(), and KIGFX::PCB_PRINT_PAINTER::getViaDrillSize().

◆ renderNetNameForSegment()

◆ SetGAL()

void KIGFX::PAINTER::SetGAL ( GAL aGal)
inlineinherited

Changes Graphics Abstraction Layer used for drawing items for a new one.

Parameters
aGalis the new GAL instance.

Definition at line 76 of file painter.h.

◆ strokeText()

◆ viewer_settings()

Member Data Documentation

◆ m_frameType

FRAME_T KIGFX::PCB_PAINTER::m_frameType
protected

Definition at line 227 of file pcb_painter.h.

Referenced by draw(), and viewer_settings().

◆ m_gal

GAL* KIGFX::PAINTER::m_gal
protectedinherited

◆ m_holePlatingThickness

int KIGFX::PCB_PAINTER::m_holePlatingThickness
protected

Definition at line 230 of file pcb_painter.h.

Referenced by draw(), and Draw().

◆ m_lockedShadowMargin

int KIGFX::PCB_PAINTER::m_lockedShadowMargin
protected

Definition at line 231 of file pcb_painter.h.

Referenced by draw(), and Draw().

◆ m_maxError

int KIGFX::PCB_PAINTER::m_maxError
protected

Definition at line 229 of file pcb_painter.h.

Referenced by draw(), and Draw().

◆ m_pcbSettings

PCB_RENDER_SETTINGS KIGFX::PCB_PAINTER::m_pcbSettings
protected

Definition at line 226 of file pcb_painter.h.

Referenced by draw(), Draw(), getLineThickness(), and GetSettings().


The documentation for this class was generated from the following files: