KiCad PCB EDA Suite
KIGFX Namespace Reference

The Cairo implementation of the graphics abstraction layer. More...

Namespaces

namespace  BUILTIN_FONT
 
namespace  DETAIL
 
namespace  PREVIEW
 

Classes

class  ACCELERATING_ZOOM_CONTROLLER
 Class that zooms faster if scroll events happen very close together. More...
 
class  ANTIALIASING_NONE
 
class  ANTIALIASING_SMAA
 
class  ANTIALIASING_SUPERSAMPLING
 
class  CACHED_CONTAINER
 Class to store VERTEX instances with caching. More...
 
class  CACHED_CONTAINER_GPU
 Specialization of CACHED_CONTAINER that stores data in video memory via memory mapping. More...
 
class  CACHED_CONTAINER_RAM
 Specialization of CACHED_CONTAINER that stores data in RAM. More...
 
class  CAIRO_COMPOSITOR
 
class  CAIRO_GAL
 
class  CAIRO_GAL_BASE
 
class  CAIRO_PRINT_CTX
 Provide a Cairo context created from wxPrintDC. More...
 
class  CAIRO_PRINT_GAL
 
class  COLOR4D
 A color representation with 4 components: red, green, blue, alpha. More...
 
class  COMPOSITOR
 
class  CONSTANT_ZOOM_CONTROLLER
 A #ZOOM_CONTROLLER that zooms by a fixed factor based only on the magnitude of the scroll wheel rotation. More...
 
class  DS_PAINTER
 Methods for painting drawing sheet items. More...
 
class  DS_RENDER_SETTINGS
 Store page-layout-specific render settings. More...
 
class  GAL
 Abstract interface for drawing on a 2D-surface. More...
 
class  GAL_CONTEXT_LOCKER
 
class  GAL_DISPLAY_OPTIONS
 
class  GAL_DISPLAY_OPTIONS_OBSERVER
 
class  GAL_DRAWING_CONTEXT
 
class  GAL_PRINT
 Wrapper around GAL to provide information needed for printing. More...
 
class  GAL_UPDATE_CONTEXT
 
class  GERBVIEW_PAINTER
 Methods for drawing GerbView specific items. More...
 
class  GERBVIEW_RENDER_SETTINGS
 Store GerbView specific render settings. More...
 
class  GL_BITMAP_CACHE
 
class  GPU_CACHED_MANAGER
 
class  GPU_MANAGER
 Class to handle uploading vertices and indices to GPU in drawing purposes. More...
 
class  GPU_NONCACHED_MANAGER
 
class  NONCACHED_CONTAINER
 
class  OPENGL_COMPOSITOR
 
class  OPENGL_GAL
 OpenGL implementation of the Graphics Abstraction Layer. More...
 
class  OPENGL_PRESENTOR
 
class  ORIGIN_VIEWITEM
 
class  PAINTER
 Contains all the knowledge about how to draw graphical object onto any particular output device. More...
 
class  PCB_PAINTER
 Contains methods for drawing PCB-specific items. More...
 
class  PCB_PRINT_PAINTER
 Special flavor of PCB_PAINTER that contains modifications to handle printing options. More...
 
class  PCB_RENDER_SETTINGS
 PCB specific render settings. More...
 
class  PCB_VIEW
 
class  PRINT_CONTEXT
 
struct  QUERY_VISITOR
 
class  RENDER_SETTINGS
 Container for all the knowledge about how graphical objects are drawn on any output surface/device. More...
 
class  SCH_PAINTER
 Contains methods for drawing schematic-specific items. More...
 
class  SCH_RENDER_SETTINGS
 Store schematic specific render settings. More...
 
class  SCH_VIEW
 
class  SHADER
 Provide the access to the OpenGL shaders. More...
 
struct  VC_SETTINGS
 Structure to keep VIEW_CONTROLS settings for easy store/restore operations. More...
 
struct  VERTEX
 
class  VERTEX_CONTAINER
 
class  VERTEX_ITEM
 
class  VERTEX_MANAGER
 Class to control vertex container and GPU with possibility of emulating old-style OpenGL 1.0 state machine using modern OpenGL methods. More...
 
class  VIEW
 Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the GAL. More...
 
class  VIEW_CONTROLS
 An interface for classes handling user events controlling the view behavior such as zooming, panning, mouse grab, etc. More...
 
class  VIEW_GROUP
 Extend VIEW_ITEM by possibility of grouping items into a single object. More...
 
class  VIEW_ITEM
 An abstract base class for deriving all objects that can be added to a VIEW. More...
 
class  VIEW_ITEM_DATA
 
class  VIEW_OVERLAY
 
class  VIEW_RTREE
 Implement an non-owning R-tree for fast spatial indexing of VIEW items. More...
 
class  WX_VIEW_CONTROLS
 An implementation of class VIEW_CONTROLS for wxWidgets library. More...
 
class  ZOOM_CONTROLLER
 Handle the response of the zoom scale to external inputs. More...
 

Typedefs

typedef RTree< VIEW_ITEM *, int, 2, double > VIEW_RTREE_BASE
 

Enumerations

enum  RENDER_TARGET {
  TARGET_CACHED = 0 , TARGET_NONCACHED , TARGET_OVERLAY , TARGET_TEMP ,
  TARGETS_NUMBER
}
 RENDER_TARGET: Possible rendering targets. More...
 
enum class  GRID_STYLE { DOTS , LINES , SMALL_CROSS }
 GRID_STYLE: Type definition of the grid style. More...
 
enum class  OPENGL_ANTIALIASING_MODE { NONE , SMAA , SUPERSAMPLING }
 
enum class  CAIRO_ANTIALIASING_MODE { NONE , FAST , GOOD }
 
enum class  GRID_SNAPPING { ALWAYS , WITH_GRID , NEVER }
 
enum  SHADER_TYPE { SHADER_TYPE_VERTEX = GL_VERTEX_SHADER , SHADER_TYPE_FRAGMENT = GL_FRAGMENT_SHADER , SHADER_TYPE_GEOMETRY = GL_GEOMETRY_SHADER }
 Type definition for the shader. More...
 
enum  SHADER_MODE {
  SHADER_NONE = 0 , SHADER_FILLED_CIRCLE = 2 , SHADER_STROKED_CIRCLE = 3 , SHADER_FONT = 4 ,
  SHADER_LINE_A = 5 , SHADER_LINE_B = 6 , SHADER_LINE_C = 7 , SHADER_LINE_D = 8 ,
  SHADER_LINE_E = 9 , SHADER_LINE_F = 10
}
 < Possible types of shaders (keep consistent with the actual shader source in kicad_vert.glsl and kicad_frag.glsl). More...
 
enum  VIEW_UPDATE_FLAGS {
  NONE = 0x00 , APPEARANCE = 0x01 , COLOR = 0x02 , GEOMETRY = 0x04 ,
  LAYERS = 0x08 , INITIAL_ADD = 0x10 , REPAINT = 0x20 , ALL = 0xef
}
 Define the how severely the appearance of the item has been changed. More...
 
enum  VIEW_VISIBILITY_FLAGS { VISIBLE = 0x01 , HIDDEN = 0x02 }
 Define the visibility of the item (temporarily hidden, invisible, etc). More...
 

Functions

const bool operator== (const COLOR4D &lhs, const COLOR4D &rhs)
 Equality operator, are two colors equal. More...
 
const bool operator!= (const COLOR4D &lhs, const COLOR4D &rhs)
 Not equality operator, are two colors not equal. More...
 
const bool operator< (const COLOR4D &lhs, const COLOR4D &rhs)
 
std::ostream & operator<< (std::ostream &aStream, COLOR4D const &aColor)
 Syntactic sugar for outputting colors to strings. More...
 
void to_json (nlohmann::json &aJson, const COLOR4D &aColor)
 
void from_json (const nlohmann::json &aJson, COLOR4D &aColor)
 
EESCHEMA_SETTINGSeeconfig ()
 
static LIB_SYMBOLdummy ()
 Used when a LIB_SYMBOL is not found in library to draw a dummy shape. More...
 
static VECTOR2D mapCoords (const VECTOR2D &aCoord)
 
static bool isFieldsLayer (int aLayer)
 
static void orientSymbol (LIB_SYMBOL *symbol, int orientation)
 
wxString expandLibItemTextVars (const wxString &aSourceText, const SCH_SYMBOL *aSymbolContext)
 

Variables

static constexpr size_t VERTEX_SIZE = sizeof(VERTEX)
 
static constexpr size_t VERTEX_STRIDE = VERTEX_SIZE / sizeof(GLfloat)
 
static constexpr size_t COORD_OFFSET = offsetof(VERTEX, x)
 
static constexpr size_t COORD_SIZE = sizeof(VERTEX::x) + sizeof(VERTEX::y) + sizeof(VERTEX::z)
 
static constexpr size_t COORD_STRIDE = COORD_SIZE / sizeof(GLfloat)
 
static constexpr size_t COLOR_OFFSET = offsetof(VERTEX, r)
 
static constexpr size_t COLOR_SIZE = sizeof(VERTEX::r) + sizeof(VERTEX::g) + sizeof(VERTEX::b) + sizeof(VERTEX::a)
 
static constexpr size_t COLOR_STRIDE = COLOR_SIZE / sizeof(GLubyte)
 
static constexpr size_t SHADER_OFFSET = offsetof(VERTEX, shader)
 
static constexpr size_t SHADER_SIZE = sizeof(VERTEX::shader)
 
static constexpr size_t SHADER_STRIDE = SHADER_SIZE / sizeof(GLfloat)
 
static constexpr size_t INDEX_SIZE = sizeof(GLuint)
 

Detailed Description

The Cairo implementation of the graphics abstraction layer.

View item to draw an origin marker.

Quote from Wikipedia: " Cairo is a software library used to provide a vector graphics-based, device-independent API for software developers. It is designed to provide primitives for 2-dimensional drawing across a number of different backends. "

Cairo offers also backends for PostScript and PDF surfaces. So it can be used for printing of KiCad graphics surfaces as well.

Typedef Documentation

◆ VIEW_RTREE_BASE

typedef RTree<VIEW_ITEM*, int, 2, double> KIGFX::VIEW_RTREE_BASE

Definition at line 36 of file view_rtree.h.

Enumeration Type Documentation

◆ CAIRO_ANTIALIASING_MODE

enum class KIGFX::CAIRO_ANTIALIASING_MODE
strong
Enumerator
NONE 
FAST 
GOOD 

Definition at line 55 of file gal_display_options.h.

◆ GRID_SNAPPING

enum class KIGFX::GRID_SNAPPING
strong
Enumerator
ALWAYS 
WITH_GRID 
NEVER 

Definition at line 62 of file gal_display_options.h.

◆ GRID_STYLE

enum class KIGFX::GRID_STYLE
strong

GRID_STYLE: Type definition of the grid style.

Enumerator
DOTS 

Use dots for the grid.

LINES 

Use lines for the grid.

SMALL_CROSS 

Use small cross instead of dots for the grid.

Definition at line 41 of file gal_display_options.h.

42 {
43 DOTS,
44 LINES,
46 };
@ SMALL_CROSS
Use small cross instead of dots for the grid.
@ DOTS
Use dots for the grid.
@ LINES
Use lines for the grid.

◆ OPENGL_ANTIALIASING_MODE

Enumerator
NONE 
SMAA 
SUPERSAMPLING 

Definition at line 48 of file gal_display_options.h.

◆ RENDER_TARGET

RENDER_TARGET: Possible rendering targets.

Enumerator
TARGET_CACHED 

Main rendering target (cached)

TARGET_NONCACHED 

Auxiliary rendering target (noncached)

TARGET_OVERLAY 

Items that may change while the view stays the same (noncached)

TARGET_TEMP 

Temporary target for drawing in separate layer.

TARGETS_NUMBER 

Number of available rendering targets.

Definition at line 46 of file definitions.h.

47{
48 TARGET_CACHED = 0,
53};
@ TARGET_NONCACHED
Auxiliary rendering target (noncached)
Definition: definitions.h:49
@ TARGET_TEMP
Temporary target for drawing in separate layer.
Definition: definitions.h:51
@ TARGET_CACHED
Main rendering target (cached)
Definition: definitions.h:48
@ TARGETS_NUMBER
Number of available rendering targets.
Definition: definitions.h:52
@ TARGET_OVERLAY
Items that may change while the view stays the same (noncached)
Definition: definitions.h:50

◆ SHADER_MODE

< Possible types of shaders (keep consistent with the actual shader source in kicad_vert.glsl and kicad_frag.glsl).

Enumerator
SHADER_NONE 
SHADER_FILLED_CIRCLE 
SHADER_STROKED_CIRCLE 
SHADER_FONT 
SHADER_LINE_A 
SHADER_LINE_B 
SHADER_LINE_C 
SHADER_LINE_D 
SHADER_LINE_E 
SHADER_LINE_F 

Definition at line 45 of file vertex_common.h.

46{
47 SHADER_NONE = 0,
50 SHADER_FONT = 4,
51 SHADER_LINE_A = 5,
52 SHADER_LINE_B = 6,
53 SHADER_LINE_C = 7,
54 SHADER_LINE_D = 8,
55 SHADER_LINE_E = 9,
56 SHADER_LINE_F = 10
57};
@ SHADER_NONE
Definition: vertex_common.h:47
@ SHADER_LINE_C
Definition: vertex_common.h:53
@ SHADER_LINE_B
Definition: vertex_common.h:52
@ SHADER_FONT
Definition: vertex_common.h:50
@ SHADER_LINE_F
Definition: vertex_common.h:56
@ SHADER_LINE_E
Definition: vertex_common.h:55
@ SHADER_STROKED_CIRCLE
Definition: vertex_common.h:49
@ SHADER_LINE_A
Definition: vertex_common.h:51
@ SHADER_LINE_D
Definition: vertex_common.h:54
@ SHADER_FILLED_CIRCLE
Definition: vertex_common.h:48

◆ SHADER_TYPE

Type definition for the shader.

Enumerator
SHADER_TYPE_VERTEX 

Vertex shader.

SHADER_TYPE_FRAGMENT 

Fragment shader.

SHADER_TYPE_GEOMETRY 

Geometry shader.

Definition at line 44 of file shader.h.

45{
46 SHADER_TYPE_VERTEX = GL_VERTEX_SHADER,
47 SHADER_TYPE_FRAGMENT = GL_FRAGMENT_SHADER,
48 SHADER_TYPE_GEOMETRY = GL_GEOMETRY_SHADER
49};
@ SHADER_TYPE_VERTEX
Vertex shader.
Definition: shader.h:46
@ SHADER_TYPE_FRAGMENT
Fragment shader.
Definition: shader.h:47
@ SHADER_TYPE_GEOMETRY
Geometry shader.
Definition: shader.h:48

◆ VIEW_UPDATE_FLAGS

Define the how severely the appearance of the item has been changed.

Enumerator
NONE 

No updates are required.

APPEARANCE 

Visibility flag has changed.

COLOR 

Color has changed.

GEOMETRY 

Position or shape has changed.

LAYERS 

Layers have changed.

INITIAL_ADD 

Item is being added to the view.

REPAINT 

Item needs to be redrawn.

ALL 

All except INITIAL_ADD.

Definition at line 45 of file view_item.h.

45 {
46 NONE = 0x00,
47 APPEARANCE = 0x01,
48 COLOR = 0x02,
49 GEOMETRY = 0x04,
50 LAYERS = 0x08,
51 INITIAL_ADD = 0x10,
52 REPAINT = 0x20,
53 ALL = 0xef
54};
@ COLOR
Color has changed.
Definition: view_item.h:48
@ INITIAL_ADD
Item is being added to the view.
Definition: view_item.h:51
@ NONE
No updates are required.
Definition: view_item.h:46
@ REPAINT
Item needs to be redrawn.
Definition: view_item.h:52
@ APPEARANCE
Visibility flag has changed.
Definition: view_item.h:47
@ GEOMETRY
Position or shape has changed.
Definition: view_item.h:49
@ LAYERS
Layers have changed.
Definition: view_item.h:50
@ ALL
All except INITIAL_ADD.
Definition: view_item.h:53

◆ VIEW_VISIBILITY_FLAGS

Define the visibility of the item (temporarily hidden, invisible, etc).

Enumerator
VISIBLE 

Item is visible (in general)

HIDDEN 

Item is temporarily hidden (e.g.

being used by a tool). Overrides VISIBLE flag.

Definition at line 59 of file view_item.h.

59 {
60 VISIBLE = 0x01,
61 HIDDEN = 0x02
63};
@ HIDDEN
Item is temporarily hidden (e.g.
Definition: view_item.h:61
@ VISIBLE
Item is visible (in general)
Definition: view_item.h:60

Function Documentation

◆ dummy()

static LIB_SYMBOL * KIGFX::dummy ( )
static

Used when a LIB_SYMBOL is not found in library to draw a dummy shape.

This symbol is a 400 mils square with the text "??"

DEF DUMMY U 0 40 Y Y 1 0 N F0 "U" 0 -350 60 H V F1 "DUMMY" 0 350 60 H V DRAW T 0 0 0 150 0 0 0 ?? S -200 200 200 -200 0 1 0 ENDDRAW ENDDEF

Definition at line 158 of file sch_painter.cpp.

159{
160 static LIB_SYMBOL* symbol;
161
162 if( !symbol )
163 {
164 symbol = new LIB_SYMBOL( wxEmptyString );
165
166 LIB_SHAPE* square = new LIB_SHAPE( symbol, SHAPE_T::RECT );
167
168 square->MoveTo( VECTOR2I( schIUScale.MilsToIU( -200 ), schIUScale.MilsToIU( 200 ) ) );
169 square->SetEnd( VECTOR2I( schIUScale.MilsToIU( 200 ), schIUScale.MilsToIU( -200 ) ) );
170
171 LIB_TEXT* text = new LIB_TEXT( symbol );
172
173 text->SetTextSize( wxSize( schIUScale.MilsToIU( 150 ), schIUScale.MilsToIU( 150 ) ) );
174 text->SetText( wxString( wxT( "??" ) ) );
175
176 symbol->AddDrawItem( square );
177 symbol->AddDrawItem( text );
178 }
179
180 return symbol;
181}
constexpr EDA_IU_SCALE schIUScale
Definition: base_units.h:111
double square(double x)
Define a library symbol object.
Definition: lib_symbol.h:99
void AddDrawItem(LIB_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
Definition: lib_symbol.cpp:823
Define a symbol library graphical text item.
Definition: lib_text.h:40
constexpr int MilsToIU(int mils) const
Definition: base_units.h:94
VECTOR2< int > VECTOR2I
Definition: vector2d.h:618

References LIB_SYMBOL::AddDrawItem(), EDA_IU_SCALE::MilsToIU(), RECT, schIUScale, square(), and text.

Referenced by KIGFX::VIEW_CONTROLS::Reset().

◆ eeconfig()

EESCHEMA_SETTINGS * KIGFX::eeconfig ( )

◆ expandLibItemTextVars()

wxString KIGFX::expandLibItemTextVars ( const wxString &  aSourceText,
const SCH_SYMBOL aSymbolContext 
)

Definition at line 2215 of file sch_painter.cpp.

2216{
2217 std::function<bool( wxString* )> symbolResolver =
2218 [&]( wxString* token ) -> bool
2219 {
2220 return aSymbolContext->ResolveTextVar( token, 0 );
2221 };
2222
2223 return ExpandTextVars( aSourceText, &symbolResolver );
2224}
bool ResolveTextVar(wxString *token, int aDepth=0) const
Resolve any references to system tokens supported by the symbol.
wxString ExpandTextVars(const wxString &aSource, const PROJECT *aProject)
Definition: common.cpp:58

References ExpandTextVars(), and SCH_SYMBOL::ResolveTextVar().

Referenced by KIGFX::SCH_PAINTER::draw().

◆ from_json()

void KIGFX::from_json ( const nlohmann::json aJson,
COLOR4D aColor 
)

Definition at line 307 of file color4d.cpp.

308{
309 aColor.SetFromWxString( aJson.get<std::string>() );
310}

◆ isFieldsLayer()

static bool KIGFX::isFieldsLayer ( int  aLayer)
static

Definition at line 574 of file sch_painter.cpp.

575{
576 return aLayer == LAYER_REFERENCEPART
577 || aLayer == LAYER_VALUEPART
578 || aLayer == LAYER_INTERSHEET_REFS
579 || aLayer == LAYER_NETCLASS_REFS
580 || aLayer == LAYER_FIELDS
581 || aLayer == LAYER_SHEETNAME
582 || aLayer == LAYER_SHEETFILENAME
583 || aLayer == LAYER_SHEETFIELDS;
584}
@ LAYER_SHEETNAME
Definition: layer_ids.h:363
@ LAYER_VALUEPART
Definition: layer_ids.h:353
@ LAYER_FIELDS
Definition: layer_ids.h:354
@ LAYER_SHEETFIELDS
Definition: layer_ids.h:365
@ LAYER_REFERENCEPART
Definition: layer_ids.h:352
@ LAYER_NETCLASS_REFS
Definition: layer_ids.h:356
@ LAYER_INTERSHEET_REFS
Definition: layer_ids.h:355
@ LAYER_SHEETFILENAME
Definition: layer_ids.h:364

References LAYER_FIELDS, LAYER_INTERSHEET_REFS, LAYER_NETCLASS_REFS, LAYER_REFERENCEPART, LAYER_SHEETFIELDS, LAYER_SHEETFILENAME, LAYER_SHEETNAME, and LAYER_VALUEPART.

Referenced by KIGFX::SCH_PAINTER::draw().

◆ mapCoords()

static VECTOR2D KIGFX::mapCoords ( const VECTOR2D aCoord)
static

Definition at line 568 of file sch_painter.cpp.

569{
570 return VECTOR2D( aCoord.x, -aCoord.y );
571}
VECTOR2< double > VECTOR2D
Definition: vector2d.h:617

References VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by KIGFX::SCH_PAINTER::boxText(), and KIGFX::SCH_PAINTER::draw().

◆ operator!=()

const bool KIGFX::operator!= ( const COLOR4D lhs,
const COLOR4D rhs 
)

Not equality operator, are two colors not equal.

Definition at line 274 of file color4d.cpp.

275{
276 return !( lhs == rhs );
277}

Referenced by unfracture(), and SHAPE_POLY_SET::unfractureSingle().

◆ operator<()

const bool KIGFX::operator< ( const COLOR4D lhs,
const COLOR4D rhs 
)

Definition at line 280 of file color4d.cpp.

281{
282 if( lhs.r < rhs.r )
283 return true;
284 else if( lhs.g < rhs.g )
285 return true;
286 else if( lhs.b < rhs.b )
287 return true;
288 else if( lhs.a < rhs.a )
289 return true;
290
291 return false;
292}
double r
Red component.
Definition: color4d.h:390
double g
Green component.
Definition: color4d.h:391
double a
Alpha component.
Definition: color4d.h:393
double b
Blue component.
Definition: color4d.h:392

References KIGFX::COLOR4D::a, KIGFX::COLOR4D::b, KIGFX::COLOR4D::g, and KIGFX::COLOR4D::r.

◆ operator<<()

std::ostream & KIGFX::operator<< ( std::ostream &  aStream,
COLOR4D const &  aColor 
)

Syntactic sugar for outputting colors to strings.

Definition at line 295 of file color4d.cpp.

296{
297 return aStream << aColor.ToCSSString();
298}

◆ operator==()

const bool KIGFX::operator== ( const COLOR4D lhs,
const COLOR4D rhs 
)

Equality operator, are two colors equal.

Definition at line 268 of file color4d.cpp.

269{
270 return lhs.a == rhs.a && lhs.r == rhs.r && lhs.g == rhs.g && lhs.b == rhs.b;
271}

References KIGFX::COLOR4D::a, KIGFX::COLOR4D::b, KIGFX::COLOR4D::g, and KIGFX::COLOR4D::r.

Referenced by unfracture(), and SHAPE_POLY_SET::unfractureSingle().

◆ orientSymbol()

static void KIGFX::orientSymbol ( LIB_SYMBOL symbol,
int  orientation 
)
static

Definition at line 2165 of file sch_painter.cpp.

2166{
2167 struct ORIENT
2168 {
2169 int flag;
2170 int n_rots;
2171 int mirror_x;
2172 int mirror_y;
2173 }
2174 orientations[] =
2175 {
2176 { SYM_ORIENT_0, 0, 0, 0 },
2177 { SYM_ORIENT_90, 1, 0, 0 },
2178 { SYM_ORIENT_180, 2, 0, 0 },
2179 { SYM_ORIENT_270, 3, 0, 0 },
2180 { SYM_MIRROR_X + SYM_ORIENT_0, 0, 1, 0 },
2181 { SYM_MIRROR_X + SYM_ORIENT_90, 1, 1, 0 },
2182 { SYM_MIRROR_Y, 0, 0, 1 },
2183 { SYM_MIRROR_X + SYM_ORIENT_270, 3, 1, 0 },
2184 { SYM_MIRROR_Y + SYM_ORIENT_0, 0, 0, 1 },
2185 { SYM_MIRROR_Y + SYM_ORIENT_90, 1, 0, 1 },
2186 { SYM_MIRROR_Y + SYM_ORIENT_180, 2, 0, 1 },
2187 { SYM_MIRROR_Y + SYM_ORIENT_270, 3, 0, 1 }
2188 };
2189
2190 ORIENT o = orientations[ 0 ];
2191
2192 for( ORIENT& i : orientations )
2193 {
2194 if( i.flag == orientation )
2195 {
2196 o = i;
2197 break;
2198 }
2199 }
2200
2201 for( LIB_ITEM& item : symbol->GetDrawItems() )
2202 {
2203 for( int i = 0; i < o.n_rots; i++ )
2204 item.Rotate( VECTOR2I(0, 0 ), true );
2205
2206 if( o.mirror_x )
2207 item.MirrorVertical( VECTOR2I( 0, 0 ) );
2208
2209 if( o.mirror_y )
2210 item.MirrorHorizontal( VECTOR2I( 0, 0 ) );
2211 }
2212}
The base class for drawable items used by schematic library symbols.
Definition: lib_item.h:61
LIB_ITEMS_CONTAINER & GetDrawItems()
Return a reference to the draw item list.
Definition: lib_symbol.h:508
@ SYM_ORIENT_270
@ SYM_MIRROR_Y
@ SYM_ORIENT_180
@ SYM_MIRROR_X
@ SYM_ORIENT_90
@ SYM_ORIENT_0

References flag, LIB_SYMBOL::GetDrawItems(), SYM_MIRROR_X, SYM_MIRROR_Y, SYM_ORIENT_0, SYM_ORIENT_180, SYM_ORIENT_270, and SYM_ORIENT_90.

Referenced by KIGFX::SCH_PAINTER::draw().

◆ to_json()

void KIGFX::to_json ( nlohmann::json aJson,
const COLOR4D aColor 
)

Definition at line 301 of file color4d.cpp.

302{
303 aJson = nlohmann::json( aColor.ToCSSString().ToStdString() );
304}
nlohmann::json json
Definition: gerbview.cpp:44

Variable Documentation

◆ COLOR_OFFSET

constexpr size_t KIGFX::COLOR_OFFSET = offsetof(VERTEX, r)
staticconstexpr

◆ COLOR_SIZE

constexpr size_t KIGFX::COLOR_SIZE = sizeof(VERTEX::r) + sizeof(VERTEX::g) + sizeof(VERTEX::b) + sizeof(VERTEX::a)
staticconstexpr

Definition at line 75 of file vertex_common.h.

◆ COLOR_STRIDE

constexpr size_t KIGFX::COLOR_STRIDE = COLOR_SIZE / sizeof(GLubyte)
staticconstexpr

◆ COORD_OFFSET

constexpr size_t KIGFX::COORD_OFFSET = offsetof(VERTEX, x)
staticconstexpr

Definition at line 70 of file vertex_common.h.

Referenced by KIGFX::GPU_CACHED_MANAGER::EndDrawing().

◆ COORD_SIZE

constexpr size_t KIGFX::COORD_SIZE = sizeof(VERTEX::x) + sizeof(VERTEX::y) + sizeof(VERTEX::z)
staticconstexpr

Definition at line 71 of file vertex_common.h.

◆ COORD_STRIDE

constexpr size_t KIGFX::COORD_STRIDE = COORD_SIZE / sizeof(GLfloat)
staticconstexpr

◆ INDEX_SIZE

constexpr size_t KIGFX::INDEX_SIZE = sizeof(GLuint)
staticconstexpr

Definition at line 83 of file vertex_common.h.

◆ SHADER_OFFSET

constexpr size_t KIGFX::SHADER_OFFSET = offsetof(VERTEX, shader)
staticconstexpr

◆ SHADER_SIZE

constexpr size_t KIGFX::SHADER_SIZE = sizeof(VERTEX::shader)
staticconstexpr

Definition at line 80 of file vertex_common.h.

◆ SHADER_STRIDE

constexpr size_t KIGFX::SHADER_STRIDE = SHADER_SIZE / sizeof(GLfloat)
staticconstexpr

◆ VERTEX_SIZE

◆ VERTEX_STRIDE

constexpr size_t KIGFX::VERTEX_STRIDE = VERTEX_SIZE / sizeof(GLfloat)
staticconstexpr

Definition at line 68 of file vertex_common.h.