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 (C) 2011-2024 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
47
53
54 static inline bool ClassOf( const EDA_ITEM* aItem )
55 {
56 return aItem && PCB_REFERENCE_IMAGE_T == aItem->Type();
57 }
58
59 wxString GetClass() const override { return wxT( "PCB_REFERENCE_IMAGE" ); }
60
61 double ViewGetLOD( int aLayer, KIGFX::VIEW* aView ) const override;
62
63 const BOX2I GetBoundingBox() const override;
64
65 std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer = UNDEFINED_LAYER,
66 FLASHING aFlash = FLASHING::DEFAULT ) const override;
67
68 //void Print( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset ) override;
69
71 virtual std::vector<int> ViewGetLayers() const override;
72
73 void Move( const VECTOR2I& aMoveVector ) override;
74
75 void Flip( const VECTOR2I& aCentre, FLIP_DIRECTION aFlipDirection ) override;
76 void Rotate( const VECTOR2I& aCenter, const EDA_ANGLE& aAngle ) override;
77
78 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override
79 {
80 return wxString( _( "Reference Image" ) );
81 }
82
83 BITMAPS GetMenuImage() const override;
84
85 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
86
90 VECTOR2I GetPosition() const override;
91
97 void SetPosition( const VECTOR2I& aPosition ) override;
98
99 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
100 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
101
102 EDA_ITEM* Clone() const override;
103
104 double Similarity( const BOARD_ITEM& aBoardItem ) const override;
105
106 bool operator==( const PCB_REFERENCE_IMAGE& aOther ) const;
107 bool operator==( const BOARD_ITEM& aBoardItem ) const override;
108
109#if defined( DEBUG )
110 void Show( int nestLevel, std::ostream& os ) const override;
111#endif
112
113protected:
114 void swapData( BOARD_ITEM* aItem ) override;
115
116private:
118
119 // Property manager interfaces
120 int GetWidth() const;
121 void SetWidth( int aWidth );
122 int GetHeight() const;
123 void SetHeight( int aHeight );
124 int GetTransformOriginOffsetX() const;
125 void SetTransformOriginOffsetX( int aX );
126 int GetTransformOriginOffsetY() const;
127 void SetTransformOriginOffsetY( int aY );
128
129 double GetImageScale() const;
130 void SetImageScale( double aScale );
131
133};
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:89
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:101
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition: view.h:68
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
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
double ViewGetLOD(int aLayer, KIGFX::VIEW *aView) const override
Return the level of detail (LOD) of the item.
void SetHeight(int aHeight)
PCB_REFERENCE_IMAGE & operator=(const BOARD_ITEM &aItem)
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...
#define _(s)
FLASHING
Enum used during connectivity building to ensure we do not query connectivity while building the data...
Definition: layer_ids.h:147
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:691