/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // YUVCanvas holds a reference to a YUVImage on which it can do various // drawing operations. It provides various utility functions for filling, // cropping, etc. #ifndef YUV_CANVAS_H_ #define YUV_CANVAS_H_ #include namespace android { class YUVImage; class Rect; class YUVCanvas { public: // Constructor takes in reference to a yuvImage on which it can do // various drawing opreations. YUVCanvas(YUVImage &yuvImage); ~YUVCanvas(); // Fills the entire image with the given YUV values. void FillYUV(uint8_t yValue, uint8_t uValue, uint8_t vValue); // Fills the rectangular region [startX,endX]x[startY,endY] with the given YUV values. void FillYUVRectangle(const Rect& rect, uint8_t yValue, uint8_t uValue, uint8_t vValue); // Copies the region [startX,endX]x[startY,endY] from srcImage into the // canvas' target image (mYUVImage) starting at // (destinationStartX,destinationStartY). // Note that undefined behavior may occur if srcImage is same as the canvas' // target image. void CopyImageRect( const Rect& srcRect, int32_t destStartX, int32_t destStartY, const YUVImage &srcImage); // Downsamples the srcImage into the canvas' target image (mYUVImage) // The downsampling copies pixels from the source image starting at // (srcOffsetX, srcOffsetY) to the target image, starting at (0, 0). // For each X increment in the target image, skipX pixels are skipped // in the source image. // Similarly for each Y increment in the target image, skipY pixels // are skipped in the source image. void downsample( int32_t srcOffsetX, int32_t srcOffsetY, int32_t skipX, int32_t skipY, const YUVImage &srcImage); private: YUVImage& mYUVImage; YUVCanvas(const YUVCanvas &); YUVCanvas &operator=(const YUVCanvas &); }; } // namespace android #endif // YUV_CANVAS_H_