Inventar
Registriert seit: 11.06.2001
Alter: 38
Beiträge: 2.397
|
vsi_gauge.c
Hier also der code: Mit Kommentaren ausgerüstet; manchmal in deutsch, manchmal in englisch, wie's mich gerade gefreut hat!
//vsi_gauge.c
//by Harald Scheidl (c)2003
char vsi_gauge_name[] = GAUGE_NAME;
extern PELEMENT_HEADER vsi_list;
extern MOUSERECT vsi_mouse_rect[];
GAUGE_CALLBACK vsi_update;
GAUGE_HEADER_FS700(GAUGE_W, vsi_gauge_name, &vsi_list, vsi_mouse_rect, vsi_update, 0,0,0 );
MOUSE_BEGIN( vsi_mouse_rect, 0, 0, 0 )
MOUSE_END
#include
#include "font.h" //definiert die daten zur schrift
#define GAUGE_MAX_FPM 6000
#define GAUGE_MIN_FPM -6000
//---------------------------------------------------------------
//updates
NEEDLE_UPDATE_CALLBACK vsi_set_cb;
NEEDLE_UPDATE_CALLBACK vsi_needle_src_cb;
STRING_UPDATE_CALLBACK vsi_string_cb;
//---------------------------------------------------------------
//Icon macro for showing EFIS/not showing EFIS
MAKE_ICON( efis_black,
EFIS_OFF,
NULL,
NULL,
IMAGE_USE_ERASE | IMAGE_USE_TRANSPARENCY,
0,
0,0,
MASTER_BATTERY, NULL,
ICON_SWITCH_TYPE_SET_CUR_ICON,
2,
0,
0 )
PELEMENT_HEADER vsi_plist1[] =
{
&efis_black.header,
NULL
};
//---------------------------------------------------------------
MAKE_STRING( vsi_string,
NULL,
&vsi_plist1,
IMAGE_USE_ERASE | IMAGE_USE_BRIGHT | IMAGE_USE_TRANSPARENCY,
0,
50, 35,
60, 20,
4,
MODULE_VAR_NONE,
MODULE_VAR_NONE,
MODULE_VAR_NONE,
RGB(255,128,0),
RGB(0,0,0),
RGB(92,92,92),
GAUGE_FONT_DEFAULT,
GAUGE_WEIGHT_DEFAULT,
GAUGE_CHARSET,
0,
DT_CENTER | DT_VCENTER | DT_SINGLELINE,
NULL,
vsi_string_cb )
PELEMENT_HEADER vsi_plist2[] =
{
&vsi_string.header,
NULL
};
//---------------------------------------------------------------
FLOAT64 FSAPI vsi_string_cb(PELEMENT_STRING pelement )
{
FLOAT64 val=pelement->source_var[0].var_value.n;
sprintf(pelement->string, "%s", "TEST");
return val;
}
//Nonlinearity Table for the needle of the VSI
NONLINEARITY vsi_needle_nl[] =
{
{{112, 64}, -6000, 0},
{{104, 85}, -4000, 0},
{{75, 105}, -2000, 0},
{{35, 105 }, -1000, 0},
{{8, 58}, 0, 0},
{{35, 11}, 1000, 0},
{{75, 12}, 2000, 0},
{{104, 31}, 4000, 0},
{{112, 51}, 6000, 0},
};
//---------------------------------------------------------------
//VSI Autopilot Setting
MAKE_NEEDLE( vsi_setting,
VSI_SET,
&vsi_plist2,
NULL,
IMAGE_USE_ERASE | IMAGE_USE_TRANSPARENCY,
0,
60, 59,
0, 5,
AUTOPILOT_VERTICAL_HOLD_VAR,
vsi_set_cb,
vsi_needle_nl,
0 )
PELEMENT_HEADER vsi_plist3[] =
{
&vsi_setting.header,
NULL
};
//---------------------------------------------------------------
FLOAT64 FSAPI vsi_set_cb ( PELEMENT_NEEDLE pelement )
{
FLOAT64 val=pelement->source_var.var_value.n;
if ( val > GAUGE_MAX_FPM ) val = GAUGE_MAX_FPM;
if ( val < GAUGE_MIN_FPM ) val = GAUGE_MIN_FPM;
return val;
}
//---------------------------------------------------------------
//VSI display
MAKE_NEEDLE( vsi_needle,
VSI_NEEDLE,
&vsi_plist3,
NULL,
IMAGE_USE_ERASE | IMAGE_USE_TRANSPARENCY,
0,
60, 59,
0, 5,
VERTICAL_SPEED,
vsi_needle_src_cb,
vsi_needle_nl,
0 )
PELEMENT_HEADER vsi_plist4[] =
{
&vsi_needle.header,
NULL
};
FLOAT64 FSAPI vsi_needle_src_cb ( PELEMENT_NEEDLE pelement )
{
FLOAT64 val=pelement->source_var.var_value.n /= 1.30048;
if ( val > GAUGE_MAX_FPM ) val = GAUGE_MAX_FPM;
if ( val < GAUGE_MIN_FPM ) val = GAUGE_MIN_FPM;
return val;
}
//----------------------------------------------------------------
MAKE_STATIC( vsi_background,
VSI_BACKGROUND,
&vsi_plist4,
NULL,
IMAGE_USE_ERASE,
0,
{0, 0} )
PELEMENT_HEADER vsi_list = &vsi_background.header;
//---------------------------------------------------------------
void FSAPI vsi_update (PGAUGEHDR pgauge, int service_id, UINT32 extra_data)
{
switch(service_id)
{
/* "install_routine()" */
case PANEL_SERVICE_PRE_INSTALL:
break;
/* "initialize_routine()" */
case PANEL_SERVICE_PRE_INITIALIZE:
break;
/* "update_routine()" */
case PANEL_SERVICE_PRE_UPDATE:
/* "draw_routine()" */
case PANEL_SERVICE_PRE_DRAW:
break;
/* "kill_routine()" */
case PANEL_SERVICE_PRE_KILL:
break;
}
}
/////////////////////////////////////////////////////////////////////////////
#undef GAUGE_NAME
#undef GAUGEHDR_VAR_NAME
#undef GAUGE_W
|