refinery
RAW file processor
|
A Camera coupled with one photo's ExifData. More...
#include <refinery/camera.h>
Public Member Functions | |
CameraData (const Camera &camera, const ExifData &exifData) | |
Creates a CameraData for a given photo. | |
CameraData (const CameraData &rhs) | |
Copy constructor. | |
const Camera & | camera () const |
The Camera object. | |
const ExifData & | exifData () const |
The ExifData object particular to this photo. | |
unsigned int | orientation () const |
The Exif "Orientation", from 1 to 8, saying how one image is flipped. | |
virtual unsigned int | filters () const |
A bitmask representing the camera sensor array. | |
unsigned int | colors () const |
The number of sensor colors, typically 3 or 4. | |
unsigned int | rawWidth () const |
The width of the raw image, in pixels. | |
unsigned int | rawHeight () const |
The height of the raw image, in pixels. | |
Camera::ColorConversionData | colorConversionData () const |
Some multipliers for changing color spaces. |
A Camera coupled with one photo's ExifData.
This is the public face that callers care about. Callers shouldn't need to know whether a default color profile comes hard-coded or embedded in Exif. This class abstracts everything.
CameraData instances are lightweight. Shallow-copy them at will.
Creates a CameraData for a given photo.
The Camera and ExifData are both passed by reference and must exist for the lifetime of this CameraData.
[in] | camera | The static camera data. |
[in] | exifData | The photograph's Exif data. |
refinery::CameraData::CameraData | ( | const CameraData & | rhs | ) | [inline] |
Copy constructor.
The Camera and ExifData are both passed by reference.
[in] | rhs | Original CameraData. |
virtual unsigned int refinery::CameraData::filters | ( | ) | const [virtual] |
A bitmask representing the camera sensor array.
Here are some possible return values and what they represent:
PowerShot 600 PowerShot A50 PowerShot Pro70 Pro90 & G1 0xe1e4e1e4: 0x1b4e4b1e: 0x1e4b4e1b: 0xb4b4b4b4:
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 G M G M G M 0 C Y C Y C Y 0 Y C Y C Y C 0 G M G M G M 1 C Y C Y C Y 1 M G M G M G 1 M G M G M G 1 Y C Y C Y C 2 M G M G M G 2 Y C Y C Y C 2 C Y C Y C Y 3 C Y C Y C Y 3 G M G M G M 3 G M G M G M 4 C Y C Y C Y 4 Y C Y C Y C PowerShot A5 5 G M G M G M 5 G M G M G M 0x1e4e1e4e: 6 Y C Y C Y C 6 C Y C Y C Y 7 M G M G M G 7 M G M G M G 0 1 2 3 4 5 0 C Y C Y C Y 1 G M G M G M 2 C Y C Y C Y 3 M G M G M G
All RGB cameras use one of these Bayer grids:
0x16161616: 0x61616161: 0x49494949: 0x94949494:
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 B G B G B G 0 G R G R G R 0 G B G B G B 0 R G R G R G 1 G R G R G R 1 B G B G B G 1 R G R G R G 1 G B G B G B 2 B G B G B G 2 G R G R G R 2 G B G B G B 2 R G R G R G 3 G R G R G R 3 B G B G B G 3 R G R G R G 3 G B G B G B
unsigned int refinery::CameraData::rawHeight | ( | ) | const |
The height of the raw image, in pixels.
This is different from height(), which is the height of the output image. Some cameras capture margin pixels which have no value at all, and this height includes those.
unsigned int refinery::CameraData::rawWidth | ( | ) | const |
The width of the raw image, in pixels.
This is different from width(), which is the width of the output image. Some cameras capture margin pixels which have no value at all, and this width includes those.