1
0
Fork 0
Commit graph

278 commits

Author SHA1 Message Date
Thomas Geymayer
748f1d4d29 parsesvg: rename canvas.num to canvas.evalCSSNum 2013-12-01 14:05:12 +01:00
Tomash Brechko
2e6ba5f8c0 SVG parser: Add num() wrapper for <rect> attributes. 2013-12-01 14:05:11 +01:00
Gijs de Rooy
a9576e8c8d Canvas Navigational Display:
- get rid of global variables and use instance variables
- identified all important drawing routines and move them into *.draw files
- changed to dynamic loading of *.draw *.model and *.layer files
- implemented poor-man's controller hash to move use-case specific conditionals out of the draw files, and back into the instantiation, i.e. Gijs' EFIS class
- started identifying stuff that is not specific to drawing, but to what is to be drawn, i.e. Model stuff - such as positioned queries, moved those out into *.model files
- some more work on supporting more than a single ND MFD instance per aircraft
- renamed a handful of SVG identifiers to avoid naming conflicts and to simplify usage of SVG IDs as member fields
- moved all of the setlistener setup out of the fdm-initialized stub right into the ctor of the Efis class (actually that's controller stuff...)
- initial MapStructure framework
- aircraft-agnostic NavDisplay class
- preparations for deprecating map.nas
- additions to canvas.map
- preparations for making NDStyles configurable via XML
2013-12-01 13:36:23 +01:00
Thomas Geymayer
9687784128 Canvas API: constants for clip-frame reference frames 2013-11-03 21:01:33 +01:00
James Turner
74e49dd65d Avoid tooltip breakage when property is nil 2013-10-25 17:19:35 +01:00
Thomas Geymayer
5f54a68491 Canvas: add helper to get parent of canvas.Element 2013-10-23 17:33:12 +02:00
Thomas Geymayer
7e0797b1be svg parser: read line-height 2013-10-20 23:41:19 +02:00
Philosopher
24ab67fa32 Use resolvepath() for canvas SVGs 2013-10-06 11:52:30 -05:00
Philosopher
b4675c62b2 Fix popupTip handling
delay argument was being ignored and popdown didn't work anymore.
2013-09-27 12:09:44 +02:00
Thomas Geymayer
078e422faa Canvas GUI: check if canvas is valid on resize. 2013-07-27 22:23:00 +02:00
Thomas Geymayer
b8d6997497 Canvas GUI: mouse based window resizing. 2013-07-27 12:58:02 +02:00
Thomas Geymayer
a13add166b Canvas GUI: Basic widget, focus and theming support. 2013-07-27 12:57:52 +02:00
Thomas Geymayer
187883563a Canvas GUI: update window for core change (size -> content-size). 2013-07-27 00:33:08 +02:00
Thomas Geymayer
589d021e1c Canvas API: access to canvas "desktop". 2013-07-25 01:02:37 +02:00
Thomas Geymayer
7bf96db691 canvas.Window: Do not delete canvas on close if other placements exist. 2013-07-21 11:33:47 +02:00
Thomas Geymayer
c8a5c507bc Canvas: Fix placing existing canvas on window.
- Canvas window placements now use 'id' instead of 'index'...
 - Provide Dialog class for backwards compatibilty (but print a
   warning that it will be removed)
2013-07-20 18:10:31 +02:00
Thomas Geymayer
68efae1cd8 canvas.parsesvg: fix handling text without tspan or empty text. 2013-07-20 00:54:42 +02:00
Thomas Geymayer
ce4d7964f6 canvas.parsesvg: Be more tolerant instead of failing.
- Remove 'px' suffix from numbers to be used as valid numbers.
 - Automatically update the rotation center if it the according
   values are present.
 - Fix text only partially set if containing xml entities.
2013-07-15 22:37:05 +02:00
Thomas Geymayer
4a6cbb8ff1 Canvas GUI: set standard alpha blending as default inside windows 2013-07-14 13:44:34 +02:00
Thomas Geymayer
d580464095 Prevent name clash with future canvas.gui namespace. 2013-07-04 21:58:00 +02:00
Thomas Geymayer
eaf4c60cfb Canvas GUI: don't drag window on close button. 2013-06-29 14:49:43 +02:00
Thomas Geymayer
d7d871cc83 Canvas API: do not skip first index for cmds/coords
Start cmd/coord indices really at 0 and allow removing first/last
segment.
2013-06-27 23:16:45 +02:00
Thomas Geymayer
35a2045123 Update for core changes 2013-06-14 20:32:14 +02:00
Thomas Geymayer
c759a3e57f Canvas window: allow gc to release resources 2013-06-08 13:08:16 +02:00
Thomas Geymayer
ca5c8463ab Use integer coordinates for placing canvas dialog title 2013-06-07 00:20:09 +02:00
Thomas Geymayer
72e3937ec6 Basic window decorator with title bar and close button.
Extend the canvas.Window class to create a simple window decoration
if a type for it (currently every type maps to the same style) is
given. It supports moving the window by dragging inside the title
bar and setting a window title.
2013-06-06 23:27:11 +02:00
James Turner
7e0a45c798 Tooltips and knobs for the C172P.
This is proof of concept, not a complete conversion.
2013-04-06 17:36:25 +01:00
James Turner
e740b916d3 Make tooltip also work for on-screen messages.
Required new (in flightgear) Nasal timer to work, so make sure your fg is up-to-date.
2013-03-16 12:48:15 +00:00
Thomas Geymayer
0980f6302a Rework tooltip size calculations to get rid of delayed update. 2013-03-11 19:25:39 +01:00
James Turner
5b84e09572 Fix phantom tooltips, more mapping modes.
Null the tooltip ID in update-hover, regardless of visibility. Avoids later tooltips when picking other (tooltip-less) pickable objects.

Also add two more mapping models for bools: up-down and down-up.
2013-03-11 17:19:32 +00:00
James Turner
7679078aa7 Tooltip tweaks
add a 'heading' mapping mode, normalises to 0..360
support a 'measure text' property used to compute the tooltip size (and hence avoid visual jitter when value is changed)
2013-03-10 10:13:47 +00:00
Thomas Geymayer
226d11b104 Tooltips: Use (hopefully) nice background image for tooltips. 2013-03-09 14:03:33 +01:00
Thomas Geymayer
bf3cd83c61 Canvas API: allow passing image size as vector 2013-03-09 14:03:32 +01:00
James Turner
72a1a0047e Work on tooltips, mouse-input config. 2013-03-08 16:47:00 +00:00
James Turner
ce2d316e6d Tooltip class.
This is work in progress, and not visible without additional patches.
2013-03-07 19:51:06 +00:00
Christian Schmitt
312862271d Position tower on canvas map at the correct place, not at the airport center 2013-03-01 17:16:01 +01:00
Christian Schmitt
0484849b67 Add helipads to the canvas map (grey rectangle for now). 2013-03-01 14:54:33 +01:00
Christian Schmitt
9dff0b4221 Canvas map: cleanup the runway routines. Simplify by using new functions and two runway ends 2013-03-01 14:54:13 +01:00
Christian Schmitt
51936dcff1 Adapt Canvas map to changed runway/taxiway internals 2013-02-28 13:39:07 +01:00
Thomas Geymayer
7027c604de Tweak SVG parser id handling of text elements 2013-02-23 20:05:13 +01:00
Thomas Geymayer
71f3f878c6 SVG rect rounded corner and refactor rect helper 2013-02-23 19:19:53 +01:00
Thomas Geymayer
5d54d3c504 Improve SVG/Inkscape text parsing/interpretation 2013-02-23 18:27:35 +01:00
Thomas Geymayer
95109b7b0c Fix parsing multiple SVG transforms and implement scale and rotation 2013-02-23 14:46:26 +01:00
Thomas Geymayer
0bb3a1fe95 Remove CanvasText space hack.
With corrected alginment calculations within latest SimGear this
hack is not needed anymore.
2013-02-09 12:25:28 +01:00
Thomas Geymayer
4374ab0ce8 Use new built-in string functions 2013-01-31 22:56:43 +01:00
Thomas Geymayer
91ae186330 Canvas API: draw (rounded) rect and rename Dialog to Window.
- std.string:
   * Add method compare
   * Add method starts_with
 - canvas.Group:
   * Add method rect for drawing (rounded) rectangles
 - Rename canvas.Dialog to canvas.Window to free the name Dialog
   for real dialogs.
2013-01-22 18:02:20 +01:00
Thomas Geymayer
23c72fd53b Fix #956, cleanup canvas map listeners 2013-01-16 23:57:08 +01:00
Thomas Geymayer
ef95c4cf10 parsesvg: fix checking for relative/absolute path 2013-01-11 19:56:42 +01:00
Thomas Geymayer
73fcf429d0 Canvas/SVG fix calculating transformation center (Group) 2013-01-09 12:14:31 +01:00
Thomas Geymayer
530db2e97a Ensure canvas dialogs clean up all references to canvas ghosts on destruction 2013-01-01 13:16:19 +01:00
Thomas Geymayer
e9a40e7a79 remove old code (Canvas GUI constants) 2012-12-16 22:36:57 +01:00
Thomas Geymayer
9af21f41c0 Absolute placement for canvas gui dialogs (CSS like right/bottom margin) 2012-12-14 17:25:34 +01:00
Thomas Geymayer
cf27a29da4 Airport dialog: Basic support for drag/zoom with the mouse 2012-12-03 00:39:13 +01:00
Thomas Geymayer
ccee791529 Canvas API: Use more exposed core functions 2012-11-30 17:40:03 +01:00
Thomas Geymayer
10c635752a Use latest core API and fix FG 2.8 support 2012-11-18 23:29:24 +01:00
Thomas Geymayer
bc63ff3ea8 Use Canvas and CanvasGroup ghosts provided by fgfs core 2012-11-16 12:35:49 +01:00
Thomas Geymayer
fa97e5ea7a Use core Canvas Nasal helpers 2012-11-15 14:19:09 +01:00
Thomas Geymayer
7477ffed74 Update Canvas API for latest core changes 2012-11-04 15:15:11 +01:00
Stuart Buchanan
9c6a35012b Manual merge of merge request 95 from Hooray 2012-11-03 22:06:51 +00:00
Thomas Geymayer
7f1117a537 Use new props.addChildren method to speed up 'Select Aiport' dialog 2012-10-14 17:33:31 +02:00
Thomas Geymayer
a15d582937 Use newly exposed props.Node.addChild method 2012-10-13 15:20:27 +02:00
Hooray
e510c8917f Canvas Scripting Layer (Mapping):
- first stab at refactoring the map.nas module, and trying to let the API evolve according to our requirements
- split up the module into separate files (some of them will disappear soon)
- split up the "drawing" loops into separate functions so that they can be individually called
- move actual "drawing" to map_layers.nas
- introduce some OOP helpers to prepare a pure Layer-based design
- prepare helpers: LayeredMap, GenericMap, AirportMap (TODO: use a real "Layer" class)
- move airport features (taxiways, runways, parking, tower) to separate layers (i.e. canvas groups)
- avoid using a single update callback and use different layer-specific callbacks to update individual layers more efficiently
- add some boilerplate hashes to prepare the MVC design
- allow lazy updating of layers, where canvas groups are only populated on demand, to save some time during instantiation, i.e. loading an airport without "parking" selected, will only populate the layer once the checkbox is checked
- extend the original code such that it supports showing multiple airports at once
- add some proof of concept "navaid" layer using SVG files for navaid symbols (added only NDB symbol from wikimedia commons)

regressions:
- runway highlighting needs to be re-implemented
- parking highlighting will be done differently
- enforcing a specific drawing order for layers is currently not explicitly supported, so that taxiways may be rendered on top of runways

Also:

- integrated with the latest changes in git/master (HEAD) -i.e. metar support
- further generalized map.nas
- partially moved instantiation from Nasal space to XML space (WIP)
- create "toggle layer" checkboxes procedurally in Nasal space
- prepared the code to be better reusable in other dialogs (e.g. route manager, map dialog etc)
- completely removed the "highlighting" (runway/parking) feature for now, because we talked about re-implementing it anyhow
2012-09-29 21:16:31 +01:00
Thomas Geymayer
5650e97397 Canvas: Bounding box may not exist 2012-09-25 22:20:39 +02:00
Stuart Buchanan
60e6be0e0f Improved maps display and Airports dialog
- Display taxiways
- Display different surface types
- control over components (taxiways, parking positions, towers) displayed
- include distance and course to airport.
2012-09-19 22:35:56 +01:00
Stuart Buchanan
d214a6fcf8 Add highlighting of selected runway/parking position. Move tower definition and placement to map.nas. 2012-09-18 19:28:56 +01:00
Thomas Geymayer
d775c221b7 Move map helpers to canvas Nasal module 2012-09-18 13:19:26 +02:00
Thomas Geymayer
86344dfe57 Canvas: Add method to retrieve all child elements of a group. 2012-09-17 18:16:30 +02:00
Thomas Geymayer
a4af6530e1 Canvas: Fix cubic/scubic typo. 2012-09-04 22:54:53 +02:00
Thomas Geymayer
16890bb5b8 Canvas: Experimental backward support for FlightGear 2.8 2012-09-01 22:37:25 +02:00
Thomas Geymayer
52b89ed372 Canvas: Update API for core changes.
- Use only one node for colors and dash-array
 - Update some property names to better match SVG/CSS
2012-08-23 21:05:52 +02:00
Thomas Geymayer
20c6d48ee7 Canvas: Basic GUI API and API cleanup 2012-08-12 23:25:47 +02:00
Thomas Geymayer
a129877eb8 Canvas: Add function to API for getting canvas path 2012-08-09 22:08:44 +02:00
Thomas Geymayer
c785b1bd1c Canvas: Extend Image element and adapt for latest core changes. 2012-08-09 18:18:07 +02:00
James Turner
5862ada5f0 Add Image to Canvas API 2012-08-06 10:27:25 +01:00
Thomas Geymayer
7e641735cb Canvas: Improve API and SVG parser.
- API:
  * Rename setSize to setFontSize
  * Add method getElementById to Group
  * Rename name of element to id to show more prominent
    that it should be unique.
  * Add methods for hide/show elements.
  * Fix: set correct id for cloned elements (parsesvg)
  * Fix: retrieving group with getElementById failed.
  * Parse SVG inkscape:transform-center-[xy]
  * Allow rotation around given point (use values from inkscape
    by default for SVG files)
  * Use breadth-first search instead of depth-first search for
    Element::getElementById (large speedup :))
  * Add more convenience functions for path drawing.
  * Add version check (useful if API files manually copied)

 - SVG:
  * Support <use> element
  * Parse font-size
  * Parse stroke-linecap
2012-08-02 01:40:00 +02:00
Thomas Geymayer
2e3aa2673b Canvas: Update API to new geo coords and add map element 2012-08-02 01:40:00 +02:00
Thomas Geymayer
007e9bc33a Canvas: Add a basic SVG parser.
- Add basic std::string implementation to a Nasal submodule named
   std.
 - Add basic SVG parser parsing its results into a canvas group
   element.
2012-08-02 01:39:59 +02:00
Thomas Geymayer
07cb9e7df0 Canvas: Add Nasal API for using the Canvas. 2012-08-02 01:39:59 +02:00