本文整理汇总了C++中Plot::allocateRect方法的典型用法代码示例。如果您正苦于以下问题:C++ Plot::allocateRect方法的具体用法?C++ Plot::allocateRect怎么用?C++ Plot::allocateRect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Plot
的用法示例。
在下文中一共展示了Plot::allocateRect方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addToAtlas
GrLayerAtlas::Plot* GrLayerAtlas::addToAtlas(ClientPlotUsage* usage,
int width, int height, SkIPoint16* loc) {
// Iterate through the plots currently being used by this client and see if we can find a hole.
// The last one was most recently added and probably most empty.
// We want to consolidate the uses from individual clients to the same plot(s) so that
// when a specific client goes away they are more likely to completely empty a plot.
for (int i = usage->numPlots()-1; i >= 0; --i) {
Plot* plot = usage->plot(i);
if (plot->allocateRect(width, height, loc)) {
this->makeMRU(plot);
return plot;
}
}
// before we get a new plot, make sure we have a backing texture
if (nullptr == fTexture) {
this->createBackingTexture();
if (nullptr == fTexture) {
return nullptr;
}
}
// Now look through all allocated plots for one we can share, in MRU order
// TODO: its seems like traversing from emptiest to fullest would make more sense
PlotList::Iter plotIter;
plotIter.init(fPlotList, PlotList::Iter::kHead_IterStart);
Plot* plot;
while ((plot = plotIter.get())) {
if (plot->allocateRect(width, height, loc)) {
this->makeMRU(plot);
// new plot for atlas, put at end of array
usage->appendPlot(plot);
return plot;
}
plotIter.next();
}
// If the above fails, then the current plot list has no room
return nullptr;
}