当前位置: 首页>>代码示例>>C++>>正文


C++ Bound::size方法代码示例

本文整理汇总了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);
}
开发者ID:NeonWindWalker,项目名称:neon_engine,代码行数:74,代码来源:text.cpp


注:本文中的Bound::size方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。