168 Commits

Author SHA1 Message Date
tomasz.wlostowski@cern.ch
88ee288465 VIEW_CONTROLS: added ForceCursorPosition() and ShowCursor() methods 2013-09-18 13:15:42 +02:00
Maciej Suminski
ab21124b71 Reenabled snapping for tools. 2013-09-16 16:46:02 +02:00
Maciej Suminski
f9cc914960 Mouse movement events are sent during autopanning, as the cursor position changes in the world coordinates (even if it stays still in the screen coordinates). It allows tools to update their state, as if the mouse was moved. 2013-09-13 10:26:08 +02:00
Maciej Suminski
d0749a3a52 Small refactoring. 2013-09-09 14:31:27 +02:00
Maciej Suminski
cba1e0bf91 Stops autopanning on left mouse button release. 2013-09-09 13:57:56 +02:00
Maciej Suminski
dbbe628b8c Modified interfaces for [WX_]VIEW_CONTROLS. 2013-09-09 10:53:46 +02:00
Maciej Suminski
8e88a621ba Corrected behaviour of drag panning while autopanning is enabled. 2013-09-02 16:26:42 +02:00
Maciej Suminski
d0fc362ec6 Fixed warning. 2013-08-30 14:43:18 +02:00
Maciej Suminski
6fe086ab6d Added cursor snapping. 2013-08-28 16:25:42 +02:00
Maciej Suminski
215f35e237 Added mouse cursor drawing.
Added flipping mode.
2013-08-27 18:08:32 +02:00
Maciej Suminski
b03f97b991 Removed some unnecessary stuff and added some comments to WX_VIEW_CONTROLS. 2013-08-23 10:56:52 +02:00
Maciej Suminski
961a8c2eca Added autopanning functionality to WX_VIEW_CONTROLS. 2013-08-22 18:42:53 +02:00
Maciej Suminski
89a138c09e Added handling keyboard events for the Tool framework. 2013-08-21 17:37:27 +02:00
Maciej Suminski
190ed58568 Code refactoring. 2013-07-30 18:29:54 +02:00
Maciej Suminski
4868af8b62 Changed view control settings to KiCad default (panning, zooming, etc.) 2013-04-23 12:07:14 +02:00
Maciej Suminski
0a55a2b672 Fixed wheel scroll event on Windows 2013-04-22 11:08:02 +02:00
Maciej Suminski
062fc2d200 Some cleanup. 2013-04-19 18:19:20 +02:00
Maciej Suminski
e262b32198 Introduction of Graphics Abstraction Layer based rendering for pcbnew.
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
2013-04-02 08:54:03 +02:00