• 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
..
dialog_about Loading commit data...
dialogs Loading commit data...
gal Loading commit data...
view Loading commit data...
CMakeLists.txt Loading commit data...
base_screen.cpp Loading commit data...
base_struct.cpp Loading commit data...
base_units.cpp Loading commit data...
basicframe.cpp Loading commit data...
bezier_curves.cpp Loading commit data...
bitmap.cpp Loading commit data...
block_commande.cpp Loading commit data...
build_version.cpp Loading commit data...
class_bitmap_base.cpp Loading commit data...
class_colors_design_settings.cpp Loading commit data...
class_layer_box_selector.cpp Loading commit data...
class_marker_base.cpp Loading commit data...
class_page_info.cpp Loading commit data...
class_plotter.cpp Loading commit data...
class_undoredo_container.cpp Loading commit data...
common.cpp Loading commit data...
common_plotDXF_functions.cpp Loading commit data...
common_plotGERBER_functions.cpp Loading commit data...
common_plotHPGL_functions.cpp Loading commit data...
common_plotPDF_functions.cpp Loading commit data...
common_plotPS_functions.cpp Loading commit data...
common_plotSVG_functions.cpp Loading commit data...
common_plot_functions.cpp Loading commit data...
confirm.cpp Loading commit data...
convert_basic_shapes_to_polygon.cpp Loading commit data...
copy_to_clipboard.cpp Loading commit data...
dcsvg.cpp.unused Loading commit data...
dialog_shim.cpp Loading commit data...
displlst.cpp Loading commit data...
dlist.cpp Loading commit data...
drawframe.cpp Loading commit data...
drawpanel.cpp Loading commit data...
drawpanel_gal.cpp Loading commit data...
drawtxt.cpp Loading commit data...
dsnlexer.cpp Loading commit data...
eda_dde.cpp Loading commit data...
eda_doc.cpp Loading commit data...
eda_text.cpp Loading commit data...
edaappl.cpp Loading commit data...
filter_reader.cpp Loading commit data...
footprint_info.cpp Loading commit data...
fp_lib_table.cpp Loading commit data...
fp_lib_table.keywords Loading commit data...
fpid.cpp Loading commit data...
gestfich.cpp Loading commit data...
getrunningmicrosecs.cpp Loading commit data...
gr_basic.cpp Loading commit data...
hotkey_grid_table.cpp Loading commit data...
hotkeys_basic.cpp Loading commit data...
html_messagebox.cpp Loading commit data...
msgpanel.cpp Loading commit data...
netlist.keywords Loading commit data...
newstroke_font.cpp Loading commit data...
painter.cpp Loading commit data...
pcb.keywords Loading commit data...
pcb_plot_params.keywords Loading commit data...
pcbcommon.cpp Loading commit data...
profile.h Loading commit data...
projet_config.cpp Loading commit data...
richio.cpp Loading commit data...
sch_item_struct.cpp Loading commit data...
selcolor.cpp Loading commit data...
string.cpp Loading commit data...
trigo.cpp Loading commit data...
wildcards_and_files_ext.cpp Loading commit data...
worksheet.cpp Loading commit data...
wxwineda.cpp Loading commit data...
xnode.cpp Loading commit data...
zoom.cpp Loading commit data...