#ifndef OGFONT_H
#define OGFONT_H

#include "objgfx30.h"

#define LeftText   0
#define CenterText 1
#define RightText  2
#define BottomText 0
#define TopText    2

typedef
  struct {
    char  ID[3];
    uInt8 version;
    uInt8 width, height;
    uInt8 numOfChars;
    uInt8 startingChar;
    uInt8 colourType;
    uInt8 paddington[7];
  } ogDPFHeader;

class ogBitFont  {
       protected:
        uInt32 fontDataIdx[256];
        uInt32 charWidthTable[256];
        uInt32 charHeightTable[256];
        void * fontData;
        uInt32 fontDataSize;
        ogRGB  BGColour;
        ogRGB  FGColour;
        uInt8  width, height;
        uInt16 numOfChars;
        uInt8  startingChar;
        
       public:
        ogBitFont();
        void putChar(ogSurface&, int32, int32, const char);
        void putString(ogSurface&, int32, int32, const char *);
        void setBGColor(uInt8, uInt8, uInt8);
        void setFGColor(uInt8, uInt8, uInt8);
        uInt32 getWidth(void) const { return width; };
        uInt32 getHeight(void) const { return height; };
        bool loadFrom(const char *, uInt32);
        bool saveTo(const char *, int32);
        void centerTextX(ogSurface&, int32, const char *);
        void justifyText(ogSurface&, uInt8, uInt8, const char *);
        bool load(const char *);
        bool save(const char *);
        uInt32 textHeight(const char *) const { return height; };
        uInt32 textWidth(const char *);
        ~ogBitFont(void);
}; // ogBitFont

#endif
