00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef TEDDY__PHYSICAL_COMPONENTS__CONSOLE__H
00026 #define TEDDY__PHYSICAL_COMPONENTS__CONSOLE__H
00027
00028
00029 #include "Teddy/TeddyConfig.h"
00030 #include "Teddy/PhysicalComponents/Area.h"
00031 #include "Teddy/PhysicalComponents/EventListener.h"
00032 #include "Teddy/SysSupport/StdVector.h"
00033 #include "Teddy/SysSupport/Types.h"
00034 using namespace Teddy::PhysicalComponents;
00035 using namespace std;
00036
00037
00038 namespace Teddy {
00039 namespace PhysicalComponents {
00040
00041
00065 class Console
00066 :
00067 public Area,
00068 public EventListener
00069 {
00070 public:
00071 Console( const std::string &name, const int w, const int h );
00072
00073
00074 Console &setLine ( const int l, const string &s );
00075 Console &operator<<( const string &s );
00076
00077 void append ( const char *str, int count );
00078 void append ( int c );
00079 void cursorDown ();
00080 void newLine (){ insertLine(cy+1); cursorDown(); cx=0; };
00081 void insertLine ( const int y );
00082 void killLine ( const int y );
00083 void killChar ( const int x, const int y );
00084 void scroll ( int x1, int y1, int x2, int y2, int dx, int dy );
00085
00086 virtual void drawSelf ();
00087
00088 bool focusActive( const Event &e );
00089 bool keyDown ( const Event &e );
00090 bool keyUp ( const Event &e );
00091
00092 protected:
00093
00094 virtual void setSize( const int width, const int height );
00095
00096 vector<string*> buffer_lines;
00097 int font_width;
00098 int font_height;
00099 int width_chars;
00100 int height_chars;
00101 int max_height_chars;
00102 int topleft_x;
00103 int topleft_y;
00104 int cx;
00105 int cy;
00106 bool cursor_visible;
00107 Color text_color;
00108 };
00109
00110
00111 };
00112 };
00113
00114
00115 #endif // TEDDY__PHYSICAL_COMPONENTS__CONSOLE__H
00116