Scenery::Scenery(const Simulation::VelocityMap *m, QGraphicsItem *parent) : QGraphicsItem(parent) { QSize size = m->get_size(); int x, y; for (x = 0; x < size.width(); x++) { for (y = 0; y < size.height(); y++) { ArrowItem *i = new ArrowItem(this); i->limitLength(0.5); i->setPos(x, y); i->setVel(m->Get_Velocity_At(x, y)/5); } } }
ViewItem* ArrowItemFactory::generateGraphics(QXmlStreamReader& xml, ObjectStore *store, View *view, ViewItem *parent) { ArrowItem *rc = 0; while (!xml.atEnd()) { bool validTag = true; if (xml.isStartElement()) { if (!rc && xml.name().toString() == "arrow") { Q_ASSERT(!rc); rc = new ArrowItem(view); if (parent) { rc->setParentViewItem(parent); } QXmlStreamAttributes attrs = xml.attributes(); QStringRef av; av = attrs.value("startarrowhead"); if (!av.isNull()) { rc->setStartArrowHead(QVariant(av.toString()).toBool()); } av = attrs.value("endarrowhead"); if (!av.isNull()) { rc->setEndArrowHead(QVariant(av.toString()).toBool()); } av = attrs.value("startarrowheadscale"); if (!av.isNull()) { rc->setStartArrowScale(QVariant(av.toString()).toDouble()); } av = attrs.value("endarrowheadscale"); if (!av.isNull()) { rc->setEndArrowScale(QVariant(av.toString()).toDouble()); } // Add any new specialized ArrowItem Properties here. } else { Q_ASSERT(rc); if (!rc->parse(xml, validTag) && validTag) { ViewItem *i = GraphicsFactory::parse(xml, store, view, rc); if (!i) { } } } } else if (xml.isEndElement()) { if (xml.name().toString() == "arrow") { break; } else { validTag = false; } } if (!validTag) { qDebug("invalid Tag\n"); Debug::self()->log(QObject::tr("Error creating arrow object from Kst file."), Debug::Warning); delete rc; return 0; } xml.readNext(); } return rc; }
void RelationStarter::addArrow(const QString &id, ArrowItem::Shaft shaft, ArrowItem::Head endHead, ArrowItem::Head startHead) { QMT_CHECK(!id.isEmpty()); prepareGeometryChange(); ArrowItem *arrow = new ArrowItem(this); arrow->setArrowSize(10.0); arrow->setDiamondSize(15.0); arrow->setShaft(shaft); arrow->setStartHead(startHead); arrow->setEndHead(endHead); arrow->setPoints(QList<QPointF>() << QPointF(0.0, 10.0) << QPointF(15.0, 0.0)); arrow->setPos(6.0, m_arrows.size() * 20.0 + 8.0); arrow->update(m_diagramSceneModel->styleController()->relationStarterStyle()); m_arrows.append(arrow); m_arrowIds.insert(arrow, id); setRect(0.0, 0.0, 26.0, m_arrows.size() * 20.0 + 6.0); }