KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pcb_reference_image.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) 2011 jean-pierre.charras
5 * Copyright (C) 2022 Mike Williams
6 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
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, you may find one here:
20 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21 * or you may search the http://www.gnu.org website for the version 2 license,
22 * or you may write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 */
25
26#pragma once
27
28#include <board_item.h>
29#include <bitmap_base.h>
30#include <reference_image.h>
31
32
37{
38public:
39 PCB_REFERENCE_IMAGE( BOARD_ITEM* aParent, const VECTOR2I& pos = VECTOR2I( 0, 0 ),
40 PCB_LAYER_ID aLayer = F_Cu );
41
42 PCB_REFERENCE_IMAGE( const PCB_REFERENCE_IMAGE& aPcbBitmap );
43
45
46 void CopyFrom( const BOARD_ITEM* aOther ) override;
47
49
55
56 static inline bool ClassOf( const EDA_ITEM* aItem )
57 {
58 return aItem && PCB_REFERENCE_IMAGE_T == aItem->Type();
59 }
60
61 wxString GetClass() const override { return wxT( "PCB_REFERENCE_IMAGE" ); }
62
63 double ViewGetLOD( int aLayer, const KIGFX::VIEW* aView ) const override;
64
65 const BOX2I GetBoundingBox() const override;
66
67 std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer = UNDEFINED_LAYER,
68 FLASHING aFlash = FLASHING::DEFAULT ) const override;
69
70 //void Print( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset ) override;
71
73 virtual std::vector<int> ViewGetLayers() const override;
74
75 void Move( const VECTOR2I& aMoveVector ) override;
76
77 void Flip( const VECTOR2I& aCentre, FLIP_DIRECTION aFlipDirection ) override;
78 void Rotate( const VECTOR2I& aCenter, const EDA_ANGLE& aAngle ) override;
79
80 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override
81 {
82 return wxString( _( "Reference Image" ) );
83 }
84
85 BITMAPS GetMenuImage() const override;
86
87 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
88
92 VECTOR2I GetPosition() const override;
93
99 void SetPosition( const VECTOR2I& aPosition ) override;
100
101 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
102 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
103 bool HitTest( const SHAPE_LINE_CHAIN& aPoly, bool aContained ) const override;
104
105 EDA_ITEM* Clone() const override;
106
107 double Similarity( const BOARD_ITEM& aBoardItem ) const override;
108
109 bool operator==( const PCB_REFERENCE_IMAGE& aOther ) const;
110 bool operator==( const BOARD_ITEM& aBoardItem ) const override;
111
112#if defined( DEBUG )
113 void Show( int nestLevel, std::ostream& os ) const override;
114#endif
115
116protected:
117 void swapData( BOARD_ITEM* aItem ) override;
118
119private:
121
122 // Property manager interfaces
123 int GetWidth() const;
124 void SetWidth( int aWidth );
125 int GetHeight() const;
126 void SetHeight( int aHeight );
127 int GetTransformOriginOffsetX() const;
128 void SetTransformOriginOffsetX( int aX );
129 int GetTransformOriginOffsetY() const;
130 void SetTransformOriginOffsetY( int aY );
131
132 double GetImageScale() const;
133 void SetImageScale( double aScale );
134
136};
BITMAPS
A list of all bitmap identifiers.
Definition: bitmaps_list.h:33
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:79
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:98
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:110
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition: view.h:66
Object to handle a bitmap image that can be inserted in a PCB.
void SetTransformOriginOffsetY(int aY)
void swapData(BOARD_ITEM *aItem) override
VECTOR2I GetPosition() const override
Get the position of the image (this is the center of the image).
double Similarity(const BOARD_ITEM &aBoardItem) const override
Return a measure of how likely the other object is to represent the same object.
void Move(const VECTOR2I &aMoveVector) override
Move this object.
virtual std::vector< int > ViewGetLayers() const override
int GetTransformOriginOffsetY() const
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
void SetTransformOriginOffsetX(int aX)
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
bool operator==(const PCB_REFERENCE_IMAGE &aOther) const
void SetImageScale(double aScale)
int GetTransformOriginOffsetX() const
double ViewGetLOD(int aLayer, const KIGFX::VIEW *aView) const override
Return the level of detail (LOD) of the item.
wxString GetClass() const override
Return the class name.
void Rotate(const VECTOR2I &aCenter, const EDA_ANGLE &aAngle) override
Rotate this object.
void SetPosition(const VECTOR2I &aPosition) override
Set the position of the image.
void Flip(const VECTOR2I &aCentre, FLIP_DIRECTION aFlipDirection) override
Flip this object, i.e.
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
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.
static bool ClassOf(const EDA_ITEM *aItem)
REFERENCE_IMAGE & GetReferenceImage()
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.
const REFERENCE_IMAGE & GetReferenceImage() const
REFERENCE_IMAGE m_referenceImage
void SetHeight(int aHeight)
PCB_REFERENCE_IMAGE & operator=(const BOARD_ITEM &aItem)
void CopyFrom(const BOARD_ITEM *aOther) override
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
A REFERENCE_IMAGE is a wrapper around a BITMAP_IMAGE that is displayed in an editor as a reference fo...
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
#define _(s)
FLASHING
Enum used during connectivity building to ensure we do not query connectivity while building the data...
Definition: layer_ids.h:184
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:60
@ UNDEFINED_LAYER
Definition: layer_ids.h:61
@ F_Cu
Definition: layer_ids.h:64
FLIP_DIRECTION
Definition: mirror.h:27
@ PCB_REFERENCE_IMAGE_T
class PCB_REFERENCE_IMAGE, bitmap on a layer
Definition: typeinfo.h:89
VECTOR2< int32_t > VECTOR2I
Definition: vector2d.h:695