diff options
Diffstat (limited to 'rhtvision/include/tv/program.h')
-rw-r--r-- | rhtvision/include/tv/program.h | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/rhtvision/include/tv/program.h b/rhtvision/include/tv/program.h new file mode 100644 index 0000000..7773938 --- /dev/null +++ b/rhtvision/include/tv/program.h @@ -0,0 +1,154 @@ +/* + * Turbo Vision - Version 2.0 + * + * Copyright (c) 1994 by Borland International + * All Rights Reserved. + * + +Modified by Robert H”hne to be used for RHIDE. +Modified by Salvador E. Tropea (setScreenMode and other things) + + * + * + */ + +#if defined( Uses_TProgram ) && !defined( __TProgram ) +#define __TProgram + +#define cpColor \ + "\x71\x70\x78\x74\x20\x28\x24\x17\x1F\x1A\x31\x31\x1E\x71\x00" \ + "\x37\x3F\x3A\x13\x13\x3E\x21\x00\x70\x7F\x7A\x13\x13\x70\x7F\x00" \ + "\x70\x7F\x7A\x13\x13\x70\x70\x7F\x7E\x20\x2B\x2F\x78\x2E\x70\x30" \ + "\x3F\x3E\x1F\x2F\x1A\x20\x72\x31\x31\x30\x2F\x3E\x31\x13\x38\x00" + +#define cpBlackWhite \ + "\x70\x70\x78\x7F\x07\x07\x0F\x07\x0F\x07\x70\x70\x07\x70\x00" \ + "\x07\x0F\x07\x70\x70\x07\x70\x00\x70\x7F\x7F\x70\x07\x70\x07\x00" \ + "\x70\x7F\x7F\x70\x07\x70\x70\x7F\x7F\x07\x0F\x0F\x78\x0F\x78\x07" \ + "\x0F\x0F\x0F\x70\x0F\x07\x70\x70\x70\x07\x70\x0F\x07\x07\x07\x00" + +#define cpMonochrome \ + "\x70\x07\x07\x0F\x70\x70\x70\x07\x0F\x07\x70\x70\x07\x70\x00" \ + "\x07\x0F\x07\x70\x70\x07\x70\x00\x70\x70\x70\x07\x07\x70\x07\x00" \ + "\x70\x70\x70\x07\x07\x70\x70\x70\x0F\x07\x07\x0F\x70\x0F\x70\x07" \ + "\x0F\x0F\x07\x70\x07\x07\x70\x07\x07\x07\x70\x0F\x07\x07\x07\x00" + + +class TStatusLine; +class TMenuBar; +class TDeskTop; +struct TEvent; +class TView; +class TScreen; +class TVMainConfigFile; + +class CLY_EXPORT TProgInit +{ +public: + TProgInit( TStatusLine *(*cStatusLine)( TRect ), + TMenuBar *(*cMenuBar)( TRect ), + TDeskTop *(*cDeskTop )( TRect ) + ); + virtual ~TProgInit(); + static TVMainConfigFile *config; + +protected: + TStatusLine *(*createStatusLine)( TRect ); + TMenuBar *(*createMenuBar)( TRect ); + TDeskTop *(*createDeskTop)( TRect ); + static TScreen *tsc; +}; + +/* ---------------------------------------------------------------------- */ +/* class TProgram */ +/* */ +/* Palette layout */ +/* 1 = TBackground */ +/* 2- 7 = TMenuView and TStatusLine */ +/* 8-15 = TWindow(Blue) */ +/* 16-23 = TWindow(Cyan) */ +/* 24-31 = TWindow(Gray) */ +/* 32-63 = TDialog */ +/* ---------------------------------------------------------------------- */ + +const int + +// TApplication palette entries + + apColor = 0, + apBlackWhite = 1, + apMonochrome = 2; + + +class CLY_EXPORT TProgram : public TGroup, public virtual TProgInit +{ + +public: + + TProgram(); + virtual ~TProgram(); + + virtual void getEvent(TEvent& event); + virtual TPalette& getPalette() const; + virtual void handleEvent(TEvent& event); + virtual void idle(); + virtual void initScreen(); + virtual void outOfMemory(); + virtual void putEvent( TEvent& event ); + virtual void run(); + void setScreenMode( ushort mode, char *comm=0 ); + void setScreenMode( unsigned w, unsigned h, int fW=-1, int fH=-1 ); + TView *validView( TView *p ); + virtual void shutDown(); + + virtual void suspend() {} + virtual void resume() {} + + // This is a very nasty function only needed if you call + // TScreen::resume bypassing TProgram::resume. In this case + // the buffers could get unsychronized. This is done by + // RHIDE. + void syncScreenBuffer(); + // { buffer = TScreen::screenBuffer; } + + static TStatusLine *initStatusLine( TRect ); + static TMenuBar *initMenuBar( TRect ); + static TDeskTop *initDeskTop( TRect ); + + static TProgram * application; + static TStatusLine * statusLine; + static TMenuBar * menuBar; + static TDeskTop * deskTop; + static int appPalette; + + // Added by SET + static clock_t lastIdleClock; // That's the value of clock in the moment + // when idle is called. Used to accumulate + // in the inIdleTime var + static clock_t inIdleTime; // That keeps track of the number of clocks + // elapsed since we entered in idle + static Boolean inIdle; // Indicates that we are in idle, a mouse or + // keyboard event resets it + // I think that sometimes we can have a long elapsed time without events + // so I provide a way to reset it + static void resetIdleTime() { inIdle=False; }; + // SET: By default that's 0 and the idle member releases the CPU to the + // OS. If for some reason you really need to avoid it and want to use + // 100% of the CPU just assign 1 to this variable. + static char doNotReleaseCPU; + // SET: Disable Alt+number window selection. Useful if you have to do it + // configurable like in SETEdit. + static char doNotHandleAltNumber; + +protected: + + static TEvent pending; + +private: + +// static const char * exitText; + +}; + +#endif + |