#ifndef _MPLUSSTROKE_H_
#define _MPLUSSTROKE_H_

typedef enum {
	MPLUS_ITEMTYPE_LINE = 0,
	MPLUS_ITEMTYPE_CUBIC,
} MPLUS_ItemType_t;

typedef struct MPLUS_Item_Pos {
	double x;
	double y;
} MPLUS_Pos_t;

typedef struct MPLUS_Item_Top {
	MPLUS_ItemType_t ItemType;
} MPLUS_Item_Top_t;

typedef struct MPLUS_Item_Line {
	MPLUS_ItemType_t ItemType;
	MPLUS_Pos_t pos1;
	MPLUS_Pos_t pos2;
} MPLUS_Item_Line_t;

typedef struct MPLUS_Item_Cubic {
	MPLUS_ItemType_t ItemType;
	MPLUS_Pos_t pos1;
	MPLUS_Pos_t pos2;
	MPLUS_Pos_t pos3;
	MPLUS_Pos_t pos4;
} MPLUS_Item_Cubic_t;

typedef union MPLUS_Item {
	MPLUS_Item_Top_t top;
	MPLUS_Item_Line_t line;
	MPLUS_Item_Cubic_t cubic;
} MPLUS_Item_t;

typedef struct MPLUS_Glyph {
	unsigned int code;
	unsigned int code8;
	unsigned int itemscount;
	MPLUS_Item_t items[256];
} MPLUS_Glyph_t;

typedef struct MPLUS_GlyphData {
	unsigned int glyphscount;
	MPLUS_Glyph_t glyphs[10000];
} MPLUS_GlyphsData_t;

extern void LoadMPLUSStroke(MPLUS_GlyphsData_t* o_ptGlyphsData);

#endif /* _MPLUSSTROKE_H_ */
