1 /////////////////////////////////////////////////////////////////////////// 2 // 3 // Copyright (c) 2004, Industrial Light & Magic, a division of Lucas 4 // Digital Ltd. LLC 5 // 6 // All rights reserved. 7 // 8 // Redistribution and use in source and binary forms, with or without 9 // modification, are permitted provided that the following conditions are 10 // met: 11 // * Redistributions of source code must retain the above copyright 12 // notice, this list of conditions and the following disclaimer. 13 // * Redistributions in binary form must reproduce the above 14 // copyright notice, this list of conditions and the following disclaimer 15 // in the documentation and/or other materials provided with the 16 // distribution. 17 // * Neither the name of Industrial Light & Magic nor the names of 18 // its contributors may be used to endorse or promote products derived 19 // from this software without specific prior written permission. 20 // 21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 // 33 /////////////////////////////////////////////////////////////////////////// 34 35 36 //----------------------------------------------------------------------------- 37 // 38 // class KeyCode 39 // 40 //----------------------------------------------------------------------------- 41 42 #include <ImfKeyCode.h> 43 #include "Iex.h" 44 45 namespace Imf { 46 47 48 KeyCode::KeyCode (int filmMfcCode, 49 int filmType, 50 int prefix, 51 int count, 52 int perfOffset, 53 int perfsPerFrame, 54 int perfsPerCount) 55 { 56 setFilmMfcCode (filmMfcCode); 57 setFilmType (filmType); 58 setPrefix (prefix); 59 setCount (count); 60 setPerfOffset (perfOffset); 61 setPerfsPerFrame (perfsPerFrame); 62 setPerfsPerCount (perfsPerCount); 63 } 64 65 66 KeyCode::KeyCode (const KeyCode &other) 67 { 68 _filmMfcCode = other._filmMfcCode; 69 _filmType = other._filmType; 70 _prefix = other._prefix; 71 _count = other._count; 72 _perfOffset = other._perfOffset; 73 _perfsPerFrame = other._perfsPerFrame; 74 _perfsPerCount = other._perfsPerCount; 75 } 76 77 78 KeyCode & 79 KeyCode::operator = (const KeyCode &other) 80 { 81 _filmMfcCode = other._filmMfcCode; 82 _filmType = other._filmType; 83 _prefix = other._prefix; 84 _count = other._count; 85 _perfOffset = other._perfOffset; 86 _perfsPerFrame = other._perfsPerFrame; 87 _perfsPerCount = other._perfsPerCount; 88 89 return *this; 90 } 91 92 93 int 94 KeyCode::filmMfcCode () const 95 { 96 return _filmMfcCode; 97 } 98 99 100 void 101 KeyCode::setFilmMfcCode (int filmMfcCode) 102 { 103 if (filmMfcCode < 0 || filmMfcCode > 99) 104 throw Iex::ArgExc ("Invalid key code film manufacturer code " 105 "(must be between 0 and 99)."); 106 107 _filmMfcCode = filmMfcCode; 108 } 109 110 int 111 KeyCode::filmType () const 112 { 113 return _filmType; 114 } 115 116 117 void 118 KeyCode::setFilmType (int filmType) 119 { 120 if (filmType < 0 || filmType > 99) 121 throw Iex::ArgExc ("Invalid key code film type " 122 "(must be between 0 and 99)."); 123 124 _filmType = filmType; 125 } 126 127 int 128 KeyCode::prefix () const 129 { 130 return _prefix; 131 } 132 133 134 void 135 KeyCode::setPrefix (int prefix) 136 { 137 if (prefix < 0 || prefix > 999999) 138 throw Iex::ArgExc ("Invalid key code prefix " 139 "(must be between 0 and 999999)."); 140 141 _prefix = prefix; 142 } 143 144 145 int 146 KeyCode::count () const 147 { 148 return _count; 149 } 150 151 152 void 153 KeyCode::setCount (int count) 154 { 155 if (count < 0 || count > 9999) 156 throw Iex::ArgExc ("Invalid key code count " 157 "(must be between 0 and 9999)."); 158 159 _count = count; 160 } 161 162 163 int 164 KeyCode::perfOffset () const 165 { 166 return _perfOffset; 167 } 168 169 170 void 171 KeyCode::setPerfOffset (int perfOffset) 172 { 173 if (perfOffset < 0 || perfOffset > 119) 174 throw Iex::ArgExc ("Invalid key code perforation offset " 175 "(must be between 0 and 119)."); 176 177 _perfOffset = perfOffset; 178 } 179 180 181 int 182 KeyCode::perfsPerFrame () const 183 { 184 return _perfsPerFrame; 185 } 186 187 188 void 189 KeyCode::setPerfsPerFrame (int perfsPerFrame) 190 { 191 if (perfsPerFrame < 1 || perfsPerFrame > 15) 192 throw Iex::ArgExc ("Invalid key code number of perforations per frame " 193 "(must be between 1 and 15)."); 194 195 _perfsPerFrame = perfsPerFrame; 196 } 197 198 199 int 200 KeyCode::perfsPerCount () const 201 { 202 return _perfsPerCount; 203 } 204 205 206 void 207 KeyCode::setPerfsPerCount (int perfsPerCount) 208 { 209 if (perfsPerCount < 20 || perfsPerCount > 120) 210 throw Iex::ArgExc ("Invalid key code number of perforations per count " 211 "(must be between 20 and 120)."); 212 213 _perfsPerCount = perfsPerCount; 214 } 215 216 } // namespace Imf 217