1. 02 Apr, 2013 1 commit
    • 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
  2. 28 Mar, 2013 4 commits
  3. 23 Mar, 2013 2 commits
  4. 20 Mar, 2013 2 commits
    • Wayne Stambaugh's avatar
      Encapsulation, bug, context menu string, and, coding policy fixes. · 25e7abec
      Wayne Stambaugh authored
      * Complete encapsulation of the ZONE_CONTAINER class.
      * Fixed a bug in the EDA_TEXT::Format() default effects behavior due to
        improper conversion to internal units and missing test for default
        thickness.
      * Improved grammar of some Pcbnew context menu strings.
      * Moved some more cleverly hidden BOARD object methods into class_board.cpp.
      * Lots of coding policy and documentation fixes.
      25e7abec
    • Dick Hollenbeck's avatar
      Consistent with my email posting from a day or two ago, remove the translated · 25b65b2e
      Dick Hollenbeck authored
      standard layer name support from BOARD::GetLayerName().  This function evolved
      in a contorted direction over time, and was being asked to return one of 3
      different kinds of layer names, even though it only took a boolean to control
      that choice.  
      
      Users are better served by forcing them to get to know the concise new 
      English Standard layer names.  This is because these concise names show up
      in the "pretty" footprint/module files as the standard representation of
      both feature and copper layers.
      
      Change the name of BOARD::GetDefaultLayerName() to GetStandardLayerName().
      Drop boolean argument to both BOARD::GetStandardLayerName() and 
      BOARD::GetLayerName().
      25b65b2e
  5. 19 Mar, 2013 1 commit
  6. 18 Mar, 2013 2 commits
  7. 17 Mar, 2013 4 commits
  8. 16 Mar, 2013 3 commits
  9. 15 Mar, 2013 6 commits
  10. 14 Mar, 2013 2 commits
  11. 13 Mar, 2013 5 commits
  12. 12 Mar, 2013 3 commits
  13. 11 Mar, 2013 2 commits
  14. 10 Mar, 2013 3 commits