本文整理汇总了C++中NinePieceImage::horizontalRule方法的典型用法代码示例。如果您正苦于以下问题:C++ NinePieceImage::horizontalRule方法的具体用法?C++ NinePieceImage::horizontalRule怎么用?C++ NinePieceImage::horizontalRule使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NinePieceImage
的用法示例。
在下文中一共展示了NinePieceImage::horizontalRule方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ASSERT
NinePieceImageGrid::NinePieceImageGrid(const NinePieceImage& ninePieceImage, IntSize imageSize, IntRect borderImageArea,
const IntRectOutsets& borderWidths)
: m_borderImageArea(borderImageArea)
, m_imageSize(imageSize)
, m_horizontalTileRule((Image::TileRule)ninePieceImage.horizontalRule())
, m_verticalTileRule((Image::TileRule)ninePieceImage.verticalRule())
, m_fill(ninePieceImage.fill())
{
StyleImage* styleImage = ninePieceImage.image();
ASSERT(styleImage);
float imageScaleFactor = styleImage->imageScaleFactor();
m_top.slice = computeEdgeSlice(ninePieceImage.imageSlices().top(), imageSize.height()) * imageScaleFactor;
m_right.slice = computeEdgeSlice(ninePieceImage.imageSlices().right(), imageSize.width()) * imageScaleFactor;
m_bottom.slice = computeEdgeSlice(ninePieceImage.imageSlices().bottom(), imageSize.height()) * imageScaleFactor;
m_left.slice = computeEdgeSlice(ninePieceImage.imageSlices().left(), imageSize.width()) * imageScaleFactor;
m_top.width = computeEdgeWidth(ninePieceImage.borderSlices().top(), borderWidths.top(), m_top.slice,
borderImageArea.height());
m_right.width = computeEdgeWidth(ninePieceImage.borderSlices().right(), borderWidths.right(), m_right.slice,
borderImageArea.width());
m_bottom.width = computeEdgeWidth(ninePieceImage.borderSlices().bottom(), borderWidths.bottom(), m_bottom.slice,
borderImageArea.height());
m_left.width = computeEdgeWidth(ninePieceImage.borderSlices().left(), borderWidths.left(), m_left.slice,
borderImageArea.width());
// The spec says: Given Lwidth as the width of the border image area, Lheight as its height, and Wside as the border
// image width offset for the side, let f = min(Lwidth/(Wleft+Wright), Lheight/(Wtop+Wbottom)). If f < 1, then all W
// are reduced by multiplying them by f.
int borderSideWidth = std::max(1, m_left.width + m_right.width);
int borderSideHeight = std::max(1, m_top.width + m_bottom.width);
float borderSideScaleFactor = std::min((float)borderImageArea.width() / borderSideWidth,
(float)borderImageArea.height() / borderSideHeight);
if (borderSideScaleFactor < 1) {
m_top.width *= borderSideScaleFactor;
m_right.width *= borderSideScaleFactor;
m_bottom.width *= borderSideScaleFactor;
m_left.width *= borderSideScaleFactor;
}
}