diff --git a/Nasal/canvas/map/NDB.symbol b/Nasal/canvas/map/NDB.symbol index 01615c75a..f06c6d4f0 100644 --- a/Nasal/canvas/map/NDB.symbol +++ b/Nasal/canvas/map/NDB.symbol @@ -1,7 +1,76 @@ # See: http://wiki.flightgear.org/MapStructure -DotSym.makeinstance('NDB', { - parents: [SVGSymbol], - svg_path: "/gui/dialogs/images/ndb_symbol.svg", - #cacheable: 1, -}); +# Class things: +var name = 'NDB'; +var parents = [DotSym]; +var __self__ = caller(0)[0]; +DotSym.makeinstance( name, __self__ ); +SymbolLayer.get(name).df_style = { + line_width: 3, + scale_factor: 1, + font: "LiberationFonts/LiberationSans-Regular.ttf", + font_color: [0,0,0], + font_size: 28, + color: [0.5, 0, 0.5], + dash_array: [0,2,0,2], + show_labels: 1, +}; + + +var element_type = "group"; # we want a group, becomes "me.element" + +## +# used during initialization to populate the symbol cache with a FIX symbol +# +var drawNDB = func(group) { + group.createChild("path") + .moveTo(-4, 0) + .horizTo(4) + .moveTo(0, -4) + .vertTo(4) + .moveTo(-8, 0) + .arcSmallCW(8,8,0,16,0) + .arcSmallCW(8,8,0,-16,0) + .moveTo(-15,0) + .arcSmallCW(15,15,0,30,0) + .arcSmallCW(15,15,0,-30,0) + .setStrokeLineWidth(line_width) + .setStrokeDashArray(dash_array) + .setColor(color); +} +var _name = name; + +var init = func { + # initialize the cached fix symbol + var draw_fn = me.getOption('draw_function'); + if(typeof(draw_fn) != 'func') + draw_fn = drawNDB; + + var cache = StyleableCacheable.new( + name:_name, + draw_func: draw_fn, + cache: SymbolCache32x32, + draw_mode: SymbolCache.DRAW_CENTERED, + relevant_keys: ["line_width", "color", "dash_array"], + ); + cache.render(me.element, me.style).setScale(me.style.scale_factor); + + var txt_offset = me.getStyle('text_offset', [3, 0]); + var txt_alignment = me.getStyle('text_alignment', 'left-bottom'); + var txt_color = me.getStyle('text_color', [0,0.6,0.85]); + var txt_bgcolor = me.getStyle('text_bgcolor', [0,0,0,0]); + var txt_mode = me.getStyle('text_mode', canvas.Text.TEXT); + var txt_padding = me.getStyle('text_padding', 0); + # non-cached stuff: + if (me.style.show_labels){ + me.text_fix = me.newText(me.model.id). + setScale(me.style.scale_factor). + setTranslation(txt_offset). + setAlignment(txt_alignment). + setPadding(txt_padding). + setDrawMode(txt_mode). + setColor(txt_color). + setColorFill(txt_bgcolor); + } +} +var draw = func {me.callback('draw');};