#ifndef __TSCREEN_H
#define __TSCREEN_H

#include <tools.h>
#include "..\screen.h"

#define GRAU mdark_grau
#define RED  f_red
#define SKEY_BACKSPACE KEY_BSPACE
#define SKEY_ENTER     KEY_ENTER
#define SKEY_ESCAPE    KEY_ESCAPE


class TScreen : public Screen
{
 public:
  TScreen( void );
  virtual ~TScreen( void );

//  virtual int mouseCallback( void );
//  virtual int keyCallback( void );

  virtual int start( void );

//  friend void screenCallback(Screen*); // wird bei Maus- oder Tastenaction aufgerufen
//  friend void mouseCallback(Screen*);  // wird bei einer Mausbewegung oder Button aufgerufen
//  friend void keyCallback(Screen*);    // wird bei einem Tastendruck aufgerufen

  virtual int open( void );
//  int reopen( void ) ;
  virtual int close( void );

  virtual int mouseX( void );             // Maus X-Position holen
  virtual int mouseX( int );              // Maus X-Position setzen und holen
  virtual int mouseY( void );             // Maus Y-Position holen
  virtual int mouseY( int );              // Maus Y-Position setzen und holen
  virtual int mouseButton( void );        // Maus Button abfragen
  virtual int getKey( void );             // liefert die gedrueckte Taste
  virtual int getChar( void );            // liefert die gedrueckte Taste

  virtual int drawPoint( int x, int y, Color color = -1 );
  virtual int clearPoint( int x, int y );
  virtual Color getPoint( int x, int y );
  virtual int drawLine( int x1, int y1, int x2, int y2, Color color = -1 );

  virtual int print( int x, int y, char* text );
  virtual int print( int x, int y, char c );

  virtual void mouseOn( void ) ;
  virtual void mouseOff( void ) ;

  virtual void clearScreen( void );
  virtual int isError( void );

  virtual AreaBuffer* getArea( int x, int y, int width, int height );
  virtual int putArea( int x, int y,  AreaBuffer* buffer );
  virtual int setArea( int x, int y, int width, int height, Color c );
  virtual int freeArea( AreaBuffer* buffer );

};

typedef TScreen MScreen;

#endif // __TSCREEN_H
