WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Simulationen > Designer Forum

Designer Forum Treffpunkt für Gedankenaustausch von Simmern, die selbst

Microsoft KARRIERECAMPUS

 
 
Themen-Optionen Ansicht
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
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist an.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:29 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag