本文整理汇总了C++中Bound::size方法的典型用法代码示例。如果您正苦于以下问题:C++ Bound::size方法的具体用法?C++ Bound::size怎么用?C++ Bound::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bound
的用法示例。
在下文中一共展示了Bound::size方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateLayout_FromParent
void Text::updateLayout_FromParent(const Bound& parentBound)
{
Widget::updateLayout_FromParent(parentBound);
if((autoSizeX | autoSizeY | autoFontScaleByX | autoFontScaleByY) == 0 || wrapping)
return;
Library* lib = getLibrary();
if(!lib)
return;
Font* fnt = lib->getFont(font);
if(!fnt)
return;
screen->lenghts.tmpSet(parentBound.size());
Vector maxSize(screen->lenghts.lenghts[maxSizeXType].x * maxSizeX, screen->lenghts.lenghts[maxSizeXType].y * maxSizeY);
Vector marginLow, marginHi;
margin.getLowAndHi(marginLow, marginHi, parentBound.size(), screen->lenghts);
maxSize -= marginLow + marginHi;
Vector2i stringSize = fnt->stringSize(text);
stringSize.x += 2;
stringSize.y += 2;
Scalar maxFontScaleByX = -1;
if(autoFontScaleByX)
{
if(autoSizeX && maxSizeXType)
maxFontScaleByX = maxSize.x / Scalar(stringSize.x);
else
maxFontScaleByX = size.x / Scalar(stringSize.x);
}
Scalar maxFontScaleByY = -1;
if(autoFontScaleByY)
{
uint h = autoFontScaleByYConsiderateNewLines ? stringSize.y : fnt->characterHeight();
if(autoSizeY && maxSizeYType)
maxFontScaleByY = maxSize.y / Scalar(h);
else
maxFontScaleByY = size.y / Scalar(h);
}
if(maxFontScaleByX > 0)
{
if(maxFontScaleByY > 0)
fontScale = min(maxFontScaleByX, maxFontScaleByY);
else
fontScale = maxFontScaleByX;
}
else if(maxFontScaleByY > 0)
{
fontScale = maxFontScaleByY;
}
if(autoSizeX)
{
if(maxSizeXType)
size.x = min(stringSize.x * fontScale, maxSize.x);
else
size.x = stringSize.x * fontScale;
}
if(autoSizeY)
{
if(maxSizeYType)
size.y = min(stringSize.y * fontScale, maxSize.y);
else
size.y = stringSize.y * fontScale;
}
Widget::updateLayout_FromParent(parentBound);
}