class cTalk {
public:
cTalk();
~cTalk(); void Init();
void Shutdown(); void SetSpeed(int speed);
void ConfigFont(const cArgs &parms);
void ConfigStyle(const cArgs &parms); void SkipText();
bool IsEmpty() const; void AddText(const char *text, int addTime);
void AddText2(const char *text, int addTime);
void Draw(int time);
private:
bool initialized;
// draw info
srfSheet_t charSheet;
int speed;
int drawX;
int drawY;
int c_lineChars;
bool showBold;
bool showEdge;
bool showShadow;
bool showItalic;
int boldValue;
ALLEGRO_COLOR edgeColor;
ALLEGRO_COLOR shadowColor;
ALLEGRO_COLOR charColor;
int textLength;
uint16_t *textPtr;
int totalChars; // config info
int xpos, ypos;
int linePitch;
int lineChars;
int numLines;
int charSize;
int allowShowChars; // text buffer info
uint16_t *textBuffer;
int textBufferLength;
ALLEGRO_BITMAP *textBufferImage;
int pixelSize;
byte *textImageData; // locked // freetype
FT_Library ftLibrary;
FT_Face ftFace;
FT_GlyphSlot ftGlyphSlot;
cStr faceName; void InitFreeType();
void DoneFreeType();
void CreateTextBimapBuffer();
void DrawCharToBitmap(byte *buffer, const int offset_x, const int offset_y, const int bufferPitch);
};