本文整理汇总了C++中ofPixels_::crop方法的典型用法代码示例。如果您正苦于以下问题:C++ ofPixels_::crop方法的具体用法?C++ ofPixels_::crop怎么用?C++ ofPixels_::crop使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ofPixels_
的用法示例。
在下文中一共展示了ofPixels_::crop方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ofClamp
void ofPixels_<PixelType>::cropTo(ofPixels_<PixelType> &toPix, int x, int y, int _width, int _height) const{
if (bAllocated){
if(&toPix == this){
toPix.crop(x,y,_width,_height);
return;
}
_width = ofClamp(_width,1,getWidth());
_height = ofClamp(_height,1,getHeight());
if ((toPix.width != _width) || (toPix.height != _height) || (toPix.pixelFormat != pixelFormat)){
toPix.allocate(_width, _height, pixelFormat);
}
// this prevents having to do a check for bounds in the for loop;
int minX = MAX(x, 0) * getNumChannels();
int maxX = MIN(x+_width, width) * getNumChannels();
int minY = MAX(y, 0);
int maxY = MIN(y+_height, height);
iterator newPixel = toPix.begin();
for(ConstLine line = getConstLines().begin()+minY; line!=getConstLines().begin()+maxY; ++line ){
for(const_iterator pixel = line.begin()+minX; pixel<line.begin()+maxX; ++pixel){
*newPixel++ = *pixel;
}
}
}
}
示例2: ofClamp
void ofPixels_<PixelType>::cropTo(ofPixels_<PixelType> &toPix, int x, int y, int _width, int _height) const{
if (bAllocated){
if(&toPix == this){
toPix.crop(x,y,_width,_height);
return;
}
_width = ofClamp(_width,1,getWidth());
_height = ofClamp(_height,1,getHeight());
if ((toPix.width != _width) || (toPix.height != _height) || (toPix.pixelFormat != pixelFormat)){
toPix.allocate(_width, _height, pixelFormat);
}
// this prevents having to do a check for bounds in the for loop;
int minX = MAX(x, 0);
int maxX = MIN(x+_width, width);
int minY = MAX(y, 0);
int maxY = MIN(y+_height, height);
auto newPixel = toPix.getPixelsIter().begin();
for(auto line: getConstLines(minY, maxY - minY)){
for(auto pixel: line.getPixels(minX, maxX - minX)){
newPixel++ = pixel;
}
}
}
}