7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-18 09:19:17 +00:00
Commit Graph

437 Commits

Author SHA1 Message Date
Maciej Suminski
80956ef1e6 Added GAL::DrawPolygon(SHAPE_POLY_SET) & GAL::DrawPolyLine(SHAPE_LINE_CHAIN) 2017-01-27 19:08:32 +01:00
Maciej Suminski
88eb648cbb Alternative way of handling OpenGL initialization & errors
Some faults could result in a crash, as they were not properly
handled. Now the rendering loop is wrapped with try..catch block
which will revert to Cairo in case of an error and display an
error message.

Fixes: lp:1655766
* https://bugs.launchpad.net/kicad/+bug/1655766
2017-01-13 16:50:36 +01:00
Maciej Suminski
ca085de6aa Initialize fields in COMPOSITOR 2017-01-13 16:46:45 +01:00
Maciej Suminski
e0577c0218 checkGlError() may throw exceptions or display an error message 2017-01-13 16:46:02 +01:00
Maciej Suminski
5a7604cbb4 More code formatting 2017-01-13 10:36:59 +01:00
Maciej Suminski
67b0a8c990 Fixed type casting in SHADER class 2017-01-11 17:37:10 +01:00
Maciej Suminski
da00d64877 OpenGL antialising code clean up & formatting 2017-01-11 16:20:37 +01:00
decimad
e71070fe1b final touch-ups (license information, includes) 2017-01-11 16:20:37 +01:00
decimad
77138e3702 Add UI control to set up gal opengl antialiasing and load/store the settings 2017-01-11 16:20:37 +01:00
decimad
2a8dd508c4 Add smaa (subsample morphological antialiasing) 2017-01-11 16:20:37 +01:00
decimad
02bb410cdb Refactor COMPOSITOR/OPENGL_COMPOSITOR to enable customization of scene rendering and presentation 2017-01-11 16:20:35 +01:00
decimad
77f9cd0cb0 remove custom shader header generation build-step in favor of c++11 raw string literals
rework shader loading code to handle an arbitrary amount of to-be-concatenated strings
2017-01-11 16:20:34 +01:00
decimad
047f52e7cb Move builtin font resources out of opengl_gal translation unit 2017-01-11 16:20:33 +01:00
Maciej Suminski
3ea8f12555 Handle flipped view text rendering for Cairo 2016-12-12 16:45:52 +01:00
Maciej Suminski
a2a950fdae Reduced the Cairo command entry size 2016-12-12 16:45:52 +01:00
Maciej Suminski
660e4ca9d4 Cairo group arguments are stored in a union. 2016-12-12 16:45:52 +01:00
Maciej Suminski
89055c4425 Code formatting 2016-12-12 16:45:52 +01:00
Tomasz Włostowski
da28e163d2 Optimizations/fixes to the VIEW/GAL classes:
- much faster Cairo rendering (outperforms legacy)
- improvements in VIEW update handling
- fixed issue with grid rendering in flip view mode
2016-12-12 16:45:52 +01:00
Tomasz Włostowski
c661c30f68 pcbnew: added flip view mode 2016-12-12 16:45:52 +01:00
jean-pierre charras
30df041de6 fix shadowed local variables 2016-11-25 18:17:34 +01:00
decimad
402f53a302 update font code along with the changes done in the msdf atlas tool (use codepoint spans and refined char placement)
add font coordinate system clarification drawing (svg)
2016-10-20 14:31:09 +02:00
Simon Richter
59c81976dc Explicitly mark overriding functions. 2016-09-24 14:53:15 -04:00
Simon Richter
da5699de0a Replace boost::shared_ptr with std::shared_ptr. 2016-06-29 11:09:55 -04:00
Maciej Suminski
b7ec4ea160 Corrected the last instance check in OPENGL_GAL. 2016-06-10 17:07:12 +02:00
Simon Richter
5ce4abd0ac Use size_t for sizes and offsets. 2016-06-10 17:06:00 +02:00
Maciej Suminski
3fcae6b120 Fixes for OpenGL resources handling. 2016-06-07 14:42:42 +02:00
Maciej Suminski
b4ad18a3ea Do not rebuild shaders on each OPENGL_GAL construction. 2016-06-03 15:46:13 +02:00
Maciej Suminski
68b6da57c0 Removed OPENGL_GAL::instanceCounter. 2016-06-03 15:46:12 +02:00
Maciej Suminski
01f32dd52c GL_CONTEXT_MANAGER class to avoid unexpected GL context switches. 2016-06-03 15:46:12 +02:00
jean-pierre charras
3e2cae946c Corrected wxDC objects used by EDA_DRAW_PANEL_GAL & OPENGL_GAL. 2016-06-03 15:46:11 +02:00
Maciej Suminski
3ca7026aa0 More robust checks for OpenGL canvas visibility. 2016-05-20 12:06:08 +02:00
Maciej Suminski
8d952f35c6 Fixed text vertical alignment for bitmap font (OpenGL). 2016-05-03 11:58:48 +02:00
Maciej Suminski
ed0b95d710 Added an option change grid style. Refactored DIALOG_SET_GRID. GAL can draw grid using lines or dots now. DIALOG_SET_GRID was refactored to use Transfer{From,To}Window() methods. 2016-05-02 16:15:24 +02:00
Maciej Suminski
f3fae70fb2 Removed 'inline' keyword from virtual functions. 2016-05-02 16:15:24 +02:00
Maciej Suminski
58ed0c8cce Improved grid drawing routine (OpenGL). 2016-05-02 16:15:24 +02:00
Maciej Suminski
2f09e0ee40 Alternative version of CACHED_CONTAINER::defragmentResize() Certain GPUs do not support glCopyBufferSubData(), therefore there is an alternative version working with good, old memcpy(). 2016-05-02 16:15:24 +02:00
Maciej Suminski
fff3abc9a0 Support for overbars in bitmap fonts (OpenGL GAL). 2016-05-02 16:12:18 +02:00
Maciej Suminski
59fe8df269 Split bitmap text drawing routine into smaller functions (GAL). 2016-05-02 16:12:18 +02:00
Maciej Suminski
5a8adcdf52 Improved testing/profiling code for CACHED_CONTAINER. Switched from wxLogDebug to wxLogTrace. Adjusted CACHED_CONTAINER_TEST levels required for certain tests. Added a test to check used space in the container. 2016-05-02 16:12:17 +02:00
Maciej Suminski
54f3105cfb More changes to CACHED_CONTAINER. Removed m_itemSize field (error-prone, as it had to be synchronized with m_item->GetSize()) Fixed a bug in reallocate() method, changed a bit it is behaviour. VERTEX_ITEM is not stored in the item set if its size is 0. 2016-05-02 16:12:17 +02:00
Maciej Suminski
a9c3a1730b Free chunks in CACHED_CONTAINER only if they are really not needed. 2016-05-02 16:12:16 +02:00
Maciej Suminski
702be4903f Vertices are stored in GPU memory (OpenGL GAL). 2016-05-02 16:12:16 +02:00
Maciej Suminski
01912aaabd Minor refactoring in CACHED_CONTAINER. 2016-05-02 16:12:16 +02:00
Maciej Suminski
bda3011519 Initial support for bitmap fonts (OpenGL GAL). 2016-05-02 16:04:45 +02:00
Maciej Suminski
82a63a8c2a Fixed the drawing order for selected items in OpenGL GAL. 2016-05-02 15:56:17 +02:00
Maciej Suminski
c0465e5519 Instance counter for OPENGL_GAL to avoid double freeing. 2016-05-02 15:56:16 +02:00
Maciej Suminski
4cca3bc368 Minor OPENGL_COMPOSITOR refactoring. 2016-05-02 15:56:16 +02:00
Maciej Suminski
1927f3a787 Unified way of checking OpenGL errors. 2016-05-02 15:56:14 +02:00
Maciej Suminski
b143ce6b0f Moved text settings from STROKE_FONT to GAL. 2016-05-02 15:56:12 +02:00
Maciej Suminski
da312db7a4 Fixed a wxWidgets assertion. Newer wxWidgets (3.1) display a message saying that horizontal alignment flags are ignored with wxEXPAND. 2016-05-02 15:56:12 +02:00
Maciej Suminski
113e75c5c5 VERTEX_MANAGER functions return false in case of failure. 2016-05-02 15:56:11 +02:00
Maciej Suminski
0cfa360390 Added VERTEX_MANAGER::Reserve() function. 2016-05-02 15:56:10 +02:00
jean-pierre charras
92ce9c1193 Rework on class EDA_TEXT and related classes and draw text functions. More work: remove useless or duplicate code (from legacy graphic text plot functions). Move basic_gal code to separate files. 2016-03-25 09:26:11 +01:00
jean-pierre charras
bc699c8d8f Rework on class EDA_TEXT and related classes and draw functions. More work. Eechema: in rotate texts: redraw the full screen to avoid garbage on screen. 2016-03-23 13:16:27 +01:00
jean-pierre charras
b59a07128f Fix a compil issue on Jenkins 2016-03-23 09:27:12 +01:00
jean-pierre charras
30d72045e7 Rework on class EDA_TEXT and related classes and draw functions (Note: this is a work in progress):
* remove duplicate code between  draw functions and STROKE_FONT used in GAL. Use only  STROKE_FONT methods in draw, plot and test DRC function for texts. It remove slightly different shapes between GAL and other calculations.
* fix incorrect bounding box for texts with overbar. Especially noticeable for texts with overbar inside a copper zone in Pcbnew.
* fix a few minor other bugs related to graphic texts.
2016-03-23 08:41:47 +01:00
jean-pierre charras
99e81aeb9c Fix incorrect (too small) bounding box EDA_TEXT, noticeable when chars like j or { are used in zone fill functions.
I tried to merge some constants used both in legacy mode and gal mode (which were, before this patch, separate constants).
There is still a serious work to avoid different calculation code for the same text in draw and plot functions.
Work in progress to merge these calculation functions.
2016-03-11 13:08:34 +01:00
Maciej Suminski
4951285a67 GAL::DrawPolygon() and GAL::DrawPolyline() variants that work with VECTOR2D array. 2016-01-20 15:16:39 +01:00
Tomasz Wlostowski
991b9d509a GAL: apply grid offset when board is loaded and respect grid color setting. (fixes lp:1533168) 2016-01-13 13:37:52 -05:00
Maciej Suminski
231eaecf34 Removed the included GLM library, switched to the system one. 2015-12-08 10:56:53 +01:00
Maciej Suminski
0386a4df94 Bulletproof canvas switching. 2015-08-21 10:33:36 +02:00
Maciej Suminski
4739c54f0e Few minor updates to CACHED_CONTAINER & GPU_MANAGER classes. - Reduced the number of memory reallocations - Updated code for tests 2015-08-03 21:12:00 +02:00
Simon Richter
27a2098e0a Add <cstddef> include for offsetof 2015-07-30 14:29:50 +02:00
Maciej Suminski
28a270a328 Refactored grid origin point drawing (GAL). 2015-06-18 17:51:53 +02:00
Maciej Suminski
709697ea40 Better way to determine supported OpenGL version and extensions. 2015-04-20 14:16:41 +02:00
Maciej Suminski
9e8719d3ff Fixed overlapping segment endings in OpenGL view. 2015-03-30 14:09:56 +02:00
Alexander Golubev
f2ce42ddb5 fix several -Woverloaded-virtual warnings in common/* dir
- CACHED_CONTAINER::GetVertices: removed useless and unused function
   which does nothing but tainted the API
 - SHAPE_LINE_CHAIN::Collide( const BOX2I& aBox, int aClearance ):
   removed an outdated function with assert(false)
 - SHAPE::BBox(): fix a small typo in the doc string
2015-03-06 15:26:47 +01:00
Maciej Suminski
4fb9bce354 Code formatting. 2015-02-18 17:53:46 +01:00
Tomasz Włostowski
83ffb8969f gal: minor comment fix 2015-02-18 00:45:29 +01:00
Maciej Suminski
b1ace1607b Reworked GAL switching.
Now OpenGL can report its problems instead of shutting down the application.
2015-02-15 02:18:35 +01:00
jean-pierre charras
24f516f6ae Fix many doxygen warnings (due to missing info, old comments, typo ...) when building the doxygen doc. 2014-11-02 17:25:04 +01:00
Paulo Henrique Silva
3132690c0b Fix slow opengl canvas on Mac OS 10.9. 2014-09-13 19:31:40 +02:00
Maciej Suminski
a57f7ae8cd Fix OpenGL canvas freeze under Windows. 2014-07-20 21:14:42 +02:00
Maciej Suminski
65c116621d Added support for changing the cursor size. 2014-07-09 15:10:32 +02:00
Maciej Suminski
7645ed8601 Grid offset is recomputed only when settings are changed. 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
0304598a71 Fixed vertical alignment for strings that contain a newline character at the end (GAL). 2014-07-07 13:09:44 +02:00
Maciej Suminski
fb0045a898 Bugfix: Bottom layer not correctly handled in (PNS) Interactive router. 2014-07-07 10:48:47 +02:00
Bernhard Stegmaier
60a86853ec Removed a few warnings. 2014-06-05 12:40:26 +02:00
Maciej Suminski
35e343597b Grid in GAL takes into account grid offset. 2014-06-04 17:56:44 +02:00
Maciej Suminski
d27ea7895d Moved background color settings from GAL to RENDER_SETTINGS. Added RENDER_SETTINGS::TranslateColor() to convert between EDA_COLOR_T and COLOR4D. 2014-05-14 10:35:12 +02: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
b6e3b3a3f9 Merged selection_tool branch. 2014-03-06 10:43:40 +01:00
Maciej Suminski
c5a3c1082a Removed a few RecacheAllItems() calls, some of them changed to specific type recaching (using TYPE_COLLECTOR & VIEW_ITEM::ViewUpdate() ).
Removed OPENGL_GAL::SetStrokeColor().
2014-02-25 14:28:09 +01:00
Maciej Suminski
151826b206 Upstream merge. 2014-02-21 11:05:28 +01:00
unknown
40b30d43d3 GLM (tool for opengl) update to 0.9.4.6 2014-02-17 19:42:52 +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
5c9e7d9b9b Merged the lp:~cern-kicad/kicad/selection_tool branch. 2014-02-06 12:48:18 +01:00
Maciej Suminski
b9df36eca5 GAL::GetGridPoint() takes a const reference. 2014-02-06 12:38:06 +01:00
Maciej Suminski
3827f495ca Ratsnest color is saved in RENDER_SETTINGS. Temporary ratsnest is drawn using a brightened color. 2014-01-31 11:16:01 +01:00
Dick Hollenbeck
c264823731 8 bit string relief via class UTF8 2014-01-01 20:17:07 -06:00
Dick Hollenbeck
a2f6faf161 Switch STROKE_FONT::Draw() to take "const wxString&" rather than "wxString" by value. 2013-12-05 12:59:27 -06:00
Maciej Suminski
24550f3f38 Tilda handling for STROKE_FONT class. 2013-12-05 16:58:32 +01:00
Maciej Suminski
6be27ae2ea Glyphs and their bounding boxes are held in vectors instead of deque.
Moved scaling of font glyphs to the moment when they are created (eliminated a few multiplications unnecessary variables).
Changed some magic numbers into constants.
2013-12-05 16:29:54 +01:00
Maciej Suminski
ca11855f12 Changed std::wstring to wxString. 2013-12-05 16:00:24 +01:00
Maciej Suminski
7678983e38 Fixed non ASCII characters drawing using GAL. 2013-12-03 11:00:52 +01: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
22045b61ea Converted tabs to spaces. Removed trailing whitespaces. 2013-10-14 13:43:57 +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
c00533a150 Merged kicad-gal 2013-09-20 15:48:27 +02:00
Maciej Suminski
82fe1a4972 Merged Tom's branch 2013-09-12 17:42:28 +02:00
tomasz.wlostowski@cern.ch
c3759d870c COLOR4D: added Saturate(), FromHSV(), ToHSV() methods.
Used in highlighting/routing code.
2013-09-12 11:35:42 +02:00
Maciej Suminski
b04de0cada Fixed memory leaks in containers. 2013-09-12 09:44:57 +02:00
Maciej Suminski
c5d3376c26 Changed some 'magic numbers' into constants. Added const modifier in appropriate spots. 2013-09-11 11:34:10 +02:00
Maciej Suminski
7d4aed1099 Fixed COLOR4D( EDA_COLOR_T aColor ) and added asserts. 2013-09-11 10:30:39 +02:00
Maciej Suminski
bd8998d1da Fixed cursor drawing for OpenGL. 2013-08-28 17:06:07 +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
89a138c09e Added handling keyboard events for the Tool framework. 2013-08-21 17:37:27 +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
bc69429a56 Added GetTarget() for GALs. 2013-08-06 14:57:48 +02:00
Maciej Suminski
7d5a456344 Code reformatting. 2013-08-06 10:30:09 +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
Camille Delbegue
2134e7de04 Remove a Clang warning and add a missing dependency to boost in cmake file. 2013-08-05 17:53:13 +02:00
Maciej Suminski
19b344806d Fixed the tesselator, so now it works with Windows. 2013-08-02 10:55:40 +02:00
Maciej Suminski
544726e4f3 New display style for grid (dotted). 2013-07-31 10:28:23 +02:00
Maciej Suminski
190ed58568 Code refactoring. 2013-07-30 18:29:54 +02:00
Maciej Suminski
790a1f8563 Made GAL backends settings more consistent. Fixed grid line width in the OpenGL backend. 2013-07-30 17:09:06 +02:00
Maciej Suminski
f9d74ccb70 Removed shaderless OpenGL backend. 2013-07-29 16:38:07 +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
c9199ea80a Fixed high contrast mode in OpenGL. Split display settings loading into more appropriate places. 2013-07-25 18:04:15 +02:00
Maciej Suminski
4076f99332 Added a layer compositor for the Cairo backend. 2013-07-25 14:40:04 +02:00
Maciej Suminski
27113348b9 Fixed blending function for OpenGL compositing. Corrected documentation, removed unnecessary functions. 2013-07-24 15:06:59 +02:00
Maciej Suminski
618a5f0e75 OpenGL multitarget rendering (compositing). 2013-07-23 18:39:07 +02:00
Maciej Suminski
5242fff9d7 Code refactorization. VBO_CONTAINER is split to [NON]CACHED_MANAGER, GPU_MANAGER and VERTEX_MANAGER. 2013-07-22 10:41:12 +02:00
Maciej Suminski
bbc0e8eb74 Refactorization of VBO_CONTAINER. 2013-07-17 18:49:38 +02:00
Maciej Suminski
861ea0592e Different approach to coloring netname labels. 2013-07-17 14:02:08 +02:00
Maciej Suminski
9374d642bf Fixind GLM headers problem. 2013-07-16 08:42:44 +02:00
Maciej Suminski
58280f749a Fixed multiline vertical strings drawing bug. 2013-07-09 10:00:23 +02:00
Maciej Suminski
6c3534bd35 Dynamic color setting for netnames. 2013-07-08 20:42:46 +02:00
Maciej Suminski
eb041ee2d3 Removed most of deprecated OpenGL calls. Items used to be drawn in immediate mode now are drawn using vertex arrays. 2013-07-05 14:01:33 +02:00
Maciej Suminski
408fb4f159 Removed pointers where they were not necessary. 2013-07-05 09:31:04 +02:00
Maciej Suminski
aff3787b34 Fixed drawing circles and semicircles using display lists. 2013-07-04 16:27:27 +02:00
Maciej Suminski
af5a695c85 Added functions for changing settings of used font in GAL. 2013-07-04 14:24:41 +02:00
Maciej Suminski
84392f1723 Moved STROKE_FONT from PAINTER to GAL. 2013-07-04 11:37:43 +02:00
Maciej Suminski
fe6c901a9f Shaders can handle integer parameters (uniforms). 2013-07-03 13:08:43 +02:00
unknown
4360860bee Removed different styles of line caps and line joins, leaving only round caps & joins.
Fixed drawing stroked semicircles using OpenGL backend.
2013-07-01 14:39:27 +02:00
Maciej Suminski
a73216fc95 Changed std::map to boost::unordered_map for storing memory chunks and groups information. 2013-07-01 13:20:48 +02:00
Maciej Sumiński
00847a8aed Colors are stored as unsigned bytes instead of floats. 2013-06-30 22:45:31 +02:00
Maciej Sumiński
27a6f8afd6 Shaders are built-in instead of being loaded from external files. 2013-06-30 19:31:16 +02:00
Maciej Sumiński
335bf72060 More debug information in case of failure compilation of shaders. 2013-06-30 15:37:46 +02:00
Maciej Suminski
bc8ea55092 VBO_CONTAINER: Changed new[]/delete[] pairs to realloc(), possibly reducing memory fragmentation and the container shrinking time. 2013-06-28 10:47:41 +02:00
Maciej Suminski
628c069a39 Faster circles & semicircles drawing for the shaderless OpenGL backend. Removed unnecessary variables and computations. 2013-06-27 16:05:15 +02:00
Maciej Suminski
332a7b4bd9 Groups are stored in map instead of deque, so it allows easier adding & removing. 2013-06-27 11:54:49 +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
1367d33cd8 Small speed up for the color change function (OpenGL_GAL). 2013-06-26 10:43:58 +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
fbc3d63c24 Draw the origin marker in OpenGL with shaders GAL. 2013-06-24 16:02:18 +02:00
Maciej Suminski
978b548c64 Small improvements to SHADER class. 2013-06-24 15:40:31 +02:00
Maciej Suminski
ef865aab68 Grid settings apply to GAL based rendering. 2013-06-24 14:33:02 +02:00
Maciej Suminski
81c674387e Added convertsion from wxColour to COLOR4D. 2013-06-24 10:32:08 +02:00
Maciej Suminski
08c54e8acf Passing COLOR4D parameter using constant reference. 2013-06-24 10:21:34 +02:00
Maciej Suminski
f7d85691c2 Added conversion from EDA_COLOR_T to COLOR4D. 2013-06-24 10:12:36 +02:00
Maciej Suminski
fd6ab6003d Bug fixes:
- VBO_CONTAINER::allocate() was returning wrong value in case of error
- framelimiter had wrong formula for computing destined period between frames
- removed _padding field from VBO_VERTEX, as it was not speeding up, but wasting memory
2013-06-20 13:16:12 +02:00
Maciej Suminski
83f5bd60c1 Moved fields containing information about currently used color, shader and transformation for vertices from VBO_ITEM to VBO_CONTAINER (OPENGL_GAL). 2013-06-19 10:50:46 +02:00
Maciej Suminski
4de43d7c5f Removed unnecessary functions from VBO_VERTEX. 2013-06-18 17:53:12 +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
8742dae4a4 Removed indices storing from VBO_ITEM as they are always consecutive numbers. Removed storing pointers to VBO_ITEMs that have to be drawn - instead they are memcpied to mapped GPU memory.
Some functions of VBO_ITEM became inline.
2013-06-06 11:52:39 +02:00
Maciej Suminski
8e1fe5d766 Changed data structure in VBO_ITEM. 2013-06-05 10:48:30 +02:00
Maciej Suminski
28511cf4fe Introducing shaders.
Shader's parameters are stored in VBO_ITEM. Changed VBO_ITEM data structure. Added UseShader() function for selecting shader for a given VBO_ITEM.
Added one main vertex & fragment shader program to be used for with all kinds of items (type of shader is selected using attributes that are stored in VBO). Currently available shaders are: at-least-1px-width line, filled circle and stroked circle.
Removed unnecessary param (aDepthOffset) from a few functions (OPENGL_GAL::drawSemiCircle(), OPENGL_GAL::drawLineCap()). Removed function OPENGL_GAL::DrawRoundedSegment(). Changed some asserts to debug info or error log.
2013-06-04 15:58:53 +02:00
Maciej Suminski
ad5d10a8ba Display linking errors in debug mode for shaders. Added SHADER::GetAttribute() function for getting shaders attribute location. 2013-06-03 10:54:24 +02:00
Maciej Suminski
d45008a847 Different way of rendering groups (with a single DrawElements call) in OpenGL GAL. 2013-05-16 18:43:25 +02:00
Maciej Suminski
7a1718d0f5 Changed functions for adding vertices in VBO mode to make code easier to read and understand. 2013-05-16 14:47:34 +02:00
Maciej Suminski
733e5a55e3 Faster way of caching items for OPENGL GAL. 2013-05-16 10:35:16 +02:00
Maciej Suminski
c9f9c4ddbc Added functionality for transformation of VBO vertices, extended functions like translate, rotate, scale using glm library. Removed D() macro, as it was not used, but in conflict with glm library. Added VBO_ITEMs for circles, semicircles. Now almost everything is drawn using VBO (besides polygons and grid). 2013-05-15 16:48:10 +02:00
Maciej Suminski
a43dd351df Assured that there are no excessive initializations 2013-05-15 16:47:01 +02:00
Maciej Suminski
a6c8beb73b Drawing tracks using PushVertices, added some comments, fixed formatting. 2013-05-14 10:38:25 +02:00
Maciej Suminski
32784ea191 Added possibility of adding multiple vertices to VBO_ITEM at once 2013-05-13 11:14:35 +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
191cb40e79 Introduction of VBO. Now only tracks are rendered in a very simple way. 2013-04-30 15:59:32 +02:00
Maciej Suminski
10dd5023e2 Removed BeginLayer and EndLayer functions. Resolved Cairo layers drawing problem in a different way. 2013-04-24 09:48:34 +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
e4bac0d91a Fixed resize issue (moved GAL panel into pane).
Tidied up event handlers.
2013-04-18 11:20:19 +02:00
Maciej Suminski
16a28348b4 Added const(..)& in GAL methods' parameters and change iterators to constant iterators. 2013-04-17 12:48:37 +02:00
Maciej Suminski
520be6f67b Added GAL::DrawSegment for drawing rounded segments (used for drawing tracks). 2013-04-17 12:38:00 +02:00
Maciej Suminski
bee0d69289 Cleanup 2013-04-16 11:16:27 +02:00
Maciej Suminski
5b9057823a Introduced SetGAL() functions that will allow changing GAL backend for rendering on the fly. 2013-04-15 16:03:05 +02:00
Maciej Suminski
877dd3f79a Added multiline strings and text overbars rendering using GAL. 2013-04-11 14:21:59 +02:00
Maciej Suminski
ccd2ebefd3 Removed OpenGL different drawing modes, as they were not used.
Removed DRAW_MODE_NORMAL, DRAW_MODE_PREPARE_EDGES, DRAW_MODE_DRAW_EDGES modes.
2013-04-10 09:09:48 +02:00
Maciej Suminski
826d5a8954 Added GetMinDepth()/GetMaxDepth() methods (useful for displaying things on the top or on the bottom). 2013-04-04 11:21: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
Maciej Suminski
ad4bf38e7a Added class COLOR4D that contains color representation with 4 components (RGBA) (for future usage in GAL) 2013-03-28 17:42:15 +01:00