HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ImfStandardAttributes.h
Go to the documentation of this file.
1 //
2 // SPDX-License-Identifier: BSD-3-Clause
3 // Copyright (c) Contributors to the OpenEXR Project.
4 //
5 
6 #ifndef INCLUDED_IMF_STANDARD_ATTRIBUTES_H
7 #define INCLUDED_IMF_STANDARD_ATTRIBUTES_H
8 
9 //-----------------------------------------------------------------------------
10 //
11 // Optional Standard Attributes -- these attributes are "optional"
12 // because not every image file header has them, but they define a
13 // "standard" way to represent commonly used data in the file header.
14 //
15 // For each attribute, with name "foo", and type "T", the following
16 // functions are automatically generated via macros:
17 //
18 // void addFoo (Header &header, const T &value);
19 // bool hasFoo (const Header &header);
20 // const TypedAttribute<T> & fooAttribute (const Header &header);
21 // TypedAttribute<T> & fooAttribute (Header &header);
22 // const T & foo (const Header &Header);
23 // T & foo (Header &Header);
24 //
25 //-----------------------------------------------------------------------------
26 
27 #include "ImfBoxAttribute.h"
30 #include "ImfEnvmapAttribute.h"
31 #include "ImfExport.h"
32 #include "ImfFloatAttribute.h"
33 #include "ImfHeader.h"
34 #include "ImfIDManifestAttribute.h"
35 #include "ImfIntAttribute.h"
36 #include "ImfKeyCodeAttribute.h"
37 #include "ImfMatrixAttribute.h"
38 #include "ImfNamespace.h"
39 #include "ImfRationalAttribute.h"
40 #include "ImfStringAttribute.h"
42 #include "ImfTimeCodeAttribute.h"
43 #include "ImfVecAttribute.h"
44 
45 #define IMF_ADD_SUFFIX(suffix) add##suffix
46 #define IMF_HAS_SUFFIX(suffix) has##suffix
47 #define IMF_NAME_ATTRIBUTE(name) name##Attribute
48 
49 #define IMF_STD_ATTRIBUTE_DEF(name, suffix, object) \
50  \
51  OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER \
52  IMF_EXPORT void IMF_ADD_SUFFIX (suffix) ( \
53  Header & header, const object& v); \
54  IMF_EXPORT bool IMF_HAS_SUFFIX (suffix) (const Header& header); \
55  IMF_EXPORT const TypedAttribute<object>& IMF_NAME_ATTRIBUTE (name) ( \
56  const Header& header); \
57  IMF_EXPORT TypedAttribute<object>& IMF_NAME_ATTRIBUTE (name) ( \
58  Header & header); \
59  IMF_EXPORT const object& name (const Header& header); \
60  IMF_EXPORT object& name (Header& header); \
61  OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
62 
63 #define IMF_STD_ATTRIBUTE_DEF_DEPRECATED(name, suffix, object, msg) \
64  \
65  OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER \
66  OPENEXR_DEPRECATED (msg) \
67  IMF_EXPORT void IMF_ADD_SUFFIX (suffix) ( \
68  Header & header, const object& v); \
69  OPENEXR_DEPRECATED (msg) \
70  IMF_EXPORT bool IMF_HAS_SUFFIX (suffix) (const Header& header); \
71  OPENEXR_DEPRECATED (msg) \
72  IMF_EXPORT const TypedAttribute<object>& IMF_NAME_ATTRIBUTE (name) ( \
73  const Header& header); \
74  OPENEXR_DEPRECATED (msg) \
75  IMF_EXPORT TypedAttribute<object>& IMF_NAME_ATTRIBUTE (name) ( \
76  Header & header); \
77  OPENEXR_DEPRECATED (msg) \
78  IMF_EXPORT const object& name (const Header& header); \
79  OPENEXR_DEPRECATED (msg) IMF_EXPORT object& name (Header& header); \
80  OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
81 
82 //
83 // In attribute definition comments below, 'UTF-8-encoded' signifies
84 // a sequence of zero or more characters encoded using Unicode UTF-8 encoding
85 // in NFC normal form, as defined in the Unicode standard.
86 
87 //
88 // originalDataWindow -- if application software crops an image, then it
89 // should save the data window of the original, un-cropped image in the
90 // originalDataWindow attribute.
91 //
92 
94  originalDataWindow, OriginalDataWindow, IMATH_NAMESPACE::Box2i)
95 
96 //
97 // worldToCamera -- for images generated by 3D computer graphics rendering,
98 // a matrix that transforms 3D points from the world to the camera coordinate
99 // space of the renderer.
100 //
101 // The camera coordinate space is left-handed. Its origin indicates the
102 // location of the camera. The positive x and y axes correspond to the
103 // "right" and "up" directions in the rendered image. The positive z
104 // axis indicates the camera's viewing direction. (Objects in front of
105 // the camera have positive z coordinates.)
106 //
107 // Camera coordinate space in OpenEXR is the same as in Pixar's Renderman.
108 //
109 
110 IMF_STD_ATTRIBUTE_DEF (worldToCamera, WorldToCamera, IMATH_NAMESPACE::M44f)
111 
112 //
113 // worldToNDC -- for images generated by 3D computer graphics rendering, a
114 // matrix that transforms 3D points from the world to the Normalized Device
115 // Coordinate (NDC) space of the renderer.
116 //
117 // NDC is a 2D coordinate space that corresponds to the image plane, with
118 // positive x and pointing to the right and y positive pointing down. The
119 // coordinates (0, 0) and (1, 1) correspond to the upper left and lower right
120 // corners of the OpenEXR display window.
121 //
122 // To transform a 3D point in word space into a 2D point in NDC space,
123 // multiply the 3D point by the worldToNDC matrix and discard the z
124 // coordinate.
125 //
126 // NDC space in OpenEXR is the same as in Pixar's Renderman.
127 //
128 
129 IMF_STD_ATTRIBUTE_DEF (worldToNDC, WorldToNDC, IMATH_NAMESPACE::M44f)
130 
131 //
132 // sensorCenterOffset -- horizontal and vertical distances, in microns, of
133 // the center of the light-sensitive area of the camera's sensor from a point
134 // on that sensor where a sensor surface normal would intersect the center
135 // of the lens mount. When compared to an image captured with a perfectly
136 // centered sensor, an image where both horizontal and vertical distances
137 // were positive would contain more content holding what was at the right
138 // and what was at the bottom of the scene being captured.
139 //
140 
141 IMF_STD_ATTRIBUTE_DEF (sensorCenterOffset, SensorCenterOffset, IMATH_NAMESPACE::V2f)
142 
143 //
144 // sensorOverallDimensions -- dimensions of the light-sensitive area of the
145 // sensor, in millimeters, independent of the subset of that region from
146 // which image data are obtained.
147 
149  sensorOverallDimensions,
152 
153 //
154 // sensorPhotositePitch -- distance between centers of sensor photosites,
155 // in microns.
156 
157 IMF_STD_ATTRIBUTE_DEF (sensorPhotositePitch, SensorPhotositePitch, float)
158 
159 //
160 // sensorAcquisitionRectangle -- the rectangular area of the sensor containing
161 // photosites the contents of which are in one-to-one correspondence with the
162 // captured sensels, for a monochrome sensor, or with the reconstructed pixels,
163 // for a sensor covered with color filter array material in a Bayer or a
164 // similar pattern.
165 //
166 
168  sensorAcquisitionRectangle,
169  SensorAcquisitionRectangle, IMATH_NAMESPACE::Box2i)
170 
171 //
172 // ascFramingDecisionList -- JSON-encoded description of framing decisions
173 // associated with the captured image, in a format termed 'ASC-FDL', designed
174 // and documented by the American Society of Cinematographers (ASC).
175 //
176 // If present, the value should be UTF-8-encoded and have a nonzero length.
177 //
178 
179 IMF_STD_ATTRIBUTE_DEF (ascFramingDecisionList, AscFramingDecisionList, std::string)
180 
181 //
182 // xDensity -- horizontal output density, in pixels per inch.
183 // The image's vertical output density is xDensity * pixelAspectRatio.
184 //
185 
186 IMF_STD_ATTRIBUTE_DEF (xDensity, XDensity, float)
187 
188 //
189 // longitude, latitude, altitude -- for images of real objects, the
190 // location where the image was recorded. Longitude and latitude are
191 // in degrees east of Greenwich and north of the equator. Altitude
192 // is in meters above sea level. For example, Kathmandu, Nepal is
193 // at longitude 85.317, latitude 27.717, altitude 1305.
194 //
195 
196 IMF_STD_ATTRIBUTE_DEF (longitude, Longitude, float)
197 IMF_STD_ATTRIBUTE_DEF (latitude, Latitude, float)
198 IMF_STD_ATTRIBUTE_DEF (altitude, Altitude, float)
199 
200 //
201 // cameraMake -- manufacturer or vendor of the camera
202 //
203 // If present, the value should be UTF-8-encoded and have a nonzero length.
204 //
205 
206 IMF_STD_ATTRIBUTE_DEF (cameraMake, CameraMake, std::string)
207 
208 //
209 // cameraModel -- model name or model number of the camera
210 //
211 // If present, the value should be UTF-8-encoded and have a nonzero length.
212 //
213 
214 IMF_STD_ATTRIBUTE_DEF (cameraModel, CameraModel, std::string)
215 
216 //
217 // cameraSerialNumber -- serial number of the camera
218 //
219 // If present, the value should be UTF-8-encoded and have a nonzero length.
220 //
221 // Note that despite the name, the value can include non-digits
222 // as well as digits.
223 //
224 
225 IMF_STD_ATTRIBUTE_DEF (cameraSerialNumber, CameraSerialNumber, std::string)
226 
227 //
228 // cameraFirmwareVersion -- the firmware version of the camera
229 //
230 // If present, the value should be UTF-8-encoded and have a nonzero length.
231 //
232 
233 IMF_STD_ATTRIBUTE_DEF (cameraFirmwareVersion, CameraFirmwareVersion, std::string)
234 
235 //
236 // cameraUuid -- identifies this camera uniquely among all
237 // cameras from all vendors
238 //
239 // Uniqueness could be accomplished with, e.g., a MAC address, a
240 // concatenation of cameraMake, cameraModel, cameraSerialNumber, etc.
241 //
242 // If present, the value should be UTF-8-encoded and have a nonzero length.
243 //
244 
245 IMF_STD_ATTRIBUTE_DEF (cameraUuid, CameraUuid, std::string)
246 
247 //
248 // cameraLabel -- text label identifying how the camera was used or
249 // assigned, e.g. "Camera 1 Left", "B Camera", "POV", etc
250 //
251 // If present, the value should be UTF-8-encoded and have a nonzero length.
252 //
253 
254 IMF_STD_ATTRIBUTE_DEF (cameraLabel, CameraLabel, std::string)
255 
256 //
257 // cameraCCTSetting -- color temperature, in Kelvin, configured
258 // for the physical or virtual camera creating or capturing the image.
259 //
260 // The cameraCCTSetting is primarily forensic, and indicates the
261 // stated color balance of a film stock, the color temperature setting
262 // on a physical digital camera or the nominal color temperature of the
263 // scene adopted white as passed to a virtual camera's API.
264 //
265 // A professional digital cinema cameras is not constrained to map every
266 // supplied correlated color temperature to a point on the curve of a
267 // Planckian radiator, or map every supplied color temperature to a
268 // chromaticity corresponding to a combination of the three principal
269 // components forming a basis for the CIE D series of illuminants.
270 //
271 // Often, lower color temperatures are on the Planckian locus, higher
272 // color temperatures are on a locus of CIE D series chromaticities, and
273 // the camera performs a crossfade (typically a linear crossfade) between
274 // the two for intermediate temperatures. That the start and end of the
275 // crossfade could differ for every camera vendor -- or even across cameras
276 // offered by the same vendor -- means that no universal algorithm can map
277 // a camera color temperature setting (combined with a tint setting,
278 // see below) into a scene adopted white chromaticity.
279 //
280 // The most common use for the cameraCCTSetting attribute is to feed its
281 // value into a camera-vendor-provided application or API, along with
282 // a cameraTintSetting attribute value, to reproduce the color processing
283 // done in-camera on set.
284 //
285 // If a cameraCCTSetting attribute is provided, and no cameraTintSetting
286 // is provided, then a value of zero should be passed to any application
287 // or API using the cameraCCTSetting and cameraTintSetting.
288 //
289 
290 IMF_STD_ATTRIBUTE_DEF (cameraCCTSetting, CameraCCTSetting, float)
291 
292 //
293 // cameraTintSetting -- green / magenta tint configured for the physical
294 // or virtual camera creating or capturing the image.
295 //
296 // The cameraTintSetting is primarily forensic. There is no vendor-
297 // independent mapping from a unit of tint to a distance on a chromaticity
298 // diagram. One camera vendor might choose a color space (e.g. the
299 // CIE 1960 UCS) and have a unit amount of tint represent some delta uv
300 // distance from the point by the cammeraCCTSetting and a tint value of 0.
301 // Another might choose to express the effect of tint by analogy to a
302 // traditional unit from a film workflow, e.g. a Kodak or Rosco color
303 // correction filter. About the only guaranteed commonality is that all
304 // camera vendor tint schemes have positive values shift the adopted
305 // scene white towards green, and negative values toward magenta.
306 //
307 // If the camera vendor maps cameraCCTSetting to a point defined by
308 // a linear crossfade between a Planckian blackbody locus and loci of
309 // CIE D Series illuminants, the slope of the tint isotherm at the
310 // exact points where the linear crossfade starts and ends can be
311 // indeterminate and an inverse mapping from chromaticity to a pair
312 // of CCT and tint can be one-to-many.
313 //
314 // The most common use for the cameraTintSetting attribute is to feed its
315 // value into a camera-vendor-provided application or API, along with
316 // a cameraCCTSetting attribute value, to reproduce the color processing
317 // done in-camera on set.
318 //
319 
320 IMF_STD_ATTRIBUTE_DEF (cameraTintSetting, CameraTintSetting, float)
321 
322 //
323 // cameraColorBalance -- chromaticity in CIE 1960 UCS coordinates
324 // indicating a color the user of the camera would like the camera
325 // to treat as neutral, and corresponding to a particular camera
326 // configuration of make, model, camera firmware version, CCT setting
327 // and tint setting.
328 //
329 // Note that this is not necessarily (or even probably) the same
330 // chromaticity as that of the scene adopted white stored in an
331 // adoptedNeutral attribute (if present).
332 //
333 // For example, if a physical digital cinema camera was configured with
334 // a CCT of 3200K and a tint of -3 (in some camera vendor dependent unit),
335 // and the camera output had been processed such that the image containing
336 // this attribute was encoded as per SMPTE ST 2065-4:2023, then
337 // the adoptedNeutral attribute would have the value corresponding to
338 // the ACES neutral chromaticity, very near that of CIE Illuminant D60,
339 // whereas the cameraColorBalance would have a chromaticity much, much
340 // warmer than that of the adoptedNeutral attribute.
341 //
342 
343 IMF_STD_ATTRIBUTE_DEF (cameraColorBalance, CameraColorBalance, IMATH_NAMESPACE::V2f)
344 
345 //
346 // isoSpeed -- the ISO speed of the film or the ISO setting of the camera
347 // that was used to record the image
348 //
349 
350 IMF_STD_ATTRIBUTE_DEF (isoSpeed, IsoSpeed, float)
351 
352 //
353 // exposure -- exposure time, in seconds
354 //
355 
356 IMF_STD_ATTRIBUTE_DEF (expTime, ExpTime, float)
357 
358 //
359 // shutterAngle -- shutter angle, in degrees
360 //
361 // For a physical film or digital camera, changing the shutter angle
362 // inexorably affects both motion blur and exposure. For a CG camera,
363 // the parameters to the renderer control whether or not changing the
364 // shutter angle affects simulation of either or both of these phenomena.
365 //
366 
367 IMF_STD_ATTRIBUTE_DEF (shutterAngle, ShutterAngle, float)
368 
369 //
370 // captureRate -- capture rate, in frames per second, of the image
371 // sequence to which the image belongs, represented as a rational
372 // number
373 //
374 // For variable frame rates, time-lapse photography, etc. the capture
375 // rate r is calculated as
376 //
377 // r = 1 / (tN - tNm1)
378 //
379 // where tn is the time, in seconds, of the center of frame N's
380 // exposure interval, and tNm1 is the time, in seconds, of the center
381 // of frame N-1's exposure interval.
382 //
383 // Both the numerator and denominator of r must be strictly positive.
384 //
385 
386 IMF_STD_ATTRIBUTE_DEF (captureRate, CaptureRate, Rational)
387 
388 //
389 // lensMake -- manufacturer or vendor of the lens
390 //
391 // If present, the value should be UTF-8-encoded and have a nonzero length.
392 //
393 
394 IMF_STD_ATTRIBUTE_DEF (lensMake, LensMake, std::string)
395 
396 //
397 // lensModel -- model name or model number of the lens
398 //
399 // If present, the value should be UTF-8-e coded and have a nonzero length.
400 //
401 
402 IMF_STD_ATTRIBUTE_DEF (lensModel, LensModel, std::string)
403 
404 //
405 // lensSerialNumber -- serial number of the lens
406 //
407 // Note that despite the name, the value can include non-digits
408 // as well as digits.
409 //
410 // If present, the value should be UTF-8-encoded and have a nonzero length.
411 //
412 
413 IMF_STD_ATTRIBUTE_DEF (lensSerialNumber, LensSerialNumber, std::string)
414 
415 //
416 // lensFirmwareVersion -- firmware version of the lens
417 //
418 
419 // If present, the value should be UTF-8-encoded and have a nonzero length.
420 //
421 
422 IMF_STD_ATTRIBUTE_DEF (lensFirmwareVersion, LensFirmwareVersion, std::string)
423 
424 //
425 // nominalFocalLength -- number printed on barrel of a prime lens, or
426 // number next to index mark on a zoom lens, in units of millimeters.
427 //
428 // Nominal focal length is appropriate for asset tracking of lenses (e.g.
429 // a camera rental house catalogs its lens stock by nominal focal length).
430 //
431 
432 IMF_STD_ATTRIBUTE_DEF (nominalFocalLength, NominalFocalLength, float)
433 
434 //
435 // pinholeFocalLength -- in the simplest model of image formation, the
436 // distance between the pinhole and the image plane, in units of millimeters.
437 //
438 // When a CGI application supplies a method for an artist to provide focal
439 // length to some calculation, pinhole focal length is almost always the
440 // appropriate number to convey to the application.
441 //
442 
443 IMF_STD_ATTRIBUTE_DEF (pinholeFocalLength, PinholeFocalLength, float)
444 
445 //
446 // effectiveFocalLength -- in the thick lens model, the effective focal
447 // length is the distance between the front focal point and the front
448 // nodal point, or equivalently the back focal point and the back nodal
449 // point, in units of millimeters.
450 //
451 // The effective focal length is an abstraction used in lens design and,
452 // unless a CGI application is sophisticated enough to be using the thick
453 // lens model, should not be supplied to the application; for normal
454 // CGI applications, pinhole focal length should be used.
455 //
456 // Note that the forward and back lens nodal points mentioned above are
457 // distinct in meaning and in position from the forward and back lens
458 // entrance pupils. A 'no-parallax' rotation is rotation around the
459 // forward lens entrance pupil.
460 //
461 
462 IMF_STD_ATTRIBUTE_DEF (effectiveFocalLength, EffectiveFocalLength, float)
463 
464 //
465 // entrancePupilOffset -- the axial distance from the image plane
466 // to the entrance pupil, in units of millimeters. A larger entrance
467 // pupil offset means the entrance pupil is closer to the object.
468 //
469 // Note that in some lens configurations, the entrance pupil offset can
470 // be negative.
471 //
472 
473 IMF_STD_ATTRIBUTE_DEF (entrancePupilOffset, EntrancePupilOffset, float)
474 
475 //
476 // aperture -- the f-number of the lens, computed as the ratio of
477 // lens effective focal length to the diameter of lens entrance pupil
478 // at the time the image was created or captured.
479 //
480 
481 IMF_STD_ATTRIBUTE_DEF (aperture, Aperture, float)
482 
483 //
484 // tStop -- ratio of lens effective focal length to diameter of
485 // entrance pupil divided by the square root of the transmittance
486 // the lens presents to a paraxial ray.
487 //
488 // Note that tStop, like aperture, must be strictly positive;
489 // and that tStop will always be a larger number than aperture.
490 //
491 
492 IMF_STD_ATTRIBUTE_DEF (tStop, TStop, float)
493 
494 //
495 // focus -- the camera's focus distance, in meters
496 //
497 
498 IMF_STD_ATTRIBUTE_DEF (focus, Focus, float)
499 
500 //
501 // owner -- name of the owner of the image
502 //
503 
504 IMF_STD_ATTRIBUTE_DEF (owner, Owner, std::string)
505 
506 //
507 // comments -- additional image information in human-readable
508 // form, for example a verbal description of the image.
509 //
510 
511 IMF_STD_ATTRIBUTE_DEF (comments, Comments, std::string)
512 
513 //
514 // capDate -- the date when the image was created or captured,
515 // in local time, and formatted as
516 //
517 // YYYY:MM:DD hh:mm:ss
518 //
519 // where YYYY is the year (4 digits, e.g. 2003), MM is the month
520 // (2 digits, 01, 02, ... 12), DD is the day of the month (2 digits,
521 // 01, 02, ... 31), hh is the hour (2 digits, 00, 01, ... 23), mm
522 // is the minute, and ss is the second (2 digits, 00, 01, ... 59).
523 //
524 
525 IMF_STD_ATTRIBUTE_DEF (capDate, CapDate, std::string)
526 
527 //
528 // utcOffset -- offset of local time at capDate from
529 // Universal Coordinated Time (UTC), in seconds:
530 //
531 // UTC == local time + utcOffset
532 //
533 
534 IMF_STD_ATTRIBUTE_DEF (utcOffset, UtcOffset, float)
535 
536 //
537 // keyCode -- for motion picture film frames. Identifies film
538 // manufacturer, film type, film roll and frame position within
539 // the roll.
540 //
541 
542 IMF_STD_ATTRIBUTE_DEF (keyCode, KeyCode, KeyCode)
543 
544 //
545 // timeCode -- time and control code
546 //
547 
548 IMF_STD_ATTRIBUTE_DEF (timeCode, TimeCode, TimeCode)
549 
550 //
551 // framesPerSecond -- defines the nominal playback frame rate for image
552 // sequences, in frames per second. Every image in a sequence should
553 // have a framesPerSecond attribute, and the attribute value should be
554 // the same for all images in the sequence. If an image sequence has
555 // no framesPerSecond attribute, playback software should assume that
556 // the frame rate for the sequence is 24 frames per second.
557 //
558 // In order to allow exact representation of NTSC frame and field rates,
559 // framesPerSecond is stored as a rational number. A rational number is
560 // a pair of integers, n and d, that represents the value n/d.
561 //
562 // For the exact values of commonly used frame rates, please see header
563 // file ImfFramesPerSecond.h.
564 //
565 
566 IMF_STD_ATTRIBUTE_DEF (framesPerSecond, FramesPerSecond, Rational)
567 
568 //
569 // imageCounter -- an image number
570 //
571 // For a sequence of images, the image number increases
572 // when the images are accessed in the intended play order.
573 // imageCounter can be used to order frames when more standard
574 // ordering systems are inapplicable, including but not limited
575 // to uniquely identifying frames of high-speed photography that
576 // would have identical time codes, ordering sequences of frames
577 // where some frames may have been captured and discarded due to
578 // real-time constraints, or ordering frames in a sequence that
579 // is intermittently accumulated from devices such as security
580 // cameras triggered by motion in an environment.
581 //
582 
583 IMF_STD_ATTRIBUTE_DEF (imageCounter, ImageCounter, int)
584 
585 //
586 // reelName -- name for a sequence of unique images.
587 //
588 // If present, the value should be UTF-8-encoded and have a nonzero length.
589 //
590 
591 IMF_STD_ATTRIBUTE_DEF (reelName, ReelName, std::string)
592 
593 //
594 // chromaticities -- for RGB images, specifies the CIE (x,y)
595 // chromaticities of the primaries and the white point
596 //
597 
598 IMF_STD_ATTRIBUTE_DEF (chromaticities, Chromaticities, Chromaticities)
599 
600 //
601 // whiteLuminance -- for RGB images, defines the luminance, in Nits
602 // (candelas per square meter) of the RGB value (1.0, 1.0, 1.0).
603 //
604 // If the chromaticities and the whiteLuminance of an RGB image are
605 // known, then it is possible to convert the image's pixels from RGB
606 // to CIE XYZ tristimulus values (see function RGBtoXYZ() in header
607 // file ImfChromaticities.h).
608 //
609 
610 IMF_STD_ATTRIBUTE_DEF (whiteLuminance, WhiteLuminance, float)
611 
612 //
613 // adoptedNeutral -- specifies the CIE (x,y) coordinates that should
614 // be considered neutral during color rendering. Pixels in the image
615 // file whose (x,y) coordinates match the adoptedNeutral value should
616 // be mapped to neutral values on the display.
617 //
618 
619 IMF_STD_ATTRIBUTE_DEF (adoptedNeutral, AdoptedNeutral, IMATH_NAMESPACE::V2f)
620 
621 //
622 // renderingTransform, lookModTransform -- specify the names of the
623 // CTL functions that implements the intended color rendering and look
624 // modification transforms for this image.
625 //
626 // If present, values should be UTF-8-encoded and have nonzero length.
627 //
628 
629 IMF_STD_ATTRIBUTE_DEF_DEPRECATED (renderingTransform, RenderingTransform, std::string, "this attribute is obsolete as of OpenEXR v3.2")
630 IMF_STD_ATTRIBUTE_DEF_DEPRECATED (lookModTransform, LookModTransform, std::string, "this attribute is obsolete as of OpenEXR v3.2")
631 
632 //
633 // envmap -- if this attribute is present, the image represents
634 // an environment map. The attribute's value defines how 3D
635 // directions are mapped to 2D pixel locations. For details
636 // see header file ImfEnvmap.h
637 //
638 
639 IMF_STD_ATTRIBUTE_DEF (envmap, Envmap, Envmap)
640 
641 //
642 // wrapmodes -- determines how texture map images are extrapolated.
643 // If an OpenEXR file is used as a texture map for 3D rendering,
644 // texture coordinates (0.0, 0.0) and (1.0, 1.0) correspond to
645 // the upper left and lower right corners of the data window.
646 // If the image is mapped onto a surface with texture coordinates
647 // outside the zero-to-one range, then the image must be extrapolated.
648 // This attribute tells the renderer how to do this extrapolation.
649 // The attribute contains either a pair of comma-separated keywords,
650 // to specify separate extrapolation modes for the horizontal and
651 // vertical directions; or a single keyword, to specify extrapolation
652 // in both directions (e.g. "clamp,periodic" or "clamp"). Extra white
653 // space surrounding the keywords is allowed, but should be ignored
654 // by the renderer ("clamp, black " is equivalent to "clamp,black").
655 // The keywords listed below are predefined; some renderers may support
656 // additional extrapolation modes:
657 //
658 // black pixels outside the zero-to-one range are black
659 //
660 // clamp texture coordinates less than 0.0 and greater
661 // than 1.0 are clamped to 0.0 and 1.0 respectively
662 //
663 // periodic the texture image repeats periodically
664 //
665 // mirror the texture image repeats periodically, but
666 // every other instance is mirrored
667 //
668 
669 IMF_STD_ATTRIBUTE_DEF (wrapmodes, Wrapmodes, std::string)
670 
671 //
672 // multiView -- defines the view names for multi-view image files.
673 // A multi-view image contains two or more views of the same scene,
674 // as seen from different viewpoints, for example a left-eye and
675 // a right-eye view for stereo displays. The multiView attribute
676 // lists the names of the views in an image, and a naming convention
677 // identifies the channels that belong to each view.
678 //
679 // For details, please see header file ImfMultiView.h
680 //
681 
682 IMF_STD_ATTRIBUTE_DEF (multiView, MultiView, StringVector)
683 
684 //
685 // deepImageState -- specifies whether the pixels in a deep image are
686 // sorted and non-overlapping.
687 //
688 // Note: this attribute can be set by application code that writes a file
689 // in order to tell applications that read the file whether the pixel data
690 // must be cleaned up prior to image processing operations such as flattening.
691 // The OpenEXR library does not verify that the attribute is consistent with
692 // the actual state of the pixels. Application software may assume that the
693 // attribute is valid, as long as the software will not crash or lock up if
694 // any pixels are inconsistent with the deepImageState attribute.
695 //
696 
697 IMF_STD_ATTRIBUTE_DEF (deepImageState, DeepImageState, DeepImageState)
698 
699 //
700 // dwaCompressionLevel -- sets the quality level for images compressed
701 // with the DWAA or DWAB method.
702 //
703 // DEPRECATED: use the methods directly in the header
705  dwaCompressionLevel,
707  float,
708  "use compression method in ImfHeader")
709 
710 //
711 // ID Manifest
712 //
713 
715 
716 #endif
#define IMATH_NAMESPACE
Definition: ImathConfig.h:40
**But if you need a or simply need to know when the task has note that the like this
Definition: thread.h:617
GLfloat GLfloat GLfloat GLfloat v3
Definition: glcorearb.h:819
DeepImageStateint
struct ImfHeader ImfHeader
Definition: ImfCRgbaFile.h:120
Envmapint
Definition: ImfEnvmap.h:56
Box< V2i > Box2i
2D box of base type int.
Definition: ImathBox.h:143
#define IMF_STD_ATTRIBUTE_DEF(name, suffix, object)
#define IMF_STD_ATTRIBUTE_DEF_DEPRECATED(name, suffix, object, msg)
IMATH_NAMESPACE::V2f DwaCompressionLevel
Definition: ImathVec.h:31
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER typedef std::vector< std::string > StringVector
OIIO_API bool attribute(string_view name, TypeDesc type, const void *val)
SensorOverallDimensions
Definition: ImathBox.h:37