1
0
Fork 0
Commit graph

122 commits

Author SHA1 Message Date
Thomas Geymayer
d9881aecf8 Allow Canvas placed on 3D objects receiving mouse events.
- Add option 'capture-events' to canvas aircraft and scenery
   placements to allow events being forwarded to the respective
   canvas.
 - Clean up and restructure parts of the mouse event/picking
   handling to support forwarding events to canvasses.
2013-05-09 21:38:40 +02:00
Thomas Geymayer
952a61424a Allow Canvas to also read images with absolute paths (if allowed by IOrules) 2013-04-29 22:17:09 +02:00
Thomas Geymayer
eba03b5e46 Allow placing canvas on scenery objects. 2013-03-21 01:16:47 +01:00
Thomas Geymayer
0bc5a813a8 Revert "Ensure immediate canvas update inside GUI windows."
This reverts commit 07f01bd734.

We don't need this anymore as there is now a proper fix
in SimGear.
2013-03-11 21:24:40 +01:00
Thomas Geymayer
07f01bd734 Ensure immediate canvas update inside GUI windows.
Ensure canvas displayed inside GUI windows are updated in the same
frame as the according window is made visible. This prevents
showing previous contents for the first frame.
2013-03-10 20:43:14 +01:00
Thomas Geymayer
1c905e5881 Typos, license headers... 2013-03-06 01:04:52 +01:00
Thomas Geymayer
1b49f5cc78 Canvas Window: use new CanvasImage method to handle events 2013-02-28 01:15:59 +01:00
Thomas Geymayer
38ca30cbd5 Ignore events if canvas::Window is not visible 2013-02-13 12:10:25 +01:00
Thomas Geymayer
c0173cf2b5 Improve mouse event capturing with Canvas windows.
- Don't capture mouse events if mouse mode has
   pass-through disabled. This behaviour is
   consistent with the PUI dialogs and allows
   changing moving view and controls while above
   any GUI dialog.
 - Add option to canvas windows to ignore all
   events and let them pass through
   ("capture-events").
2013-02-07 23:08:53 +01:00
Thomas Geymayer
7ce1e100d7 Reapply canvas placements upon aircraft-model reinit 2013-02-06 01:23:06 +01:00
Thomas Geymayer
0a879d3c65 Fix canvas gui size sometimes not initialized correct 2013-01-01 13:45:45 +01:00
Thomas Geymayer
c9976155d6 Update to latest SimGear and fix eating up every 2nd scroll event 2012-12-13 23:39:41 +01:00
Thomas Geymayer
4bf4754f7b Allow Canvas Windows to be resized by dragging
- Setting 'resize' property to true on canvas::Window shows
   resize icons and exposes requested size to the property
   tree. This can be used eg. from Nasal to actually resize
   the window and/or show a preview of the resized window
   while resizing.
 - Event handling now ignores events which have already
   been handled. Before eg. clicking inside a window
   also caused picking to be performed inside the
   scene which is for sure not the expected behaviour.
 - Also forwards scroll wheel events from canvas::Window.
2012-12-13 14:12:29 +01:00
Thomas Geymayer
e62649e075 CanvasWidget: Retrieve texture id every frame.
If the size of a Canvas changes also the texture id
changes. We now retrieve the texture id for the CanvasWidget
every frame to ensure it uses the latest texture instance.
2012-12-09 23:15:49 +01:00
Thomas Geymayer
13cec7bd99 Canvas MouseEvent now provides client and screen position 2012-12-08 15:02:15 +01:00
Thomas Geymayer
91bc5e522a Canvas add event time and expose current click count 2012-12-06 23:27:25 +01:00
Thomas Geymayer
28f2779c4b Forward mouse events from (PUI) CanvasWidget to Canvas for new DOM like callbacks 2012-12-02 13:33:16 +01:00
Thomas Geymayer
e5286f1217 More work on Canvas event handling/adapt for simgear changes 2012-11-27 13:56:53 +01:00
Thomas Geymayer
846a838c70 Expose NasalSys::gcSave/gcRelease to Canvas 2012-11-22 01:06:22 +01:00
Thomas Geymayer
258d387d15 Allow setting emission for each canvas placement 2012-11-21 13:07:57 +01:00
Thomas Geymayer
7e7d921515 Adapt for latest SimGear changes and insert missing bracket 2012-11-06 18:50:14 +01:00
Thomas Geymayer
28779e7a51 Update for new simgear Canvas system.
A refactored version of the Canvas system can now be found in
SimGear.
2012-11-04 14:18:31 +01:00
Thomas Geymayer
71eeb62c1b Simplify canvas OpenVG initialization and fix sometimes rendering too lazy 2012-10-31 01:44:25 +01:00
Thomas Geymayer
4e75587332 Refactor PropertyBasedElement and Manager 2012-10-29 16:19:13 +01:00
ThorstenB
076bbb8487 Fix some compiler warnings.
Unused vars, loss of precision, bool type conversions.
2012-10-13 17:59:47 +02:00
James Turner
4994973ef4 Separate instruments from cockpit displays. 2012-10-05 18:13:50 +01:00
Thomas Geymayer
f462dfdfac Canvas: default fill-rule to evenodd and make it configurable 2012-09-29 19:54:31 +02:00
Thomas Geymayer
37d0c19f7c Canvas: Make path destroying more robust 2012-09-27 14:41:00 +02:00
Thomas Geymayer
b8b4fb00f8 Canvas: On z-index change move element always to last position of elements with same z-index 2012-09-26 23:52:43 +02:00
Thomas Geymayer
3b10fc5f3e Canvas: Support z-index inside Groups/Maps 2012-09-26 18:09:06 +02:00
Thomas Geymayer
703bb9bbf3 Retrieve property node once instead of using fgGetXXX 2012-09-26 12:18:47 +02:00
Thomas Geymayer
6dd4782254 Canvas: Proper fix for OpenVG init handling.
- Redraw all canvases in the frame OpenVG is initialized.
   Otherwise if multiple canvases are created in the same frame
   only one of them would get correctly updated.
2012-09-25 23:24:29 +02:00
Thomas Geymayer
16d73f4012 Canvas: Redraw if OpenVG has been initialized.
If OpenVG/ShivaVG is initialized nothing is drawn in the same
frame, therefore we need to draw another frame to ensure all
paths are rendered correctly.
2012-09-25 21:34:58 +02:00
James Turner
9426928cdf Fix a typo. 2012-09-25 10:07:11 +01:00
Thomas Geymayer
efe978e679 Canvas: Fix detection if something has changed
- Reset dirty flag for redrawing canvas properly after
   rendering has complted.
 - Update path properly if path elements have been removed.
2012-09-23 17:31:12 +02:00
Thomas Geymayer
0f850312ea Canvas: Support for pseudo non-zero fillrule 2012-09-21 22:03:58 +02:00
Thomas Geymayer
4a94071ed7 Canvas: Performance improvements.
- Only render the canvas if something has actually changed
   (Currently checked by looking for modified properties).
 - Only write bounding box to property tree if it has been
   recalculated (until now this happened every frame).
2012-09-21 22:03:58 +02:00
Thomas Geymayer
f0927fc06d Canvas: Change default fill-rule to nonzero 2012-09-21 00:42:21 +02:00
James Turner
f7878cfd4d Fix a Clang warning in Shiva. 2012-09-19 15:55:49 +01:00
Thomas Geymayer
09ac319e87 Canvas: Don't crash on removing child hierarchie from map
Currently if a SGPropertyNode is removed from the property tree
only for this single node a childRemoved event is triggered. So
if we just check for a specific child to be removed, we will never
be notified. This commit manually triggers the event recursively
for all children but this should probably go directly into simgear.
2012-09-18 23:21:50 +02:00
Thomas Geymayer
9f5790c843 Canvas: Use seperate projection instance for each map 2012-09-18 00:33:36 +02:00
Thomas Geymayer
7463ebad1d Canvas: Only use cull callback if it's still valid 2012-09-01 16:50:21 +02:00
Thomas Geymayer
ced478cf95 Canvas: CSS like property value inheritance.
- Groups store property nodes for different styles and pass them
   to child elements on creation (No dynamic updates yet)
 - Use StyleSetter map instead of loads of if/else if statements
   for setting element styles.
 - Unify element style properties (Only use one property, instead
   of multiple like it has been with colors)
 - Fix: Create only one element per property node (Was two)
2012-08-23 20:00:13 +02:00
Thomas Geymayer
ec73c62da5 Canvas: Fix stupid off-by-one error 2012-08-13 20:29:08 +02:00
Thomas Geymayer
875b59952b Canvas: Bugfixes
- Fix dependency cycle
 - Correctly forward mouse release event
2012-08-13 14:11:26 +02:00
Thomas Geymayer
624522b426 Canvas: Don't crash if texture not available 2012-08-12 20:23:31 +02:00
Thomas Geymayer
948d87e561 Canvas: Basic support for window stacking 2012-08-11 23:38:04 +02:00
Thomas Geymayer
544784ca85 Canvas: Forward mouse events to elements.
- Use bounding box intersections to determine which element is
   hit.
 - Transform mouse coordinates to local coordinates.
 - Try to get osgText bounding box correct (or at least better)
2012-08-10 13:11:06 +02:00
Thomas Geymayer
288e7fa5ca Canvas: default image element dimensions to texture size 2012-08-09 21:58:55 +02:00
Thomas Geymayer
83bbd9e45c Canvas: Image/Window unifying and allow using canvas inside canvas.
- Refactor and unify common functionality of canvas::Window and
   canvas::Image
 - Make canvas::Image actually work
 - Allow using canvases inside canvas::Image
   * Use new canvas:// "protocol" to allow using canvases in
     place of images
 - Prepare for categorizing canvases:
   * Move canvases to /canvas/by-index
   * Later support linking to other nodes in subbranches of
     /canvas
2012-08-09 16:13:38 +02:00
Thomas Geymayer
350d508324 Clean up
- Replace deprecated boost::shared_static_cast with
   boost::static_pointer_cast
 - Use boost::ends_with in favor of own implementation.
2012-08-09 13:22:48 +02:00
James Turner
310ddbf8c5 Initial work on Image element for Canvas. 2012-08-05 22:43:01 +01:00
Thomas Geymayer
052d578483 Canvas: Fully remove Window drawable if destroyed 2012-08-05 18:06:56 +02:00
James Turner
f703882ffa Skeleton Nasal-Canvas integration.
This code is non-functional, but contains most of the stubs to show what's required to add property get/set access, convert to from ghost & C++ types, and manage ownership. Element derived classes & inheritance (e.g., methods on image/path/map elements) will follow, along with some actual functionality!
2012-08-02 12:18:38 +01:00
Thomas Geymayer
e980178213 Canvas: Fix warning and rename file. 2012-08-01 10:57:15 +02:00
Thomas Geymayer
8a6a234653 Canvas: First version of new Canvas GUI system.
- Refactor CanvasMgr into PropertyBasedMgr to be also used
   for the Canvas GUI system.
 - Get rid of tied properties in the Canvas system.
 - Add new placement type 'window' for placing canvases onto
   windows
 - Pass mouse events to Window class (only if cursor is over
   window)
 - Refactor canvas placement clean up
2012-07-31 23:19:23 +02:00
Thomas Geymayer
5f08e10c0a Canvas: Support for text selection.
- Expose nearest hit for text/character selection
 - Fix culling
2012-07-31 23:19:23 +02:00
Thomas Geymayer
91c3f63110 Canvas: UTF-8 support and more settings exposed.
- Allow hiding objects
 - Use UTF-8 encoding for text elements
 - Add paramter max-width to text elements
 - Support stroke-linecap for path elements
 - Fix mouse coords
 - Set better mipmap filter
2012-07-31 23:19:23 +02:00
Thomas Geymayer
e81db175f4 Canvas: Add new element type map for geo mapping.
- The new map element automatically transforms geo coordinates
   (lat, lon) to the according screen coordinates.
 - Currently one type of projection is supported
   (Sanson-Flamsteed projection)
2012-07-31 23:19:23 +02:00
Thomas Geymayer
373d511c69 Canvas: Allow using canvases as PUI widgets.
- Add new widget type canvas
 - Set canvas view dimension from the gui xml.
 - Expose mouse events to canvas widget properties.
2012-07-31 23:19:22 +02:00
Thomas Geymayer
26aeb84399 Canvas: Calculate bounding box for path elements.
- Add an update callback to calculate a bounding box for every
   path to ensure correct culling of paths.
 - Ensure OpenVG get's initialized even if elements are subject to
   culling.
2012-07-13 11:11:33 +01:00
Thomas Geymayer
580891f181 Rename tf elements for easier handling. 2012-07-13 11:11:29 +01:00
Thomas Geymayer
c5695f6f88 Fix setting global path options per path 2012-07-13 11:11:22 +01:00
Thomas Geymayer
0934ba859f Fix canvas clean up.
On clean up there are no parents any more and therefore the assertion
was triggered.
2012-07-03 16:29:44 +02:00
Thomas Geymayer
948dd2ab95 Add missing glx.h include and fix some warnings. 2012-07-03 15:58:05 +02:00
James Turner
a8fbfb17b4 Fix OS-X compilation. 2012-06-17 21:14:04 +01:00
Thomas Geymayer
569042acbd Allow filling paths and do some clean up/fixing. 2012-06-17 21:14:00 +01:00
Thomas Geymayer
c8e1433a5c Add ShivaVG sources 2012-06-17 21:13:54 +01:00
Thomas Geymayer
df768766d9 Canvas: basic support for OpenVG (path with stroke and pattern)
- Bugfix: Don't access children by index as it's not unique
2012-06-17 21:13:47 +01:00
Thomas Geymayer
023021a879 Expose character-aspect-ratio and do some clean up
- Fix stupid memory corruption bug
 - Fix bounding box calculations
 - Fix docs
 - Fix text size
 - Expose setting background color
 - Expose trigger for updating elements
 - Untie nodes if deleting according element
 - Allow deleting canvas, text and group elements
 - Allow creating groups as children of groups
2012-05-31 22:04:19 +02:00
James Turner
b5283fafb1 Fix Win32 build, hopefully. 2012-05-18 07:45:30 +01:00
Thomas Geymayer
d82fd7cc5f Basic 2D canvas implementation.
Support text and transformations for the moment, more
features to follow in due course.
2012-05-18 07:05:37 +01:00