//---------------------------------------------------//
/*
 *Copyright Bryce Thorup, William Thorup, BitJag 2014
 *
 * Contact: contact@bitjag.com
 *
 *All content developed by BitJag (graphics & Code) is
 *for your personal use only.  Feel free to burn it to a CD, 
 *flash to a SkunkBoard, or use in an emulator.  We 
 *hope you also take the chance to learn from it if needed.
 * 
 *Do not redistribute, duplicate, charge for "handling" 
 *or cost to print, or charge for profit.
 * 
 *If there is someone you know who wants a copy,
 *physical or digital, please direct them to our website.
 *Any other questions about the use of the demo, please
 *shoot us an email.  We will be liberal, promise.
 *
 * http://bitjag.com/
 * 
 *This demo was developed with the Removers Library,
 *which is used under the LGPL licence 2.1, included
 *with the source.  The Removers library is free to 
 *download and use at this location.
 * 
 * http://removers.free.fr/softs/download.php?lang=en
 *
//---------------------------------------------------*/

#ifndef BJ_TEXT
#define BJ_TEXT

#include <stdlib.h>
#include <screen.h>
#include <fb2d.h>

typedef struct{
  
  int height;
  
  int kerning;
  
  int line_spacing;
  
  int* char_widths;
  
  int* char_offsets;
  
  screen* graphic;
  
}Font;

typedef struct{
  
  int char_idx;
  
  int type_rate;
  
  int type_rate_counter;
  
  int draw_pos_x;
  
  int draw_pos_y;
  
  int padding;
  
  int char_count;
  
  char* text;
  
  Font* font;
  
  screen* draw_box;
  
}TextBox;

Font* newFont(int height, int* char_widths, int* char_offsets, int graphic_width, phrase* graphic);

TextBox* newTextBox(char* text, int char_count, Font* font);

void initTextBox(TextBox* tb);

void generateDrawBoxForTextBox(int box_width, int box_height, TextBox* tb);

void drawTextBoxAtOnce(TextBox* tb);

int drawTextBoxTyped(TextBox* tb);

#endif
