Home | History | Annotate | Download | only in IlmImf
      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