]> Shamusworld >> Repos - ttedit/blobdiff - src/glyphpoints.cpp
Added preview window to file loading dialog. :-)
[ttedit] / src / glyphpoints.cpp
index 4ae01e5d5d8630c0d9dcec1cfd0d6cb0689db0f4..025f0e1ef3fde7be1c709ee943ada7084d23e7d9 100644 (file)
@@ -74,19 +74,6 @@ WriteLogMsg("GlyphPoints: Copy constructor. %u points, %u polys.\n", numPoints,
 GlyphPoints::~GlyphPoints()
 {
        FreeAllocatedMemory();
-#if 0
-       if (x)
-               delete[] x;
-
-       if (y)
-               delete[] y;
-
-       if (onCurve)
-               delete[] onCurve;
-
-       if (polyEnd)
-               delete[] polyEnd;
-#endif
 }
 
 
@@ -751,7 +738,7 @@ IPoint GlyphPoints::GetPrevPoint(uint16_t poly, uint16_t pt)
 {
        uint16_t prevPt = GetPrev(poly, pt);
 
-       return IPoint(GetX(poly, prevPt), GetY(poly, prevPt));
+       return IPoint(GetX(poly, prevPt), GetY(poly, prevPt), GetOnCurve(poly, prevPt));
 }
 
 
@@ -759,7 +746,7 @@ IPoint GlyphPoints::GetNextPoint(uint16_t poly, uint16_t pt)
 {
        uint16_t nextPt = GetNext(poly, pt);
 
-       return IPoint(GetX(poly, nextPt), GetY(poly, nextPt));
+       return IPoint(GetX(poly, nextPt), GetY(poly, nextPt), GetOnCurve(poly, nextPt));
 }
 
 
@@ -920,24 +907,29 @@ bool GlyphPoints::LoadGlyphFromFile(FILE * file)
 
        FreeAllocatedMemory();
 
-       fscanf(file, "%s V%f", line, &version);
-       fscanf(file, "%s %u", line, &numPoints);
+       int num = fscanf(file, "TTEGLYPH V%f\n", &version);
+
+       // Check to see if this is really a glyph file
+       if ((num != 1) || (version != 1.0))
+               return false;
+
+       num = fscanf(file, "POINTS %u\n", &numPoints);
        x = new int[numPoints];
        y = new int[numPoints];
        onCurve = new bool[numPoints];
 
        for(int i=0; i<numPoints; i++)
        {
-               fscanf(file, "%d %d %s", &x[i], &y[i], (char *)&line);
+               fscanf(file, "%d %d %s\n", &x[i], &y[i], (char *)&line);
                onCurve[i] = (line[0] == 'T' ? true : false);
        }
 
-       fscanf(file, "%s %u", line, &numPolys);
+       num = fscanf(file, "POLYS %u\n", &numPolys);
        polyEnd = new uint16_t[numPolys];
 
        for(int i=0; i<numPolys; i++)
        {
-               fscanf(file, "%u", &polyEnd[i]);
+               fscanf(file, "%u\n", &polyEnd[i]);
        }
 
        return true;