# See: http://wiki.flightgear.org/MapStructure
# 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');};