X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdrawingview.cpp;h=f253bd9064ee17367a95b87b8e74991a7bbcf984;hb=ab604f6b520f16e24aa2611db856b13505e28686;hp=15579c9ab7dd5a8ef6790e408652fdc22b58dd00;hpb=e4b06adab54fbd906d75d1d5951f5fc5d3f62183;p=architektonas diff --git a/src/drawingview.cpp b/src/drawingview.cpp index 15579c9..f253bd9 100644 --- a/src/drawingview.cpp +++ b/src/drawingview.cpp @@ -308,6 +308,9 @@ void DrawingView::paintEvent(QPaintEvent * /*event*/) // Do object rendering... RenderObjects(&painter, document.objects); + if (!informativeText.isEmpty()) + painter.DrawInformativeText(informativeText); + // Do tool rendering, if any... if (Global::tool) { @@ -717,7 +720,6 @@ void DrawingView::RotateHandler(int mode, Point p) if (obj.type == OTArc) { -//printf("Obj2->angle[0] = %f, obj.angle[0] = %f, angle = %f\n", obj2->angle[0], obj.angle[0], angle); obj2->angle[0] = obj.angle[0] + angle; if (obj2->angle[0] > PI_TIMES_2) @@ -814,6 +816,7 @@ void DrawingView::mousePressEvent(QMouseEvent * event) GetHovered(hover); // prolly needed // Needed for grab & moving objects + // We do it *after*... why? (doesn't seem to confer any advantage...) if (Global::snapToGrid) oldPoint = SnapPointToGrid(point); @@ -871,6 +874,9 @@ void DrawingView::mouseMoveEvent(QMouseEvent * event) // Handle object movement (left button down & over an object) if ((event->buttons() & Qt::LeftButton) && numHovered && !Global::tool) { + if (Global::snapToGrid) + point = SnapPointToGrid(point); + HandleObjectMovement(point); update(); oldPoint = point; @@ -919,7 +925,8 @@ void DrawingView::mouseReleaseEvent(QMouseEvent * event) if (Global::selectionInProgress) Global::selectionInProgress = false; -// Should be we do this automagically? Hmm... + informativeText.clear(); +// Should we be doing this automagically? Hmm... // Clear our vectors select.clear(); hover.clear(); @@ -967,13 +974,11 @@ void DrawingView::wheelEvent(QWheelEvent * event) Global::zoom /= zoomFactor; } -#if 1 // Global::gridSpacing = gridPixels / Painter::zoom; // UpdateGridBackground(); SetGridSize(Global::gridSpacing * Global::zoom); update(); // zoomIndicator->setText(QString("Grid: %1\", BU: Inch").arg(Global::gridSpacing)); -#endif } @@ -1016,6 +1021,7 @@ void DrawingView::keyReleaseEvent(QKeyEvent * event) } } + // // This looks strange, but it's really quite simple: We want a point that's // more than half-way to the next grid point to snap there while conversely we @@ -1221,10 +1227,8 @@ bool DrawingView::HitTestObjects(Point point) void DrawingView::HandleObjectMovement(Point point) { - if (Global::snapToGrid) - point = SnapPointToGrid(point); - Point delta = point - oldPoint; +//printf("HOM: old = (%f,%f), new = (%f, %f), delta = (%f, %f)\n", oldPoint.x, oldPoint.y, point.x, point.y, delta.x, delta.y); Object * obj = (Object *)hover[0]; //printf("Object type = %i (size=%i), ", obj->type, hover.size()); //printf("Object (%X) move: hp1=%s, hp2=%s, hl=%s\n", obj, (obj->hitPoint[0] ? "true" : "false"), (obj->hitPoint[1] ? "true" : "false"), (obj->hitObject ? "true" : "false")); @@ -1232,9 +1236,6 @@ void DrawingView::HandleObjectMovement(Point point) switch (obj->type) { case OTLine: - { -// Line * l = (Line *)obj; - if (obj->hitPoint[0]) obj->p[0] = point; else if (obj->hitPoint[1]) @@ -1246,7 +1247,20 @@ void DrawingView::HandleObjectMovement(Point point) } break; - } + case OTCircle: + if (obj->hitPoint[0]) + obj->p[0] = point; + else if (obj->hitObject) + { +//this doesn't work. we need to save this on mouse down for this to work correctly! +// double oldRadius = obj->radius[0]; + obj->radius[0] = Vector::Magnitude(obj->p[0], point); + + QString text = QObject::tr("Radius: %1");//\nScale: %2%"); + informativeText = text.arg(obj->radius[0], 0, 'd', 4);//.arg(obj->radius[0] / oldRadius * 100.0, 0, 'd', 0); + } + + break; default: break; }