X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Factions%2Factiondrawarc.cpp;h=3a92e6f90f5b35345cb33c33ebef19b537d3cc45;hb=5adb444f3e523d3fd028617ced72d1ea6661db21;hp=a833e58caa481b42c94fa5de44c60a253e194b5a;hpb=16354e0421b316a62c6b9f7b0b4f3b8cf6f06284;p=architektonas diff --git a/src/actions/actiondrawarc.cpp b/src/actions/actiondrawarc.cpp index a833e58..3a92e6f 100644 --- a/src/actions/actiondrawarc.cpp +++ b/src/actions/actiondrawarc.cpp @@ -12,6 +12,7 @@ // Who When What // --- ---------- ----------------------------------------------------------- // JLH 06/03/2010 Added this text. :-) +// JLH 09/17/2010 Fixed preview/snapper rendering. // #include "actiondrawarc.h" @@ -62,19 +63,15 @@ void ActionDrawArc::trigger() container->addEntity(arc); // upd. undo list: - if (document != NULL) + if (document) { document->startUndoCycle(); document->addUndoable(arc); document->endUndoCycle(); } - deleteSnapper(); - graphicView->moveRelativeZero(Vector(0.0, 0.0)); - graphicView->drawEntity(arc); graphicView->moveRelativeZero(arc->getCenter()); - drawSnapper(); - + graphicView->redraw(); //hm. setStatus(SetCenter); reset(); @@ -97,10 +94,8 @@ void ActionDrawArc::mouseMoveEvent(QMouseEvent * e) if (data.center.valid) { data.radius = data.center.distanceTo(mouse); - deletePreview(); - clearPreview(); -// preview->addEntity(new Circle(preview, CircleData(data.center, data.radius))); - drawPreview(); + graphicView->preview.clear(); + graphicView->preview.addEntity(new Circle(&(graphicView->preview), CircleData(data.center, data.radius))); } break; @@ -112,26 +107,20 @@ void ActionDrawArc::mouseMoveEvent(QMouseEvent * e) else data.angle2 = Math::correctAngle(data.angle1 + M_PI / 3); - deletePreview(); - clearPreview(); -// preview->addEntity(new Arc(preview, data)); - drawPreview(); + graphicView->preview.clear(); + graphicView->preview.addEntity(new Arc(&(graphicView->preview), data)); break; case SetAngle2: data.angle2 = data.center.angleTo(mouse); - deletePreview(); - clearPreview(); -// preview->addEntity(new Arc(preview, data)); - drawPreview(); + graphicView->preview.clear(); + graphicView->preview.addEntity(new Arc(&(graphicView->preview), data)); break; case SetIncAngle: data.angle2 = data.angle1 + data.center.angleTo(mouse); - deletePreview(); - clearPreview(); -// preview->addEntity(new Arc(preview, data)); - drawPreview(); + graphicView->preview.clear(); + graphicView->preview.addEntity(new Arc(&(graphicView->preview), data)); break; case SetChordLength: @@ -141,18 +130,17 @@ void ActionDrawArc::mouseMoveEvent(QMouseEvent * e) if (fabs(x / (2 * data.radius)) <= 1.0) { data.angle2 = data.angle1 + asin(x / (2 * data.radius)) * 2; - deletePreview(); - clearPreview(); -// preview->addEntity(new Arc(preview, data)); - drawPreview(); + graphicView->preview.clear(); + graphicView->preview.addEntity(new Arc(&(graphicView->preview), data)); } } - break; + break; default: break; } + graphicView->redraw(); DEBUG->print("ActionDrawArc::mouseMoveEvent end"); } @@ -165,9 +153,10 @@ void ActionDrawArc::mouseReleaseEvent(QMouseEvent * e) } else if (e->button() == Qt::RightButton) { - deletePreview(); - deleteSnapper(); +// deletePreview(); +// deleteSnapper(); init(getStatus() - 1); + graphicView->redraw(); //hm. } } @@ -251,35 +240,35 @@ void ActionDrawArc::commandEvent(CommandEvent * e) switch (getStatus()) { - case SetRadius: { + case SetRadius: + { bool ok; double r = Math::eval(c, &ok); - if (ok == true) + if (ok) { data.radius = r; setStatus(SetAngle1); } - else if (DIALOGFACTORY != NULL) + else if (DIALOGFACTORY) DIALOGFACTORY->commandMessage(tr("Not a valid expression")); - } - break; + break; - case SetAngle1: { + case SetAngle1: + { bool ok; double a = Math::eval(c, &ok); - if (ok == true) + if (ok) { data.angle1 = Math::deg2rad(a); setStatus(SetAngle2); } - else if (DIALOGFACTORY != NULL) + else if (DIALOGFACTORY) DIALOGFACTORY->commandMessage(tr("Not a valid expression")); - } - break; + break; case SetAngle2: @@ -292,53 +281,51 @@ void ActionDrawArc::commandEvent(CommandEvent * e) bool ok; double a = Math::eval(c, &ok); - if (ok == true) + if (ok) { data.angle2 = Math::deg2rad(a); trigger(); } - else if (DIALOGFACTORY != NULL) + else if (DIALOGFACTORY) DIALOGFACTORY->commandMessage(tr("Not a valid expression")); - } break; - case SetIncAngle: { + case SetIncAngle: + { bool ok; double a = Math::eval(c, &ok); - if (ok == true) + if (ok) { data.angle2 = data.angle1 + Math::deg2rad(a); trigger(); } - else if (DIALOGFACTORY != NULL) + else if (DIALOGFACTORY) DIALOGFACTORY->commandMessage(tr("Not a valid expression")); - } - break; + break; - case SetChordLength: { + case SetChordLength: + { bool ok; double l = Math::eval(c, &ok); - if (ok == true) + if (ok) { if (fabs(l / (2 * data.radius)) <= 1.0) { data.angle2 = data.angle1 + asin(l / (2 * data.radius)) * 2; trigger(); } - else if (DIALOGFACTORY != NULL) - DIALOGFACTORY->commandMessage( - tr("Not a valid chord length")); + else if (DIALOGFACTORY) + DIALOGFACTORY->commandMessage(tr("Not a valid chord length")); } - else if (DIALOGFACTORY != NULL) + else if (DIALOGFACTORY) DIALOGFACTORY->commandMessage(tr("Not a valid expression")); - } - break; + break; default: break; @@ -354,7 +341,7 @@ QStringList ActionDrawArc::getAvailableCommands() void ActionDrawArc::updateMouseButtonHints() { - if (DIALOGFACTORY != NULL) + if (DIALOGFACTORY) { switch (getStatus()) {