PBRT
|
00001 00002 // 00003 // Copyright (c) 2004, Industrial Light & Magic, a division of Lucas 00004 // Digital Ltd. LLC 00005 // 00006 // All rights reserved. 00007 // 00008 // Redistribution and use in source and binary forms, with or without 00009 // modification, are permitted provided that the following conditions are 00010 // met: 00011 // * Redistributions of source code must retain the above copyright 00012 // notice, this list of conditions and the following disclaimer. 00013 // * Redistributions in binary form must reproduce the above 00014 // copyright notice, this list of conditions and the following disclaimer 00015 // in the documentation and/or other materials provided with the 00016 // distribution. 00017 // * Neither the name of Industrial Light & Magic nor the names of 00018 // its contributors may be used to endorse or promote products derived 00019 // from this software without specific prior written permission. 00020 // 00021 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00022 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00023 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00024 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 00025 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00026 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00027 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00028 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00029 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00030 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00031 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00032 // 00034 00035 00036 #ifndef INCLUDED_IMF_TILE_DESCRIPTION_H 00037 #define INCLUDED_IMF_TILE_DESCRIPTION_H 00038 00039 //----------------------------------------------------------------------------- 00040 // 00041 // class TileDescription and enum LevelMode 00042 // 00043 //----------------------------------------------------------------------------- 00044 00045 namespace Imf { 00046 00047 00048 enum LevelMode 00049 { 00050 ONE_LEVEL = 0, 00051 MIPMAP_LEVELS = 1, 00052 RIPMAP_LEVELS = 2, 00053 00054 NUM_LEVELMODES // number of different level modes 00055 }; 00056 00057 00058 enum LevelRoundingMode 00059 { 00060 ROUND_DOWN = 0, 00061 ROUND_UP = 1, 00062 00063 NUM_ROUNDINGMODES // number of different rounding modes 00064 }; 00065 00066 00067 class TileDescription 00068 { 00069 public: 00070 00071 unsigned int xSize; // size of a tile in the x dimension 00072 unsigned int ySize; // size of a tile in the y dimension 00073 LevelMode mode; 00074 LevelRoundingMode roundingMode; 00075 00076 TileDescription (unsigned int xs = 32, 00077 unsigned int ys = 32, 00078 LevelMode m = ONE_LEVEL, 00079 LevelRoundingMode r = ROUND_DOWN) 00080 : 00081 xSize (xs), 00082 ySize (ys), 00083 mode (m), 00084 roundingMode (r) 00085 { 00086 // empty 00087 } 00088 00089 bool 00090 operator == (const TileDescription &other) const 00091 { 00092 return xSize == other.xSize && 00093 ySize == other.ySize && 00094 mode == other.mode && 00095 roundingMode == other.roundingMode; 00096 } 00097 }; 00098 00099 00100 } // namespace Imf 00101 00102 #endif