xref: /aosp_15_r20/external/dng_sdk/source/dng_orientation.h (revision fd1fabb72dbdf09ea7034f531e6f8e9f57334c8d)
1*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
2*fd1fabb7SAndroid Build Coastguard Worker // Copyright 2006 Adobe Systems Incorporated
3*fd1fabb7SAndroid Build Coastguard Worker // All Rights Reserved.
4*fd1fabb7SAndroid Build Coastguard Worker //
5*fd1fabb7SAndroid Build Coastguard Worker // NOTICE:  Adobe permits you to use, modify, and distribute this file in
6*fd1fabb7SAndroid Build Coastguard Worker // accordance with the terms of the Adobe license agreement accompanying it.
7*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/
8*fd1fabb7SAndroid Build Coastguard Worker 
9*fd1fabb7SAndroid Build Coastguard Worker /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_orientation.h#1 $ */
10*fd1fabb7SAndroid Build Coastguard Worker /* $DateTime: 2012/05/30 13:28:51 $ */
11*fd1fabb7SAndroid Build Coastguard Worker /* $Change: 832332 $ */
12*fd1fabb7SAndroid Build Coastguard Worker /* $Author: tknoll $ */
13*fd1fabb7SAndroid Build Coastguard Worker 
14*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/
15*fd1fabb7SAndroid Build Coastguard Worker 
16*fd1fabb7SAndroid Build Coastguard Worker #ifndef __dng_orientation__
17*fd1fabb7SAndroid Build Coastguard Worker #define __dng_orientation__
18*fd1fabb7SAndroid Build Coastguard Worker 
19*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/
20*fd1fabb7SAndroid Build Coastguard Worker 
21*fd1fabb7SAndroid Build Coastguard Worker #include "dng_types.h"
22*fd1fabb7SAndroid Build Coastguard Worker 
23*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/
24*fd1fabb7SAndroid Build Coastguard Worker 
25*fd1fabb7SAndroid Build Coastguard Worker class dng_orientation
26*fd1fabb7SAndroid Build Coastguard Worker 	{
27*fd1fabb7SAndroid Build Coastguard Worker 
28*fd1fabb7SAndroid Build Coastguard Worker 	private:
29*fd1fabb7SAndroid Build Coastguard Worker 
30*fd1fabb7SAndroid Build Coastguard Worker 		// We internally use an orientation encoding ("Adobe") that is
31*fd1fabb7SAndroid Build Coastguard Worker 		// different than the TIFF orientation encoding ("TIFF").
32*fd1fabb7SAndroid Build Coastguard Worker 
33*fd1fabb7SAndroid Build Coastguard Worker 		uint32 fAdobeOrientation;
34*fd1fabb7SAndroid Build Coastguard Worker 
35*fd1fabb7SAndroid Build Coastguard Worker 	public:
36*fd1fabb7SAndroid Build Coastguard Worker 		enum
37*fd1fabb7SAndroid Build Coastguard Worker 			{
38*fd1fabb7SAndroid Build Coastguard Worker 			kNormal      = 0,
39*fd1fabb7SAndroid Build Coastguard Worker 			kRotate90CW  = 1,
40*fd1fabb7SAndroid Build Coastguard Worker 			kRotate180   = 2,
41*fd1fabb7SAndroid Build Coastguard Worker 			kRotate90CCW = 3,
42*fd1fabb7SAndroid Build Coastguard Worker 			kMirror		 = 4,
43*fd1fabb7SAndroid Build Coastguard Worker 			kMirror90CW  = 5,
44*fd1fabb7SAndroid Build Coastguard Worker 			kMirror180	 = 6,
45*fd1fabb7SAndroid Build Coastguard Worker 			kMirror90CCW = 7,
46*fd1fabb7SAndroid Build Coastguard Worker 			kUnknown     = 8
47*fd1fabb7SAndroid Build Coastguard Worker 			};
48*fd1fabb7SAndroid Build Coastguard Worker 
49*fd1fabb7SAndroid Build Coastguard Worker 
dng_orientation()50*fd1fabb7SAndroid Build Coastguard Worker 		dng_orientation ()
51*fd1fabb7SAndroid Build Coastguard Worker 
52*fd1fabb7SAndroid Build Coastguard Worker 			:	fAdobeOrientation (kNormal)
53*fd1fabb7SAndroid Build Coastguard Worker 
54*fd1fabb7SAndroid Build Coastguard Worker 			{
55*fd1fabb7SAndroid Build Coastguard Worker 			}
56*fd1fabb7SAndroid Build Coastguard Worker 
SetAdobe(uint32 adobe)57*fd1fabb7SAndroid Build Coastguard Worker 		void SetAdobe (uint32 adobe)
58*fd1fabb7SAndroid Build Coastguard Worker 			{
59*fd1fabb7SAndroid Build Coastguard Worker 			fAdobeOrientation = adobe;
60*fd1fabb7SAndroid Build Coastguard Worker 			}
61*fd1fabb7SAndroid Build Coastguard Worker 
GetAdobe()62*fd1fabb7SAndroid Build Coastguard Worker 		uint32 GetAdobe () const
63*fd1fabb7SAndroid Build Coastguard Worker 			{
64*fd1fabb7SAndroid Build Coastguard Worker 			return fAdobeOrientation;
65*fd1fabb7SAndroid Build Coastguard Worker 			}
66*fd1fabb7SAndroid Build Coastguard Worker 
67*fd1fabb7SAndroid Build Coastguard Worker 		void SetTIFF (uint32 tiff);
68*fd1fabb7SAndroid Build Coastguard Worker 
69*fd1fabb7SAndroid Build Coastguard Worker 		uint32 GetTIFF () const;
70*fd1fabb7SAndroid Build Coastguard Worker 
AdobeToDNG(uint32 adobe)71*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation AdobeToDNG (uint32 adobe)
72*fd1fabb7SAndroid Build Coastguard Worker 			{
73*fd1fabb7SAndroid Build Coastguard Worker 
74*fd1fabb7SAndroid Build Coastguard Worker 			dng_orientation result;
75*fd1fabb7SAndroid Build Coastguard Worker 
76*fd1fabb7SAndroid Build Coastguard Worker 			result.SetAdobe (adobe);
77*fd1fabb7SAndroid Build Coastguard Worker 
78*fd1fabb7SAndroid Build Coastguard Worker 			return result;
79*fd1fabb7SAndroid Build Coastguard Worker 
80*fd1fabb7SAndroid Build Coastguard Worker 			}
81*fd1fabb7SAndroid Build Coastguard Worker 
TIFFtoDNG(uint32 tiff)82*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation TIFFtoDNG (uint32 tiff)
83*fd1fabb7SAndroid Build Coastguard Worker 			{
84*fd1fabb7SAndroid Build Coastguard Worker 
85*fd1fabb7SAndroid Build Coastguard Worker 			dng_orientation result;
86*fd1fabb7SAndroid Build Coastguard Worker 
87*fd1fabb7SAndroid Build Coastguard Worker 			result.SetTIFF (tiff);
88*fd1fabb7SAndroid Build Coastguard Worker 
89*fd1fabb7SAndroid Build Coastguard Worker 			return result;
90*fd1fabb7SAndroid Build Coastguard Worker 
91*fd1fabb7SAndroid Build Coastguard Worker 			}
92*fd1fabb7SAndroid Build Coastguard Worker 
Normal()93*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation Normal ()
94*fd1fabb7SAndroid Build Coastguard Worker 			{
95*fd1fabb7SAndroid Build Coastguard Worker 			return AdobeToDNG (kNormal);
96*fd1fabb7SAndroid Build Coastguard Worker 			}
97*fd1fabb7SAndroid Build Coastguard Worker 
Rotate90CW()98*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation Rotate90CW ()
99*fd1fabb7SAndroid Build Coastguard Worker 			{
100*fd1fabb7SAndroid Build Coastguard Worker 			return AdobeToDNG (kRotate90CW);
101*fd1fabb7SAndroid Build Coastguard Worker 			}
102*fd1fabb7SAndroid Build Coastguard Worker 
Rotate180()103*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation Rotate180 ()
104*fd1fabb7SAndroid Build Coastguard Worker 			{
105*fd1fabb7SAndroid Build Coastguard Worker 			return AdobeToDNG (kRotate180);
106*fd1fabb7SAndroid Build Coastguard Worker 			}
107*fd1fabb7SAndroid Build Coastguard Worker 
Rotate90CCW()108*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation Rotate90CCW ()
109*fd1fabb7SAndroid Build Coastguard Worker 			{
110*fd1fabb7SAndroid Build Coastguard Worker 			return AdobeToDNG (kRotate90CCW);
111*fd1fabb7SAndroid Build Coastguard Worker 			}
112*fd1fabb7SAndroid Build Coastguard Worker 
Mirror()113*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation Mirror ()
114*fd1fabb7SAndroid Build Coastguard Worker 			{
115*fd1fabb7SAndroid Build Coastguard Worker 			return AdobeToDNG (kMirror);
116*fd1fabb7SAndroid Build Coastguard Worker 			}
117*fd1fabb7SAndroid Build Coastguard Worker 
Mirror90CW()118*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation Mirror90CW ()
119*fd1fabb7SAndroid Build Coastguard Worker 			{
120*fd1fabb7SAndroid Build Coastguard Worker 			return AdobeToDNG (kMirror90CW);
121*fd1fabb7SAndroid Build Coastguard Worker 			}
122*fd1fabb7SAndroid Build Coastguard Worker 
Mirror180()123*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation Mirror180 ()
124*fd1fabb7SAndroid Build Coastguard Worker 			{
125*fd1fabb7SAndroid Build Coastguard Worker 			return AdobeToDNG (kMirror180);
126*fd1fabb7SAndroid Build Coastguard Worker 			}
127*fd1fabb7SAndroid Build Coastguard Worker 
Mirror90CCW()128*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation Mirror90CCW ()
129*fd1fabb7SAndroid Build Coastguard Worker 			{
130*fd1fabb7SAndroid Build Coastguard Worker 			return AdobeToDNG (kMirror90CCW);
131*fd1fabb7SAndroid Build Coastguard Worker 			}
132*fd1fabb7SAndroid Build Coastguard Worker 
Unknown()133*fd1fabb7SAndroid Build Coastguard Worker 		static dng_orientation Unknown ()
134*fd1fabb7SAndroid Build Coastguard Worker 			{
135*fd1fabb7SAndroid Build Coastguard Worker 			return AdobeToDNG (kUnknown);
136*fd1fabb7SAndroid Build Coastguard Worker 			}
137*fd1fabb7SAndroid Build Coastguard Worker 
IsValid()138*fd1fabb7SAndroid Build Coastguard Worker 		bool IsValid () const
139*fd1fabb7SAndroid Build Coastguard Worker 			{
140*fd1fabb7SAndroid Build Coastguard Worker 			return fAdobeOrientation < kUnknown;
141*fd1fabb7SAndroid Build Coastguard Worker 			}
142*fd1fabb7SAndroid Build Coastguard Worker 
NotValid()143*fd1fabb7SAndroid Build Coastguard Worker 		bool NotValid () const
144*fd1fabb7SAndroid Build Coastguard Worker 			{
145*fd1fabb7SAndroid Build Coastguard Worker 			return !IsValid ();
146*fd1fabb7SAndroid Build Coastguard Worker 			}
147*fd1fabb7SAndroid Build Coastguard Worker 
148*fd1fabb7SAndroid Build Coastguard Worker 		bool FlipD () const;
149*fd1fabb7SAndroid Build Coastguard Worker 
150*fd1fabb7SAndroid Build Coastguard Worker 		bool FlipH () const;
151*fd1fabb7SAndroid Build Coastguard Worker 
152*fd1fabb7SAndroid Build Coastguard Worker 		bool FlipV () const;
153*fd1fabb7SAndroid Build Coastguard Worker 
154*fd1fabb7SAndroid Build Coastguard Worker 		bool operator== (const dng_orientation &b) const
155*fd1fabb7SAndroid Build Coastguard Worker 			{
156*fd1fabb7SAndroid Build Coastguard Worker 			return fAdobeOrientation == b.fAdobeOrientation;
157*fd1fabb7SAndroid Build Coastguard Worker 			}
158*fd1fabb7SAndroid Build Coastguard Worker 
159*fd1fabb7SAndroid Build Coastguard Worker 		bool operator!= (const dng_orientation &b) const
160*fd1fabb7SAndroid Build Coastguard Worker 			{
161*fd1fabb7SAndroid Build Coastguard Worker 			return !(*this == b);
162*fd1fabb7SAndroid Build Coastguard Worker 			}
163*fd1fabb7SAndroid Build Coastguard Worker 
164*fd1fabb7SAndroid Build Coastguard Worker 		dng_orientation operator- () const;
165*fd1fabb7SAndroid Build Coastguard Worker 
166*fd1fabb7SAndroid Build Coastguard Worker 		dng_orientation operator+ (const dng_orientation &b) const;
167*fd1fabb7SAndroid Build Coastguard Worker 
168*fd1fabb7SAndroid Build Coastguard Worker 		dng_orientation operator- (const dng_orientation &b) const
169*fd1fabb7SAndroid Build Coastguard Worker 			{
170*fd1fabb7SAndroid Build Coastguard Worker 			return (*this) + (-b);
171*fd1fabb7SAndroid Build Coastguard Worker 			}
172*fd1fabb7SAndroid Build Coastguard Worker 
173*fd1fabb7SAndroid Build Coastguard Worker 		void operator+= (const dng_orientation &b)
174*fd1fabb7SAndroid Build Coastguard Worker 			{
175*fd1fabb7SAndroid Build Coastguard Worker 			*this = *this + b;
176*fd1fabb7SAndroid Build Coastguard Worker 			}
177*fd1fabb7SAndroid Build Coastguard Worker 
178*fd1fabb7SAndroid Build Coastguard Worker 		void operator-= (const dng_orientation &b)
179*fd1fabb7SAndroid Build Coastguard Worker 			{
180*fd1fabb7SAndroid Build Coastguard Worker 			*this = *this - b;
181*fd1fabb7SAndroid Build Coastguard Worker 			}
182*fd1fabb7SAndroid Build Coastguard Worker 
183*fd1fabb7SAndroid Build Coastguard Worker 	};
184*fd1fabb7SAndroid Build Coastguard Worker 
185*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/
186*fd1fabb7SAndroid Build Coastguard Worker 
187*fd1fabb7SAndroid Build Coastguard Worker #endif
188*fd1fabb7SAndroid Build Coastguard Worker 
189*fd1fabb7SAndroid Build Coastguard Worker /******************************************************************************/
190