本文整理汇总了C++中WFont::GetStringWidth方法的典型用法代码示例。如果您正苦于以下问题:C++ WFont::GetStringWidth方法的具体用法?C++ WFont::GetStringWidth怎么用?C++ WFont::GetStringWidth使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WFont
的用法示例。
在下文中一共展示了WFont::GetStringWidth方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Render
void InteractiveButton::Render()
{
if (!isSelectionValid()) return;
JRenderer *renderer = JRenderer::GetInstance();
WFont *mainFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
const string detailedInfoString = _(getText());
float stringWidth = mainFont->GetStringWidth(detailedInfoString.c_str());
float pspIconsSize = 0.5;
float mainFontHeight = mainFont->GetHeight();
float boxStartX = getX() - 5;
mXOffset = 0;
mYOffset = 0;
#ifndef TOUCH_ENABLED
renderer->FillRoundRect(boxStartX, getY(), stringWidth - 3, mainFontHeight - 9, 5, ARGB(0, 0, 0, 0));
#else
renderer->FillRoundRect(boxStartX, getY(), stringWidth - 3, mainFontHeight - 5, 5, ARGB(255, 192, 172, 119));
renderer->DrawRoundRect(boxStartX, getY(), stringWidth - 3, mainFontHeight - 5, 5, ARGB(255, 255, 255, 255));
mYOffset += 2;
#endif
float buttonXOffset = getX() - mXOffset;
float buttonYOffset = getY() + mYOffset;
if (buttonImage != NULL)
{
renderer->RenderQuad(buttonImage.get(), buttonXOffset - buttonImage.get()->mWidth/2, buttonYOffset + mainFontHeight/2, 0, pspIconsSize, pspIconsSize);
}
mainFont->SetColor(ARGB(255, 0, 0, 0));
mainFont->DrawString(detailedInfoString, buttonXOffset, buttonYOffset);
}
示例2: Render
void OptionKey::Render()
{
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::OPTION_FONT);
mFont->SetColor(getColor(WGuiColor::TEXT));
JRenderer * renderer = JRenderer::GetInstance();
if (LOCAL_KEY_NONE == from)
{
string msg = _("New binding...");
mFont->DrawString(msg, (SCREEN_WIDTH - mFont->GetStringWidth(msg.c_str())) / 2, y + 2);
}
else
{
const KeyRep& rep = translateKey(from);
if (rep.second)
renderer->RenderQuad(rep.second, x + 4, y + 3, 0, 16.0f / rep.second->mHeight, 16.0f / rep.second->mHeight);
else
mFont->DrawString(rep.first, x + 4, y + 3, JGETEXT_LEFT);
const KeyRep& rep2 = translateKey(to);
if (rep2.second)
{
float ratio = 16.0f / rep2.second->mHeight;
renderer->RenderQuad(rep2.second, x + width - (ratio * rep2.second->mWidth) - 2, y + 3, 0, ratio, ratio);
}
else
mFont->DrawString(rep2.first, width - 4, y + 3, JGETEXT_RIGHT);
}
}
示例3: GetWidth
float SimpleButton::GetWidth()
{
WFont * mFont = WResourceManager::Instance()->GetWFont(mFontId);
float backup = mFont->GetScale();
mFont->SetScale(1.0);
float result = mFont->GetStringWidth(mText.c_str());
mFont->SetScale(backup);
return result;
}
示例4: GetEnlargedWidth
float SimpleButton::GetEnlargedWidth()
{
WFont * mFont = WResourceManager::Instance()->GetWFont(mFontId);
float backup = mFont->GetScale();
mFont->SetScale(SCALE_SELECTED);
if(mText.size() < 20)
mFont->SetScale(SCALE_SELECTED_LARGE);
float result = mFont->GetStringWidth(mText.c_str());
mFont->SetScale(backup);
return result;
}
示例5: Overlay
void OptionKey::Overlay()
{
JRenderer * renderer = JRenderer::GetInstance();
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::OPTION_FONT);
mFont->SetColor(ARGB(255, 0, 0, 0));
if (grabbed)
{
static const float x = 30, y = 45;
renderer->FillRoundRect(x, y, SCREEN_WIDTH - 2 * x, 50, 2, ARGB(200, 200, 200, 255));
string msg = _("Press a key to associate.");
mFont->DrawString(msg, (SCREEN_WIDTH - mFont->GetStringWidth(msg.c_str())) / 2, y + 20);
}
else if (btnMenu)
btnMenu->Render();
}
示例6: Render
void GuiPhaseBar::Render()
{
JQuadPtr quad = WResourceManager::Instance()->GetQuad("phasebar");
JQuadPtr phaseinfo = WResourceManager::Instance()->RetrieveTempQuad("fakebar.png"); //new fakebar graphics
//uncomment to draw a hideous line across hires screens.
// JRenderer::GetInstance()->DrawLine(0, CENTER, SCREEN_WIDTH, CENTER, ARGB(255, 255, 255, 255));
const float radius = 25 * zoomFactor;
for(int i = 0; i < 6; ++i)
{
//the position of the glyphe in the circle
const float circPos = (i - 2) * step + angle;
const float glyphY = this->y + this->mHeight / 2 + sin(circPos) * radius;
//the scale is computed so that the glyphes touch each other
//hint: sin(circPos + PI/2) = cos(circPos)
const float glyphScale = float(zoomFactor * cosf(circPos) * 0.5f);
if (observer->currentPlayer && observer->currentPlayer->isAI() && !observer->currentPlayer->opponent()->isAI())
DrawGlyph(quad.get(), (displayedPhaseId - 2 + i + kPhases) % kPhases, 0, glyphY, glyphScale, 29);
else
DrawGlyph(quad.get(), (displayedPhaseId - 2 + i + kPhases) % kPhases, 0, glyphY, glyphScale, 0);
}
//print phase name
WFont * font = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
string currentP = _("your turn");
string interrupt = "";
if (observer->currentPlayer == mpDuelLayers->getRenderedPlayerOpponent())
{
currentP = _("opponent's turn");
}
font->SetColor(ARGB(255, 255, 255, 255));
if (observer->currentlyActing() && observer->currentlyActing()->isAI())
{
font->SetColor(ARGB(255, 128, 128, 128));
}
if (observer->currentlyActing() != observer->currentPlayer)
{
if (observer->currentPlayer == mpDuelLayers->getRenderedPlayer())
{
interrupt = _(" - ") + _("opponent plays");
}
else
{
interrupt = _(" - ") + _("you play");
}
}
char buf[200];
//running this string through translate returns gibberish even though we defined the variables in the lang.txt
//the conversion from phase bar phases to mtg phases is x%kPhases + 1
//todo: just to this when the displayedPhaseId updates
string phaseNameToTranslate = observer->phaseRing->phaseName(displayedPhaseId%kPhases + 1);
phaseNameToTranslate = _(phaseNameToTranslate);
sprintf(buf, _("(%s%s) %s").c_str(), currentP.c_str(), interrupt.c_str(),phaseNameToTranslate.c_str());
#if !defined (PSP)
if(phaseinfo.get())
{
phaseinfo->mWidth = font->GetStringWidth(buf)+12.f;
phaseinfo->SetHotSpot(phaseinfo->mWidth -4, 0);
//phaseinfo->mHeight = font->GetHeight()+5.f;
JRenderer::GetInstance()->RenderQuad(phaseinfo.get(),SCREEN_WIDTH_F,0,0,2.2f, SCREEN_HEIGHT_F / phaseinfo->mHeight);
}
#endif
font->DrawString(buf, SCREEN_WIDTH - 5, 2, JGETEXT_RIGHT);
}
示例7: Render
void SimpleMenu::Render()
{
WFont * titleFont = WResourceManager::Instance()->GetWFont(fontId);
titleFont->SetColor(ARGB(250,255,255,255));//reseting color on passes as this is a shared font now.
WFont * mFont = WResourceManager::Instance()->GetWFont(fontId);
if (0 == mWidth)
{
float sY = mY + SimpleMenuConst::kVerticalMargin;
for (int i = 0; i < mCount; ++i)
{
float width = (static_cast<SimpleMenuItem*> (mObjects[i]))->GetEnlargedWidth() + 15;
if (mWidth < width) mWidth = width;
}
float scaleFactor = titleFont->GetScale();
titleFont->SetScale(SCALE_NORMAL);
if ((!title.empty()) && (mWidth < titleFont->GetStringWidth(title.c_str())))
mWidth = titleFont->GetStringWidth(title.c_str());
titleFont->SetScale(scaleFactor);
mWidth += 2 * SimpleMenuConst::kHorizontalMargin;
if (mCenterHorizontal)
mX = (SCREEN_WIDTH_F - mWidth) / 2;
if (mCenterVertical)
mY = (SCREEN_HEIGHT_F - mHeight) / 2;
for (int i = 0; i < mCount; ++i)
{
float y = mY + SimpleMenuConst::kVerticalMargin + i * SimpleMenuConst::kLineHeight;
SimpleMenuItem * smi = static_cast<SimpleMenuItem*> (mObjects[i]);
smi->Relocate(mX + mWidth / 2, y);
if (smi->hasFocus()) sY = y;
}
stars->Fire();
selectionTargetY = selectionY = sY;
timeOpen = 0;
}
JRenderer * renderer = JRenderer::GetInstance();
float height = mHeight;
if (timeOpen < 1) height *= timeOpen > 0 ? timeOpen : -timeOpen;
float heightPadding = SimpleMenuConst::kLineHeight/2; // this to reduce the bottom padding of the menu
renderer->FillRect(mX, mY, mWidth, height - heightPadding, ARGB(180,0,0,0));
renderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
drawVertPole(mX, mY, height - heightPadding);
drawVertPole(mX + mWidth, mY, height - heightPadding);
drawHorzPole(mX, mY, mWidth);
drawHorzPole(mX, mY + height - heightPadding, mWidth);
//drawVertPole(mX, mY - 16, height + 32);
//drawVertPole(mX + mWidth, mY - 16, height + 32);
//drawHorzPole(mX - 16, mY, mWidth + 32);
//drawHorzPole(mX - 25, mY + height, mWidth + 50);
renderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE);
stars->Render();
renderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
if (!title.empty())
{
float scaleFactor = titleFont->GetScale();
titleFont->SetScale(SCALE_NORMAL);
titleFont->DrawString(title.c_str(), mX + mWidth / 2, mY - 3, JGETEXT_CENTER);
titleFont->SetScale(scaleFactor);
}
for (int i = startId; i < startId + maxItems; i++)
{
if (i > mCount - 1) break;
SimpleMenuItem *currentMenuItem = static_cast<SimpleMenuItem*>(mObjects[i]);
float currentY = currentMenuItem->getY() - SimpleMenuConst::kLineHeight * startId;
float menuBottomEdge = mY + height - SimpleMenuConst::kLineHeight + 7;
if (currentY < menuBottomEdge)
{
if (currentMenuItem->hasFocus())
{
WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT)->DrawString(currentMenuItem->getDescription().c_str(), mX
+ mWidth + 10, mY + 15);
mFont->SetColor(ARGB(255,255,255,0));
}
else
{
mFont->SetColor(ARGB(150,255,255,255));
}
(static_cast<SimpleMenuItem*> (mObjects[i]))->RenderWithOffset(-SimpleMenuConst::kLineHeight * startId);
}
mFont->SetScale(SCALE_NORMAL);
}
mFont->SetScale(SCALE_NORMAL);
}
示例8: Render
void GameStateShop::Render()
{
//Erase
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
JRenderer * r = JRenderer::GetInstance();
r->ClearScreen(ARGB(0,0,0,0));
if (mStage == STAGE_FADE_IN)
return;
JQuadPtr mBg = WResourceManager::Instance()->RetrieveTempQuad("shop.jpg", TEXTURE_SUB_5551);
if (mBg.get())
r->RenderQuad(mBg.get(), 0, 0);
JQuadPtr quad = WResourceManager::Instance()->RetrieveTempQuad("shop_light.jpg", TEXTURE_SUB_5551);
if (quad.get())
{
r->EnableTextureFilter(false);
r->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE);
quad->SetColor(ARGB(lightAlpha,255,255,255));
r->RenderQuad(quad.get(), 0, 0);
r->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
r->EnableTextureFilter(true);
}
if (shopMenu)
shopMenu->Render();
if (filterMenu && !filterMenu->isFinished())
filterMenu->Render();
else
{
if (boosterDisplay)
boosterDisplay->Render();
else if (bigDisplay)
{
if (bigDisplay->mOffset.getPos() >= 0)
bigDisplay->setSource(srcCards);
else
bigDisplay->setSource(NULL);
bigDisplay->Render();
float elp = srcCards->getElapsed();
//Render the card list overlay.
if (bListCards || elp > LIST_FADEIN)
{
int alpha = 200;
if (!bListCards && elp < LIST_FADEIN + .25)
{
alpha = static_cast<int> (800 * (elp - LIST_FADEIN));
}
r->FillRoundRect(300, 10, 160, SHOP_SLOTS * 20 + 15, 5, ARGB(alpha,0,0,0));
alpha += 55;
for (int i = 0; i < SHOP_SLOTS; i++)
{
if (i == shopMenu->getSelected())
mFont->SetColor(ARGB(alpha,255,255,0));
else
mFont->SetColor(ARGB(alpha,255,255,255));
char buffer[512];
string s = descPurchase(i, true);
sprintf(buffer, "%s", s.c_str());
float x = 310;
float y = static_cast<float> (25 + 20 * i);
mFont->DrawString(buffer, x, y);
}
}
}
}
//Render the info bar
r->FillRect(0, SCREEN_HEIGHT - 17, SCREEN_WIDTH, 17, ARGB(128,0,0,0));
std::ostringstream stream;
stream << kCreditsString << playerdata->credits;
mFont->SetColor(ARGB(255,255,255,255));
mFont->DrawString(stream.str(), 5, SCREEN_HEIGHT - 14);
#ifndef TOUCH_ENABLED
float len = 4 + mFont->GetStringWidth(kOtherCardsString.c_str());
r->RenderQuad(pspIcons[6].get(), SCREEN_WIDTH - len - 0.5 - 10, SCREEN_HEIGHT - 8, 0, kPspIconScaleFactor, kPspIconScaleFactor);
mFont->DrawString(kOtherCardsString, SCREEN_WIDTH - len, SCREEN_HEIGHT - 14);
#else
enableButtons();
#endif
mFont->SetColor(ARGB(255,255,255,0));
mFont->DrawString(descPurchase(bigSync.getPos()).c_str(), SCREEN_WIDTH / 2, SCREEN_HEIGHT - 14, JGETEXT_CENTER);
mFont->SetColor(ARGB(255,255,255,255));
if (mStage == STAGE_SHOP_TASKS && taskList)
{
taskList->Render();
}
if (menu)
menu->Render();
if (!filterMenu || (filterMenu && filterMenu->isFinished()))
renderButtons();
}
示例9: fontId
DeckMenu::DeckMenu(int id, JGuiListener* listener, int fontId, const string _title, const int&, bool showDetailsOverride) :
JGuiController(JGE::GetInstance(), id, listener), fontId(fontId), mShowDetailsScreen( showDetailsOverride )
{
backgroundName = "DeckMenuBackdrop";
mAlwaysShowDetailsButton = false;
mSelectedDeck = NULL;
mY = 50;
mWidth = 176;
mX = 115;
titleX = 110; // center point in title box
titleY = 15;
titleWidth = 180; // width of inner box of title
descX = 260 + DeckMenuConst::kDescriptionHorizontalBoxPadding;
descY = 100 + DeckMenuConst::kDescriptionVerticalBoxPadding;
descHeight = 145;
descWidth = 195;
detailedInfoBoxX = 400;
detailedInfoBoxY = 235;
starsOffsetX = 50;
statsX = 300;
statsY = 15;
statsHeight = 50;
statsWidth = 227;
avatarX = 232;
avatarY = 11;
menuInitialized = false;
float scrollerWidth = 200.0f;
float scrollerHeight = 28.0f;
mScroller = NEW VerticalTextScroller(Fonts::MAIN_FONT, 14, 235, scrollerWidth, scrollerHeight, DeckMenuConst::kVerticalScrollSpeed);
mAutoTranslate = true;
maxItems = 6;
mHeight = 2 * DeckMenuConst::kVerticalMargin + (maxItems * DeckMenuConst::kLineHeight);
// we want to cap the deck titles to 15 characters to avoid overflowing deck names
title = _(_title);
displayTitle = title;
mFont = WResourceManager::Instance()->GetWFont(fontId);
startId = 0;
selectionT = 0;
timeOpen = 0;
mClosed = false;
if (mFont->GetStringWidth(title.c_str()) > titleWidth)
titleFontScale = SCALE_SHRINK;
else
titleFontScale = SCALE_NORMAL;
mSelectionTargetY = selectionY = DeckMenuConst::kVerticalMargin;
if (NULL == stars)
stars = NEW hgeParticleSystem(WResourceManager::Instance()->RetrievePSI("stars.psi", WResourceManager::Instance()->GetQuad("stars").get()));
stars->FireAt(mX, mY);
const string detailedInfoString = _("Detailed Info");
WFont *descriptionFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
float stringWidth = descriptionFont->GetStringWidth(detailedInfoString.c_str());
float boxStartX = detailedInfoBoxX - stringWidth / 2 + 20;
dismissButton = NEW InteractiveButton( this, DeckMenuConst::kDetailedInfoButtonId, Fonts::MAIN_FONT, detailedInfoString, boxStartX, detailedInfoBoxY, JGE_BTN_CANCEL);
JGuiController::Add(dismissButton, true);
updateScroller();
}