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