Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

SdlArs.h

Go to the documentation of this file.
00001 #if !defined( __SDL_MAIN_H__ )
00002 #define __SDL_MAIN_H__
00003 
00004 #include <stdio.h>
00005 #include <stdlib.h>
00006 #include <time.h>
00007 #include <math.h>
00008 
00009 #include <SDL.h>
00010 #include <SDL_thread.h>
00011 
00012 #include <SDL_image.h>
00013 #include <SDL_mixer.h>
00014 
00015 #include <string>
00016 #include <set>
00017 #include <map>
00018 #include <list>
00019 #include <vector>
00020 #include <deque>
00021 #include <algorithm>
00022 #include <iostream>
00023 #include <fstream>
00024 using namespace std;
00025 
00026 #include "mpeg/smpeg.h"
00027 
00028 #ifndef WIN32
00029 #include "itoa.h"
00030 #endif
00031 
00032 #pragma warning( disable: 4786 )
00033 
00034 extern ofstream tron;
00035 
00037 //      Ignore case string type
00038 template <class T> class IgnoreCaseTraits : public char_traits<T>       {
00039 public:
00040         static bool eq( const T &c1 , const T &c2 )     {       return towupper( c1 ) == towupper( c2 );        }
00041         static bool     lt( const T &c1 , const T &c2 ) {       return towupper( c1 ) < towupper( c2 ); }
00042         static int compare( const T *s1 , const T *s2 , size_t n )      
00043         {
00044                 for( size_t i = 0 ; i < n ; i++ )
00045                         if( !eq( s1[i] , s2[i] ) )
00046                                 return lt( s1[i] , s2[i] ) ? -1 : 1;
00047                 return 0;
00048         }
00049 
00050         static const T *find( const T *s , size_t n , const T &c )      
00051         {
00052                 for( size_t i = 0 ; i < n ; i++ )
00053                         if( eq( s[i] , c ) )
00054                                 return &s[i];
00055                 return 0;
00056         }
00057 };
00058 
00059 typedef basic_string<char , IgnoreCaseTraits<char> , allocator<char> >  icstring;
00060 static icstring EmptyString;
00061 
00062 #include "arsdebug.h"
00063 
00064 #ifdef WIN32
00065 #       ifdef _DEBUG
00066 #               define new DEBUG_CLIENTBLOCK
00067 //#             define delete DEBUG_FREE_CLIENTBLOCK
00068 #       endif
00069 #endif
00070 
00071 #include "interpret.h"
00072 
00073 #include "arsexception.h"
00074 #include "arssound.h"
00075 #include "xrect.h"
00076 #include "arsrgbcolor.h"
00077 
00078 #include "CfgHandler.h"
00079 #include "exprint.h"
00080 
00081 #include "arsfontengine.h"
00082 #include "arsmessages.h"
00083 #include "arstimer.h"
00084 #include "arsobject.h"
00085 #include "arspaint.h"
00086 #include "arswindow.h"
00087 
00088 extern Ars::RGBColor ArsText_color , ArsBack_color;
00089 
00090 typedef Ars::Window *(*cbObjCreateType)( const icstring &name );
00091 
00092 namespace Ars
00093 {
00094         static XRect EmptyRect( 0 , 0 , -1 , -1 );
00095 
00096 class ArsApplication : public MessageClient , public std::map< std::pair< std::string, unsigned char>, FontEngine *>    {
00097 private:
00098         
00099         static ArsApplication   *instance;
00100         int     exitCode;
00101         bool    running;
00102 
00103         MessageClient *keyFocusWindow;  
00104 
00105 protected:
00106 
00107         const int argc;  
00108         char    **argv;  
00109 
00110         FontEngine      *defaultFontEngine;
00111 
00112         View    *frame;
00113 public:
00114 
00115         static XPoint mousexy;
00116 
00117         static int scrW , scrH;
00118 
00119         static map<icstring,void *>     lbGetter;
00120         static map<icstring,unsigned long>      Mnemo_f , Mnemo_s;
00121         static vector<cbObjCreateType>  objCreate;
00122 
00126         ArsApplication( const int argc , char **argv );
00127 
00129         virtual ~ArsApplication( void );
00130 
00138         virtual void GenDefaultCfg( void );
00139 
00141         static ArsApplication* GetInstance( void ) { return instance; }
00142 
00144         const int ExitCode(void) const { return exitCode; }
00145 
00147         const bool IsRunning( void)  const { return running; }
00148 
00152         void SetKeyFocus( MessageClient *pWindow );
00153 
00155         MessageClient *GetKeyFocus( void ) const        
00156         { 
00157                 return keyFocusWindow; 
00158         }
00159 
00162         virtual void Init( void );
00163 
00165         virtual void Exec(void);
00166 
00172         FontEngine *GetFontEngine(std::string sFontFileName, unsigned char iFontSize = 12);
00173 
00177         void SetDefaultFontEngine( FontEngine *pFontEngine ) { defaultFontEngine = pFontEngine; }
00178 
00180         FontEngine *GetDefaultFontEngine( void ) const          { return defaultFontEngine; }
00181 
00182         //      Executes once a global message processing for the SDL and the message server
00183         virtual const bool MainLoop( void );
00184 
00187         void HandleSDLEvent( SDL_Event event );
00188 
00189         static string GetCoordStr( void );
00190 
00191 protected:
00192 
00195         virtual const bool wmExit( const Message &msg );
00196 };      
00197 
00198 }
00199 
00200 #include "arsgraf.h"
00201 
00202 #include "arsform.h"
00203 #include "arsrsrc.h"
00204 #include "arsview.h"
00205 
00206 #include "xbox.h"
00207 #include "xlabel.h"
00208 #include "xbutton.h"
00209 #include "xbuttonimage.h"
00210 #include "ximage.h"
00211 #include "xgroupbox.h"
00212 #include "xcheckbox.h"
00213 #include "xeditbox.h"
00214 #include "xscrollbar.h"
00215 #include "xprogress.h"
00216 #include "xlistbox.h"
00217 #include "xdropdown.h"
00218 #include "xmpeg.h"
00219 #include "xtextbox.h"
00220 
00221 #include "arstooltip.h"
00222 
00223 #define StartMain( a )                                                                          \
00224 const int TofMain( const int argc , char **argv )                       \
00225 {                                                                                                                       \
00226         extern ArsApplication *_mainApp_;                                               \
00227         _mainApp_ = (ArsApplication *)new a( argc , argv );             \
00228         _mainApp_->Init();                                                                              \
00229         _mainApp_->Exec();                                                                              \
00230         int ans = _mainApp_->ExitCode();                                                \
00231         delete _mainApp_;                                                                               \
00232         MessageServer   *ins = &MessageServer::Instance();              \
00233         if( ins )                                                                                               \
00234                 delete ins;                                                                                     \
00235         ins = 0;                                                                                                \
00236         return  ans;                                                                                    \
00237 }
00238 
00239 #endif

Generated on Fri Dec 5 04:06:00 2003 for Borqueror by doxygen 1.3.3