-/*
-There's a small problem here with the implementation: You can have a dimension tied
-to only one point while at the same time you can have a dimension sitting on this line.
-Since there's only *one* dimPoint for each point, this can be problematic...
-
-We solve this by allowing only *one* Dimension object to be attached to the Line,
-Arc, etc. and by giving the Dimension object a pointer to our endpoints.
-
-Problem still arises when we delete this object; The attached Dimension object will
-then have bad pointers! What it *should* do is delete the object if and only if this
-line is not attached to any other object. If it is, then one of those attachment
-points should be sent to the dimension object (done for position & endpoint).
-
-NOTE: The STL vector<T> *does not* take ownership of pointers, therefore is suitable
- for our purposes
-
-Also: It would be nice to have a preview of the dimension being drawn, with a modifier
-key to make it draw/show on the other side...
-
-TODO: Make Dimension preview with modifier keys for showing on other side
-*/
- // Is the dimension tool active? Let's use it:
- if (dimensionActive)
- {
- // User clicked on the line itself (endpoint checks should preceed this one):
- // (Priorities are taken care of in HitTest()...)
- if (hitLine)
- {
-#if 0
- if (attachedDimension == NULL)
- {
- // How to get this object into the top level container???
-/*
-The real question is do we care. I think so, because if this isn't in the top
-level container, it won't get drawn...
-But we can fix that by making this object call any attached object's (like
-a dimension only) Draw() function... :-/
-*/
- attachedDimension = new Dimension(&position, &endpoint, DTLinear, this);
-
- if (parent != NULL)
- parent->Add(attachedDimension);
- }
- else
- {
- // If there's one already there, tell it to flip sides...
- attachedDimension->FlipSides();
- }
-#else
- // New approach here: We look for connected objects.
- Object * attachedDimension = FindAttachedDimension();
-
- if (attachedDimension)
- {
- // If there's an attached Dimension, tell it to switch sides...
- ((Dimension *)attachedDimension)->FlipSides();
- }
- else
- {
- // Otherwise, we make a new one and attach it here.
- attachedDimension = new Dimension(Connection(this, 0), Connection(this, 1.0), DTLinear, this);
- connected.push_back(Connection(attachedDimension, 0));
- connected.push_back(Connection(attachedDimension, 1.0));
-
- if (parent != NULL)
- parent->Add(attachedDimension);
- }
-#endif
-
- return true;
- }
- }
-
-