void MapObjectItem::syncWithMapObject() { // Update the whole object when the name or type has changed if (mObject->name() != mName || mObject->type() != mType) { mName = mObject->name(); mType = mObject->type(); update(); mResizeHandle->update(); } QString toolTip = mName; if (!mType.isEmpty()) toolTip += QLatin1String(" (") + mType + QLatin1String(")"); setToolTip(toolTip); MapRenderer *renderer = mMapDocument->renderer(); const QPointF pixelPos = renderer->tileToPixelCoords(mObject->position()); QRectF bounds = renderer->boundingRect(mObject); bounds.translate(-pixelPos); mSyncing = true; setPos(pixelPos); if (mBoundingRect != bounds) { // Notify the graphics scene about the geometry change in advance prepareGeometryChange(); mBoundingRect = bounds; const QPointF bottomRight = mObject->bounds().bottomRight(); const QPointF handlePos = renderer->tileToPixelCoords(bottomRight); mResizeHandle->setPos(handlePos - pixelPos); } mSyncing = false; }
void MapObjectItem::syncWithMapObject() { // Update the whole object when the name or polygon has changed if (mObject->name() != mName || mObject->polygon() != mPolygon) { mName = mObject->name(); mPolygon = mObject->polygon(); update(); } const QColor color = objectColor(mObject); if (mColor != color) { mColor = color; update(); mResizeHandle->update(); } QString toolTip = mName; const QString &type = mObject->type(); if (!type.isEmpty()) toolTip += QLatin1String(" (") + type + QLatin1String(")"); setToolTip(toolTip); MapRenderer *renderer = mMapDocument->renderer(); const QPointF pixelPos = renderer->tileToPixelCoords(mObject->position()); QRectF bounds = renderer->boundingRect(mObject); bounds.translate(-pixelPos); setPos(pixelPos); setZValue(pixelPos.y()); setRotation(mObject->rotation()); setTransformOriginPoint(objectCenter()); mSyncing = true; if (mBoundingRect != bounds) { // Notify the graphics scene about the geometry change in advance prepareGeometryChange(); mBoundingRect = bounds; const QPointF bottomRight = mObject->bounds().bottomRight(); const QPointF handlePos = renderer->tileToPixelCoords(bottomRight); mResizeHandle->setPos(handlePos - pixelPos); } mSyncing = false; setVisible(mObject->isVisible()); }
void MapObjectItem::syncWithMapObject() { const QColor color = mObject->effectiveColor(); // Update the whole object when the name, polygon or color has changed if (mPolygon != mObject->polygon() || mColor != color) { mPolygon = mObject->polygon(); mColor = color; update(); } QString toolTip = mObject->name(); const QString &type = mObject->type(); if (!type.isEmpty()) toolTip += QLatin1String(" (") + type + QLatin1String(")"); setToolTip(toolTip); MapRenderer *renderer = mMapDocument->renderer(); const QPointF pixelPos = renderer->pixelToScreenCoords(mObject->position()); QRectF bounds = renderer->boundingRect(mObject); bounds.translate(-pixelPos); if (renderer->flags().testFlag(ShowTileCollisionShapes)) expandBoundsToCoverTileCollisionObjects(bounds); setPos(pixelPos); setRotation(mObject->rotation()); if (ObjectGroup *objectGroup = mObject->objectGroup()) { if (objectGroup->drawOrder() == ObjectGroup::TopDownOrder) setZValue(pixelPos.y()); if (mIsHoveredIndicator) { auto totalOffset = objectGroup->totalOffset(); setTransform(QTransform::fromTranslate(totalOffset.x(), totalOffset.y())); } } if (mBoundingRect != bounds) { // Notify the graphics scene about the geometry change in advance prepareGeometryChange(); mBoundingRect = bounds; } setVisible(mObject->isVisible()); }