void SCgVisualControl::_update(SCgObjectObserver::UpdateEventType eventType, SCgObject *object) { if (eventType == SCgObjectObserver::IdentifierChanged) { if (mTextItem == 0) { QFont font(scg_cfg_get_value_string(scg_key_control_font_name), scg_cfg_get_value_uint(scg_key_control_font_size), 10, false); font.setBold(true); //font.setItalic(true); mTextItem = new QGraphicsTextItem(this); mTextItem->setFont(font); mTextItem->setDefaultTextColor(scg_cfg_get_value_color(scg_key_control_font_color)); } mTextItem->setPlainText(object->identifier()); QRectF textBound = mTextItem->boundingRect(); baseObject()->setSize(QSizeF(textBound.width() + 10, textBound.height() + 10)); mTextItem->setPos(-textBound.width() / 2.f, -textBound.height() / 2.f); return; } SCgVisualObject::_update(eventType, object); }
void inputHandler::mouseUp(scene &mainScene, const bool &bEditing) { if (bEditing) { primitives::vertex clickLoc = mainScene.getClickLoc(); primitives::vertex mouseLoc = mainScene.getMouseLoc(); primitives::vertex drawSize; drawSize.x = mouseLoc.x - clickLoc.x; drawSize.y = mouseLoc.y - clickLoc.y; //drawSize.roundToNearest(.05f); drawCenter.x = clickLoc.x + drawSize.x / 2; drawCenter.y = clickLoc.y + drawSize.y / 2; //drawCenter.roundToNearest(.025f); //prevent accidental creating if (abs(drawSize.x) > .025 && abs(drawSize.y) > .025) { mainScene.getGround()->push_back(baseObject(drawCenter, drawSize.x, drawSize.y)); drawSize.x = drawSize.y = 0.0f; mainScene.setDrawSize(drawSize); mainScene.setClickLoc(primitives::vertex()); } } }
QRectF SCgVisualControl::boundingRect() const { QSizeF size = baseObject()->size(); return QRectF(-size.width() / 2.f, -size.height() / 2.f, size.width(), size.height()); }