#define __GLYPHPOINTS_H__
#include "types.h"
+#include <stdio.h>
+// "IPoint" is an Integer based Point
struct IPoint
{
int32 x, y;
bool onCurve;
IPoint(int32 xx=0, int32 yy=0, bool oc=true): x(xx), y(yy), onCurve(oc) {}
+ bool operator==(const IPoint & p) { return (p.x == x && p.y == y ? true: false); };
};
// Throws the following exceptions:
GlyphPoints operator+(const GlyphPoints &);
GlyphPoints operator+(const IPoint &);
GlyphPoints& operator+=(const IPoint &);
+ void Clear(void);
void InsertPoint(uint16, int, int, bool);
void InsertPoint(uint16, const IPoint &);
void DeletePoint(uint16);
uint16 GetNumPoints(void);
- uint16 GetNumPoints(uint16);
+ uint16 GetNumPoints(uint16 poly);
uint16 GetNumPolys(void);
int GetX(uint16);
int GetY(uint16);
bool GetOnCurve(uint16);
int GetX(uint16, uint16);
+ int GetNextX(uint16, uint16);
int GetY(uint16, uint16);
+ int GetNextY(uint16, uint16);
+ IPoint GetPoint(uint16, uint16);
+ IPoint GetPoint(uint16);
bool GetOnCurve(uint16, uint16);
+ bool GetPrevOnCurve(uint16, uint16);
+ bool GetNextOnCurve(uint16, uint16);
+ uint16 GetPolyStart(uint16);
uint16 GetPolyEnd(uint16);
void OffsetPoints(int, int);
void OffsetPoly(uint16, int32, int32);
void ScalePoints(float);
void SetXY(uint16, int, int);
void SetOnCurve(uint16, bool);
+ void SetPoint(const uint16 pointNum, const IPoint point);
uint16 GetPrev(uint16);
uint16 GetNext(uint16);
uint16 GetPrev(uint16, uint16);
uint16 GetNext(uint16, uint16);
uint16 GetPoly(uint16);
void AddNewPolyAtEnd(void);
+ IPoint GetMidpointToPrev(uint16, uint16);
+ IPoint GetMidpointToNext(uint16, uint16);
+ IPoint GetPrevPoint(uint16, uint16);
+ IPoint GetNextPoint(uint16, uint16);
+ uint16 GetPolyForPoint(IPoint point);
+ uint16 GetPolyForPointNumber(uint16 pointNumber);
+
+ IPoint RotatePoint(const double angle, const IPoint point, const IPoint center);
+ void RotatePoints(const double angle, const IPoint point);
+ IPoint GetPolyCentroid(const int16 poly);
+ void RotatePolyAroundCentroid(const int16 poly, const double angle);
+ void InvertPolyDrawSequence(const uint16 poly);
+
+ bool LoadGlyphFromFile(FILE *);
+ bool SaveGlyphToFile(FILE *);
private:
void AllocateAndCopy(int, int, int *, int *, bool *, uint16 *);
+ void FreeAllocatedMemory(void);
private:
int numPoints, numPolys;