• Maciej Suminski's avatar
    Introduction of Graphics Abstraction Layer based rendering for pcbnew. · e262b321
    Maciej Suminski authored
    New classes:
        - VIEW - represents view that is seen by user, takes care of layer ordering & visibility and how it is displayed (which location, how much zoomed, etc.)
        - VIEW_ITEM - Base class for every item that can be displayed on VIEW (the biggest change is that now it may be necessary to override ViewBBox & ViewGetLayers method for derived classes).
        - EDA_DRAW_PANEL_GAL - Inherits after EDA_DRAW_PANEL, displays VIEW output, right now it is not editable (in opposite to usual EDA_DRAW_PANEL).
        - GAL/OPENGL_GAL/CAIRO_GAL - Base Graphics Abstraction Layer class + two different flavours (Cairo is not fully supported yet), that offers methods to draw primitives using different libraries.
        - WX_VIEW_CONTROLS - Controller for VIEW, handles user events, allows zooming, panning, etc.
        - PAINTER/PCB_PAINTER - Classes that uses GAL interface to draw items (as you may have already guessed - PCB_PAINTER is a class for drawing PCB specific object, PAINTER is an abstract class). Its methods are invoked by VIEW, when an item has to be drawn. To display a new type of item - you need to implement draw(ITEM_TYPE*) method that draws it using GAL methods.
        - STROKE_FONT - Implements stroke font drawing using GAL methods.
                              
    Most important changes to Kicad original code:
        * EDA_ITEM now inherits from VIEW_ITEM, which is a base class for all drawable objects.
        * EDA_DRAW_FRAME contains both usual EDA_DRAW_PANEL and new EDA_DRAW_PANEL_GAL, that can be switched anytime.
        * There are some new layers for displaying multilayer pads, vias & pads holes (these are not shown yet on the right sidebar in pcbnew)
        * Display order of layers is different than in previous versions (if you are curious - you may check m_galLayerOrder@pcbnew/basepcbframe.cpp). Preserving usual order would result in not very natural display, such as showing silkscreen texts on the bottom.
        * Introduced new hotkey (Alt+F12) and new menu option (View->Switch canvas) for switching canvas during runtime.
        * Some of classes (mostly derived from BOARD_ITEM) now includes ViewBBox & ViewGetLayers methods.
        * Removed tools/class_painter.h, as now it is extended and included in source code.
                             
    Build changes:
        * GAL-based rendering option is turned on by a new compilation CMake option KICAD_GAL.
        * When compiling with CMake option KICAD_GAL=ON, GLEW and Cairo libraries are required.
        * GAL-related code is compiled into a static library (common/libgal).
        * Build with KICAD_GAL=OFF should not need any new libraries and should come out as a standard version of Kicad
                                
    Currently most of items in pcbnew can be displayed using OpenGL (to be done are DIMENSIONS and MARKERS).
    More details about GAL can be found in: http://www.ohwr.org/attachments/1884/view-spec.pdf
    e262b321
Name
Last commit
Last update
..
boost Loading commit data...
gal Loading commit data...
math Loading commit data...
view Loading commit data...
HersheyCyrillic.h.unused Loading commit data...
appl_wxstruct.h Loading commit data...
base_struct.h Loading commit data...
base_units.h Loading commit data...
bezier_curves.h Loading commit data...
bitmaps.h Loading commit data...
block_commande.h Loading commit data...
build_version.h Loading commit data...
class_base_screen.h Loading commit data...
class_bitmap_base.h Loading commit data...
class_board_design_settings.h Loading commit data...
class_board_item.h Loading commit data...
class_collector.h Loading commit data...
class_colors_design_settings.h Loading commit data...
class_drawpanel.h Loading commit data...
class_drawpanel_gal.h Loading commit data...
class_drc_item.h Loading commit data...
class_layer_box_selector.h Loading commit data...
class_macros_record.h Loading commit data...
class_marker_base.h Loading commit data...
class_pcb_screen.h Loading commit data...
class_sch_screen.h Loading commit data...
class_title_block.h Loading commit data...
class_undoredo_container.h Loading commit data...
colors.h Loading commit data...
colors_selection.h Loading commit data...
common.h Loading commit data...
confirm.h Loading commit data...
convert_basic_shapes_to_polygon.h Loading commit data...
convert_from_iu.h Loading commit data...
convert_to_biu.h Loading commit data...
dcsvg.h.unused Loading commit data...
dialog_get_component.h Loading commit data...
dialog_helpers.h Loading commit data...
dialog_hotkeys_editor.h Loading commit data...
dialog_shim.h Loading commit data...
dlist.h Loading commit data...
drawtxt.h Loading commit data...
dsnlexer.h Loading commit data...
eda_dde.h Loading commit data...
eda_doc.h Loading commit data...
eda_text.h Loading commit data...
fctsys.h Loading commit data...
filter_reader.h Loading commit data...
footprint_info.h Loading commit data...
fp_lib_table.h Loading commit data...
fpid.h Loading commit data...
gestfich.h Loading commit data...
gr_basic.h Loading commit data...
hashtables.h Loading commit data...
hotkey_grid_table.h Loading commit data...
hotkeys_basic.h Loading commit data...
html_messagebox.h Loading commit data...
id.h Loading commit data...
kicad_device_context.h Loading commit data...
kicad_msvc.h Loading commit data...
kicad_string.h Loading commit data...
layers_id_colors_and_visibility.h Loading commit data...
length.h.usuned Loading commit data...
macros.h Loading commit data...
menus_helpers.h Loading commit data...
msgpanel.h Loading commit data...
newstroke_font.h Loading commit data...
online_help.h Loading commit data...
pad_shapes.h Loading commit data...
painter.h Loading commit data...
param_config.h Loading commit data...
pcbcommon.h Loading commit data...
pcbstruct.h Loading commit data...
plot_common.h Loading commit data...
richio.h Loading commit data...
rtree.h Loading commit data...
sch_base_frame.h Loading commit data...
sch_item_struct.h Loading commit data...
trigo.h Loading commit data...
wildcards_and_files_ext.h Loading commit data...
worksheet.h Loading commit data...
wxBasePcbFrame.h Loading commit data...
wxEeschemaStruct.h Loading commit data...
wxPcbStruct.h Loading commit data...
wxstruct.h Loading commit data...
xnode.h Loading commit data...