//------------------------------------------------------------------------------- void HUD::tick(const Ogre::FrameEvent &evt) { //Update each timer, removing it if it's run out. for (TimerMap::iterator iter = mTimers.begin(); iter != mTimers.end(); ) { Timer *timer = iter->second; if (!timer->update(evt.timeSinceLastFrame)) { delete iter->second; mTimers.erase(iter++); } else ++iter; } //Update each pickup display. int i = 0; for (PickupDisplayMap::iterator iter = mPickupDisplays.begin(); iter != mPickupDisplays.end(); ++i, ++iter) iter->second->update(pickupDisplayPosition(i)); //Update each icon. i = 0; int num = mIcons.size(); for (IconMap::iterator iter = mIcons.begin(); iter != mIcons.end(); ++i, ++iter) iter->second->update(iconPosition(i, num)); //If there's a bonus time, show it, else don't. if (mBonusTimer) if (GlbVar.bonusTime > 0) { Ogre::Vector2 pos = timerPosition(0); mBonusTimer->setCoord(MyGUI::IntCoord(pos.x, pos.y, TEXT_WIDTH, TEXT_HEIGHT)); mBonusTimer->setCaption(Ogre::StringConverter::toString((int) GlbVar.bonusTime)); } else mBonusTimer->setCaption(""); }
void TreeViewCheckBoxNode::onDraw() { Brush* brush = Brush::getSingletonPtr(); brush->setFilterMode(mDesc->widget_brushFilterMode); // Draw Background Point backgroundPosition(mTexturePosition); backgroundPosition.x += mWidgetDesc->widget_dimensions.size.height; brush->drawSkinElement(Rect(backgroundPosition,mWidgetDesc->widget_dimensions.size),mSkinElement); // if Selected, draw Selected SkinElement if(mDesc->treeviewnode_selected) brush->drawSkinElement(Rect(backgroundPosition,mWidgetDesc->widget_dimensions.size),mSkinType->getSkinElement(SELECTED)); ColourValue prevColor = brush->getColour(); Rect prevClipRegion = brush->getClipRegion(); // Draw Icon Point iconPosition(mTexturePosition.x + (mWidgetDesc->widget_dimensions.size.height * 2),mTexturePosition.y); brush->drawSkinElement(Rect(iconPosition,Size(mWidgetDesc->widget_dimensions.size.height)),mSkinType->getSkinElement(ICON)); // Clip to client dimensions Rect clipRegion(mTexturePosition,Size(mWidgetDesc->widget_dimensions.size.width - mWidgetDesc->widget_dimensions.size.height,mWidgetDesc->widget_dimensions.size.height)); clipRegion.translate(Point(mWidgetDesc->widget_dimensions.size.height * 3,0)); brush->setClipRegion(prevClipRegion.getIntersection(clipRegion)); // Adjust Rect to Text drawing region Point textPosition = clipRegion.position; mText->draw(textPosition); // Restore Clipping brush->setClipRegion(prevClipRegion); brush->setColor(prevColor); }
void MButtonViewPrivate::calcIconTextRects() { Q_Q(const MButtonView); const MButtonStyle *s = static_cast<const MButtonStyle *>(q->style().operator ->()); //total horizontal and vertical text margins int hTextMargin = s->textMarginLeft() + s->textMarginRight(); int vTextMargin = s->textMarginTop() + s->textMarginBottom(); //total horizontal and vertical padding int hPadding = s->paddingLeft() + s->paddingRight(); int vPadding = s->paddingTop() + s->paddingBottom(); //area for the content (icon and text) QRectF contentRect(s->paddingLeft(), s->paddingTop(), q->size().width() - hPadding, q->size().height() - vPadding); //text rect when there is no icon QRectF textRect(contentRect.left() + s->textMarginLeft(), contentRect.top() + s->textMarginTop(), contentRect.width() - hTextMargin, contentRect.height() - vTextMargin); QSizeF textSize(0,0); if (label) textSize = label->sizeHint(Qt::PreferredSize); //icon visible and valid? if (q->model()->iconVisible() && (icon || toggledIcon)) { int iconWidth = s->iconSize().width(); int iconHeight = s->iconSize().height(); QSizeF iconSize(iconWidth, iconHeight); QPointF iconPosition(0, 0); //text visible and valid? if (q->model()->textVisible() && !q->model()->text().isEmpty()) { textSize.setWidth(qMin(textSize.width(), contentRect.width() - iconWidth - hTextMargin)); switch (q->style()->iconAlign()) { //icon on left and text on right case Qt::AlignLeft: { if (s->horizontalTextAlign() == Qt::AlignHCenter) iconPosition.setX(contentRect.center().x() - iconWidth - (textSize.width() / 2)); else if (s->horizontalTextAlign() == Qt::AlignRight) iconPosition.setX(contentRect.right() - textSize.width() - iconWidth - hTextMargin); else if (s->horizontalTextAlign() == Qt::AlignLeft) iconPosition.setX(contentRect.left()); iconPosition.setY(contentRect.center().y() - (iconHeight / 2)); textRect.setX(contentRect.left() + s->textMarginLeft() + iconWidth); textRect.setWidth(contentRect.width() - iconWidth - hTextMargin); break; } //icon on right and text on left case Qt::AlignRight: { if (s->horizontalTextAlign() == Qt::AlignHCenter) iconPosition.setX(contentRect.center().x() + (textSize.width() / 2)); else if (s->horizontalTextAlign() == Qt::AlignRight) iconPosition.setX(contentRect.right() - iconWidth); else if (s->horizontalTextAlign() == Qt::AlignLeft) iconPosition.setX(contentRect.left() + textSize.width() + hTextMargin); iconPosition.setY(contentRect.center().y() - (iconHeight / 2)); textRect.setWidth(contentRect.width() - iconWidth - hTextMargin); break; } //icon on bottom and text on top case Qt::AlignBottom: { iconPosition = QPointF(contentRect.center().x() - (iconWidth / 2), contentRect.bottom() - iconHeight); textRect.setHeight(contentRect.height() - iconHeight - vTextMargin); break; } //icon on top and text on bottom default: { iconPosition = QPointF(contentRect.center().x() - (iconWidth / 2), contentRect.top()); textRect.setY(iconRect.bottom() + q->style()->textMarginTop()); textRect.setHeight(contentRect.height() - iconHeight - vTextMargin); break; } } } // no text else { //icon on center iconPosition = QPointF(contentRect.center().x() - (iconWidth / 2), contentRect.center().y() - (iconHeight / 2)); } iconRect = QRectF(iconPosition, iconSize); } //adjust label with button margins if (label) { if (controller->layoutDirection() == Qt::LeftToRight) label->setGeometry(textRect.translated(q->marginLeft(), q->marginTop())); else label->setGeometry(textRect.translated(q->marginRight(), q->marginTop())); } }