void GrDrawTarget::drawPaths(int pathCount, const GrPath** paths, const SkMatrix* transforms, SkPath::FillType fill, SkStrokeRec::Style stroke) { SkASSERT(pathCount > 0); SkASSERT(NULL != paths); SkASSERT(NULL != paths[0]); SkASSERT(this->caps()->pathRenderingSupport()); SkASSERT(!SkPath::IsInverseFillType(fill)); const GrDrawState* drawState = &getDrawState(); SkRect devBounds; for (int i = 0; i < pathCount; ++i) { SkRect mappedPathBounds; transforms[i].mapRect(&mappedPathBounds, paths[i]->getBounds()); devBounds.join(mappedPathBounds); } SkMatrix viewM = drawState->getViewMatrix(); viewM.mapRect(&devBounds); GrDeviceCoordTexture dstCopy; if (!this->setupDstReadIfNecessary(&dstCopy, &devBounds)) { return; } this->onDrawPaths(pathCount, paths, transforms, fill, stroke, dstCopy.texture() ? &dstCopy : NULL); }
void Player::use() { MWWorld::InventoryStore& store = MWWorld::Class::get(getPlayer()).getInventoryStore(getPlayer()); MWWorld::ContainerStoreIterator equipped = store.getSlot(MWWorld::InventoryStore::Slot_CarriedRight); if (getDrawState() == MWMechanics::DrawState_Weapon) { if (equipped != store.end()) { MWWorld::Ptr item = *equipped; MWRender::Animation* anim = MWBase::Environment::get().getWorld()->getAnimation(getPlayer()); MWWorld::Ptr target = MWBase::Environment::get().getWorld()->getFacedObject(); if (anim->isPriorityActive(MWMechanics::Priority_Weapon)) return; std::string resultMessage, resultSound; if (item.getTypeName() == typeid(ESM::Lockpick).name()) { if (!target.isEmpty()) MWMechanics::Security(getPlayer()).pickLock(target, item, resultMessage, resultSound); anim->play("pickprobe", MWMechanics::Priority_Weapon, MWRender::Animation::Group_UpperBody, true, 1.0f, "start", "stop", 0.0, 0); } else if (item.getTypeName() == typeid(ESM::Probe).name()) { if (!target.isEmpty()) MWMechanics::Security(getPlayer()).probeTrap(target, item, resultMessage, resultSound); anim->play("pickprobe", MWMechanics::Priority_Weapon, MWRender::Animation::Group_UpperBody, true, 1.0f, "start", "stop", 0.0, 0); } if (!resultMessage.empty()) MWBase::Environment::get().getWindowManager()->messageBox(resultMessage); if (!resultSound.empty()) MWBase::Environment::get().getSoundManager()->playSound(resultSound,1,1); // tool used up? if (!item.getRefData().getCount()) MWBase::Environment::get().getWindowManager()->unsetSelectedWeapon(); else MWBase::Environment::get().getWindowManager()->setSelectedWeapon(item); } } }
void GrDrawTarget::drawPath(const GrPath* path, SkPath::FillType fill) { // TODO: extract portions of checkDraw that are relevant to path rendering. SkASSERT(NULL != path); SkASSERT(this->caps()->pathRenderingSupport()); const GrDrawState* drawState = &getDrawState(); SkRect devBounds; if (SkPath::IsInverseFillType(fill)) { devBounds = SkRect::MakeWH(SkIntToScalar(drawState->getRenderTarget()->width()), SkIntToScalar(drawState->getRenderTarget()->height())); } else { devBounds = path->getBounds(); } SkMatrix viewM = drawState->getViewMatrix(); viewM.mapRect(&devBounds); GrDeviceCoordTexture dstCopy; if (!this->setupDstReadIfNecessary(&dstCopy, &devBounds)) { return; } this->onDrawPath(path, fill, dstCopy.texture() ? &dstCopy : NULL); }
static void drawSegmentControlSegmentSegment(const QStyleOption *option, QPainter *painter, QWidget *widget) { // ### Change to qstyleoption_cast! if (const QtStyleOptionSegmentControlSegment *segment = static_cast<const QtStyleOptionSegmentControlSegment *>(option)) { #ifdef Q_WS_MAC if (qobject_cast<QMacStyle *>(widget->style())) { CGContextRef cg = qt_mac_cg_context(painter->device()); HIThemeSegmentDrawInfo sgi; bool selected = (segment->state & QStyle::State_Selected); sgi.version = 0; // Things look the same regardless of enabled. sgi.state = getDrawState(segment->state | QStyle::State_Enabled); sgi.value = selected ? kThemeButtonOn : kThemeButtonOff; sgi.size = kHIThemeSegmentSizeNormal; sgi.kind = kHIThemeSegmentKindNormal; sgi.adornment = kHIThemeSegmentAdornmentNone; switch (segment->position) { case QtStyleOptionSegmentControlSegment::Beginning: sgi.position = kHIThemeSegmentPositionFirst; if (segment->selectedPositions == QtStyleOptionSegmentControlSegment::NotAdjacent || selected) sgi.adornment |= kHIThemeSegmentAdornmentTrailingSeparator; break; case QtStyleOptionSegmentControlSegment::Middle: sgi.position = kHIThemeSegmentPositionMiddle; if (selected && !(segment->selectedPositions & QtStyleOptionSegmentControlSegment::PreviousIsSelected)) sgi.adornment |= kHIThemeSegmentAdornmentLeadingSeparator; if (selected || !(segment->selectedPositions & QtStyleOptionSegmentControlSegment::NextIsSelected)) // Also when we're selected. sgi.adornment |= kHIThemeSegmentAdornmentTrailingSeparator; break; case QStyleOptionTab::End: sgi.position = kHIThemeSegmentPositionLast; if (selected && !(segment->selectedPositions & QtStyleOptionSegmentControlSegment::PreviousIsSelected)) sgi.adornment |= kHIThemeSegmentAdornmentLeadingSeparator; break; case QStyleOptionTab::OnlyOneTab: sgi.position = kHIThemeSegmentPositionOnly; break; } HIRect hirect = CGRectMake(segment->rect.x(), segment->rect.y(), segment->rect.width(), segment->rect.height()); HIThemeDrawSegment(&hirect, &sgi, cg, kHIThemeOrientationNormal); CGContextRelease(cg); } else #endif { Q_UNUSED(widget); painter->save(); bool selected = (segment->state & QStyle::State_Selected); QPixmap pm; QSize buttonSize = widget->rect().size(); QString key = QString("qt_segment %0 %1 %2").arg(option->state).arg(buttonSize.width()).arg(buttonSize.height()); if (!QPixmapCache::find(key, pm)) { pm = QPixmap(buttonSize); pm.fill(Qt::transparent); QPainter pmPainter(&pm); QStyleOptionButton btnOpt; btnOpt.QStyleOption::operator =(*option); btnOpt.state &= ~QStyle::State_HasFocus; btnOpt.rect = QRect(QPoint(0, 0), buttonSize);; btnOpt.state = option->state; if (selected) btnOpt.state |= QStyle::State_Sunken; else btnOpt.state |= QStyle::State_Raised; widget->style()->drawPrimitive(QStyle::PE_PanelButtonCommand, &btnOpt, &pmPainter, widget); pmPainter.end(); QPixmapCache::insert(key, pm); } int margin = widget->style()->pixelMetric(QStyle::PM_DefaultFrameWidth, option, widget); switch (segment->position) { case QtStyleOptionSegmentControlSegment::Beginning: painter->setClipRect(option->rect); painter->drawPixmap(0, 0, pm); painter->setOpacity(0.6); painter->setPen(option->palette.dark().color()); painter->drawLine(option->rect.topRight() + QPoint(-1, margin), option->rect.bottomRight() + QPoint(-1, -margin)); break; case QtStyleOptionSegmentControlSegment::Middle: painter->setClipRect(option->rect); painter->drawPixmap(0, 0, pm); painter->setPen(option->palette.dark().color()); painter->drawLine(option->rect.topRight() + QPoint(-1, margin), option->rect.bottomRight() + QPoint(-1, -margin)); break; case QStyleOptionTab::End: painter->setClipRect(option->rect); painter->drawPixmap(0, 0, pm); break; case QStyleOptionTab::OnlyOneTab: painter->setClipRect(option->rect); painter->drawPixmap(0, 0, pm); break; } painter->restore(); } } }