20,741
edits
| Line 51: | Line 51: | ||
* '''TheTom''': "I think the canvas is now reaching a pretty usable state so maybe it's time for some more documentation, tutorials etc." | * '''TheTom''': "I think the canvas is now reaching a pretty usable state so maybe it's time for some more documentation, tutorials etc." | ||
=== Completed === | |||
* <del>Improve PUI to allow eg. receiving mouse over events.</del> (osgGA will be used) {{Done}} | |||
* '''[[Canvas Properties#Images: Static Textures & Cascaded Canvases (Pending)|Support images inside Canvas]]''' (will also be needed for implementing the 2D panel wrapper): We need a new element type to also display images and other textures (eg. also the texture of another canvas) inside a canvas. Not everything can easily be represented using just vector graphics, so images will also be needed. This is going to be worked on as part of porting the 2D panel system over to Canvas {{Done}} | |||
* '''Window Stacking''': New windows always appear on top of older windows. It would be nice to have the possibility to change stacking order (either reorder the windows or use z-buffer with different z-values) The window manager could eg. listen on a special signal property on each window (eg. /sim/gui/canvas/window[i]/raise) which moves the according window to the top of the current window stack. I'd prefer window reordering because it would make checking for a window at a given position very ease, because we'd just have to check for the first match in revers stacking order (from topmost to lowest window).{{Done}} | |||
* '''[[#Multiplatform Clipboard Support (native Copy/Paste) |Support copy&paste]]''': Tom is working on the selection part and copy/paste support {{Done}} | |||
=== Missing / Todo === | === Missing / Todo === | ||
Last updated: 08/2012 | Last updated: 08/2012 | ||
| Line 56: | 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]): | ||
* '''[[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}} | * '''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}} | ||
| Line 67: | Line 71: | ||
** '''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''': "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." | ** '''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." | ||
* '''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). | ||
** Implement some widgets in Nasal.{{Not done}} | ** Implement some widgets in Nasal.{{Not done}} | ||