// Font.hpp : Font class // // 17.11.1998 / DH - Genesis // 30.11.1998 / DH - Fading removed // // Copyright (c) 1998 Daniel Hartmeier. All rights reserved. #ifndef __Font__ #define __Font__ #include "Sprite.hpp" #include "List.hpp" // ------------------------------------------------------------------- class Font { public: Font(Image *image, int width, int height, const unsigned char *map); virtual ~Font(); virtual int width() const { return width_; } virtual int height() const { return height_; } virtual Sprite *createChar(unsigned char c); // returns NULL if character is not available protected: private: Image *image; int width_, height_; unsigned char *map_; }; // ------------------------------------------------------------------- class Rectangle { public: Rectangle(int x = 0, int y = 0, int w = 0, int h = 0, int r = 0, int g = 0, int b = 0); virtual ~Rectangle(); virtual void move(int x, int y, int w, int h); virtual void setColor(int r, int g, int b); virtual void setAttributes(unsigned long a); virtual void draw(GsOT *ot); protected: private: GsBOXF gsboxf; }; // ------------------------------------------------------------------- class TextWindow { public: TextWindow(); virtual ~TextWindow(); virtual void setFont(Font *f) { font = f; return; } virtual void setColor(int r, int g, int b) { rectangle->setColor(r, g, b); return; } virtual void show() { show_ = true; return; } virtual void hide() { show_ = false; return; } virtual void move(int x, int y, int w, int h); virtual void clear(); virtual void text(const unsigned char *t); virtual void draw(GsOT *ot); protected: Rectangle *rectangle; Font *font; int x_, y_, w_, h_; bool show_; List sprites; private: }; // ------------------------------------------------------------------- class MenuWindow : public TextWindow { public: MenuWindow(); virtual ~MenuWindow(); virtual void move(int x, int y, int w, int h); virtual void text(const unsigned char *t); virtual int act(unsigned long pad); // return selection made (0 for no selection yet) virtual void draw(GsOT *ot); virtual void setColor(int r, int g, int b); protected: private: int selection_; int lines; Rectangle *highlight; bool released; }; // ------------------------------------------------------------------- #endif