+ instr_item *p;
+
+ name = node->getStringValue("name");
+ x = node->getIntValue("x");
+ y = node->getIntValue("y");
+ width = node->getIntValue("width");
+ height = node->getIntValue("height");
+ factor = node->getFloatValue("compression_factor");
+ span_units = node->getFloatValue("span_units");
+ division_units = node->getFloatValue("division_units");
+ screen_hole = node->getIntValue("screen_hole");
+ lbl_pos = node->getIntValue("lbl_pos");
+ frl_spot = node->getBoolValue("enable_frl",false);
+ target = node->getBoolValue("enable_target_spot",false);
+ vel_vector = node->getBoolValue("enable_velocity_vector",false);
+ drift = node->getBoolValue("enable_drift_marker",false);
+ alpha = node->getBoolValue("enable_alpha_bracket",false);
+ energy = node->getBoolValue("enable_energy_marker",false);
+ climb_dive = node->getBoolValue("enable_climb_dive_marker",false);
+ glide = node->getBoolValue("enable_glide_slope_marker",false);
+ glide_slope_val = node->getFloatValue("glide_slope",-4.0);
+ worm_energy = node->getBoolValue("enable_energy_marker",false);
+ waypoint = node->getBoolValue("enable_waypoint_marker",false);
+ working = node->getBoolValue("working");
+
+ FG_LOG(FG_INPUT, FG_INFO, "Done reading instrument " << name);
+
+
+ p = (instr_item *) new HudLadder( name, x, y,
+ width, height, factor,
+ get_roll, get_pitch,
+ span_units, division_units, minor_division,
+ screen_hole, lbl_pos, frl_spot, target, vel_vector,
+ drift, alpha, energy, climb_dive,
+ glide, glide_slope_val, worm_energy,
+ waypoint, working);
+
+ return p;
+
+} //end readLadder
+
+static instr_item *
+readCard(const SGPropertyNode * node)
+{
+
+ instr_item *p;
+
+ name = node->getStringValue("name");
+ x = node->getIntValue("x");
+ y = node->getIntValue("y");
+ width = node->getIntValue("width");
+ height = node->getIntValue("height");
+ loadfn = node->getStringValue("loadfn");
+ options = node->getIntValue("options");
+ maxValue = node->getFloatValue("maxValue");
+ minValue = node->getFloatValue("minValue");
+ scaling = node->getFloatValue("disp_scaling");
+ major_divs = node->getIntValue("major_divs");
+ minor_divs = node->getIntValue("minor_divs");
+ modulator = node->getIntValue("modulator");
+ span_units = node->getFloatValue("value_span");
+ type = node->getStringValue("type");
+ tick_bottom = node->getBoolValue("tick_bottom",false);
+ tick_top = node->getBoolValue("tick_top",false);
+ tick_right = node->getBoolValue("tick_right",false);
+ tick_left = node->getBoolValue("tick_left",false);
+ cap_bottom = node->getBoolValue("cap_bottom",false);
+ cap_top = node->getBoolValue("cap_top",false);
+ cap_right = node->getBoolValue("cap_right",false);
+ cap_left = node->getBoolValue("cap_left",false);
+ marker_off = node->getFloatValue("marker_offset",0.0);
+ enable_pointer = node->getBoolValue("enable_pointer",true);
+ type_pointer = node->getStringValue("pointer_type");
+ working = node->getBoolValue("working");
+
+
+ FG_LOG(FG_INPUT, FG_INFO, "Done reading instrument " << name);
+
+
+ if(type=="guage")
+ span_units = maxValue - minValue;
+
+ if(loadfn=="anzg")
+ load_fn = get_anzg;
+ else
+ if(loadfn=="heading")
+ load_fn = get_heading;
+ else
+ if(loadfn=="aoa")
+ load_fn = get_aoa;
+ else
+ if(loadfn=="climb")
+ load_fn = get_climb_rate;
+ else
+ if(loadfn=="altitude")
+ load_fn = get_altitude;
+ else
+ if(loadfn=="agl")
+ load_fn = get_agl;
+ else
+ if(loadfn=="speed")
+ load_fn = get_speed;
+ else
+ if(loadfn=="view_direction")
+ load_fn = get_view_direction;
+ else
+ if(loadfn=="aileronval")
+ load_fn = get_aileronval;
+ else
+ if(loadfn=="elevatorval")
+ load_fn = get_elevatorval;
+ else
+ if(loadfn=="rudderval")
+ load_fn = get_rudderval;
+ else
+ if(loadfn=="throttleval")
+ load_fn = get_throttleval;
+
+
+ p = (instr_item *) new hud_card( x,
+ y,
+ width,
+ height,
+ load_fn,
+ options,
+ maxValue, minValue,
+ scaling,
+ major_divs, minor_divs,
+ modulator,
+ dp_showing,
+ span_units,
+ type,
+ tick_bottom,
+ tick_top,
+ tick_right,
+ tick_left,
+ cap_bottom,
+ cap_top,
+ cap_right,
+ cap_left,
+ marker_off,
+ enable_pointer,
+ type_pointer,
+ working);
+ return p;
+}// end readCard
+
+static instr_item *
+readLabel(const SGPropertyNode * node)
+{
+ instr_item *p;
+
+ int font_size = (fgGetInt("/sim/startup/xsize") > 1000) ? LARGE : SMALL;
+
+ name = node->getStringValue("name");
+ x = node->getIntValue("x");
+ y = node->getIntValue("y");
+ width = node->getIntValue("width");
+ height = node->getIntValue("height");
+ loadfn = node->getStringValue("data_source");
+ label_format = node->getStringValue("label_format");
+ prelabel = node->getStringValue("pre_label_string");
+ postlabel = node->getStringValue("post_label_string");
+ scaling = node->getFloatValue("scale_data");
+ options = node->getIntValue("options");
+ justi = node->getIntValue("justification");
+ blinking = node->getIntValue("blinking");
+ latitude = node->getBoolValue("latitude",false);
+ longitude = node->getBoolValue("longitude",false);
+ working = node->getBoolValue("working");
+
+
+ FG_LOG(FG_INPUT, FG_INFO, "Done reading instrument " << name);
+
+
+ if(justi==0)
+ justification = LEFT_JUST;
+ else
+ if(justi==1)
+ justification = CENTER_JUST;
+ else
+ if(justi==2)
+ justification = RIGHT_JUST;
+
+
+ if(prelabel=="NULL")
+ pre_label_string = NULL;
+ else
+ if(prelabel=="blank")
+ pre_label_string = " ";
+ else
+ pre_label_string = prelabel.c_str();
+
+
+ if(postlabel=="blank")
+ post_label_string = " ";
+ else
+ if(postlabel=="NULL")
+ post_label_string = NULL;
+ else
+ if(postlabel=="units")
+ post_label_string = units;
+ else
+ post_label_string = postlabel.c_str();