Beispiel #1
0
void Path::addEllipse(const FloatPoint& p,
                      float radiusX,
                      float radiusY,
                      float rotation,
                      float startAngle,
                      float endAngle,
                      bool anticlockwise) {
  ASSERT(ellipseIsRenderable(startAngle, endAngle));
  ASSERT(startAngle >= 0 && startAngle < twoPiFloat);
  ASSERT((anticlockwise && (startAngle - endAngle) >= 0) ||
         (!anticlockwise && (endAngle - startAngle) >= 0));

  if (!rotation) {
    addEllipse(FloatPoint(p.x(), p.y()), radiusX, radiusY, startAngle, endAngle,
               anticlockwise);
    return;
  }

  // Add an arc after the relevant transform.
  AffineTransform ellipseTransform =
      AffineTransform::translation(p.x(), p.y()).rotateRadians(rotation);
  ASSERT(ellipseTransform.isInvertible());
  AffineTransform inverseEllipseTransform = ellipseTransform.inverse();
  transform(inverseEllipseTransform);
  addEllipse(FloatPoint::zero(), radiusX, radiusY, startAngle, endAngle,
             anticlockwise);
  transform(ellipseTransform);
}
Beispiel #2
0
void 
RSceneDevice::Circle(double x, double y, double r,
		     R_GE_gcontext *gc)
{
    if (debug) Rprintf("RSceneDevice::Circle\n");
    QPen pen(Qt::NoPen);
    QBrush brush;
    QRectF rect(x - r, y - r, 2 * r, 2 * r);
    int col = gc->col;
    int fill = gc->fill;
    // double gamma = gc->gamma;
    double lwd = gc->lwd;
    int lty = gc->lty;     // FIXME: should be easy to add
    if (col != NA_INTEGER && !R_TRANSPARENT(col)) {
	pen.setStyle(lty2style(lty));
	pen.setColor(r2qColor(col));
	pen.setWidthF(lwd);
    }
    if (fill != NA_INTEGER && !R_TRANSPARENT(fill)) {
	brush.setColor(r2qColor(fill));
	brush.setStyle(Qt::SolidPattern);
    }
    // FIXME: We can either create items separately and add them in
    // addClippedItem() as here, or do addClippedItem(addEllipse(...))
    // which removes and adds (as in the other callbacks currently).
    // The first is probably better, so should fix the others.
    addClippedItem(addEllipse(rect, pen, brush));
//     QGraphicsEllipseItem *item = new QGraphicsEllipseItem(rect);
//     item->setPen(pen);
//     item->setBrush(brush);
//     addClippedItem(item);
    return;
}
Beispiel #3
0
void MainScene::populateScene()
{
    for (int i = 0; i < 500; i+=100) {
        addEllipse(i, 70, 50,50);
    }

}
Beispiel #4
0
void RayDisplayScene::updateCollisions()
{
	QPointF collisionPoint;
	for (int i = 0; i < mCollisions.size(); i++) {
		delete mCollisions.at(i);
	}
	mCollisions.resize(0);
	for (int i = 0; i < mCollidedRays.size(); i++) {
		const int jCount = mCollidedRays.at(i).size();
		for (int k = 0; k < mCollidedRays.size(); k++) {
			if (i == k) {
				continue;
			}
			const int lCount = mCollidedRays.at(k).size();
			for (int j = 0; j < jCount; j++) {
				for (int l = 0; l < lCount; l++) {
					if (mCollidedRays.at(i).at(j).intersect(mCollidedRays.at(k).at(l), &collisionPoint) == QLineF::BoundedIntersection) {
						QGraphicsEllipseItem *collisionGraphicsItem;
						collisionGraphicsItem = addEllipse(QRectF(collisionPoint, QSizeF(2, 2)), QPen(QBrush(Qt::magenta), 2));
						mCollisions << collisionGraphicsItem;
					}
				}
			}
		}
	}
}
Beispiel #5
0
void NoDank::keys(int key) {
    switch (key) {
    case '1':
        addEllipse();
        break;
    case '2':
        changeAddMirror();
        break;
    case '3':
        for(int i=0; i<ellipses.size(); i++) {
            ellipses[i]->LFO_alpha = !ellipses[i]->LFO_alpha;
        }
        break;
    case '4':
        oneFrame();
        break;
    case '5':
        oneFrameLarger();
        break;
    case '6':
        halfTime();
        break;
    default:
        break;
    }
}
ActionEffectEditor::ActionEffectEditor(QWidget *parent)
	: MyTabSubWidgetBase(parent)
{
	//m_pHbox = new QHBoxLayout;
	m_pView = new MyGraphicsView(this);
	m_pScene = new MyGraphicsScene;

	addMultiPolygon();
	addEllipse();
	addDragWidget();
	addBezierCurve();

	m_pView->setScene(m_pScene);

	//m_pHbox->addWidget(m_pView);
	//this->setLayout(m_pHbox);
	//this->resize(600, 400);
	setCentralWidget(m_pView);

	g_pQtGameEditorSys->setGraphicsScenePtr(m_pScene);
	g_pQtGameEditorSys->setGraphicsViewPtr(m_pView);

	m_pNodeDockWidget = new NodeDockWidget(this);
	this->addDockWidget(Qt::RightDockWidgetArea, m_pNodeDockWidget);
	this->setAcceptDrops(true);		// ½ÓÊÕÍ϶¯²Ù×÷
}
Beispiel #7
0
void Path::addArc(const FloatPoint& p,
                  float radius,
                  float startAngle,
                  float endAngle,
                  bool anticlockwise) {
  addEllipse(p, radius, radius, startAngle, endAngle, anticlockwise);
}
void MainWindow::fillView()
{
    for (int i = 0; i < 10; i++) {
        addRectangle();
        addEllipse();
        addLine();
        addText();
    }
    canvas->update();
}
void LvlScene::setCircleDrawer()
{
    if(cursor)
        {delete cursor;
        cursor=NULL;}

    QPen pen;
    QBrush brush;

    switch(placingItem)
    {
    case PLC_Block:
    case PLC_BGO:
    default:
        pen = QPen(Qt::gray, 2);
        brush = QBrush(Qt::darkGray);
        break;
    }

    //Align width and height to fit into item aligning
    long addW=LvlPlacingItems::gridSz-LvlPlacingItems::itemW%LvlPlacingItems::gridSz;
    long addH=LvlPlacingItems::gridSz-LvlPlacingItems::itemH%LvlPlacingItems::gridSz;
    if(addW==LvlPlacingItems::gridSz) addW=0;
    if(addH==LvlPlacingItems::gridSz) addH=0;
    LvlPlacingItems::itemW = LvlPlacingItems::itemW+addW;
    LvlPlacingItems::itemH = LvlPlacingItems::itemH+addH;

    if((placingItem != PLC_Water) && (!LvlPlacingItems::sizableBlock))
    {
        QPixmap oneCell(LvlPlacingItems::itemW, LvlPlacingItems::itemH);
        oneCell.fill(QColor(0xFF, 0xFF, 0x00, 128));
        QPainter p(&oneCell);
        p.setBrush(Qt::NoBrush);
        p.setPen(QPen(Qt::yellow, 2, Qt::SolidLine));
        p.drawRect(0,0, LvlPlacingItems::itemW, LvlPlacingItems::itemH);
        brush.setTexture(oneCell);
    }

    cursor = addEllipse(0,0,1,1, pen, brush);

    //set data flags
    foreach(dataFlag flag, LvlPlacingItems::flags)
        cursor->setData(flag.first, flag.second);

    cursor->setData(ITEM_TYPE, "Circle");

    cursor->setData(ITEM_IS_CURSOR, "CURSOR");
    cursor->setZValue(7000);
    cursor->setOpacity( 0.5 );
    cursor->setVisible(false);
    cursor->setEnabled(true);

    SwitchEditingMode(MODE_DrawCircle);
    DrawMode=true;
}
QGraphicsItem* ObjectsScene::createItem(BaseType radius)
{
    const QSizeF size(2 * radius, 2 * radius);
    const QRectF rect(QPointF(-radius, -radius), size);
    QPen pen(Qt::red);
    pen.setWidthF(10e6);

    QGraphicsItem* item = addEllipse(rect, pen, QBrush(Qt::SolidPattern));

    return item;
}
void CSharedPainterScene::drawLineStart( const QPointF &pt, const QColor &clr, int width )
{
	double x = pt.x() - (double(width) / 2.f);
	double y = pt.y() - (double(width) / 2.f);
	QRectF rect( x, y, width, width);

	QGraphicsEllipseItem *item = addEllipse( rect, QPen(clr, 1), QBrush(clr) );
	item->setZValue( currentZValue() );

	tempLineItemList_.push_back( item );
}
Beispiel #12
0
void paintScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    setBrushType(myBrush->getToolStatus());
    // При нажатии кнопки мыши отрисовываем эллипс
    addEllipse(event->scenePos().x() - 5,
               event->scenePos().y() - 5,
               5*myBrush->getWidth(),
               5*myBrush->getWidth(),
               QPen(Qt::NoPen),
               brushType->color());
    // Сохраняем координаты точки нажатия
    previousPoint = event->scenePos();
}
Beispiel #13
0
void NoDank::MidiFunc(ofxMidiMessage msg) {
    if(msg.status == MIDI_CONTROL_CHANGE) {
        if(msg.control == 1)
            visualizer->setAlpha(ofMap(msg.value, 0, 127, 8, 255));
    }

    if(msg.status == 144) {
        switch (msg.pitch) {
        case 36:
            addEllipse();
            break;
        case 37:
            break;
        case 38:
            break;
        case 39:
            break;

        case 40:
            LFO_alpha();

            break;
        case 41:
            oneFrame();

            break;
        case 42:
            oneFrameLarger();
            break;


        case 44:
            changeAddMirror();
            break;


        case 48:
            deleteCircles();
            break;
        case 50:
            halfTime();
            break;

        default:
            break;
        }
    }
}
void mogs_qt_video_scene::DrawPoint(	CvPoint in,
					QString name)
{
	QPen outlinePen(Qt::red);
	outlinePen.setWidth(2);
	addEllipse(in.x, in.y, 5, 5,outlinePen);
	
	if (name != "")
	{
		QGraphicsTextItem * io = new QGraphicsTextItem;
		io->setDefaultTextColor(Qt::red);
		io->setPos(in.x -20,in.y);
		io->setPlainText(name);
		addItem(io);
	}
}
Beispiel #15
0
void Scene::drawItem(QPointF const &destination)
{
    if (itemType == "QGraphicsRectItem")
    {
        QGraphicsRectItem* rect = addRect(QRectF(destination.x(), destination.y(), 100, 70)
                                          , pen, brush);
        rect->setFlag(QGraphicsItem::ItemIsMovable, true);
        rect->setFlag(QGraphicsItem::ItemIsSelectable, true);
    }

    else if (itemType == "QGraphicsEllipseItem")
    {
        QGraphicsEllipseItem* ellipse = addEllipse(QRectF(destination.x(), destination.y(), 100, 70)
                                        , pen, brush);
        ellipse->setFlag(QGraphicsItem::ItemIsMovable, true);
        ellipse->setFlag(QGraphicsItem::ItemIsSelectable, true);
    }
}
Beispiel #16
0
// draws the cv points
void CCurveScene::drawPoints()
{
    while (_circleObjects.size()) {
        delete _circleObjects[0];
        _circleObjects.erase(_circleObjects.begin());
    }
    const int numCV = _cvs.size();
    for (int i = 0; i < numCV; i++) {
        const T_CURVE::CV& pt = _cvs[i];
        QPen pen;
        if (i == _selectedItem) {
            pen = QPen(QColor(255,170,0),1.0);
        } else {
            pen = QPen(Qt::black,1.0);
        }
        _circleObjects.push_back(addEllipse(pt._pos*_width-4, _height+3, 8, 8, pen, QBrush(QColor(int(255 * pt._val[0] +0.5), int(255 * pt._val[1] + 0.5), int(255 * pt._val[2] + 0.5)))));
        QGraphicsEllipseItem *circle = _circleObjects.back();
        circle->setFlag(QGraphicsItem::ItemIsMovable, true);
        circle->setZValue(2);
    }
}
Beispiel #17
0
void Scene::addTrafficLights() {
    std::vector<Intersection *> intersections = world->getIntersections();
    for (const auto &intersection : intersections) {
        int width = (int) intersection->getRectangle().getWidth();
        for (int i = 0; i < 4; i++) {
            std::string s = intersection->getTrafficLight()->getState(i);
            QColor color = Qt::red;
            for (int j = 0; j < 3; j++) {
                if (s[2 - j] == '1') {
                    color = Qt::green;
                }
                else {
                    color = Qt::red;
                }
                trafficLightsItems.push_back(addEllipse(QRect(intersection->getRectangle().getLeft() + Scene::OFFSET_X[i][j] * width,
                                                              intersection->getRectangle().getBottom() + Scene::OFFSET_Y[i][j] * width,
                                                              width * 0.05, width * 0.05), QPen(color), QBrush(color)));
            }
        }
    }
}
Beispiel #18
0
void RayDisplayScene::initLeds()
{
	QList<int> sizes;
	//sizes << 64 << 40 << 64 << 40;
	sizes << 48 << 32 << 48 << 32;
	Q_ASSERT(4 == sizes.size());
	QVector<QVector<QPointF>> sidedReceiversPos;
	QVector<QVector<QPointF>> sidedSendersPos;
	sidedReceiversPos.resize(sizes.size());
	mSidedReceivers.resize(sizes.size());
	sidedSendersPos.resize(sizes.size());
	int allReceivers = 0;
	for (int i = 0; i < sizes.size(); i++) {
		Q_ASSERT(sizes.at(i) % 8 == 0);
		sidedReceiversPos[i].reserve(sizes.at(i));
		mSidedReceivers[i].reserve(sizes.at(i));
		sidedSendersPos[i].reserve(sizes.at(i) / 8);
		allReceivers += sizes.at(i) / 8;
	}
	mReceivers.reserve(allReceivers * 8);

	mSenders.reserve(allReceivers);
	// top left-to-right
	for (int i = 0; i < sizes.at(0); i++) {
		QGraphicsEllipseItem *r;
		const int x = i * 10;
		const int y = 0;
		r = addEllipse(0, 0, 5, 5, QPen(QBrush(Qt::black), 2));
		const int sideId = 0;
		const QPointF p(x, y);
		sidedReceiversPos[sideId] << p;
		r->setPos(p);
		mReceivers.append(r);
		mSidedReceivers[sideId] << r;
	}
	// right top-to-bottom
	for (int i = 0; i < sizes.at(1); i++) {
		QGraphicsEllipseItem *r;
		const int x = sizes.at(0) * 10;
		const int y = i * 10 - (0 - 5);
		r = addEllipse(0, 0, 5, 5, QPen(QBrush(Qt::black), 2));
		const int sideId = 1;
		const QPointF p(x, y);
		sidedReceiversPos[sideId] << p;
		r->setPos(p);
		mReceivers.append(r);
		mSidedReceivers[sideId] << r;
	}
	// bottom right-to-left
	for (int i = 0; i < sizes.at(2); i++) {
		QGraphicsEllipseItem *r;
		const int x = i * -10 + sizes.at(0) * 10 - 10;
		const int y = sizes.at(1) * 10;
		r = addEllipse(0, 0, 5, 5, QPen(QBrush(Qt::black), 2));
		const int sideId = 2;
		const QPointF p(x, y);
		sidedReceiversPos[sideId] << p;
		r->setPos(p);
		mReceivers.append(r);
		mSidedReceivers[sideId] << r;
	}
	// left bottom-to-top
	for (int i = 0; i < sizes.at(3); i++) {
		QGraphicsEllipseItem *r;
		const int x = -5;
		const int y = i * -10 + ((sizes.at(1)) * 10 - 5);
		r = addEllipse(0, 0, 5, 5, QPen(QBrush(Qt::black), 2));
		const int sideId = 3;
		const QPointF p(x, y);
		sidedReceiversPos[sideId] << p;
		r->setPos(p);
		mReceivers.append(r);
		mSidedReceivers[sideId] << r;
	}

	// top left-to-right
	for (int i = 0; i < (sizes.at(0) / 8); i++) {
		QGraphicsEllipseItem *r;
		const int x = i * 80 + 35;
		const int y = 0;
		r = addEllipse(0, 0, 5, 5, QPen(QBrush(Qt::red), 2));
		const int sideId = 0;
		const QPointF p(x, y);
		sidedSendersPos[sideId] << p;
		r->setPos(p);
		mSenders.append(Sender{r, 270, sideId});
	}
	// right top-to-bottom
	for (int i = 0; i < (sizes.at(1) / 8); i++) {
		QGraphicsEllipseItem *r;
		const int x = sizes.at(0) * 10;
		const int y = i * 80 - (0 - 40);
		r = addEllipse(0, 0, 5, 5, QPen(QBrush(Qt::red), 2));
		const int sideId = 1;
		const QPointF p(x, y);
		sidedSendersPos[sideId] << p;
		r->setPos(p);
		mSenders.append(Sender{r, 180, sideId});
	}
	// bottom right-to-left
	for (int i = 0; i < (sizes.at(2) / 8); i++) {
		QGraphicsEllipseItem *r;
		const int x = i * -80 + (sizes.at(0) * 10 - 40 - 5);
		const int y = sizes.at(1) * 10;
		r = addEllipse(0, 0, 5, 5, QPen(QBrush(Qt::red), 2));
		const int sideId = 2;
		const QPointF p(x, y);
		sidedSendersPos[sideId] << p;
		r->setPos(p);
		mSenders.append(Sender{r, 90, sideId});
	}
	// left bottom-to-top
	for (int i = 0; i < (sizes.at(3) / 8); i++) {
		QGraphicsEllipseItem *r;
		const int x = -5;
		const int y = i * -80 + ((sizes.at(1) * 10) - 40);
		r = addEllipse(0, 0, 5, 5, QPen(QBrush(Qt::red), 2));
		const int sideId = 3;
		const QPointF p(x, y);
		sidedSendersPos[sideId] << p;
		r->setPos(p);
		mSenders.append(Sender{r, 0, sideId});
	}

//	mTI = new CvTracker(sidedReceiversPos, sidedSendersPos, this);
	emit publishSizes(sidedReceiversPos, sidedSendersPos);

	mCollidedRays.clear();
	mCollidedRays.resize(mSenders.size());
	mCollidedRaysGraphics.clear();
	mCollidedRaysGraphics.resize(mSenders.size());
	mTriangles.clear();
	mTriangles.resize(mSenders.size());

	/*QVector<cv::Point> points;
	points << cv::Point2i(0, 0);
	points << cv::Point2i(0, 100);
	points << cv::Point2i(100, 0);
	const cv::Point *pointsPtr[1] = {points.data()};
	int size = points.size();
	cv::Scalar color = cv::Scalar(127);
	cv::Mat m = mMats[0];
	cv::line(m, cv::Point2i(0, 0), cv::Point2i(100, 100), color, 22);
	cv::imshow("plepleple", m);
	cv::fillConvexPoly(m, points.data(), size, color);
	qDebug() << "before";
	T::sleep(4);
	qDebug() << "after";
	cv::imshow("plepleple", m);*/
}
Beispiel #19
0
void WPainterPath::addEllipse(const WRectF& rect)
{
  addEllipse(rect.x(), rect.y(), rect.width(), rect.height());
}
Beispiel #20
0
void MainScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
    qDebug() << Q_FUNC_INFO;
    QPointF point = event->scenePos();
    addEllipse(point.x(), point.y(),7,7);
}
void MyScene::update()
{
  this->clear();

  QPen linePen;
  linePen.setWidth(2);


  QPen linePenOven;
  linePenOven.setColor(Qt::green);
  linePenOven.setWidth(3);

  // Draw oven temperature history
  if (dotListOven.count() > 2) {
    for (int i=1; i<dotListOven.count(); i++) {
      addLine(((QWidget *)this->parent())->width() * dotListOven.at(i).x() / maxTime,
              ((QWidget *)this->parent())->height() * dotListOven.at(i).y(),
              ((QWidget *)this->parent())->width() * dotListOven.at(i-1).x() / maxTime,
              ((QWidget *)this->parent())->height() * dotListOven.at(i-1).y(),
              linePenOven);
    }
  }

  if (dotList.count() >= 1) {
    // Reorder Dots from left to right

    qDebug() << "Printing unordered list";

    for (int i=0; i<dotList.count(); i++) {
      qDebug() << "[" << dotList.at(i).x() << "," << dotList.at(i).y() << "]";
    }

    for (int i=0; i<dotList.count(); i++) {
      for (int j=0; j<dotList.count()-1; j++) {
        if (dotList.at(j).x() > dotList.at(j+1).x()) {
          dotList.insert(j, dotList.takeAt(j+1));
        }
      }
    }

    qDebug() << "Printing ordered list";

    for (int i=0; i<dotList.count(); i++) {
      qDebug() << "[" << dotList.at(i).x() << "," << dotList.at(i).y() << "]";
    }

    // Normalize dots "x" with the maximum one
    double maxX = dotList.last().x();
    double scale = 1 / maxX;

    for (int i=0; i<dotList.count(); i++) {
      Dot d = dotList.takeFirst();
      d.x(d.x() * scale);
      dotList.append(d);
    }

    qDebug() << "Printing normalized list";

    for (int i=0; i<dotList.count(); i++) {
      qDebug() << "[" << dotList.at(i).x() << "," << dotList.at(i).y() << "]";
    }


    QPen dotPen;
    dotPen.setWidth(2);

    // Draw dots
    for (int i=0; i<dotList.count(); i++) {

      if (dotList.at(i).selected())
        dotPen.setColor(Qt::red);
      else
        dotPen.setColor(Qt::darkGreen);

      int posX = ((QWidget *)this->parent())->width() * dotList.at(i).x();
      int posY = ((QWidget *)this->parent())->height() * dotList.at(i).y();
      addEllipse(posX,
                 posY,
                 10,
                 10,
                 dotPen)->setPos(-5,-5);
      QString txt1, txt2;
      txt1.append(QString::number((int)(dotList.at(i).x() * (double)maxTime)));
      txt1.append(" s, ");
      txt2.append(QString::number((int)((1.0 - dotList.at(i).y()) * (double)maxTemp)));
      txt2.append(" 'C");
      addSimpleText(txt1)->setPos(posX - 30,
                                  posY - 32);
      addSimpleText(txt2)->setPos(posX - 30,
                                  posY - 20);
    }

    // Draw lines
    addLine(((QWidget *)this->parent())->width() * 0,
            ((QWidget *)this->parent())->height() * 1,
            ((QWidget *)this->parent())->width() * dotList.at(0).x(),
            ((QWidget *)this->parent())->height() * dotList.at(0).y(),
            linePen);

    for (int i=1; i<dotList.count(); i++) {
      addLine(((QWidget *)this->parent())->width() * dotList.at(i).x(),
              ((QWidget *)this->parent())->height() * dotList.at(i).y(),
              ((QWidget *)this->parent())->width() * dotList.at(i-1).x(),
              ((QWidget *)this->parent())->height() * dotList.at(i-1).y(),
              linePen);
    }
  } else {

    double val1 = 1.0 - (double)currentTemperature / maxTemp;
    int y = ((QWidget *)this->parent())->height() * val1;

    addLine(0,
            y,
            ((QWidget *)this->parent())->width(),
            y,
            linePen);
  }
}
void MainWindow::newEllipse()
{
    QtCanvasItem *item = addEllipse();
    canvas->update();
    itemClicked(item);
}
Beispiel #23
0
void Path::addEllipse (float x, float y, float w, float h)
{
    addEllipse (Rectangle<float> (x, y, w, h));
}
Beispiel #24
0
 void Path::addEllipse(Point const& center, const double rx, const double ry) noexcept
 {
     const Point delta(max(0., rx), max(0., ry));
     addEllipse(Rectangle::withCorners(center - delta, center + delta));
 }
void DRW_Hatch::parseCode(int code, dxfReader *reader){
    switch (code) {
    case 2:
        name = reader->getString();
        break;
    case 70:
        solid = reader->getInt32();
        break;
    case 71:
        associative = reader->getInt32();
        break;
    case 72:        /*edge type*/
        if (ispol){ //if is polyline is a as_bulge flag
            break;
        } else if (reader->getInt32() == 1){ //line
            addLine();
        } else if (reader->getInt32() == 2){ //arc
            addArc();
        } else if (reader->getInt32() == 3){ //elliptic arc
            addEllipse();
        } else if (reader->getInt32() == 4){ //spline
            addSpline();
        }
        break;
    case 10:
        if (pt) pt->basePoint.x = reader->getDouble();
        else if (pline) {
            plvert = pline->addVertex();
            plvert->x = reader->getDouble();
        }
        break;
    case 20:
        if (pt) pt->basePoint.y = reader->getDouble();
        else if (plvert) plvert ->y = reader->getDouble();
        break;
    case 11:
        if (line) line->secPoint.x = reader->getDouble();
        else if (ellipse) ellipse->secPoint.x = reader->getDouble();
        break;
    case 21:
        if (line) line->secPoint.y = reader->getDouble();
        else if (ellipse) ellipse->secPoint.y = reader->getDouble();
        break;
    case 40:
        if (arc) arc->radious = reader->getDouble();
        else if (ellipse) ellipse->ratio = reader->getDouble();
        break;
    case 41:
        scale = reader->getDouble();
        break;
    case 42:
        if (plvert) plvert ->bulge = reader->getDouble();
        break;
    case 50:
        if (arc) arc->staangle = reader->getDouble();
        else if (ellipse) ellipse->staparam = reader->getDouble();
        break;
    case 51:
        if (arc) arc->endangle = reader->getDouble();
        else if (ellipse) ellipse->endparam = reader->getDouble();
        break;
    case 52:
        angle = reader->getDouble();
        break;
    case 73:
        if (arc) arc->isccw = reader->getInt32();
        else if (pline) pline->flags = reader->getInt32();
        break;
    case 75:
        hstyle = reader->getInt32();
        break;
    case 76:
        hpattern = reader->getInt32();
        break;
    case 77:
        doubleflag = reader->getInt32();
        break;
    case 78:
        deflines = reader->getInt32();
        break;
    case 91:
        loopsnum = reader->getInt32();
        looplist.reserve(loopsnum);
        break;
    case 92:
        loop = new DRW_HatchLoop(reader->getInt32());
        looplist.push_back(loop);
        if (reader->getInt32() & 2) {
            ispol = true;
            clearEntities();
            pline = new DRW_LWPolyline;
            loop->objlist.push_back(pline);
        } else ispol = false;
        break;
    case 93:
        if (pline) pline->vertexnum = reader->getInt32();
        else loop->numedges = reader->getInt32();//aqui reserve
        break;
    case 98: //seed points ??
        clearEntities();
        break;
    default:
        DRW_Point::parseCode(code, reader);
        break;
    }
}
Beispiel #26
0
void scene::prepareItem(QPoint startpoint)
{
	selecting=true;
	start=startpoint;
	tool=currenttool;

	if(rect!=NULL)
	{
		removeItem(rect);
		rect=NULL;
	}
	if(ellipse!=NULL)
	{
		removeItem(ellipse);
		ellipse=NULL;
	}
	if(line!=NULL)
	{
		removeItem(line);
		line=NULL;
	}
	handles.clear();


	QPen pen;
	pen.setWidth(0);
	pen.setColor(Qt::red);
	QBrush brush;
	switch (tool) {
	case 0:
	{
		rect=addRect(start.x(),start.y(),0,0,pen,brush);
		for(int i=0;i<4;i++)
		{
			QGraphicsRectItem* handle=new QGraphicsRectItem(start.x()-handlew/2,start.y()-handleh/2,handlew,handleh,rect);
			handle->setPen(pen);
			handles<<handle;
		}
		ellipse=addEllipse(rect->rect(),pen,brush);
		break;
	}
	case 1:
	{
		line=addLine(start.x(),start.y(),start.x(),start.y(),pen);
		for(int i=0;i<3;i++)
		{
			QGraphicsRectItem* handle=new QGraphicsRectItem(start.x()-handlew/2,start.y()-handleh/2,handlew,handleh,line);
			handle->setPen(pen);
			handles<<handle;
		}
		break;
	}
	case 2:
	{
		rect=addRect(start.x(),start.y(),0,0,pen,brush);
		for(int i=0;i<4;i++)
		{
			QGraphicsRectItem* handle=new QGraphicsRectItem(start.x()-handlew/2,start.y()-handleh/2,handlew,handleh,rect);
			handle->setPen(pen);
			handles<<handle;
		}
		break;
	}
	case 3:
	{
		rect=addRect(start.x()-handlew/2,start.y()-handleh/2,handlew,handleh,pen,brush);
		QGraphicsRectItem* handle=new QGraphicsRectItem(start.x()-handlew/2,start.y()-handleh/2,handlew,handleh,rect);
		handle->setPen(pen);
		QGraphicsLineItem* line=new QGraphicsLineItem(start.x()-10,start.y(),start.x()+10,start.y(),rect);
		line->setPen(pen);
		line=new QGraphicsLineItem(start.x(),start.y()-10,start.x(),start.y()+10,rect);
		line->setPen(pen);
		handles<<handle;
	}
		break;
	default:
		break;
	}
}