Newer
Older
ubixos / src / sys / graphics / objfont.h
#ifndef OBJFONT_H
#define OBJFONT_H

#include "objgfx30.h"

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

enum TFontType {BLF, BMF, DPF};

typedef struct {
          char  ID[4];
          UInt8 BPP;
          UInt8 paddington[10];
        } TFontHeader;

typedef struct {
          char  ID[3];
          UInt8 Version;
          UInt8 Width, Height;
          UInt8 NumOfChars;
          UInt8 StartingChar;
          UInt8 ColourType;
          UInt8 paddington[7];
        } TDPFHeader;

class TFont {
       protected:
        char * FontDataIdx[256];
        UInt16 CharWidthTable[256];
        UInt16 CharHeightTable[256];
        TGfx0* Buf;
        UInt32 FontDataSize;
        char * FontData;
       public:
        TFont(TGfx0 *);
        virtual void PutText(Int32, Int32,const char *)=0;
        void CenterTextX(Int32 Y, const char *);
        void JustifyText(UInt8, UInt8, const char *);
	bool Load(const char *);
        virtual bool LoadFrom(const char *, UInt32)=0;
	bool Save(const char *);
        virtual bool SaveTo(const char *, Int32)=0;
        UInt32 TextHeight(const char *);
        UInt32 TextWidth(const char *);
        virtual ~TFont(void); 
}; // TFont

class TBMFont : public TFont {
       protected:
        UInt32 ColourTable[256];
       public:
        TBMFont(TGfx0 *Buffer): TFont(Buffer) {
          for (UInt32 tmp=0; tmp<=255; tmp++) ColourTable[tmp]=tmp;
        }
        void SetColor(UInt32);
        void SetIdxColor(UInt8, UInt32);
        void PutText(UInt32, UInt32, const char *);
        
};

#endif