QPainterPath QGVCore::toPath(const char *type, const polygon_t *poly, qreal width, qreal height) { QPainterPath path; if ((strcmp(type, "rectangle") == 0) || (strcmp(type, "box") == 0) || (strcmp(type, "hexagon") == 0) || (strcmp(type, "polygon") == 0) || (strcmp(type, "diamond") == 0)) { QPolygonF polygon = toPolygon(poly, width, height); polygon.append(polygon[0]); path.addPolygon(polygon); } else if ((strcmp(type, "ellipse") == 0) || (strcmp(type, "circle") == 0)) { QPolygonF polygon = toPolygon(poly, width, height); path.addEllipse(QRectF(polygon[0], polygon[1])); } else { qWarning("unsupported shape %s", type); } return path; }
void Polygon::setVertex(int i, const QPointF& v) { // Constrain vertex. QPointF realV = v; _constrainVertex(toPolygon(), i, realV); // Really set the vertex. _rawSetVertex(i, realV); }
QVector<QLineF> Polygon::_getSegments() const { return _getSegments(toPolygon()); }
QgsAbstractGeometry *QgsCurvePolygon::segmentize( double tolerance, SegmentationToleranceType toleranceType ) const { return toPolygon( tolerance, toleranceType ); }
ObjectGroup *VariantToMapConverter::toObjectGroup(const QVariantMap &variantMap) { typedef QScopedPointer<ObjectGroup> ObjectGroupPtr; ObjectGroupPtr objectGroup(new ObjectGroup(variantMap[QLatin1String("name")].toString(), variantMap[QLatin1String("x")].toInt(), variantMap[QLatin1String("y")].toInt())); const qreal opacity = variantMap[QLatin1String("opacity")].toReal(); const bool visible = variantMap[QLatin1String("visible")].toBool(); objectGroup->setOpacity(opacity); objectGroup->setVisible(visible); objectGroup->setColor(variantMap.value(QLatin1String("color")).value<QColor>()); const QString drawOrderString = variantMap.value(QLatin1String("draworder")).toString(); if (!drawOrderString.isEmpty()) { objectGroup->setDrawOrder(drawOrderFromString(drawOrderString)); if (objectGroup->drawOrder() == ObjectGroup::UnknownOrder) { mError = tr("Invalid draw order: %1").arg(drawOrderString); return nullptr; } } const auto objectVariants = variantMap[QLatin1String("objects")].toList(); for (const QVariant &objectVariant : objectVariants) { const QVariantMap objectVariantMap = objectVariant.toMap(); const QString name = objectVariantMap[QLatin1String("name")].toString(); const QString type = objectVariantMap[QLatin1String("type")].toString(); const int id = objectVariantMap[QLatin1String("id")].toInt(); const int gid = objectVariantMap[QLatin1String("gid")].toInt(); const qreal x = objectVariantMap[QLatin1String("x")].toReal(); const qreal y = objectVariantMap[QLatin1String("y")].toReal(); const qreal width = objectVariantMap[QLatin1String("width")].toReal(); const qreal height = objectVariantMap[QLatin1String("height")].toReal(); const qreal rotation = objectVariantMap[QLatin1String("rotation")].toReal(); const QPointF pos(x, y); const QSizeF size(width, height); MapObject *object = new MapObject(name, type, pos, size); object->setId(id); object->setRotation(rotation); if (gid) { bool ok; object->setCell(mGidMapper.gidToCell(gid, ok)); if (const Tile *tile = object->cell().tile()) { const QSizeF &tileSize = tile->size(); if (width == 0) object->setWidth(tileSize.width()); if (height == 0) object->setHeight(tileSize.height()); } } if (objectVariantMap.contains(QLatin1String("visible"))) object->setVisible(objectVariantMap[QLatin1String("visible")].toBool()); object->setProperties(extractProperties(objectVariantMap)); objectGroup->addObject(object); const QVariant polylineVariant = objectVariantMap[QLatin1String("polyline")]; const QVariant polygonVariant = objectVariantMap[QLatin1String("polygon")]; const QVariant textVariant = objectVariantMap[QLatin1String("text")]; if (polygonVariant.isValid()) { object->setShape(MapObject::Polygon); object->setPolygon(toPolygon(polygonVariant)); } if (polylineVariant.isValid()) { object->setShape(MapObject::Polyline); object->setPolygon(toPolygon(polylineVariant)); } if (objectVariantMap.contains(QLatin1String("ellipse"))) object->setShape(MapObject::Ellipse); if (textVariant.isValid()) { object->setTextData(toTextData(textVariant.toMap())); object->setShape(MapObject::Text); } } return objectGroup.take(); }
QgsPolygonV2 *QgsTriangle::surfaceToPolygon() const { return toPolygon(); }