/*****************************************************************************/ // Copyright 2006 Adobe Systems Incorporated // All Rights Reserved. // // NOTICE: Adobe permits you to use, modify, and distribute this file in // accordance with the terms of the Adobe license agreement accompanying it. /*****************************************************************************/ /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_orientation.h#1 $ */ /* $DateTime: 2012/05/30 13:28:51 $ */ /* $Change: 832332 $ */ /* $Author: tknoll $ */ /******************************************************************************/ #ifndef __dng_orientation__ #define __dng_orientation__ /******************************************************************************/ #include "dng_types.h" /******************************************************************************/ class dng_orientation { private: // We internally use an orientation encoding ("Adobe") that is // different than the TIFF orientation encoding ("TIFF"). uint32 fAdobeOrientation; public: enum { kNormal = 0, kRotate90CW = 1, kRotate180 = 2, kRotate90CCW = 3, kMirror = 4, kMirror90CW = 5, kMirror180 = 6, kMirror90CCW = 7, kUnknown = 8 }; dng_orientation () : fAdobeOrientation (kNormal) { } void SetAdobe (uint32 adobe) { fAdobeOrientation = adobe; } uint32 GetAdobe () const { return fAdobeOrientation; } void SetTIFF (uint32 tiff); uint32 GetTIFF () const; static dng_orientation AdobeToDNG (uint32 adobe) { dng_orientation result; result.SetAdobe (adobe); return result; } static dng_orientation TIFFtoDNG (uint32 tiff) { dng_orientation result; result.SetTIFF (tiff); return result; } static dng_orientation Normal () { return AdobeToDNG (kNormal); } static dng_orientation Rotate90CW () { return AdobeToDNG (kRotate90CW); } static dng_orientation Rotate180 () { return AdobeToDNG (kRotate180); } static dng_orientation Rotate90CCW () { return AdobeToDNG (kRotate90CCW); } static dng_orientation Mirror () { return AdobeToDNG (kMirror); } static dng_orientation Mirror90CW () { return AdobeToDNG (kMirror90CW); } static dng_orientation Mirror180 () { return AdobeToDNG (kMirror180); } static dng_orientation Mirror90CCW () { return AdobeToDNG (kMirror90CCW); } static dng_orientation Unknown () { return AdobeToDNG (kUnknown); } bool IsValid () const { return fAdobeOrientation < kUnknown; } bool NotValid () const { return !IsValid (); } bool FlipD () const; bool FlipH () const; bool FlipV () const; bool operator== (const dng_orientation &b) const { return fAdobeOrientation == b.fAdobeOrientation; } bool operator!= (const dng_orientation &b) const { return !(*this == b); } dng_orientation operator- () const; dng_orientation operator+ (const dng_orientation &b) const; dng_orientation operator- (const dng_orientation &b) const { return (*this) + (-b); } void operator+= (const dng_orientation &b) { *this = *this + b; } void operator-= (const dng_orientation &b) { *this = *this - b; } }; /******************************************************************************/ #endif /******************************************************************************/