1
0
Fork 0

Canvas: remove API for FlightGear 2.8

The old API is not used with newer versions of FG. If an old
version of FG is used, also the according version of fgdata
should be used, which also includes the correct API wrappers.
This commit is contained in:
Thomas Geymayer 2014-01-20 23:25:15 +01:00
parent 4942fbedf7
commit e7900e3791
2 changed files with 0 additions and 144 deletions

View file

@ -1066,34 +1066,3 @@ var getDesktop = func()
{
return Group.new(_getDesktopGhost());
};
# ------------------------------------------------------------------------------
# Show warnings if API used with too old version of FlightGear without Canvas
# support (Wrapped in anonymous function do not polute the canvas namespace)
(func {
var legacy_dir = getprop("/sim/fg-root") ~ "/Nasal/canvas";
var version_str = getprop("/sim/version/flightgear");
if( string.scanf(version_str, "%u.%u.%u", var fg_version = []) < 1 )
debug.warn("Canvas: Error parsing flightgear version (" ~ version_str ~ ")");
else
{
if( fg_version[0] < 2
or (fg_version[0] == 2 and fg_version[1] < 8) )
{
debug.warn("Canvas: FlightGear version too old (" ~ version_str ~ ")");
gui.popupTip
(
"FlightGear v2.8.0 or newer needed for Canvas support!",
600,
{button: {legend: "Ok", binding: {command: "dialog-close"}}}
);
}
# Load support for older versions of FlightGear (TODO generalize :) )
if( fg_version[0] == 2 and fg_version[1] == 8 )
io.load_nasal(legacy_dir ~ "/api.nas.2.8", "canvas");
}
Canvas.property_root = props.globals.getNode("canvas/by-index", 1);
})();

View file

@ -1,113 +0,0 @@
# Canvas backward support for using 3.0 API with FlightGear 2.8
(func {
# 2.8 uses multiple properties for representing a color. Also different names
# are used for the colors and no CSS syntax like #rrggbb are supported.
var color_components = ["red", "green", "blue", "alpha"];
var setColorNodes = func(obj, name, color)
{
if( size(color) == 1 )
color = color[0];
if( typeof(color) != "vector" )
debug.warn("Wrong type for color");
else if( size(color) < 3 or size(color) > 4 )
debug.warn("Color needs 3 or 4 values (RGB or RGBA)");
else
{
var node = obj._node.getNode(name, 1);
for(var i = 0; i < size(color_components); i += 1)
node.getNode(color_components[i], 1)
.setDoubleValue( i < size(color) ? color[i]
: 1 ); # default alpha is 1
}
return obj;
};
Element.setColor = func setColorNodes(me, "color", arg);
Element.setColorFill = func {
setColorNodes(me, "color-fill", arg);
me.setBool("fill", 1);
};
Path.setColor = Element.setColor;
Path.setColorFill = Element.setColorFill;
Text.setColor = Element.setColor;
Text.setColorFill = Element.setColorFill;
#
Canvas.setColorBackground = func()
{
me._node = me.texture;
setColorNodes(me, "color-background", arg);
};
# 2.8 uses multiple properties instead of a single string property
Canvas.setStrokeDashArray = func(pattern)
{
me._node.removeChildren('stroke-dasharray');
if( typeof(pattern) == 'vector' )
me._node.setValues({'stroke-dasharray': pattern});
else
debug.warn("setStrokeDashArray: vector expected!");
return me;
};
# Create a canvas object from the given node. Used instead of ghost available
# in newer FG versions.
var makeCanvas = func(node)
{
return {
_node_ghost: node._g,
createGroup: func props.wrapNode(me._node_ghost).addChild("group", 0, 0)._g
};
};
# Internal helper for creating a canvas.
#
# @note In 2.9+ this function is replaced by a C++ function. This
# implementation is just used as fallback for 2.8 and for usage
# in other programs.
canvas._newCanvasGhost = func()
{
return makeCanvas( Canvas.property_root.addChild("texture", 0, 0) );
};
# Internal helper for retrieving an existing canvas.
#
canvas._getCanvasGhost = func(arg_ghost)
{
var arg = props.wrapNode(arg_ghost);
# get a canvas specified by its root node
if( Canvas.property_root.getPath() == arg.getParent().getPath() )
var node = Canvas.property_root.getChild("texture", arg.getIndex());
# get a canvas by its name
else if( (var name = arg.getChild("name")) != nil )
{
name = name.getValue();
var node = nil;
foreach(var c; Canvas.property_root.getChildren("texture"))
{
if( c.getValue("name") == name )
node_canvas = c;
}
}
# get a canvas by its index
else if( (var index = arg.getChild("index")) != nil )
var node = Canvas.property_root.getChild("texture", index.getValue());
if( node == nil )
return nil;
return makeCanvas( node );
};
print("Canvas API: FlightGear 2.8 backward support loaded.");
})();