Maciej Suminski
4026cb6c58
Moved zoom limits and area boundaries handling to VIEW.
2015-05-18 13:48:13 +02:00
Maciej Suminski
cbb86c3b9c
Fixed zooming with Apple pointing devices (GAL).
2015-05-18 13:48:12 +02:00
Maciej Suminski
2043d4696f
Scrollbars (GAL).
2015-05-18 13:48:10 +02:00
Maciej Suminski
d281d86eee
Fixed undo/redo display refresh for miras & dimensions (GAL).
2015-04-17 12:15:07 +02:00
Maciej Suminski
9e8719d3ff
Fixed overlapping segment endings in OpenGL view.
2015-03-30 14:09:56 +02:00
Maciej Suminski
143f52eb4d
VIEW_CONTROLS::CaptureCursor()
2015-03-10 13:20:38 +01:00
Maciej Suminski
e6a10faab7
FIxed a few clang warnings.
2015-03-09 11:06:54 +01:00
Tomasz Włostowski
8bd9dd49bb
view: added quick hiding mechanism in VIEW/VIEW_ITEM
2015-02-18 00:43:02 +01:00
Maciej Suminski
94a46bf2df
Fixed pcbnew crash when a locked footprint is dragged from an edge of the screen.
2014-08-01 11:28:08 +02:00
Maciej Suminski
8a5fedb728
Code formatting and cleaning.
2014-07-09 11:22:43 +02:00
Maciej Suminski
5134781a38
GAL view in pad properties dialog - initial version.
2014-07-09 11:22:43 +02:00
Maciej Suminski
0fc93666c6
Rework to support multiple views with OpenGL GAL canvas.
2014-07-09 11:22:42 +02:00
Maciej Suminski
13e67e1f3c
Fixed VIEW::SetViewport().
2014-07-09 11:22:42 +02:00
Lorenzo Marcantonio
89f14906a4
- Added the courtyard/fabrication layer to the layer combo and layer
...
panel
- Corrected handling of scrollability in layer panel (fixes 1336996)
2014-07-04 10:55:51 +02:00
Bernhard Stegmaier
60a86853ec
Removed a few warnings.
2014-06-05 12:40:26 +02:00
Maciej Suminski
0e69277074
Fix for vertical/horizontal (using Ctrl/Shift + mousewheel) panning in GAL canvas.
2014-05-31 11:48:27 +02:00
Tomasz Włostowski
5bf50ee910
VIEW: added CalculateExtents() method
2014-05-14 13:48:29 +02:00
Maciej Suminski
129e26d512
Disable autopanning when GAL panel does not have focus.
2014-05-14 09:42:16 +02:00
Maciej Suminski
2f5103bc67
Fixed jumpy zoom when hotkeys and scroll wheel were used alternatively.
2014-05-13 11:22:51 +02:00
Maciej Suminski
89161331e4
Fixed refreshing issues (DRC, new items after reloading netlist and probably many other places).
2014-04-07 15:35:50 +02:00
Maciej Suminski
39bca76df7
>Added handled hotkeys:
...
- resetting relative coordinates
- switching units
- not official: changing transparency for layers (works only for main layers, does not work on vias/pads/etc.)
2014-03-24 18:28:21 +01:00
Maciej Suminski
dbc4a8f292
GAL zooms in and out using the default hot keys (F1/F2).
...
Screen size is saved in VECTOR2I instead of VECTOR2D.
2014-03-20 08:47:31 +01:00
Maciej Suminski
f6959c039c
Comments.
2014-03-18 11:04:52 +01:00
Maciej Suminski
afc56d3f6f
Moved panning boundaries and scale limits from VIEW to VIEW_CONTROL.
2014-03-12 17:09:53 +01:00
Maciej Suminski
54bf21768c
Added a few settings to make the layer settings more similar to KiCad defaults (moved vias to VIA_THROUGH_VISIBLE, added a few rules for required layers).
2014-03-11 10:58:58 +01:00
Maciej Suminski
ecb3aebce3
Fixed a bug caused by removed VIEW_ITEMs that were marked for updating.
2014-03-10 16:01:15 +01:00
Maciej Suminski
e6598e9d41
Added VIEW::ToWorld( double ).
...
TOOL_EVENT message is supposed to contain string as parameter.
Added missing header for class_drawsegment.h (KiROUND).
Renamed SELECTION_TOOL::containsSelected() to SELECTION_TOOL::selectionContains().
2014-02-27 16:13:27 +01:00
Maciej Suminski
d583280bb0
Minor code cleaning and optimizations.
2014-02-24 14:31:55 +01:00
Maciej Suminski
de637d2b8d
Fixed a missing group clearing and update for restored VIEW_ITEMs.Fixed a missing group clearing and update for restored VIEW_ITEMs.
2014-02-24 12:56:47 +01:00
Maciej Suminski
5ac699776d
Revisiting GAL:
...
- VIEW_ITEM::ViewUpdate() does not update items immediately. Now it marks them to be updated and the real update occurs on the next rendering frame.
- VIEW::InvalidateItem() made private.
- VIEW_LAYER::enabled -> visible
- Some functions moved to header files.
2014-02-21 16:57:18 +01:00
Maciej Suminski
3ecae4fa52
GAL::GetGridPoint() returns point in world coordinates.
2014-02-14 14:16:08 +01:00
Maciej Suminski
597e98dbf4
Cursor is in world coordinates.
2014-02-13 20:23:28 +01:00
Maciej Suminski
f9f0b46b63
Small GAL refactorization, mostly correcting constness.
2014-02-13 19:31:27 +01:00
Maciej Suminski
0f026bbe1d
Fixed snapping item in a wrong spot bug.
2014-02-06 17:29:13 +01:00
Maciej Suminski
0b9a8709f8
Modifiers (Alt/Shift/Control) are properly set for events when autopanning is active.
2014-02-04 13:38:18 +01:00
Maciej Suminski
b317894ea0
Snapping settings are valid while autopanning.
2014-02-04 09:44:16 +01:00
Maciej Suminski
3dc9f295a4
Fixed cursor force position option.
2013-12-20 16:07:58 +01:00
Maciej Suminski
84c496e138
Upstream merge
2013-12-19 11:15:27 +01:00
Maciej Suminski
4a0407fb69
Removed some debug logs.
2013-12-18 12:46:18 +01:00
Maciej Suminski
d8acd1c718
Moved Init() & Reset() from TOOL_INTERACTIVE to TOOL_BASE.
...
Added REASON enum for Reset() function, so tools will know why a reset occured.
Fixed SELECTION_TOOL (it was bailing out, when a new board was loaded and some items were still selected).
Added removal of VIEW_ITEM groups after changing layers and removing items.
2013-12-09 10:42:38 +01:00
Maciej Suminski
aa7168708c
Merged upstream
2013-12-05 13:24:27 +01:00
Maciej Suminski
7d788109fe
Merged upstream
2013-12-03 16:43:53 +01:00
Maciej Suminski
08fd9d8cbd
Overridden ViewUpdate() for MODULE class, so it handles its pads, drawings and texts.
2013-12-02 14:35:05 +01:00
Maciej Suminski
06f4662ea0
Profile counter simplified, so it should be more portable.
2013-11-27 09:46:59 +01:00
Maciej Suminski
89b80b2bcd
Merged rtree.h, to avoid code duplication.
...
Fixes the case, when waste is never greater then the worst case and seeds assignment does not occur.
2013-11-13 17:03:22 +01:00
Maciej Sumiński
bb0f4b9ac3
Patches one by Lorenzo, one by Orson
2013-11-06 11:17:42 -06:00
Maciej Suminski
bc305859b2
Mainly case changes.
2013-10-14 20:40:36 +02:00
Maciej Suminski
0ac3e1fbf2
Namespace KiGfx->KIGFX.
...
template<> -> template <>
Some more reformatting according to uncrustify results.
2013-10-14 16:13:35 +02:00
Maciej Suminski
54946f46f7
Fixed memory leak caused by ViewUpdate() with VIEW_ITEM::GEOMETRY/LAYER parameters.
2013-10-02 13:57:21 +02:00
Maciej Suminski
86000832fe
Added typedefs for VIEW_GROUP iterators. Fixed improper order of layer drawing for VIEW_GROUP items.
2013-10-02 10:19:48 +02:00
Maciej Suminski
87a9964c78
VIEW_GROUP now does not change depth during drawing. Introduced functions for manipulating stored items.
...
FIxed problem of overlay being covered by other layers while panning.
Few minor fixes.
2013-10-01 16:55:33 +02:00
Maciej Suminski
936e0be090
Uncrustified the push&shove source, fixed some warnings.
2013-09-27 10:00:26 +02:00
Maciej Suminski
d1578e4e1a
Fixed cvpcb build.
2013-09-24 16:12:02 +02:00
Maciej Suminski
1de8eba49e
Added functions for refreshing the layer set occupied by a VIEW_ITEM.
2013-09-24 15:48:04 +02:00
Maciej Suminski
9b16651607
Added limits for VIEW scale values & panning area.
2013-09-18 17:36:54 +02:00
Maciej Suminski
dcb5d8f25c
Merged Tom's branch
2013-09-18 16:59:08 +02:00
tomasz.wlostowski@cern.ch
88ee288465
VIEW_CONTROLS: added ForceCursorPosition() and ShowCursor() methods
2013-09-18 13:15:42 +02:00
tomasz.wlostowski@cern.ch
dea793209d
VIEW: added GetTopLayer() method
2013-09-18 13:14:57 +02:00
Maciej Suminski
ab21124b71
Reenabled snapping for tools.
2013-09-16 16:46:02 +02:00
Maciej Suminski
573f9841df
Better way of marking 'brightened' mode for items.
2013-09-16 11:00:59 +02:00
Maciej Suminski
e00c8e92cb
Removed VIEW_LAYER.isDirty flag.
2013-09-13 11:38:16 +02:00
Maciej Suminski
42860b5d02
Changed VIEW::PrepareTargets() to more appropriate name VIEW::ClearTargets(). Added SELECTION layer to always-on-top list.
2013-09-13 11:28:47 +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
d9ff4b851a
Currently selected layer is displayed on the top.
2013-09-12 18:24:53 +02:00
Maciej Suminski
82fe1a4972
Merged Tom's branch
2013-09-12 17:42:28 +02:00
tomasz.wlostowski@cern.ch
f85bf48a4b
EDA_DRAW_PANEL_GAL: redraw stuff in a single place, with "coalescing"
...
Redraws can be requested way too often than it is required. This commit adds redraw timeout:
- if the view became dirty and there has been no redraw for longer than certain time, it is redrawed immediately
- otherwise, we wait for the next frame
This in general improves smoothness of rendering.
2013-09-12 11:40:16 +02:00
Maciej Suminski
b04de0cada
Fixed memory leaks in containers.
2013-09-12 09:44:57 +02:00
Maciej Suminski
f179183dea
Removed some dead code.
2013-09-11 16:38:40 +02:00
Maciej Suminski
afe2e27b0a
Moved GetColor() from PAINTER to RENDER_SETTINGS. Fixed recaching of custom items.
2013-09-11 11:39:46 +02:00
tomasz.wlostowski@cern.ch
9eb3916852
Merged kicad-gal-orson
2013-09-10 19:32:19 +02:00
tomasz.wlostowski@cern.ch
b73474bda6
VIEW_GROUP: added FreeItems() method
2013-09-10 19:25:02 +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
31f7ecc16a
First version of the move tool.
2013-09-09 09:34:52 +02:00
Maciej Suminski
ab4cb862b0
Solved refreshing issues.
2013-09-06 11:31:16 +02:00
Maciej Suminski
bf3690d841
More effective way of updating bounding boxes. IsCached() method made public. Removed some of unused fields from the layer description structure.
2013-09-04 16:23:26 +02:00
Maciej Suminski
8e88a621ba
Corrected behaviour of drag panning while autopanning is enabled.
2013-09-02 16:26:42 +02:00
Maciej Suminski
fef50dd81e
Changed way of naming VIEW_ITEM update flags to be more explicit.
...
VIEW_ITEMs save the layer numbers they use, it allowed to speed up removal of items.
2013-09-02 11:49:46 +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
3962464190
Fixed linking errors for apps other than pcbnew.
2013-08-26 10:43:22 +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
6b3742b76b
Mark layers as dirty on VIEW_ITEM removal.
2013-08-22 15:04:14 +02:00
Maciej Suminski
89a138c09e
Added handling keyboard events for the Tool framework.
2013-08-21 17:37:27 +02:00
Maciej Suminski
5adba827a6
Added VIEW_GROUP for grouping items to be displayed on a single layer.
2013-08-20 15:07:38 +02:00
Maciej Suminski
43ae1cb98d
Smarter way of the overlay rendering (overlay is always refreshed, while cached&noncached targets only if the viewport or items have changed).
2013-08-19 11:02:38 +02:00
Maciej Suminski
e697a2c41c
Functions for direct item drawing.
2013-08-19 09:44:50 +02:00
Maciej Suminski
402f3c6f2c
Added brightened mode for selecting items using disambiguation menu.
2013-08-08 12:30:00 +02:00
Maciej Suminski
8c37e70889
Different approach to item recaching.
2013-08-07 17:20:01 +02:00
Maciej Suminski
62ea71fcae
Fixed layers caching settings. Added some comments.
2013-08-07 10:52:50 +02:00
Maciej Suminski
f193e389ec
Moved highlighted flag from VIEW_ITEM to EDA_ITEM. Added brightened and selected flag to EDA_ITEM.
2013-08-06 09:31:08 +02:00
Maciej Suminski
8753bef2fa
Moved VIEW_ITEM::ViewGetRequiredLayers() functionality to the VIEW class. Now required layers are set per layer basis instead of per item.
2013-08-05 16:28:58 +02:00
tomasz.
8ea0f7ae5b
Merged Orson's changes
2013-08-02 17:28:09 +02:00
tomasz.
09182d814d
View: various fixes, added VIEW::IsDirty()
2013-08-02 16:51:38 +02:00
Maciej Suminski
190ed58568
Code refactoring.
2013-07-30 18:29:54 +02:00
Maciej Suminski
be012cac94
Added initialization of variable, preventing unconditional jumps. Fixed typos in comments.
2013-07-29 14:12:27 +02:00
Maciej Suminski
618a5f0e75
OpenGL multitarget rendering (compositing).
2013-07-23 18:39:07 +02:00
Maciej Suminski
c5ca075e24
Added an interface for highlighting.
2013-07-17 10:21:46 +02:00
Maciej Suminski
7739cfef2f
Added support for multiple active layers (colored ones in the high contrast mode).
...
Added separate layers for pad netnames (now these are divided into multilayer/top/bottom pads).
More appropriate layers are selecting a copper layer in the high contrast mode (now it shows the copper layer itself, vias & multilayer pads and netnames).
2013-07-16 13:40:53 +02:00
Maciej Suminski
cbec733deb
Refactored code responsible for high contrast mode. Now it allows to have more than one layer on the top.
...
Selecting layer using the dropdown list on the toolbar influences the layer displayed in high contrast mode.
2013-07-16 09:26:29 +02:00
Maciej Suminski
b7447ff05e
Remove updating of non-cached layers.
2013-07-08 15:24:44 +02:00
Maciej Suminski
5a0869f2e2
Added 'required layers' option for drawn items.
2013-07-08 09:28:58 +02:00
Maciej Suminski
e29a829a70
Added implementation of level of details per layer and item type pairs basis (items on every layer have a possibility to define the minimum VIEW scale to be shown).
2013-07-04 18:45:00 +02:00
Maciej Suminski
9c4e02379a
Added the 'cached' parameter for VIEW_LAYER. The parameter decides if items drawn on the layer should be cached or drawn in immediate mode.
...
Removed m_useGroups from VIEW, as now groups are enabled per layer.
2013-07-04 17:02:20 +02:00
Maciej Suminski
58de62aacc
High contrast mode with showing the selected layer on the top.
2013-06-26 16:31:52 +02:00
Maciej Suminski
db74de74f5
Added possibility to change cached layer color (for the purpose of high contrast display).
2013-06-25 17:12:54 +02:00
Maciej Suminski
1fc0113b06
Removed unnecessary casting from VIEW_ITEM to EDA_ITEM. Added Type() function to VIEW_ITEM.
2013-06-18 17:01:23 +02:00
Maciej Suminski
cd517f67db
Added VBO_CONTAINER as a faster storage for vertices (OPENGL_GAL), tuned for exchanging data with GPU.
...
Removed a few unnecessary variables and fields from OPENGL_GAL.
Added function GAL::ClearCache() for freeing memory used by cached items.
Fixed a few memory leaks (tesselator, PAINTER's settings & VIEW_ITEM's groups).
Changed a few functions into inlines.
2013-06-18 16:20:29 +02:00
Maciej Suminski
7a8e1fc6b4
Different way of measuring render time.
2013-05-16 17:17:35 +02:00
Maciej Suminski
c91b4ffbc4
Layer depth is set during items caching (so now they are rendered on proper layers).
2013-05-15 16:47:17 +02:00
Maciej Suminski
e1ecd301a7
Added some debug informations.
2013-05-15 09:17:36 +02:00
Maciej Suminski
135149e2d3
Fixed build for eeschema.
2013-05-14 10:46:43 +02:00
Maciej Suminski
bce9f685ea
Fixed Cairo issues and some possible memory leaks
2013-05-13 10:55:35 +02:00
Maciej Suminski
e8f33ac903
Fixed memleak, removed excessive recaching, still there is a problem with Cairo caching
2013-05-10 16:05:40 +02:00
Maciej Suminski
e9e4ed4230
Improved recaching (all items when a board is loaded), still needs some fixing (mem leak).
2013-04-30 17:55:24 +02:00
Maciej Suminski
191cb40e79
Introduction of VBO. Now only tracks are rendered in a very simple way.
2013-04-30 15:59:32 +02:00
Maciej Suminski
dd8601cbf8
Added caching of multilayer items (storing multiple group ids for items).
2013-04-24 11:28:11 +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
ad4a72ff11
Cairo now renders layers properly (colors are not saturated after layer composition), but slower.
2013-04-19 18:19:50 +02:00
Maciej Suminski
062fc2d200
Some cleanup.
2013-04-19 18:19:20 +02:00
Maciej Suminski
5d704c9692
Turned on group recaching on GAL change.
2013-04-18 17:10:02 +02:00
Wayne Stambaugh
b1144a864f
wxWidgets 2.8.12 build fix
2013-04-12 09:30:18 +02:00
Maciej Suminski
850c0a8473
Added high contrast display mode using GAL rendering.
...
New methods in VIEW class: SetTopLayer(), EnableTopLayer() for managing the top layer display.
New method in PCB_RENDER_SETTINGS class: LoadDisplayOptions() for applying display settings like high-contrast, outline display of items, etc.
2013-04-08 10:50:47 +02:00
Maciej Suminski
18374e53a0
common/painter.cpp: Removed unnecessary header inclusion, added variable initialization
...
common/view/view.cpp: Added line to comply with coding style
2013-04-04 11:18:47 +02:00
Maciej Suminski
a97c9a1b96
Added possibility to show/hide layers using right sidebar (PCB layer widget) in the GAL rendered view.
2013-04-02 11:02:35 +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