本文整理汇总了C++中LLUIImagePtr::drawSolid方法的典型用法代码示例。如果您正苦于以下问题:C++ LLUIImagePtr::drawSolid方法的具体用法?C++ LLUIImagePtr::drawSolid怎么用?C++ LLUIImagePtr::drawSolid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LLUIImagePtr
的用法示例。
在下文中一共展示了LLUIImagePtr::drawSolid方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: draw
void LLConsole::draw()
{
LLGLSUIDefault gls_ui;
// skip lines added more than mLinePersistTime ago
F32 cur_time = mTimer.getElapsedTimeF32();
F32 skip_time = cur_time - mLinePersistTime;
F32 fade_time = cur_time - mFadeTime;
updateBuffer() ;
if (mParagraphs.empty()) //No text to draw.
{
return;
}
U32 num_lines=0;
paragraph_t::reverse_iterator paragraph_it;
paragraph_it = mParagraphs.rbegin();
U32 paragraph_num=mParagraphs.size();
while (!mParagraphs.empty() && paragraph_it != mParagraphs.rend())
{
num_lines += (*paragraph_it).mLines.size();
if(num_lines > mMaxLines
|| ( (mLinePersistTime > (F32)0.f) && ((*paragraph_it).mAddTime - skip_time)/(mLinePersistTime - mFadeTime) <= (F32)0.f))
{ //All lines above here are done. Lose them.
for (U32 i=0;i<paragraph_num;i++)
{
if (!mParagraphs.empty())
mParagraphs.pop_front();
}
break;
}
paragraph_num--;
paragraph_it++;
}
if (mParagraphs.empty())
{
return;
}
// draw remaining lines
F32 y_pos = 0.f;
LLUIImagePtr imagep = LLUI::getUIImage("rounded_square.tga");
F32 console_opacity = llclamp(gSavedSettings.getF32("ConsoleBackgroundOpacity"), 0.f, 1.f);
LLColor4 color = gColors.getColor("ConsoleBackground");
color.mV[VALPHA] *= console_opacity;
F32 line_height = mFont->getLineHeight();
S32 message_spacing=4;
//080813 Spatters: This section makes a single huge black box behind all the text.
S32 bkg_height=4;
S32 bkg_width=0;
for(paragraph_it = mParagraphs.rbegin(); paragraph_it != mParagraphs.rend(); paragraph_it++)
{
S32 target_height = llfloor( (*paragraph_it).mLines.size() * line_height + message_spacing);
S32 target_width = llfloor( (*paragraph_it).mMaxWidth + CONSOLE_GUTTER_RIGHT);
bkg_height+= target_height;
if (target_width > bkg_width)
{
bkg_width=target_width;
}
// Why is this not using llfloor as above?
y_pos += ((*paragraph_it).mLines.size()) * line_height;
y_pos += message_spacing; //Extra spacing between messages.
}
imagep->drawSolid(-CONSOLE_GUTTER_LEFT, (S32)(y_pos + line_height - bkg_height - message_spacing), bkg_width, bkg_height, color);
y_pos = 0.f;
//End screen-eating black void
for(paragraph_it = mParagraphs.rbegin(); paragraph_it != mParagraphs.rend(); paragraph_it++)
{
//080813 Spatters: Dainty per-message block boxes
// S32 target_height = llfloor( (*paragraph_it).mLines.size() * line_height + 8);
S32 target_width = llfloor( (*paragraph_it).mMaxWidth + CONSOLE_GUTTER_RIGHT);
y_pos += ((*paragraph_it).mLines.size()) * line_height;
//080813 Spatters: Dainty per-message block boxes
// imagep->drawSolid(-14, (S32)(y_pos + line_height - target_height), target_width, target_height, color);
F32 y_off=0;
F32 alpha;
if ((mLinePersistTime > 0.f) && ((*paragraph_it).mAddTime < fade_time))
{
alpha = ((*paragraph_it).mAddTime - skip_time)/(mLinePersistTime - mFadeTime);
}
else
{
//.........这里部分代码省略.........
示例2: draw
//.........这里部分代码省略.........
static LLCachedControl<F32> console_background_opacity(gSavedSettings, "ConsoleBackgroundOpacity");
F32 console_opacity = llclamp((F32)console_background_opacity, 0.f, 1.f);
static LLCachedControl<LLColor4U> console_background(gColors, "ConsoleBackground");
LLColor4 color = LLColor4(console_background);
color.mV[VALPHA] *= console_opacity;
F32 line_height = mFont->getLineHeight();
S32 message_spacing = 0;
//080813 Spatters: This section makes a single huge black box behind all the text.
S32 bkg_height=8;
S32 bkg_width=0;
// VWR-8999
// ChatSpacing: 0 -- chat lines are close together, as they were in the 1.20 viewer.
// 4 -- chat lines are farther apart as they are in SnowGlobe 1.4.
static LLCachedControl<S32> chat_spacing(gSavedSettings, "ChatSpacing");
// Perform clamping.
S32 const clamped_chat_spacing = llclamp((S32)chat_spacing, -16, 128);
if (chat_spacing != clamped_chat_spacing)
{
gSavedSettings.setS32("ChatSpacing", clamped_chat_spacing);
}
// Adjust spacing.
message_spacing += chat_spacing;
bkg_height -= chat_spacing;
for(paragraph_it = mParagraphs.rbegin(); paragraph_it != mParagraphs.rend(); paragraph_it++)
{
S32 target_height = llfloor( (*paragraph_it)->mLines.size() * line_height + message_spacing);
S32 target_width = llfloor( (*paragraph_it)->mMaxWidth + CONSOLE_GUTTER_RIGHT);
bkg_height+= target_height;
if (target_width > bkg_width)
{
bkg_width=target_width;
}
// Why is this not using llfloor as above?
y_pos += ((*paragraph_it)->mLines.size()) * line_height;
y_pos += message_spacing; //Extra spacing between messages.
}
imagep->drawSolid(-CONSOLE_GUTTER_LEFT, (S32)(y_pos + line_height - bkg_height - message_spacing), bkg_width, bkg_height, color);
y_pos = 0.f;
//End screen-eating black void
for(paragraph_it = mParagraphs.rbegin(); paragraph_it != mParagraphs.rend(); paragraph_it++)
{
//080813 Spatters: Dainty per-message block boxes
// S32 target_height = llfloor( (*paragraph_it)->mLines.size() * line_height + 8);
S32 target_width = llfloor( (*paragraph_it)->mMaxWidth + CONSOLE_GUTTER_RIGHT);
y_pos += ((*paragraph_it)->mLines.size()) * line_height;
//080813 Spatters: Dainty per-message block boxes
// imagep->drawSolid(-14, (S32)(y_pos + line_height - target_height), target_width, target_height, color);
F32 y_off=0;
F32 alpha;
if ((mLinePersistTime > 0.f) && ((*paragraph_it)->mAddTime < fade_time))
{
alpha = ((*paragraph_it)->mAddTime - skip_time)/(mLinePersistTime - mFadeTime);
}
else
{
alpha = 1.0f;
}
if( alpha > 0.f )
{
for (lines_t::iterator line_it=(*paragraph_it)->mLines.begin();
line_it != (*paragraph_it)->mLines.end();
line_it ++)
{
for (line_color_segments_t::iterator seg_it = (*line_it).begin();
seg_it != (*line_it).end();
seg_it++)
{
mFont->render((*seg_it).mText, 0, (*seg_it).mXPosition - 8, y_pos - y_off,
LLColor4(
(*seg_it).mColor.mV[VRED],
(*seg_it).mColor.mV[VGREEN],
(*seg_it).mColor.mV[VBLUE],
(*seg_it).mColor.mV[VALPHA]*alpha),
LLFontGL::LEFT,
LLFontGL::BASELINE,
LLFontGL::DROP_SHADOW,
S32_MAX,
target_width
);
}
y_off += line_height;
}
}
y_pos += message_spacing; //Extra spacing between messages.
}
}
示例3: draw
void LLConsole::draw()
{
LLGLSUIDefault gls_ui;
// skip lines added more than mLinePersistTime ago
F32 cur_time = mTimer.getElapsedTimeF32();
F32 skip_time = cur_time - mLinePersistTime;
F32 fade_time = cur_time - mFadeTime;
if (mParagraphs.empty()) //No text to draw.
{
return;
}
U32 num_lines=0;
paragraph_t::reverse_iterator paragraph_it;
paragraph_it = mParagraphs.rbegin();
U32 paragraph_num=mParagraphs.size();
while (!mParagraphs.empty() && paragraph_it != mParagraphs.rend())
{
num_lines += (*paragraph_it).mLines.size();
if(num_lines > mMaxLines
|| ( (mLinePersistTime > (F32)0.f) && ((*paragraph_it).mAddTime - skip_time)/(mLinePersistTime - mFadeTime) <= (F32)0.f))
{ //All lines above here are done. Lose them.
for (U32 i=0;i<paragraph_num;i++)
{
if (!mParagraphs.empty())
mParagraphs.pop_front();
}
break;
}
paragraph_num--;
paragraph_it++;
}
if (mParagraphs.empty())
{
return;
}
// draw remaining lines
F32 y_pos = 0.f;
LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square");
// F32 console_opacity = llclamp(gSavedSettings.getF32("ConsoleBackgroundOpacity"), 0.f, 1.f);
F32 console_opacity = llclamp(LLUI::sSettingGroups["config"]->getF32("ConsoleBackgroundOpacity"), 0.f, 1.f);
// LLColor4 color = LLUIColorTable::instance().getColor("ConsoleBackground");
LLColor4 color = LLUIColorTable::instance().getColor("ConsoleBackground");
color.mV[VALPHA] *= console_opacity;
F32 line_height = mFont->getLineHeight();
for(paragraph_it = mParagraphs.rbegin(); paragraph_it != mParagraphs.rend(); paragraph_it++)
{
S32 target_height = llfloor( (*paragraph_it).mLines.size() * line_height + 8);
S32 target_width = llfloor( (*paragraph_it).mMaxWidth +15);
y_pos += ((*paragraph_it).mLines.size()) * line_height;
imagep->drawSolid(-14, (S32)(y_pos + line_height - target_height), target_width, target_height, color);
F32 y_off=0;
F32 alpha;
if ((mLinePersistTime > 0.f) && ((*paragraph_it).mAddTime < fade_time))
{
alpha = ((*paragraph_it).mAddTime - skip_time)/(mLinePersistTime - mFadeTime);
}
else
{
alpha = 1.0f;
}
if( alpha > 0.f )
{
for (lines_t::iterator line_it=(*paragraph_it).mLines.begin();
line_it != (*paragraph_it).mLines.end();
line_it ++)
{
for (line_color_segments_t::iterator seg_it = (*line_it).mLineColorSegments.begin();
seg_it != (*line_it).mLineColorSegments.end();
seg_it++)
{
mFont->render((*seg_it).mText, 0, (*seg_it).mXPosition - 8, y_pos - y_off,
LLColor4(
(*seg_it).mColor.mV[VRED],
(*seg_it).mColor.mV[VGREEN],
(*seg_it).mColor.mV[VBLUE],
(*seg_it).mColor.mV[VALPHA]*alpha),
LLFontGL::LEFT,
LLFontGL::BASELINE,
LLFontGL::NORMAL,
LLFontGL::DROP_SHADOW,
S32_MAX,
target_width
);
//.........这里部分代码省略.........