1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 ** Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef TESTINGIMAGE_H 17 #define TESTINGIMAGE_H 18 19 #include <vector> 20 #include "vec3.h" 21 #include "vec2.h" 22 23 // Implements a class for image representation. 24 class TestingImage { 25 public: 26 // Constructs a new instance with the inputImage's row and column counts. 27 // No change in size. 28 TestingImage(const unsigned char* inputImage, 29 int inputWidth, int inputHeight, 30 int inputChannels, int inputRowSpan); 31 // Constructs a new instance with an inputImage but resize it to a given 32 // new size. 33 TestingImage(const unsigned char* inputImage, 34 int inputHeight, int inputWidth, 35 int inputChannel, int inputRowSpan, 36 int newHeight, int newWidth); 37 virtual ~TestingImage(); 38 39 // Reads the pixel value of a given location. 40 int getPixelValue(int row, int column, int channel) const; 41 Vec3i getPixelValue(int row, int column) const; 42 Vec3i getPixelValue(const Vec2i &pixelPosition) const; 43 Vec3i getPixelValue(const Vec2f &pixelPosition) const; 44 45 inline const unsigned char* getImage() const { return mImage; } 46 inline int getWidth() const { return mWidth; } 47 inline int getHeight() const { return mHeight; } 48 inline int getChannels() const { return mChannels; } 49 inline int getRowSpan() const { return mRowSpan; } 50 51 // Reads the colors of a color checker in the image with the given checker 52 // coordinates including centers and radius. 53 const std::vector<Vec3f>* getColorChecker( 54 int rowStart, int rowEnd, int columnStart, int columnEnd, 55 const std::vector<std::vector< Vec2f > >* centerAddress, 56 const std::vector<std::vector< float > >* radiusAddress) const; 57 58 // Computes the luminance value of a color image. 59 bool rgbToGrayScale(unsigned char* grayLayer) const; 60 61 private: 62 unsigned char* mImage; 63 int mWidth; 64 int mHeight; 65 int mRowSpan; 66 int mChannels; 67 }; 68 69 #endif 70