X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdimension.cpp;h=2a989dccec0de1b91fb3d68f8ab13e4d2ebbbcdf;hb=eb711912d64f17cf9c18c74c4d78d9867bd066ad;hp=2b49ff8d08e3d7564c5ae2c9c37ad223ec901188;hpb=3047a65eb459ddb4a85e1a694aa2b2491437472e;p=architektonas diff --git a/src/dimension.cpp b/src/dimension.cpp index 2b49ff8..2a989dc 100644 --- a/src/dimension.cpp +++ b/src/dimension.cpp @@ -92,10 +92,14 @@ I believe they are pixels. // Calculate whether or not the arrowheads are too crowded to put inside // the extension lines. 9.0 is the length of the arrowhead. - double t = Vector::Parameter(position, endpoint, endpoint - (unit * 9.0 * size)); +// double t = Vector::Parameter(position, endpoint, endpoint - (unit * 9.0 * size)); +// double t = Vector::Parameter(position, endpoint, position + (unit * 9.0 * size)); + double t = Vector::Parameter(endpoint, position, position + (unit * 9.0 * size)); //printf("Dimension::Draw(): t = %lf\n", t); - if (t > 0.42) +// On the screen, it's acting like this is actually 58%... +// This is correct, we want it to happen at > 50% + if (t > 0.58) { // Draw main dimension line + arrowheads painter->DrawLine(p1, p2); @@ -320,6 +324,25 @@ about keeping track of old states... } +/*virtual*/ Object * Dimension::Copy(void) +{ +#warning "!!! This doesn't take care of attached Dimensions !!!" +/* +This is a real problem. While having a pointer in the Dimension to this line's points +is fast & easy, it creates a huge problem when trying to replicate an object like this. + +Maybe a way to fix that then, is to have reference numbers instead of pointers. That +way, if you copy them, ... you might still have problems. Because you can't be sure if +a copy will be persistant or not, you then *definitely* do not want them to have the +same reference number. +*/ + + Dimension * d = new Dimension(position, endpoint, dimensionType, parent); + d->size = size; + return d; +} + + // Dimensions are special: they contain exactly *two* points. Here, we check // only for zero/non-zero in returning the correct points. /*virtual*/ Vector Dimension::GetPointAtParameter(double parameter)