Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

setupdisplay_win32.cpp

Go to the documentation of this file.
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

Generated at Wed Apr 4 19:54:03 2001 for ClanLib by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001