20,741
edits
| Line 63: | Line 63: | ||
List of missing things (if you'd like to get involved to help with any of these, please get in touch via the [http://flightgear.org/forums/viewforum.php?f=71 canvas forum]): | List of missing things (if you'd like to get involved to help with any of these, please get in touch via the [http://flightgear.org/forums/viewforum.php?f=71 canvas forum]): | ||
==== Misc ==== | |||
* '''Documentation''': Read, ask questions, extend. I haven't done too much documentation (apart from inline documentation) just due to the reason that the API is not completely stable yet. You could also try different use-cases and maybe find some examples where the API lacks some features.{{Not done}} | |||
* '''Own ideas''': Come up with a new idea or something that I have already mentioned somewhere else {{Feedback}} | |||
* Find more work I've currently forgotten about :) {{Feedback}} | |||
==== C++ ==== | |||
* '''[[Canvas Widgets#Picking & Widget_Callbacks|Picking]]''': For mouse handling some kind of picking would be nice. As already mentioned, at least bounding box intersections will be needed.Forward mouse events to canvas elements (trigger onhover, onclick, etc.) The canvas could listen for creation of the signal properties and then add the according region to a list of monitored regions. If the cursor is in one of the regions the property is signaled. {{Progressbar|40}} | * '''[[Canvas Widgets#Picking & Widget_Callbacks|Picking]]''': For mouse handling some kind of picking would be nice. As already mentioned, at least bounding box intersections will be needed.Forward mouse events to canvas elements (trigger onhover, onclick, etc.) The canvas could listen for creation of the signal properties and then add the according region to a list of monitored regions. If the cursor is in one of the regions the property is signaled. {{Progressbar|40}} | ||
* '''[[#Keyboard Handling|Keyboard input]]''': I haven't thought too much about it and also haven't done anything, but we will definitely need access to keyboard events {{Not done}} | * '''[[#Keyboard Handling|Keyboard input]]''': I haven't thought too much about it and also haven't done anything, but we will definitely need access to keyboard events {{Not done}} | ||
* '''Clipping''': For different reasons we will need to be able to clip some elements to certain regions. It should work with specifying either a clipping rectangle or by using a path. OpenVG seems to have support for it, although I haven't looked into it too deep. We also need to ensure that it also works with text. At least rectangular regions are needed.(eg. group/clip-min[0..1], group/clip-max[0..1]) {{Not done}} | |||
* '''Animations''': I don't know if we should do animations just by using interpolator and settimer from Nasal or if we should implement some time-based animations directly in C++. At least we need some helper functions (eg. for blinking elements -> cursor, fading, ...) It would also be possible to implement animations purely in Nasal space, e.g. by supporting a subset of SMIL for SVG, so that existing tools could be used to created animated vector images that are converted to canvas properties by the Nasal parser. | |||
** '''James''': "copy/paste, text selection. Do you think you'd be able to handle a blinking insertion point and a standard draggable text selection area in this approach? Obviously it might need some additional C++ helpers but that's okay since text-editing is a pretty specialised behaviour." (work in progress as of 07/2012) | |||
** '''Hooray''': "Regarding the blinking cursor, that could obviously be implemented as a Nasal-animated svg image that is changed periodically using a timer - i.e. by showing/hiding the group element with the cursor image" | |||
** '''Hooray''': "On the other hand, one could just as well use your canvas "groups" to support alternating/flashing contents using a new flag - sort of like a GIF image with delays between each image element." | |||
* Check what is missing to implement the different hardcoded instruments.{{Not done}} | |||
* provide Nasal hooks to access: taxiways, <del><parking positions</del> etc | |||
* Maybe support displaying shapefiles.{{Not done}} | |||
* '''Unify the canvas creation a bit''': such that canvases can be moved seamlessly between the different placements (gui, model,hud, etc.). The normal model placement is great but the gui widget placement needs to be able to also use an already existing canvas.{{Not done}} | |||
* '''Support multiple views/windows''': Currently the GUI can only be placed inside one view/window (see Docs/README.multiscreen) but it would be nice to be able to move windows between views.{{Not done}} | |||
==== Nasal ==== | |||
* '''[[Canvas_Widgets#Widget_Declaration_via_SVG|Extend gui.nas to support loading widgets from SVG files]]''': We want to be able to load widgets from SVG files and link them to Nasal code in $FG_ROOT/Nasal/widgets - for example: $FG_ROOT/Nasal/widgets/button.nas {{Not done}} | * '''[[Canvas_Widgets#Widget_Declaration_via_SVG|Extend gui.nas to support loading widgets from SVG files]]''': We want to be able to load widgets from SVG files and link them to Nasal code in $FG_ROOT/Nasal/widgets - for example: $FG_ROOT/Nasal/widgets/button.nas {{Not done}} | ||
* '''[[Canvas_Widgets#Nasal_requirements|Implement Widgets]]''': {{Not done}} | * '''[[Canvas_Widgets#Nasal_requirements|Implement Widgets]]''': {{Not done}} | ||
| Line 71: | Line 90: | ||
* '''[[Canvas_Widgets#Dialog_Parser|Implement the dialog/xml parser]]''': {{Not done}} | * '''[[Canvas_Widgets#Dialog_Parser|Implement the dialog/xml parser]]''': {{Not done}} | ||
* '''Implement a generic CSS/XSL-based styling class''': {{Not done}} | * '''Implement a generic CSS/XSL-based styling class''': {{Not done}} | ||
* '''[[Canvas Maps|Geographic Mapping]]''': It's very experimental, missing different projection modes (eg. vertical projection) and especially the Nasal API feels very hackish. {{Progressbar|50}} | * '''[[Canvas Maps|Geographic Mapping]]''': It's very experimental, missing different projection modes (eg. vertical projection) and especially the Nasal API feels very hackish. {{Progressbar|50}} | ||
* '''Improve the Nasal API''': Add some helper functions for animating different glass cockpit displays (I have already some basic code, but it needs some generalization). | * '''Improve the Nasal API''': Add some helper functions for animating different glass cockpit displays (I have already some basic code, but it needs some generalization). | ||
== Fully Canvas based implementation (in progress as of 08/2012) == | == Fully Canvas based implementation (in progress as of 08/2012) == | ||