var SymbolPainter = { aircraft_dir: nil, getOpts: func(opts){ if(opts == nil) opts = {}; var defOpts = {id:nil,color:nil,scale:1,create_group:0,update_center:0}; if(contains(opts, 'id')) defOpts.id = opts.id; if(contains(opts, 'color')) defOpts.color = opts.color; if(contains(opts, 'scale')) defOpts.scale = opts.scale; if(contains(opts, 'create_group')) defOpts.create_group = opts.create_group; if(contains(opts, 'update_center')) defOpts.update_center = opts.update_center; return defOpts; }, getAircraftDir: func(){ if(me.aircraft_dir == nil) me.aircraft_dir = split('/', getprop("/sim/aircraft-dir"))[-1]; return me.aircraft_dir; }, svgPath: func(file){ return "Aircraft/" ~ me.getAircraftDir() ~ "/Models/Instruments/ND/canvas/res/"~file; }, drawFIX : func(grp, opts = nil){ var icon_fix = nil; opts = me.getOpts(opts); var sym_id = opts.id; if(sym_id != nil) icon_fix = grp.createChild("path", sym_id); else icon_fix = grp.createChild("path"); var color = opts.color; if(color == nil){ color = { r: 0.69, g: 0, b: 0.39 }; } var scale = opts.scale; if(scale == nil) scale = 0.8; icon_fix.moveTo(-10,0) .lineTo(0,-17) .lineTo(10,0) .lineTo(0,17) .close() .setStrokeLineWidth(3) .setColor(color.r,color.g,color.b) .setScale(scale,scale); return icon_fix; }, drawVOR: func(grp, opts = nil){ opts = me.getOpts(opts); if(opts.create_group){ var sym_id = opts.id; if(sym_id != nil) grp = grp.createChild("group", sym_id); else grp = grp.createChild("group"); } var svg_path = me.svgPath('airbus_vor.svg'); canvas.parsesvg(grp, svg_path); var scale = opts.scale; if(scale == nil) scale = 0.8; grp.setScale(scale,scale); if(opts.update_center) grp.setTranslation(-24 * scale,-24 * scale); if(!contains(grp, 'setColor')){ grp.setColor = func { var layer1 = grp.getElementById('layer1'); if(layer1 == nil) return; var children = layer1.getChildren(); foreach(var c; children){ if(isa(c, canvas.Path)) c.setColor(arg); } }; } return grp; }, drawNDB: func(grp, opts = nil){ var icon_ndb = nil; opts = me.getOpts(opts); var sym_id = opts.id; if(sym_id != nil) icon_ndb = grp.createChild("path", sym_id); else icon_ndb = grp.createChild("path"); var color = opts.color; var color = opts.color; if(color == nil){ color = { r: 0.69, g: 0, b: 0.39 }; } var scale = opts.scale; if(scale == nil) scale = 0.8; icon_ndb.moveTo(-15,15) .lineTo(0,-15) .lineTo(15,15) .close() .setStrokeLineWidth(3) .setColor(color.r,color.g,color.b) .setScale(scale,scale); return icon_ndb; }, drawAirport: func(grp, opts = nil){ opts = me.getOpts(opts); if(opts.create_group){ var sym_id = opts.id; if(sym_id != nil) grp = grp.createChild("group", sym_id); else grp = grp.createChild("group"); } var svg_path = me.svgPath('airbus_airport.svg'); canvas.parsesvg(grp, svg_path); var scale = opts.scale; if(scale == nil) scale = 0.8; grp.setScale(scale,scale); if(opts.update_center) grp.setTranslation(-24 * scale,-24 * scale); return grp; }, draw: func(type, grp, opts = nil){ if(type == 'VOR' or type == 'vor') return me.drawVOR(grp, opts); elsif(type == 'NDB' or type == 'ndb') return me.drawNDB(grp, opts); elsif(type == 'ARPT' or type == 'arpt') return me.drawAirport(grp, opts); else return me.drawFIX(grp, opts); } };