00001 00002 #ifdef WIN32 00003 #pragma warning (disable:4786) 00004 #endif 00005 00006 #define INITGUID 00007 #include <ddraw.h> 00008 #include <dinput.h> 00009 #include <Hermes/hermes.h> 00010 00011 #include "API/Display/setupdisplay.h" 00012 #include "API/Display/Display/display.h" 00013 00014 #include "Display/Display/DirectDraw/displaycard_directdraw.h" 00015 #include "Display/Input/Win32/input_dx.h" 00016 00017 #include "Display/System/Generic/setupdisplay_generic.h" 00018 00020 // clanGL hookup interface: 00021 00022 bool global_uses_opengl = false; 00023 void (*opengl_init_function)()= NULL; 00024 00026 // CL_SetupDisplay initialization 00027 00028 static CL_Input_DX *input_dx = NULL; 00029 static int init_ref_count = 0; 00030 00031 void CL_SetupDisplay::init() 00032 { 00033 init_ref_count++; 00034 if (init_ref_count > 1) return; 00035 00036 Hermes_Init(); 00037 00038 // Init input (note: this should be altered, too ugly impl.): 00039 new CL_Input_DX; 00040 00041 // todo: enumerate directdraw display cards. 00042 00043 if (global_uses_opengl && opengl_init_function != NULL) 00044 { 00045 opengl_init_function(); 00046 } 00047 else 00048 { 00049 CL_Display::cards.push_back( 00050 new CL_DisplayCard_DirectDraw( 00051 0, // card_no 00052 NULL, // card_guid, NULL = default screen, 00053 "default card")); // card_name 00054 } 00055 // todo: Add OpenPTC win32 target here. 00056 00057 CL_SetupDisplay_Generic::init(); 00058 } 00059 00061 // CL_SetupDisplay deinitialization 00062 00063 void CL_SetupDisplay::deinit() 00064 { 00065 init_ref_count--; 00066 if (init_ref_count > 0) return; 00067 00068 CL_SetupDisplay_Generic::deinit(); 00069 00070 int size = CL_Display::cards.size(); 00071 for (int i = 0; i < size; i++) 00072 { 00073 delete CL_Display::cards[i]; 00074 } 00075 00076 CL_Display::cards.clear(); 00077 00078 delete input_dx; 00079 } 00080 00082 // CL_SetupDisplay implementation
1.2.6 written by Dimitri van Heesch,
© 1997-2001