34 m_strokeExternal( true ),
35 m_strokeHeader( true ),
38 m_strokeColumns( true ),
75 wxT(
"Cannot swap data with invalid table." ) );
96 cell->SetParent(
this );
111 return m_cells[0]->GetPosition();
157 for(
int ii = col + 1; ii < col + cell->
GetColSpan(); ++ii )
160 for(
int ii = row + 1; ii < row + cell->GetRowSpan(); ++ii )
164 if( cell->
GetEnd() != end )
181 cell->Move( aMoveVector );
188 cell->Rotate( aRotCentre, aAngle );
197 cell->Flip( aCentre, aFlipLeftRight );
199 std::vector<PCB_TABLECELL*> oldCells =
m_cells;
237 std::shared_ptr<SHAPE_COMPOUND> shape = std::make_shared<SHAPE_COMPOUND>();
239 std::vector<VECTOR2I> pts;
241 pts.emplace_back( origin );
242 pts.emplace_back( end.
x, origin.
y );
243 pts.emplace_back( end );
244 pts.emplace_back( origin.
x, end.
y );
297 int aClearance,
int aMaxError,
ERROR_LOC aErrorLoc,
298 bool aIgnoreLineWidth )
const
300 int gap = aClearance;
309 cell->TransformShapeToPolygon( aBuffer, aLayer, gap, aMaxError, aErrorLoc,
false );
314 const std::vector<KICAD_T>& aScanTypes )
316 for(
KICAD_T scanType : aScanTypes )
320 if( INSPECT_RESULT::QUIT == aInspector(
this, aTestData ) )
321 return INSPECT_RESULT::QUIT;
328 if( INSPECT_RESULT::QUIT == aInspector( cell, (
void*)
this ) )
329 return INSPECT_RESULT::QUIT;
334 return INSPECT_RESULT::CONTINUE;
340 return wxString::Format(
_(
"%d Column Table" ),
m_colCount );
346 return BITMAPS::spreadsheet;
376 aList.emplace_back(
_(
"Table" ), wxString::Format(
_(
"%d Columns" ),
m_colCount ) );
384 if( ( diff = (
int) aTable->
GetCells().size() - (
int) aOther->
GetCells().size() ) != 0 )
390 for(
int col = 0; col < aTable->
GetColCount(); ++col )
396 for(
int row = 0; row < aTable->
GetRowCount(); ++row )
402 for(
int row = 0; row < aTable->
GetRowCount(); ++row )
404 for(
int col = 0; col < aTable->
GetColCount(); ++col )
409 if( ( diff = cell->PCB_SHAPE::Compare( other ) ) != 0 )
412 if( ( diff = cell->EDA_TEXT::Compare( other ) ) != 0 )
437 for(
int ii = 0; ii < (int)
m_cells.size(); ++ii )
457 double similarity = 1.0;
459 for(
int ii = 0; ii < (int)
m_cells.size(); ++ii )
472 if( plotDashTypeEnum.
Choices().GetCount() == 0 )
474 plotDashTypeEnum.
Map( LINE_STYLE::DEFAULT,
_HKI(
"Default" ) )
475 .
Map( LINE_STYLE::SOLID,
_HKI(
"Solid" ) )
476 .
Map( LINE_STYLE::DASH,
_HKI(
"Dashed" ) )
477 .
Map( LINE_STYLE::DOT,
_HKI(
"Dotted" ) )
478 .
Map( LINE_STYLE::DASHDOT,
_HKI(
"Dash-Dot" ) )
479 .
Map( LINE_STYLE::DASHDOTDOT,
_HKI(
"Dash-Dot-Dot" ) );
497 const wxString tableProps =
_(
"Table Properties" );
509 PROPERTY_DISPLAY::PT_SIZE ),
530 PROPERTY_DISPLAY::PT_SIZE ),
BITMAPS
A list of all bitmap identifiers.
Abstract interface for BOARD_ITEMs capable of storing other items inside.
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
virtual void SetLayer(PCB_LAYER_ID aLayer)
Set the layer this item is on.
virtual const BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
bool Intersects(const BOX2< Vec > &aRect) const
bool Contains(const Vec &aPoint) const
BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Inflates the rectangle horizontally by dx and vertically by dy.
BOX2< Vec > & Merge(const BOX2< Vec > &aRect)
Modify the position and size of the rectangle in order to contain aRect.
The base class for create windows for drawing purpose.
KICAD_T Type() const
Returns the type of object.
virtual void SetParent(EDA_ITEM *aParent)
const VECTOR2I & GetEnd() const
Return the ending point of the graphic.
const VECTOR2I & GetStart() const
Return the starting point of the graphic.
void SetEnd(const VECTOR2I &aEnd)
virtual void ClearRenderCache()
ENUM_MAP & Map(T aValue, const wxString &aName)
static ENUM_MAP< T > & Instance()
A color representation with 4 components: red, green, blue, alpha.
void SetPosition(const VECTOR2I &aPos) override
VECTOR2I GetPosition() const override
STROKE_PARAMS m_separatorsStroke
bool operator==(const BOARD_ITEM &aOther) const override
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
std::vector< PCB_TABLECELL * > m_cells
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
void Move(const VECTOR2I &aMoveVector) override
Move this object.
bool StrokeColumns() const
void SetBorderStyle(const LINE_STYLE aStyle)
void SetStrokeHeader(bool aDoStroke)
void SetSeparatorsColor(const COLOR4D &aColor)
STROKE_PARAMS m_borderStroke
std::shared_ptr< SHAPE > GetEffectiveShape(PCB_LAYER_ID aLayer=UNDEFINED_LAYER, FLASHING aFlash=FLASHING::DEFAULT) const override
Some pad shapes can be complex (rounded/chamfered rectangle), even without considering custom shapes.
bool StrokeExternal() const
int GetSeparatorsWidth() const
void SetStrokeExternal(bool aDoStroke)
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider) const override
Return a user-visible description string of this item.
bool StrokeHeader() const
PCB_TABLECELL * GetCell(int aRow, int aCol) const
std::vector< PCB_TABLECELL * > GetCells() const
int GetBorderWidth() const
COLOR4D GetBorderColor() const
INSPECT_RESULT Visit(INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &aScanTypes) override
May be re-implemented for each derived class in order to handle all the types given by its member dat...
void SetStrokeColumns(bool aDoStroke)
const STROKE_PARAMS & GetSeparatorsStroke() const
std::map< int, int > m_colWidths
virtual void swapData(BOARD_ITEM *aImage) override
void Normalize() override
Perform any normalization required after a user rotate and/or flip.
void AddCell(PCB_TABLECELL *aCell)
const STROKE_PARAMS & GetBorderStroke() const
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
void SetStrokeRows(bool aDoStroke)
double Similarity(const BOARD_ITEM &aOther) const override
Return a measure of how likely the other object is to represent the same object.
void TransformShapeToPolygon(SHAPE_POLY_SET &aBuffer, PCB_LAYER_ID aLayer, int aClearance, int aMaxError, ERROR_LOC aErrorLoc, bool aIgnoreLineWidth=false) const override
Convert the item shape to a closed polygon.
LINE_STYLE GetBorderStyle() const
static int Compare(const PCB_TABLE *aTable, const PCB_TABLE *aOther)
int GetColWidth(int aCol) const
VECTOR2I GetPosition() const override
void SetSeparatorsWidth(int aWidth)
COLOR4D GetSeparatorsColor() const
void Flip(const VECTOR2I &aCentre, bool aFlipLeftRight) override
Flip this object, i.e.
void RunOnChildren(const std::function< void(BOARD_ITEM *)> &aFunction) const override
Invoke a function on all children.
void Rotate(const VECTOR2I &aRotCentre, const EDA_ANGLE &aAngle) override
Rotate this object.
LINE_STYLE GetSeparatorsStyle() const
void SetBorderColor(const COLOR4D &aColor)
PCB_TABLE(BOARD_ITEM *aParent, int aLineWidth)
void SetSeparatorsStyle(const LINE_STYLE aStyle)
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.
void SetPosition(const VECTOR2I &aPos) override
void SetBorderWidth(int aWidth)
int GetRowHeight(int aRow) const
std::map< int, int > m_rowHeights
Provide class metadata.Helper macro to map type hashes to names.
void InheritsAfter(TYPE_ID aDerived, TYPE_ID aBase)
Declare an inheritance relationship between types.
static PROPERTY_MANAGER & Instance()
PROPERTY_BASE & AddProperty(PROPERTY_BASE *aProperty, const wxString &aGroup=wxEmptyString)
Register a property.
void AddTypeCast(TYPE_CAST_BASE *aCast)
Register a type converter.
Represent a set of closed polygons.
Represent a simple polygon consisting of a zero-thickness closed chain of connected line segments.
const INSPECTOR_FUNC & INSPECTOR
ERROR_LOC
When approximating an arc or circle, should the error be placed on the outside or inside of the curve...
FLASHING
Enum used during connectivity building to ensure we do not query connectivity while building the data...
PCB_LAYER_ID
A quick note on layer IDs:
PCB_LAYER_ID FlipLayer(PCB_LAYER_ID aLayerId, int aCopperLayersCount)
static struct PCB_TABLE_DESC _PCB_TABLE_DESC
LINE_STYLE
Dashed line types.
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
@ PCB_TABLECELL_T
class PCB_TABLECELL, PCB_TEXTBOX for use in tables
@ PCB_TABLE_T
class PCB_TABLE, table of PCB_TABLECELLs