Doing that, with the Line and a parameter "t", if t == 0 we have endpoint 1.
if t == 1, then we have endpoint 2. With a Circle, the parameter is a number
-between 0 and 1 (scaled to 0 to 2π). With an Arc, the parameter goes from 0 to
+between 0 and 1 (scaled to 0 to tau). With an Arc, the parameter goes from 0 to
1, 0 being enpoint 1 and 1 being endpoint 2.
How does this work for moving objects that are connected? Again, with the Line
// OTFDimension, OTFPolygon, OTFText, OTFImage, OTFBlock, OTFEndOfFile };
enum ObjectTypeFile { OTFContainer, OTFContainerEnd, OTFObject, OTFEndOfFile };
-
// Instantiate class variables
/*static*/ int FileIO::objectFileType = OTFObject;
-
/*static*/ bool FileIO::SaveAtnsFile(FILE * file, Container * c)
{
/* Approach: loop through the container, doing a depth-first traversal. Any
return true;
}
-
/*static*/ bool FileIO::LoadAtnsFile(FILE * file, Container * drawing)
{
float version;
return false;
}
-
/*static*/ void FileIO::ResetLayerVectors(void)
{
// Set up layer vectors
Global::activeLayer = 0;
}
-
/*static*/ bool FileIO::LoadVersion1_0(FILE * file, Container * drawing)
{
// Approach: read each object in the file, one by one. If the object is a
return false;
}
-
/*static*/ bool FileIO::LoadVersion1_1(FILE * file, Container * drawing)
{
// Approach: read each object in the file, one by one. If the object is a
return false;
}
-
/*static*/ bool FileIO::LoadVersion1_2(FILE * file, Container * drawing)
{
int hidden, locked;
while (!feof(file))
{
// Reconstruct the object (extended format!)
- Object * obj = GetObjectFromFile(file, true);
+ Object * obj = GetObjectFromFile(file, true, true);
// objectFileType is set in GetObjectFromFile()...
if (objectFileType == OTFObject)
return false;
}
-
-/*static*/ Object * FileIO::GetObjectFromFile(FILE * file, bool extended/*= false*/)
+/*static*/ Object * FileIO::GetObjectFromFile(FILE * file, bool extended/*= false*/, bool ext2/*= false*/)
{
char buffer[256];
char textBuffer[65536];
{
Point p1, p2;
DimensionType type;
+ double offset = 0;
fscanf(file, "(%lf,%lf) (%lf,%lf) %i", &p1.x, &p1.y, &p2.x, &p2.y, (int *)&type);
- obj = (Object *)new Dimension(p1, p2, type);
+
+ if (ext2)
+ fscanf(file, " %lf", &offset);
+
+ obj = (Object *)new Dimension(p1, p2, type, offset);
}
else if (strcmp(buffer, "CONTAINER") == 0)
{
if (extended && (obj->type != OTContainer))
{
- fscanf(file, " (%i, %f, %i)", &obj->color, &obj->thickness, &obj->style);
+ fscanf(file, " (%i, %f, %i)\n", &obj->color, &obj->thickness, &obj->style);
}
}
return obj;
}
-
/*static*/ bool FileIO::WriteObjectToFile(FILE * file, Object * obj)
{
// Sanity check
break;
case OTDimension:
// fprintf(file, "DIMENSION %i (%lf,%lf) (%lf,%lf) %i\n", layer, position.x, position.y, endpoint.x, endpoint.y, dimensionType);
- fprintf(file, "DIMENSION %i (%lf,%lf) (%lf,%lf) %i", obj->layer, obj->p[0].x, obj->p[0].y, obj->p[1].x, obj->p[1].y, ((Dimension *)obj)->subtype);
+ fprintf(file, "DIMENSION %i (%lf,%lf) (%lf,%lf) %i %lf", obj->layer, obj->p[0].x, obj->p[0].y, obj->p[1].x, obj->p[1].y, ((Dimension *)obj)->subtype, ((Dimension *)obj)->offset);
break;
case OTSpline:
break;
return true;
}
-