defaultSnapMode = RS2::SnapFree;
defaultSnapRes = RS2::RestrictNothing;
- /*
- background = RS_Color(0,0,0);
- foreground = RS_Color(255,255,255);
- gridColor = RS_Color("gray");
- metaGridColor = RS_Color("#404040");
- selectedColor = RS_Color("#a54747");
- highlightedColor = RS_Color("#739373");
- */
-
settings.beginGroup("Appearance");
setBackground(QColor(settings.value("BackgroundColor", "#000000").toString()));
setGridColor(QColor(settings.value("GridColor", "#7F7F7F").toString()));
*/
void RS_GraphicView::killSelectActions()
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->killSelectActions();
}
*/
void RS_GraphicView::killAllActions()
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->killAllActions();
}
*/
void RS_GraphicView::back()
{
- if (eventHandler != NULL && eventHandler->hasAction())
+ if (eventHandler && eventHandler->hasAction())
eventHandler->back();
- else
- if (RS_DIALOGFACTORY != NULL)
- RS_DIALOGFACTORY->requestPreviousMenu();
+ else if (RS_DIALOGFACTORY)
+ RS_DIALOGFACTORY->requestPreviousMenu();
}
/**
*/
void RS_GraphicView::enter()
{
- if (eventHandler != NULL && eventHandler->hasAction())
+ if (eventHandler && eventHandler->hasAction())
eventHandler->enter();
}
*/
void RS_GraphicView::mousePressEvent(QMouseEvent * e)
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->mousePressEvent(e);
}
{
RS_DEBUG->print("RS_GraphicView::mouseReleaseEvent");
- if (eventHandler != NULL)
+ if (!eventHandler)
+ return;
+
+ if (e->button() != Qt::RightButton || eventHandler->hasAction())
{
- if (e->button() != Qt::RightButton || eventHandler->hasAction())
- {
- eventHandler->mouseReleaseEvent(e);
- //e->accept();
- }
- else
- {
- back();
- e->accept();
- }
+ eventHandler->mouseReleaseEvent(e);
+ //e->accept();
+ }
+ else
+ {
+ back();
+ e->accept();
}
RS_DEBUG->print("RS_GraphicView::mouseReleaseEvent: OK");
RS_DEBUG->print("RS_GraphicView::mouseMoveEvent 001");
- if (e != NULL)
+ if (e)
{
mx = e->x();
my = e->y();
RS_DEBUG->print("RS_GraphicView::mouseMoveEvent 002");
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->mouseMoveEvent(e);
RS_DEBUG->print("RS_GraphicView::mouseMoveEvent 003");
- if (eventHandler == NULL || !eventHandler->hasAction() && graphic != NULL)
+ if (!eventHandler || !eventHandler->hasAction() && graphic)
{
Vector mouse = toGraph(Vector(mx, my));
Vector relMouse = mouse - getRelativeZero();
- if (RS_DIALOGFACTORY != NULL)
+ if (RS_DIALOGFACTORY)
RS_DIALOGFACTORY->updateCoordinateWidget(mouse, relMouse);
}
*/
void RS_GraphicView::mouseLeaveEvent()
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->mouseLeaveEvent();
}
*/
void RS_GraphicView::mouseEnterEvent()
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->mouseEnterEvent();
}
*/
void RS_GraphicView::keyPressEvent(QKeyEvent * e)
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->keyPressEvent(e);
}
*/
void RS_GraphicView::keyReleaseEvent(QKeyEvent * e)
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->keyReleaseEvent(e);
}
*/
void RS_GraphicView::commandEvent(RS_CommandEvent * e)
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->commandEvent(e);
}
*/
void RS_GraphicView::enableCoordinateInput()
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->enableCoordinateInput();
}
*/
void RS_GraphicView::disableCoordinateInput()
{
- if (eventHandler != NULL)
+ if (eventHandler)
eventHandler->disableCoordinateInput();
}
if (simulationRunning)
return;
- if (container != NULL)
+ if (container)
{
- for (RS_Entity * se=container->firstEntity(RS2::ResolveNone);
- se!=NULL; se = container->nextEntity(RS2::ResolveNone))
+ for(RS_Entity * se=container->firstEntity(RS2::ResolveNone); se!=NULL;
+ se=container->nextEntity(RS2::ResolveNone))
{
if (se->isInWindow(v1, v2))
drawEntity(se);
return;
//}
-// bool painterCreated = false;
-
settings.beginGroup("Appearance");
draftMode = settings.value("DraftMode", false).toBool();
settings.endGroup();
- //RS_DEBUG->print("RS_GraphicView::drawIt() begin");
- //RS_DEBUG->print(" factors: %f/%f", factor.x, factor.y);
- //RS_DEBUG->timestamp();
-
- if (painter == NULL)
- {
-printf("RS_GraphicView::drawIt(): painter == NULL!\n");
+ if (!painter)
+// {
+//printf("RS_GraphicView::drawIt(): painter == NULL!\n");
return;
-// createPainter();
-// painterCreated = true;
- }
- else
- painter->erase();
+// }
+
+ painter->erase();
// drawing paper border:
if (isPrintPreview())
else
drawMetaGrid();
- //if (draftMode) {
- // painter->setPen(RS_Pen(foreground, RS2::Width00, RS2::SolidLine));
- //}
-
// drawing entities:
//#warning "!!! This looks like a bug, no match for 'drawEntity(RS_Entity *, bool) !!!"
// and indeed it *is* a bug... true is converted to 1.0 here. Dumb, dumb, dumb.
- drawEntity(container, true);
-
- //RS_DEBUG->timestamp();
- //RS_DEBUG->print(" draw zero..");
+ drawEntity(container);//, true);
// drawing zero points:
if (!isPrintPreview())
drawRelativeZero();
}
- //RS_DEBUG->timestamp();
- //RS_DEBUG->print(" draw grid..");
-
// drawing grid:
if (!isPrintPreview())
drawGrid();
-
- //RS_DEBUG->timestamp();
- //RS_DEBUG->print("RS_GraphicView::drawIt() end");
-// if (painterCreated == true)
-// destroyPainter();
}
/**
simulationRunning = true;
simulationLast = Vector(0.0, 0.0);
- destroyPainter();
+//jlh destroyPainter();
- createDirectPainter();
painter->erase();
// drawing paper border:
//RS_DEBUG->timestamp();
//RS_DEBUG->print("RS_GraphicView::drawIt() end");
//if (painterCreated==true) {
- destroyPainter();
+//jlh destroyPainter();
//}
simulationRunning = false;
}
if (sp.distanceTo(simulationLast) > 1.0e-4)
{
- createDirectPainter();
+//jlh createDirectPainter();
RS_Pen rpen(RS_Color(0, 0, 255), RS2::Width00, RS2::SolidLine);
//painter->setPen(pen);
RS_Line rapidLine(NULL, RS_LineData(simulationLast, sp));
}
else
{
- createDirectPainter();
+//jlh createDirectPainter();
//RS_Pen pen(foreground, RS2::Width00, RS2::SolidLine);
painter->setPen(pen);
drawEntityPlain(e);
if (lx >= 0.0 && lx <= (double)getWidth() && ly >= 0.0 && ly <= (double)getHeight())
{
//if (painter==NULL) {
- createDirectPainter();
+//jlh createDirectPainter();
//}
painter->setPen(pen);
painter->drawGridPoint(Vector(lx, ly));
if (radius <= 1.4)
{
- createDirectPainter();
+//jlh createDirectPainter();
painter->setPen(pen);
painter->drawGridPoint(center);
}
k2y = RS_Math::round(center.y-sin(a)*radius);
//if(graphic->isPointOnScreen(k2x, k2y) ||
// graphic->isPointOnScreen(k1x, k1y) ) {
- createDirectPainter();
+//jlh createDirectPainter();
painter->setPen(pen);
if ((k2x >= 0 && k2x <= painter->getWidth()
&& k2y >= 0 && k2y <= painter->getHeight())
k1y = k2y;
}
- createDirectPainter();
+//jlh createDirectPainter();
painter->setPen(pen);
painter->drawLine(Vector(k2x, k2y), Vector(ix2, iy2));
//painter->lineTo(ix2, iy2);
k2y = RS_Math::round(center.y - sin(a) * radius);
//if(graphic->isPointOnScreen(k2x, k2y) ||
// graphic->isPointOnScreen(k1x, k1y) ) {
- createDirectPainter();
+//jlh createDirectPainter();
painter->setPen(pen);
if ((k2x >=0 && k2x <= painter->getWidth()
&& k2y >= 0 && k2y <= painter->getHeight())
k1y = k2y;
}
- createDirectPainter();
+//jlh createDirectPainter();
painter->setPen(pen);
//painter->lineTo(ix2, iy2);
painter->drawLine(Vector(k2x, k2y), Vector(ix2, iy2));
* zero. It's called from within drawIt(). The default implemetation
* draws a simple red round zero point.
*
+ * Actually, we have to rework the rendering code because the way that QCad did
+ * it was wrong on so many levels... Part of that is making sure the rendering
+ * path is 100% clear!
+ *
* @see drawIt()
*/
void RS_GraphicView::drawAbsoluteZero()
{
-//RS_DEBUG->print(RS_Debug::D_CRITICAL, "RS_GraphicView::drawAbsoluteZero (painter=%08X)", painter);
-// bool painterCreated = false;
-
- // create a temporary painter device
- if (painter == NULL)
- {
+ if (!painter)
return;
-//Hrm. createDirectPainter();
-// createPainter();
-// painterCreated = true;
- }
int zr = 20;
//Using Qt::red doesn't seem to work here...
//It's because Qt colors and RS_Color are not 100% compatible...
RS_Pen p(RS_Color(255, 0, 0), RS2::Width00, RS2::SolidLine);
-// p.setScreenWidth(0);
painter->setPen(p);
- //painter->setBrush(Qt::NoBrush);
painter->drawLine(Vector(toGuiX(0.0) - zr, toGuiY(0.0)),
Vector(toGuiX(0.0) + zr, toGuiY(0.0)));
painter->drawLine(Vector(toGuiX(0.0), toGuiY(0.0) - zr),
Vector(toGuiX(0.0), toGuiY(0.0) + zr));
-
-// if (painterCreated)
-// destroyPainter();
}
/**
*/
void RS_GraphicView::drawRelativeZero()
{
-//#warning "!!! drawRelativeZero() not working AT ALL !!!"
-#if 1
-// bool painterCreated = false;
-
- if (relativeZero.valid == false)
- return;
-
- // create a temporary painter device
- if (painter == NULL)
- {
+ if (!relativeZero.valid || !painter)
return;
-//hrm. createDirectPainter();
-// createPainter();
-// painterCreated = true;
- }
// RS_Pen p(Qt::red, RS2::Width00, RS2::SolidLine);
// p.setScreenWidth(0);
Vector(toGuiX(relativeZero.x), toGuiY(relativeZero.y) + zr));
painter->drawCircle(toGui(relativeZero), zr);
-
painter->setNormalMode();
-
-// if (painterCreated)
-// destroyPainter();
-#endif
}
/**
*/
void RS_GraphicView::drawPaper()
{
- bool painterCreated = false;
-
if (container == NULL)
return;
if (graphic->getPaperScale() < 1.0e-6)
return;
- // create a temporary painter device
if (painter == NULL)
- {
- createDirectPainter();
- painterCreated = true;
- }
+ return;
// draw paper:
painter->setPen(RS_Pen(Qt::gray));
painter->fillRect((int)(v1.x) + 1, (int)(v1.y) - 1,
(int)((v2.x - v1.x)) - 2, (int)((v2.y - v1.y)) + 2,
RS_Color(255, 255, 255));
-
- if (painterCreated)
- destroyPainter();
}
/**
if (grid == NULL || isGridOn() == false /*|| grid->getMetaSpacing()<0.0*/)
return;
- bool painterCreated = false;
-
- // create a temporary painter device
if (painter == NULL)
- {
-//hrm createDirectPainter();
- createPainter();
- painterCreated = true;
- }
+ return;
RS_Pen pen(metaGridColor, RS2::Width00, RS2::DotLine);
painter->setPen(pen);
// draw meta grid:
double * mx = grid->getMetaX();
+ double * my = grid->getMetaY();
- if (mx != NULL)
+ if (mx)
{
for(int i=0; i<grid->countMetaX(); ++i)
painter->drawLine(Vector(toGuiX(mx[i]), 0), Vector(toGuiX(mx[i]), getHeight()));
}
- double * my = grid->getMetaY();
-
- if (my != NULL)
+ if (my)
{
for(int i=0; i<grid->countMetaY(); ++i)
painter->drawLine(Vector(0, toGuiY(my[i])), Vector(getWidth(), toGuiY(my[i])));
}
-
- if (painterCreated)
- destroyPainter();
}
/**
*/
void RS_GraphicView::moveRelativeZero(const Vector & pos)
{
-// bool painterCreated = false;
-
- if (painter == NULL)
- {
+#warning "!!! RS_GraphicView::moveRelativeZero(): Bad render path !!!"
+ if (!painter)
return;
-//hrm painter = createDirectPainter();
-// painter = createPainter();
-// painterCreated = true;
- }
//painter->setXORMode();
drawRelativeZero();
-
setRelativeZero(pos);
-
drawRelativeZero();
-
-// if (painterCreated)
-// destroyPainter();
}
RS_EventHandler * RS_GraphicView::getEventHandler()
buffer = NULL;
lastWidth = 0;
lastHeight = 0;
- //coordinateWidget = NULL;
- //mouseWidget = NULL;
- //optionWidget = NULL;
- //cadToolBar = NULL;
- //commandWidget = NULL;
//hrm.
painter = NULL;
-// layout = new Q3GridLayout(this, 3, 2);
-// layout->setColStretch(0, 1);
-// layout->setColStretch(1, 0);
-// layout->setColStretch(2, 0);
-// layout->setRowStretch(0, 1);
-// layout->setRowStretch(1, 0);
layout = new QGridLayout(this);
layout->setColumnStretch(0, 1);
layout->setColumnStretch(1, 0);
#ifndef __APPLE__
// Mouse Cursors:
QBitmap bmp;
-// QPixmap cur1(cur_cad_bmp_xpm);
-// bmp = QPixmap(cur_cad_mask_xpm);
QPixmap cur1(":/res/cur_cad_bmp.xpm");
bmp = QPixmap(":/res/cur_cad_mask.xpm");
cur1.setMask(bmp);
curCad = new QCursor(cur1, 15, 15);
-// QPixmap cur2(cur_glass_bmp_xpm);
-// bmp = QPixmap(cur_glass_mask_xpm);
QPixmap cur2(":/res/cur_glass_bmp.xpm");
bmp = QPixmap(":/res/cur_glass_mask.xpm");
cur2.setMask(bmp);
curMagnifier = new QCursor(cur2, 12, 12);
-// QPixmap cur3(cur_del_bmp_xpm);
-// bmp = QPixmap(cur_del_mask_xpm);
QPixmap cur3(":/res/cur_del_bmp.xpm");
bmp = QPixmap(":/res/cur_del_mask.xpm");
cur3.setMask(bmp);
curDel = new QCursor(cur3, 15, 15);
-// QPixmap cur4(cur_select_bmp_xpm);
-// bmp = QPixmap(cur_select_mask_xpm);
QPixmap cur4(":/res/cur_select_bmp.xpm");
bmp = QPixmap(":/res/cur_select_mask.xpm");
cur4.setMask(bmp);
curSelect = new QCursor(cur4, 15, 15);
-// QPixmap cur5(cur_hand_bmp_xpm);
-// bmp = QPixmap(cur_hand_mask_xpm);
QPixmap cur5(":/res/cur_hand_bmp.xpm");
bmp = QPixmap(":/res/cur_hand_mask.xpm");
cur5.setMask(bmp);
return height() - hScrollBar->sizeHint().height();
}
-/**
- * Creates a new painter for the buffer of this widget and returns a
- * pointer to it. The class variable 'painter' also
- * points to that object.
- */
-//'painter' is NOT a class variable!
-//RS_Painter * QG_GraphicView::createPainter()
-PaintInterface * QG_GraphicView::createPainter()
-{
-#if 1
- return NULL;
-#else
-//RS_DEBUG->print(RS_Debug::D_CRITICAL, "QG_GraphicView::createPainter called...");
- RS_DEBUG->print("QG_GraphicView::createPainter begin");
-
- if (lastWidth != getWidth() || lastHeight != getHeight())
- {
- destroyPainter();
-
- if (buffer != NULL)
- {
- delete buffer;
- buffer = NULL;
- }
-
- lastWidth = getWidth();
- lastHeight = getHeight();
- }
-
- if (buffer == NULL)
- {
- //RS_DEBUG->timestamp();
- RS_DEBUG->print("creating buffer: %d,%d", getWidth(), getHeight());
- buffer = new QPixmap(getWidth(), getHeight());
- RS_DEBUG->print("ok");
- }
-
- if (painter == NULL)
- {
- painter = new RS_PainterQt(buffer);
- painter->setDrawingMode(drawingMode);
- ((RS_PainterQt *)painter)->setBackgroundMode(Qt::OpaqueMode);
- ((RS_PainterQt *)painter)->setBackgroundColor(background);
- ((RS_PainterQt *)painter)->eraseRect(0, 0, getWidth(), getHeight());
-
- //RS_DEBUG->timestamp();
- }
-
- RS_DEBUG->print("QG_GraphicView::createPainter end");
-
- return painter;
-#endif
-}
-
-/**
- * Creates a new painter for this widget and returns a
- * pointer to it. The class variable 'painter' also
- * automatically points to that object.
- */
-//RS_Painter * QG_GraphicView::createDirectPainter()
-PaintInterface * QG_GraphicView::createDirectPainter()
-{
-#if 1
- return NULL;
-#else
-//RS_DEBUG->print(RS_Debug::D_CRITICAL, "QG_GraphicView::createDirectPainter called...");
- RS_DEBUG->print("QG_GraphicView::createDirectPainter begin");
-
- destroyPainter();
- painter = new RS_PainterQt(this);
- painter->setDrawingMode(drawingMode);
-
- RS_DEBUG->print("QG_GraphicView::createDirectPainter end");
-
- return painter;
-#endif
-}
-
-/**
- * Deletes the painter.
- */
-void QG_GraphicView::destroyPainter()
-{
-#if 1
- return;
-#else
- RS_DEBUG->print("QG_GraphicView::destroyPainter begin");
-
- if (painter != NULL)
- {
- delete painter;
- painter = NULL;
- }
-
- RS_DEBUG->print("QG_GraphicView::destroyPainter end");
-#endif
-}
-
/**
* Changes the current background color of this view.
*/
* Handles paint events by redrawing the graphic in this view.
* usually that's very fast since we only paint the buffer we
* have from the last call..
+ *
+ * This is not true anymore--even if it was true in the first place, which
+ * seems doubtful to me. Everything is redrawn every time; we need to see if
+ * relying on Qt do to the clipping is wise or not... Also, we need to clarify
+ * all rendering paths since they are not all logical or consistent.
*/
void QG_GraphicView::paintEvent(QPaintEvent *)
{