Einzelnen Beitrag anzeigen
Alt 05.07.2003, 09:09   #8
harry3
Inventar
 
Registriert seit: 11.06.2001
Alter: 38
Beiträge: 2.397


harry3 eine Nachricht über ICQ schicken
Beitrag 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
harry3 ist offline   Mit Zitat antworten