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)
 

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.

56 {
57 NONE,
58 FAST,
59 GOOD,
60 };
@ NONE
No updates are required.
Definition: view_item.h:46

◆ 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
@ 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 155 of file sch_painter.cpp.

156{
157 static LIB_SYMBOL* symbol;
158
159 if( !symbol )
160 {
161 symbol = new LIB_SYMBOL( wxEmptyString );
162
163 LIB_SHAPE* square = new LIB_SHAPE( symbol, SHAPE_T::RECT );
164
165 square->MoveTo( VECTOR2I( schIUScale.MilsToIU( -200 ), schIUScale.MilsToIU( 200 ) ) );
166 square->SetEnd( VECTOR2I( schIUScale.MilsToIU( 200 ), schIUScale.MilsToIU( -200 ) ) );
167
168 LIB_TEXT* text = new LIB_TEXT( symbol );
169
170 text->SetTextSize( wxSize( schIUScale.MilsToIU( 150 ), schIUScale.MilsToIU( 150 ) ) );
171 text->SetText( wxString( wxT( "??" ) ) );
172
173 symbol->AddDrawItem( square );
174 symbol->AddDrawItem( text );
175 }
176
177 return symbol;
178}
constexpr EDA_IU_SCALE schIUScale
Definition: base_units.h:111
double square(double x)
Define a library symbol object.
Definition: lib_symbol.h:98
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:810
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 ( )

◆ from_json()

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

Definition at line 309 of file color4d.cpp.

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

◆ isFieldsLayer()

static bool KIGFX::isFieldsLayer ( int  aLayer)
static

Definition at line 558 of file sch_painter.cpp.

559{
560 return aLayer == LAYER_REFERENCEPART
561 || aLayer == LAYER_VALUEPART
562 || aLayer == LAYER_INTERSHEET_REFS
563 || aLayer == LAYER_NETCLASS_REFS
564 || aLayer == LAYER_FIELDS
565 || aLayer == LAYER_SHEETNAME
566 || aLayer == LAYER_SHEETFILENAME
567 || aLayer == LAYER_SHEETFIELDS;
568}
@ 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 552 of file sch_painter.cpp.

553{
554 return VECTOR2D( aCoord.x, -aCoord.y );
555}
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 251 of file color4d.cpp.

252{
253 return !( lhs == rhs );
254}

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

◆ operator<()

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

Definition at line 257 of file color4d.cpp.

258{
259 if( lhs.r < rhs.r )
260 return true;
261 else if( lhs.g < rhs.g )
262 return true;
263 else if( lhs.b < rhs.b )
264 return true;
265 else if( lhs.a < rhs.a )
266 return true;
267
268 return false;
269}
double r
Red component.
Definition: color4d.h:384
double g
Green component.
Definition: color4d.h:385
double a
Alpha component.
Definition: color4d.h:387
double b
Blue component.
Definition: color4d.h:386

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 272 of file color4d.cpp.

273{
274 return aStream << aColor.ToWxString( wxC2S_CSS_SYNTAX );
275}

◆ operator==()

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

Equality operator, are two colors equal.

Definition at line 245 of file color4d.cpp.

246{
247 return lhs.a == rhs.a && lhs.r == rhs.r && lhs.g == rhs.g && lhs.b == rhs.b;
248}

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 2101 of file sch_painter.cpp.

2102{
2103 struct ORIENT
2104 {
2105 int flag;
2106 int n_rots;
2107 int mirror_x;
2108 int mirror_y;
2109 }
2110 orientations[] =
2111 {
2112 { SYM_ORIENT_0, 0, 0, 0 },
2113 { SYM_ORIENT_90, 1, 0, 0 },
2114 { SYM_ORIENT_180, 2, 0, 0 },
2115 { SYM_ORIENT_270, 3, 0, 0 },
2116 { SYM_MIRROR_X + SYM_ORIENT_0, 0, 1, 0 },
2117 { SYM_MIRROR_X + SYM_ORIENT_90, 1, 1, 0 },
2118 { SYM_MIRROR_Y, 0, 0, 1 },
2119 { SYM_MIRROR_X + SYM_ORIENT_270, 3, 1, 0 },
2120 { SYM_MIRROR_Y + SYM_ORIENT_0, 0, 0, 1 },
2121 { SYM_MIRROR_Y + SYM_ORIENT_90, 1, 0, 1 },
2122 { SYM_MIRROR_Y + SYM_ORIENT_180, 2, 0, 1 },
2123 { SYM_MIRROR_Y + SYM_ORIENT_270, 3, 0, 1 }
2124 };
2125
2126 ORIENT o = orientations[ 0 ];
2127
2128 for( ORIENT& i : orientations )
2129 {
2130 if( i.flag == orientation )
2131 {
2132 o = i;
2133 break;
2134 }
2135 }
2136
2137 for( LIB_ITEM& item : symbol->GetDrawItems() )
2138 {
2139 for( int i = 0; i < o.n_rots; i++ )
2140 item.Rotate( VECTOR2I(0, 0 ), true );
2141
2142 if( o.mirror_x )
2143 item.MirrorVertical( VECTOR2I( 0, 0 ) );
2144
2145 if( o.mirror_y )
2146 item.MirrorHorizontal( VECTOR2I( 0, 0 ) );
2147 }
2148}
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:507
@ 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 278 of file color4d.cpp.

279{
280 wxColour c = aColor.ToColour();
281 wxString str;
282
283 const int red = c.Red();
284 const int green = c.Green();
285 const int blue = c.Blue();
286 const int alpha = c.Alpha();
287
288 if ( alpha == wxALPHA_OPAQUE )
289 {
290 str.Printf( wxT( "rgb(%d, %d, %d)" ), red, green, blue );
291 }
292 else // use rgba() form
293 {
294 wxString a = wxString::FromCDouble( alpha / 255.0, 3);
295
296 // The wxC2S_CSS_SYNTAX is particularly sensitive to ','s (as it uses them for value
297 // delimiters), and wxWidgets is known to be buggy in this respect when dealing with
298 // Serbian and Russian locales (at least), so we enforce an extra level of safety.
299 a.Replace( wxT( "," ), wxT( "." ) );
300
301 str.Printf( wxT( "rgba(%d, %d, %d, %s)" ), red, green, blue, a );
302 }
303
304 aJson = nlohmann::json( str.ToStdString() );
305
306}
nlohmann::json json
Definition: gerbview.cpp:44

References red.

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.