1
0
Fork 0

- move FloatToInt() function to simgear/math/fastmath.hxx, renamed to

float_to_int() for consistency reasons
- remove hud_opts.hxx
This commit is contained in:
mfranz 2006-06-16 09:31:34 +00:00
parent ef52b23e3a
commit 038e047e8f
7 changed files with 31 additions and 95 deletions

View file

@ -2,7 +2,7 @@ noinst_LIBRARIES = libCockpit.a
libCockpit_a_SOURCES = \ libCockpit_a_SOURCES = \
cockpit.cxx cockpit.hxx \ cockpit.cxx cockpit.hxx \
hud.cxx hud.hxx hud_opts.hxx \ hud.cxx hud.hxx \
hud_card.cxx hud_dnst.cxx hud_gaug.cxx hud_inst.cxx \ hud_card.cxx hud_dnst.cxx hud_gaug.cxx hud_inst.cxx \
hud_labl.cxx hud_ladr.cxx \ hud_labl.cxx hud_ladr.cxx \
hud_lat.cxx hud_lon.cxx \ hud_lat.cxx hud_lon.cxx \

View file

@ -21,8 +21,8 @@
// $Id$ // $Id$
#ifndef _HUD_HXX #ifndef _OLDHUD_HXX
#define _HUD_HXX #define _OLDHUD_HXX
#ifndef __cplusplus #ifndef __cplusplus
# error This library requires C++ # error This library requires C++
@ -50,8 +50,9 @@
#include <deque> // STL double ended queue #include <deque> // STL double ended queue
#include STL_FSTREAM #include STL_FSTREAM
#include <simgear/math/fastmath.hxx> // float_to_int()
#include <simgear/constants.h> #include <simgear/constants.h>
//#include <simgear/props/props.hxx> #include <simgear/props/props.hxx>
#include <Include/fg_typedefs.h> #include <Include/fg_typedefs.h>
#include <Aircraft/aircraft.hxx> #include <Aircraft/aircraft.hxx>
@ -62,7 +63,6 @@
#include <Main/viewmgr.hxx> #include <Main/viewmgr.hxx>
#include <Airports/runways.hxx> #include <Airports/runways.hxx>
#include "hud_opts.hxx"
#include <plib/sg.h> #include <plib/sg.h>
SG_USING_STD(deque); SG_USING_STD(deque);
@ -287,7 +287,7 @@ public:
if ( HUDtext && str ) { if ( HUDtext && str ) {
float r, l ; float r, l ;
HUD_Font->getBBox ( str, HUD_TextSize, 0, &l, &r, NULL, NULL ) ; HUD_Font->getBBox ( str, HUD_TextSize, 0, &l, &r, NULL, NULL ) ;
return FloatToInt( r - l ); return float_to_int( r - l );
} }
return 0 ; return 0 ;
} }
@ -297,7 +297,7 @@ public:
if ( HUDtext && strlen( msg )) { if ( HUDtext && strlen( msg )) {
float r, l ; float r, l ;
HUD_Font->getBBox ( msg, HUD_TextSize, 0, &l, &r, NULL, NULL ) ; HUD_Font->getBBox ( msg, HUD_TextSize, 0, &l, &r, NULL, NULL ) ;
return FloatToInt( r - l ); return float_to_int( r - l );
} }
return 0 ; return 0 ;
} }
@ -354,7 +354,7 @@ public:
void Draw() void Draw()
{ {
guiFnt.drawString( msg, FloatToInt(x), FloatToInt(y) ); guiFnt.drawString( msg, float_to_int(x), float_to_int(y) );
} }
}; };
@ -490,7 +490,7 @@ public:
if ( HUDtext && str ) { if ( HUDtext && str ) {
float r, l ; float r, l ;
HUD_Font->getBBox ( str, HUD_TextSize, 0, &l, &r, NULL, NULL ) ; HUD_Font->getBBox ( str, HUD_TextSize, 0, &l, &r, NULL, NULL ) ;
return FloatToInt( r - l ); return float_to_int( r - l );
} }
return 0 ; return 0 ;
} }
@ -898,4 +898,4 @@ private:
float _r, _g, _b, _a, _cl; float _r, _g, _b, _a, _cl;
}; };
#endif // _HUD_H #endif // _OLDHUD_H

View file

@ -339,8 +339,8 @@ void hud_card::draw(void) // (HUD_scale * pscale)
// draw scale or tape // draw scale or tape
// last = FloatToInt(vmax)+1; // last = float_to_int(vmax)+1;
// i = FloatToInt(vmin); // i = float_to_int(vmin);
last = (int)vmax + 1; // N last = (int)vmax + 1; // N
i = (int)vmin; // N i = (int)vmin; // N
@ -464,7 +464,7 @@ void hud_card::draw(void) // (HUD_scale * pscale)
} }
lenstr = sprintf(TextScale, "%d", lenstr = sprintf(TextScale, "%d",
FloatToInt(disp_val * data_scaling()/*+.5*/)); float_to_int(disp_val * data_scaling()/*+.5*/));
// (int)(disp_val * data_scaling() +.5)); // (int)(disp_val * data_scaling() +.5));
/* if (((marker_ys - 8) > scrn_rect.top) && /* if (((marker_ys - 8) > scrn_rect.top) &&
((marker_ys + 8) < (height))){ */ ((marker_ys + 8) < (height))){ */
@ -642,8 +642,8 @@ void hud_card::draw(void) // (HUD_scale * pscale)
// printf("vmin = %d vmax = %d\n", (int)vmin, (int)vmax); // printf("vmin = %d vmax = %d\n", (int)vmin, (int)vmax);
// last = FloatToInt(vmax)+1; // last = float_to_int(vmax)+1;
// i = FloatToInt(vmin); // i = float_to_int(vmin);
if (zoom == 1) { if (zoom == 1) {
zoomed_scale((int)vmin,(int)vmax); zoomed_scale((int)vmin,(int)vmax);
@ -733,7 +733,7 @@ void hud_card::draw(void) // (HUD_scale * pscale)
// printf("%d\n", (int)(disp_val * (double)data_scaling() + 0.5)); // printf("%d\n", (int)(disp_val * (double)data_scaling() + 0.5));
lenstr = sprintf(TextScale, "%d", lenstr = sprintf(TextScale, "%d",
// (int)(disp_val * data_scaling() +.5)); // (int)(disp_val * data_scaling() +.5));
FloatToInt(disp_val * data_scaling()/*+.5*/)); float_to_int(disp_val * data_scaling()/*+.5*/));
// Draw major ticks and text only if far enough from the edge. // Draw major ticks and text only if far enough from the edge.
if (((marker_xs - 10)> scrn_rect.left) if (((marker_xs - 10)> scrn_rect.left)

View file

@ -95,8 +95,8 @@ void gauge_instr::draw(void)
if (!huds_noticks(options)) { // If not no ticks...:) if (!huds_noticks(options)) { // If not no ticks...:)
// Calculate x marker offsets // Calculate x marker offsets
int last = (int)vmax + 1; // FloatToInt(vmax)+1; int last = (int)vmax + 1; // float_to_int(vmax)+1;
i = (int)vmin; //FloatToInt(vmin); i = (int)vmin; //float_to_int(vmin);
for (; i < last; i++) { for (; i < last; i++) {
// Calculate the location of this tick // Calculate the location of this tick
@ -135,7 +135,7 @@ void gauge_instr::draw(void)
if (!huds_notext(options)) { if (!huds_notext(options)) {
disp_val = i; disp_val = i;
sprintf(TextScale, "%d", sprintf(TextScale, "%d",
FloatToInt(disp_val * data_scaling()/*+.5*/)); float_to_int(disp_val * data_scaling()/*+.5*/));
lenstr = getStringWidth(TextScale); lenstr = getStringWidth(TextScale);
@ -143,12 +143,12 @@ void gauge_instr::draw(void)
text_x = mid_scr.x - lenstr/2 ; text_x = mid_scr.x - lenstr/2 ;
} else if (huds_left(options)) { } else if (huds_left(options)) {
text_x = FloatToInt(marker_xs - lenstr); text_x = float_to_int(marker_xs - lenstr);
} else { } else {
text_x = FloatToInt(marker_xe - lenstr); text_x = float_to_int(marker_xe - lenstr);
} }
// Now we know where to put the text. // Now we know where to put the text.
text_y = FloatToInt(marker_ys); text_y = float_to_int(marker_ys);
textString(text_x, text_y, TextScale, 0); textString(text_x, text_y, TextScale, 0);
} }
} }
@ -160,20 +160,20 @@ void gauge_instr::draw(void)
// have been drawn, text_x and text_y may be recycled. This is used // have been drawn, text_x and text_y may be recycled. This is used
// with the marker start stops to produce a pointer for each side reading // with the marker start stops to produce a pointer for each side reading
text_y = scrn_rect.top + FloatToInt((cur_value - vmin) * factor() /*+.5f*/); text_y = scrn_rect.top + float_to_int((cur_value - vmin) * factor() /*+.5f*/);
// text_x = marker_xs - scrn_rect.left; // text_x = marker_xs - scrn_rect.left;
if (huds_right(options)) { if (huds_right(options)) {
glBegin(GL_LINE_STRIP); glBegin(GL_LINE_STRIP);
glVertex2f(scrn_rect.left, text_y + 5); glVertex2f(scrn_rect.left, text_y + 5);
glVertex2f(FloatToInt(marker_xe), text_y); glVertex2f(float_to_int(marker_xe), text_y);
glVertex2f(scrn_rect.left, text_y - 5); glVertex2f(scrn_rect.left, text_y - 5);
glEnd(); glEnd();
} }
if (huds_left(options)) { if (huds_left(options)) {
glBegin(GL_LINE_STRIP); glBegin(GL_LINE_STRIP);
glVertex2f(width, text_y + 5); glVertex2f(width, text_y + 5);
glVertex2f(FloatToInt(marker_xs), text_y); glVertex2f(float_to_int(marker_xs), text_y);
glVertex2f(width, text_y - 5); glVertex2f(width, text_y - 5);
glEnd(); glEnd();
} }
@ -218,8 +218,8 @@ void gauge_instr::draw(void)
} }
int last = (int)vmax + 1; //FloatToInt(vmax)+1; int last = (int)vmax + 1; //float_to_int(vmax)+1;
i = (int)vmin; //FloatToInt(vmin); i = (int)vmin; //float_to_int(vmin);
for (; i <last ; i++) { for (; i <last ; i++) {
condition = true; condition = true;
if (!modulo() && i < min_val()) if (!modulo() && i < min_val())
@ -259,7 +259,7 @@ void gauge_instr::draw(void)
disp_val = i; disp_val = i;
} }
sprintf(TextScale, "%d", sprintf(TextScale, "%d",
FloatToInt(disp_val * data_scaling()/* +.5*/)); float_to_int(disp_val * data_scaling()/* +.5*/));
lenstr = getStringWidth(TextScale); lenstr = getStringWidth(TextScale);
// Draw major ticks and text only if far enough from the edge. // Draw major ticks and text only if far enough from the edge.

View file

@ -448,8 +448,8 @@ void HudLadder::draw(void)
LineList.erase(); LineList.erase();
StippleLineList.erase(); StippleLineList.erase();
int last = FloatToInt(vmax) + 1; int last = float_to_int(vmax) + 1;
int i = FloatToInt(vmin); int i = float_to_int(vmin);
if (!scr_hole) { if (!scr_hole) {
x_end = half_span; x_end = half_span;

View file

@ -1,64 +0,0 @@
// hud_opts.hxx -- hud optimization tools
//
// Probably written by Norman Vine, started sometime in 1998 or 1999.
//
// Copyright (C) 1999 FlightGear Project
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
#ifndef _HUD_OPTS_HXX
#define _HUD_OPTS_HXX
#ifndef __cplusplus
# error This library requires C++
#endif
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <simgear/compiler.h>
#if defined(i386)
#define USE_X86_ASM
#endif
#if defined(USE_X86_ASM)
static __inline__ int FloatToInt(float f)
{
int r;
__asm__ ("fistpl %0" : "=m" (r) : "t" (f) : "st");
return r;
}
#elif defined(__MSC__) && defined(__WIN32__)
static __inline int FloatToInt(float f)
{
int r;
_asm {
fld f
fistp r
}
return r;
}
#else
#define FloatToInt(F) ((int) ((F) < 0.0f ? (F)-0.5f : (F)+0.5f))
#endif
#endif // _HUD_OPTS_H

View file

@ -45,7 +45,7 @@ instr_scale::instr_scale(
if (show_range < 0) if (show_range < 0)
range_shown = -range_shown; range_shown = -range_shown;
temp = FloatToInt(Maximum_value - Minimum_value) / 100; temp = float_to_int(Maximum_value - Minimum_value) / 100;
if (range_shown < temp) if (range_shown < temp)
range_shown = temp; range_shown = temp;
} }