1
0
Fork 0

Added screen dumping and screen printing (win32) functionality.

This commit is contained in:
curt 1999-10-14 23:46:28 +00:00
parent eddea671a2
commit c866ba581d
3 changed files with 93 additions and 4 deletions

View file

@ -61,8 +61,13 @@
#include <Main/views.hxx>
#include <Misc/fgpath.hxx>
#include <Network/network.h>
#include <Screen/screen-dump.hxx>
#include <Time/fg_time.hxx>
#ifdef WIN32
# include <Screen/win32-printer.h>
#endif
#include "gui.h"
FG_USING_STD(string);
@ -71,6 +76,11 @@ FG_USING_STD(string);
FG_USING_STD(cout);
#endif
// hack, should come from an include someplace
extern void fgInitVisuals( void );
extern void fgReshape( int width, int height );
extern void fgRenderFrame( void );
puFont guiFnt = 0;
fntTexFont *guiFntHandle = 0;
@ -539,6 +549,73 @@ void helpCb (puObject *)
mkDialog ("Help started in netscape window.");
}
#ifdef WIN32
// win32 print screen function
void printScreen ( puObject *obj ) {
bool show_pu_cursor = false;
TurnCursorOff();
if ( !puCursorIsHidden() ) {
show_pu_cursor = true;
puHideCursor();
}
BusyCursor( 0 );
mainMenuBar->hide();
CGlPrinter p;
p.Begin( "FlightGear" );
fgInitVisuals();
fgReshape( p.GetHorzRes(), p.GetVertRes() );
fgRenderFrame();
p.End();
if( menu_on ) {
mainMenuBar->reveal();
}
BusyCursor(1);
if ( show_pu_cursor ) {
puShowCursor();
}
TurnCursorOn();
}
#endif // #ifdef WIN32
// do a screen dump
void dumpScreen ( puObject *obj ) {
bool show_pu_cursor = false;
mainMenuBar->hide();
TurnCursorOff();
if ( !puCursorIsHidden() ) {
show_pu_cursor = true;
puHideCursor();
}
fgInitVisuals();
fgReshape( current_options.get_xsize(), current_options.get_ysize() );
fgRenderFrame();
fgRenderFrame();
my_glDumpWindow( "fgfs-screen.ppm",
current_options.get_xsize(),
current_options.get_ysize() );
mkDialog ("Screen dump saved to fgfs-screen.ppm");
if ( show_pu_cursor ) {
puShowCursor();
}
TurnCursorOn();
if( menu_on ) {
mainMenuBar->reveal();
}
}
/// The beginnings of teleportation :-)
// Needs cleaning up but works
// These statics should disapear when this is a class
@ -750,11 +827,22 @@ static void net_blaster_toggle( puObject *cb)
The menu stuff
---------------------------------------------------------------------*/
char *fileSubmenu [] = {
"Exit", /* "Close", "---------", "Print", "---------", "Save", */
"Exit", /* "Close", "---------", */
#ifdef WIN32
"Print",
#endif
"Screen Dump",
/* "---------", "Save", */
"Reset", NULL
};
puCallback fileSubmenuCb [] = {
MayBeGoodBye, /* hideMenuCb, NULL, notCb, NULL, notCb, */ reInit, NULL
MayBeGoodBye, /* hideMenuCb, NULL, */
#ifdef WIN32
printScreen,
#endif
/* NULL, notCb, */
dumpScreen,
reInit, NULL
};
/*

View file

@ -48,6 +48,7 @@ fgfs_LDADD = \
$(WEATHER_LIBS) \
$(top_builddir)/Simulator/Joystick/libJoystick.a \
$(SERIAL_LIBS) \
$(top_builddir)/Lib/Screen/libScreen.a \
$(top_builddir)/Lib/Math/libMath.a \
$(top_builddir)/Lib/Bucket/libBucket.a \
$(top_builddir)/Lib/Voronoi/libVoronoi.a \

View file

@ -175,7 +175,7 @@ sgMat4 copy_of_ssgOpenGLAxisSwapMatrix =
// fgInitVisuals() -- Initialize various GL/view parameters
static void fgInitVisuals( void ) {
void fgInitVisuals( void ) {
fgLIGHT *l;
l = &cur_light_params;
@ -224,7 +224,7 @@ static void fgInitVisuals( void ) {
// Update all Visuals (redraws anything graphics related)
static void fgRenderFrame( void ) {
void fgRenderFrame( void ) {
fgLIGHT *l = &cur_light_params;
FGTime *t = FGTime::cur_time_params;
// FGView *v = &current_view;