NDB Symbol for MapStructure Layers
This commit is contained in:
parent
67b95bb1fe
commit
6f6cc8f925
1 changed files with 74 additions and 5 deletions
|
@ -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');};
|
||||
|
|
Loading…
Add table
Reference in a new issue