John Beard
8766b475c6
Sanitise incoming GAL config options using mapping tables
...
When reading config options from files, it's important to make sure the
value makes sense - the incoming data could be anything, and may have
incompatible values or be otherwise unreliable.
This introduces a simple way to define and use "mapping tables" which
can map between a "native" value, probably an enum (but not necessarily)
and some external value, for example the value written to file.
This provides a decoupling between the two values, as well as sanitising
inputs and outputs. This is important, as over time, if there isn't a
decoupled interface, changing options result in corrupt configs, or a
proliferation of obsolete enum values kept for compatibility.
2017-02-20 10:52:34 +01:00
John Beard
0bf3a19967
Add user control for grid minimum spacing in GAL
...
This allows the user to set a thicker grid line without causing the
grid lines to become over dense, or just make the grid denser according
to preference.
The term "density" is modified to "minimum grid spacing", which is
the pixel spacing between adjacent grid lines.
The spacing settings now comes in along, with other GAL display settings,
as part of GAL_DISPLAY_OPTIONS observer functionality. To this end, the
setter in GAL interface is removed, as an external user should be
setting this parameter via the GAL_DISPLAY_OPTIONS interface.
2017-02-20 10:52:34 +01:00
John Beard
970e4f8eb4
Add grid line thickness control to Display Options Dialog
...
This adds a user-settable control for the grid line thickness on GAL
canvases to the display options dialog.
The thickness settings now comes in, along with other GAL display
settings, as part of GAL_DISPLAY_OPTIONS observer functionality. To this
end, the setter in GAL interface is removed, as an external user should
be setting this parameter via the GAL_DISPLAY_OPTIONS interface.
Fixes: lp:1662482
* https://bugs.launchpad.net/kicad/+bug/1662482
2017-02-20 10:52:34 +01:00
John Beard
ff3bfaf82b
Make KIGFX::GRID_STYLE an enum class
...
This provides stronger typing to these values.
2017-02-20 10:52:34 +01:00
John Beard
7ad30b7167
Move Grid style to Graphics Options dialog
...
This puts the graphical/display options with the other similar options
in that dialog, rather than with the dimension options found in the Set
Grid dialog, which is in the Dimensions menu.
Also place the option itself in the GAL Display Options structure, so it
can be updated using the observer mechanism there.
The setter for the style in the GAL interface is removed, as the public
interface for setting this option is now to modify the
GAL_DISPLAY_OPTIONS structure and notify the GAL when done.
2017-02-20 10:52:34 +01:00
John Beard
ddded86a06
Give all GAL canvases access to a GAL_DISPLAY_OPTIONS structure instance
...
Also loads the gal options when loading a canvas, as the canvas
otherwise might not register the initial settings.
2017-02-20 10:52:34 +01:00
Maciej Suminski
77af6547c1
Coverity fixes (mostly initializing variables)
2017-02-01 17:31:55 +01:00
Maciej Suminski
80956ef1e6
Added GAL::DrawPolygon(SHAPE_POLY_SET) & GAL::DrawPolyLine(SHAPE_LINE_CHAIN)
2017-01-27 19:08:32 +01:00
Dick Hollenbeck
0c459ced97
EDA_TEXT object refactor.
...
Make all EDA_TEXT data private and rename accessors to avoid function
name collisions in derived classes.
Overload EDA_TEXT's SetTextAngle() and SetEffects() in TEXTE_PCB.
Add support for preserving Reference text position, size, orientation
during a netlist import into a BOARD, as well as the one off footprint
update dialog.
2017-01-25 08:03:32 -05:00
Maciej Suminski
838c6097d9
Removed a redundant assert in OPENGL_COMPOSITOR.
2017-01-18 14:30:08 +01:00
Maciej Suminski
196c5aca83
Fixed 'unreferenced local variable' warning in OPENGL_GAL.
2017-01-18 14:23:06 +01:00
Maciej Suminski
c758f434c0
Removed unused fields in VIEW & ANTIALIASING_SMAA classes
2017-01-18 13:22:18 +01:00
Maciej Suminski
bf735b6fe7
Yet another trial to use wxString as a std::runtime_error message
2017-01-13 22:48:26 +01:00
Maciej Suminski
90710cfcc5
Added a missing #include directive
2017-01-13 17:15:32 +01:00
Maciej Suminski
7eacd1b15d
Restored cursor in OpenGL canvas (still an issue with subpixel AA)
2017-01-13 17:10:16 +01:00
Maciej Suminski
7cf1cfedb3
Change exception message time from wxString to std::string
2017-01-13 16:59:31 +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
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
aabf8300c3
Removed non-ASCII characters
2017-01-12 09:20:04 +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
64cd1228ea
Clearer error messages for OPENGL_COMPOSITOR::CreateBuffer() (thanks Orson)
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
afacee5d96
Add supersampling (2x/4x) 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
jean-pierre charras
d56a49d218
Performance counter rework: More comments, code cleaning, and move GetRunningMicroSecs() prototype from common.h to profile.h.
...
profile.h should now contain all info for profiling.
2017-01-02 13:49:36 +01:00
jean-pierre charras
fff449ecf0
Performance counter rework: Add comments, fix coding style issues.
2016-12-31 13:00:24 +01:00
Simon Richter
ac9f858813
Performance counter rework
2016-12-31 12:57:42 +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
daf103d7e4
GAL: fix grid origin and grid rendering in flipped view mode
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
decimad
d9a8aac96c
transfer font texture width to the fragment shader via uniform variable
2016-10-20 14:31:09 +02:00
jean-pierre charras
fdebcd8a6d
Fixes: lp:1629387 (pagelayout text sometimes shrinking)
...
https://bugs.launchpad.net/kicad/+bug/1629387
2016-10-06 17:19:55 +02:00
Chris Pavlina
71263c32e8
Dismiss signed index warning in opengl_gal.cpp
2016-09-30 22:32:24 -04:00
Maciej Suminski
7a5f72c948
Fixed a crash when drawing a single point polyline
2016-09-29 15:34:08 +02:00
decimad
f78721b451
Multichannel Signed Distance Field text rendering for OpenGL GAL
2016-09-14 10:00:49 +02:00
Maciej Suminski
7f5bce3772
More robust condition for checking sufficient space in CACHED_CONTAINER
...
Having enough space is not enough, we need a continuous block of memory.
2016-08-18 17:18:13 +02:00
Maciej Suminski
c6e4f67589
Fixed cached container data corruption on resize (OpenGL GAL)
2016-08-08 14:18:25 +02:00
Maciej Suminski
9f5f0ab31b
Minor OpenGL GAL code changes
2016-08-08 14:17:40 +02:00
Maciej Suminski
c9a41be774
Added licence for the GAL bitmap font
2016-08-03 17:02:43 +02:00
Simon Richter
da5699de0a
Replace boost::shared_ptr with std::shared_ptr.
2016-06-29 11:09:55 -04:00
Michael Steinberg
fde12ebd25
Replace boost::function and boost::bind with their std:: counterparts
2016-06-29 12:23:11 +02:00
Maciej Suminski
b82ccc3b4e
Reverted 6912 with minor changes (LockCtx requires to specify canvas that locks a context).
2016-06-13 16:43:33 +02:00
Maciej Suminski
57d4e8d51d
Fixed OpenGL crash on canvas switch.
2016-06-13 09:35:36 +02:00
Maciej Suminski
b7ec4ea160
Corrected the last instance check in OPENGL_GAL.
2016-06-10 17:07:12 +02:00
Simon Richter
eb45f02138
Avoid pointer truncation in debug message
2016-06-10 11:06:47 +02:00
Simon Richter
2928cb7419
Replace unshared boost::shared_array with std::unique_ptr
2016-06-08 09:43:07 +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
b83c148e10
Delete OpenGL context on GLCanvas subclasses destruction.
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
Maciej Suminski
4f7bb4c0f7
Simplified error checking in OPENGL_GAL test.
2016-06-03 15:46:11 +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
José Ignacio Romero
5832e37177
GAL: Fix offset problem in multiline text rendering
...
Commit BZR 6703 introduced a minor horizontal adjustment for stroke
text rendering in GAL, but the Translate() call was done before
calling Save(). So, when this function was called multiple times a
residual offset carried over to each subsequent line.
bzr 6703 = git 67982a4
2016-05-29 17:40:11 -04:00
jean-pierre charras
1ae9175671
A few minor fixes for compil warnings (shadowed variables and deprecated auto_ptr)
2016-05-29 17:02:34 +02:00
jean-pierre charras
ca0113ab65
Fix my previous commit: I committed the wrong file
2016-05-28 21:51:35 +02:00
jean-pierre charras
b7f863dc4c
Fix the commit 6838 (Fix non optimal position of net name and pad name in GAL mode), broken.
2016-05-28 21:46:13 +02:00
Simon Richter
96ec9db5d6
Add missing C++ stdlib headers
...
The GCC standard library headers often include other headers, which makes
some code compile that forgets to include several headers.
2016-05-28 12:46:29 -04:00
Maciej Suminski
ade1d1fe74
Fixed display of 'b' letter in OpenGL canvas.
2016-05-27 14:44:44 +02:00
Maciej Suminski
2ded7bf82a
Improved error handling for SHADER class.
2016-05-23 09:54:53 +02:00
Maciej Suminski
a42cb0ef8c
OpenGL GAL: Set context in destructor when possible (under Linux the window has to be visible).
2016-05-09 18:00:34 +02:00
Maciej Suminski
d9f4877c94
Fixed a crash when starting pcbnew with OpenGL GAL.
2016-05-09 17:23:01 +02:00
Maciej Suminski
cca36d355a
Remove unnecessary debug messages (OpenGL GAL).
2016-05-04 10:10:15 +02:00
Maciej Suminski
22c4e4d240
Set OpenGL context only when the parent window is visible.
2016-05-03 16:39:58 +02:00
Maciej Suminski
55976e39ef
Fixed crash occuring when a vertex buffer is mapped in invalid OpenGL context.
2016-05-03 16:16:59 +02:00
Maciej Suminski
a62d2b5412
Bigger net labels (GAL).
2016-05-03 15:15:08 +02:00
Maciej Suminski
8d952f35c6
Fixed text vertical alignment for bitmap font (OpenGL).
2016-05-03 11:58:48 +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
d23a508aa3
Fixed errors introduced to STROKE_FONT class.
2016-05-02 16:15:23 +02:00
Maciej Suminski
3e3ecccb2b
A few more fixes related to the previous commit.
2016-05-02 16:15:23 +02:00
Maciej Suminski
6e881f51fd
Changed bound buffers to improve compatibility (OpenGL GAL).
2016-05-02 16:15:23 +02:00
Maciej Suminski
0c4b6dabd3
Increased interglyph spacing to avoid artifacts when mipmapping is enabled.
2016-05-02 16:14:26 +02:00
Maciej Suminski
fff3abc9a0
Support for overbars in bitmap fonts (OpenGL GAL).
2016-05-02 16:12:18 +02:00
Maciej Suminski
c506d2b16c
Set OpenGL context before freeing video resources.
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
a3a9641ae2
Disable invalidating buffer on CACHED_CONTAINER::Clear(). OpenGL context is not available when the method is called, so it does not work.
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
deb578eadd
Recognize a special case of completely filled/defragmented container when resizing.
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
b32fdd97d9
Changed shading model to flat.
2016-05-02 16:12:15 +02:00
Maciej Suminski
52c698ab11
Fixed an included header (OpenGL GAL).
2016-05-02 16:12:14 +02:00
Maciej Suminski
e2c8e07344
Enabled mipmapping for bitmap fonts.
2016-05-02 16:12:14 +02:00
Maciej Suminski
53ef29802f
Switched bitmap font to higher resolution.
2016-05-02 16:11:39 +02:00
Maciej Suminski
05a30b7591
Do not draw anything if vertex containers are empty.
2016-05-02 16:08:50 +02:00
Maciej Suminski
928d4e0404
SwapBuffers() contain an implicit glFlush()
2016-05-02 16:08:50 +02:00