00001 /* 00002 * The information in this file is 00003 * Copyright(c) 2007 Ball Aerospace & Technologies Corporation 00004 * and is subject to the terms and conditions of the 00005 * GNU Lesser General Public License Version 2.1 00006 * The license text is available from 00007 * http://www.gnu.org/licenses/lgpl.html 00008 */ 00009 00010 00011 00012 #ifndef RASTERPAGE_H 00013 #define RASTERPAGE_H 00014 00015 /** 00016 * This is the object returned by RasterPager to represent 00017 * a page of a RasterElement's data 00018 * 00019 * @see RasterPager 00020 */ 00021 class RasterPage 00022 { 00023 public: 00024 /** 00025 * Returns a pointer to the raw cube data that was requested 00026 * by the RasterPager::getPage() method and that was 00027 * loaded from the original data into memory. 00028 * 00029 * @return a pointer to the requested raw cube data. 00030 */ 00031 virtual void* getRawData() = 0; 00032 00033 /** 00034 * Returns the number of full complete rows of data that are contained 00035 * with the memory returned by the getRawData() method. 00036 * 00037 * @return the number of full complete rows 00038 */ 00039 virtual unsigned int getNumRows() = 0; 00040 00041 /** 00042 * Returns the number of columns that must be skipped in 00043 * from the initial pointer returned by getRawData() 00044 * in order to access the same column in the second row. 00045 * 00046 * @return the number of columns that must be skipped. 00047 * If a value of zero is returned, the RasterElement 00048 * will assume that it will require DataDescriptor::getColumnNum() 00049 * columns to be skipped in order to access the same 00050 * column in the next row. 00051 */ 00052 virtual unsigned int getNumColumns() = 0; 00053 00054 /** 00055 * Returns the number of bands that must skipped in 00056 * order to access the next column in BIP formatted 00057 * data, or the same row/column in BIL formatted data. 00058 * 00059 * @return the number of full complete bands. If a value of 00060 * zero is returned, the RasterElement 00061 * will assume that it will require DataDescriptor::getBandNum() 00062 * bands to be skipped. If the requested data is 00063 * BSQ formatted, a value of zero should be 00064 * returned from this method. 00065 */ 00066 virtual unsigned int getNumBands() = 0; 00067 00068 /** 00069 * Returns the number of inter-line bytes that must 00070 * be skipped in order to access the same column 00071 * in the next row. 00072 * 00073 * @return the number of inter-line bytes. 00074 */ 00075 virtual unsigned int getInterlineBytes() = 0; 00076 00077 protected: 00078 /** 00079 * This should be destroyed by calling RasterPager::releasePage. 00080 */ 00081 virtual ~RasterPage() {} 00082 }; 00083 00084 #endif