unit = Vector(d->lp[0], d->lp[1]).Unit();
- Point p1 = d->lp[0] + (ortho * 10.0 * scaledThickness);
- Point p2 = d->lp[1] + (ortho * 10.0 * scaledThickness);
- Point p3 = d->lp[0] + (ortho * 16.0 * scaledThickness);
- Point p4 = d->lp[1] + (ortho * 16.0 * scaledThickness);
+ Point p1 = d->lp[0] + (ortho * (10.0 + d->offset) * scaledThickness);
+ Point p2 = d->lp[1] + (ortho * (10.0 + d->offset) * scaledThickness);
+ Point p3 = d->lp[0] + (ortho * (16.0 + d->offset) * scaledThickness);
+ Point p4 = d->lp[1] + (ortho * (16.0 + d->offset) * scaledThickness);
Point p5 = d->p[0] + (ortho * 4.0 * scaledThickness);
Point p6 = d->p[1] + (ortho * 4.0 * scaledThickness);
Vector orthogonal = Vector::Normal(d->lp[0], d->lp[1]);
// Get our line parallel to our points
float scaledThickness = Global::scale * obj->thickness;
- Point p1 = d->lp[0] + (orthogonal * 10.0 * scaledThickness);
- Point p2 = d->lp[1] + (orthogonal * 10.0 * scaledThickness);
+ Point p1 = d->lp[0] + (orthogonal * (10.0 + d->offset) * scaledThickness);
+ Point p2 = d->lp[1] + (orthogonal * (10.0 + d->offset) * scaledThickness);
Point p3(p1, point);
Vector v1(d->p[0], point);
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)
}
-/*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);
}
}
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;
static bool LoadVersion1_1(FILE *, Container *);
static bool LoadVersion1_2(FILE *, Container *);
// static bool GetObjectFromFile(FILE *, Object *, Object **, int *);
- static Object * GetObjectFromFile(FILE *, bool extended = false);
+ static Object * GetObjectFromFile(FILE *, bool extended = false, bool ext2 = false);
static bool WriteObjectToFile(FILE *, Object *);
static int objectFileType;
Dimension(): type(OTDimension), id(Global::objectID++), selected(false),
hovered(false), hitObject(false)
{ hitPoint[0] = hitPoint[1] = hitPoint[2] = hitPoint[3] = hitPoint[4] = false; }
- Dimension(Vector pt1, Vector pt2, DimensionType dt = DTLinear, float th = 1.0, uint32_t c = 0x0000FF, int l = LSSolid):
+ Dimension(Vector pt1, Vector pt2, DimensionType dt = DTLinear, double offs = 0, float th = 1.0, uint32_t c = 0x0000FF, int l = LSSolid):
type(OTDimension), id(Global::objectID++), layer(0), color(c),
thickness(th), style(l), selected(false), hovered(false),
- hitObject(false), subtype(dt), offset(0)
+ hitObject(false), subtype(dt), offset(offs)
{ p[0] = pt1; p[1] = pt2; hitPoint[0] = hitPoint[1] = hitPoint[2] = hitPoint[3] = hitPoint[4] = false; }
};