Date: Tuesday, November 13, 2018 @ 20:22:36 Author: jlichtblau Revision: 407155
upgpkg: python-rawkit 0.6.0-5 - FS#60708 fix Added: python-rawkit/trunk/libraw19-support.patch Modified: python-rawkit/trunk/PKGBUILD ------------------------+ PKGBUILD | 49 +- libraw19-support.patch | 843 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 870 insertions(+), 22 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2018-11-13 20:19:05 UTC (rev 407154) +++ PKGBUILD 2018-11-13 20:22:36 UTC (rev 407155) @@ -1,3 +1,4 @@ +# Maintainer: Jaroslav Lichtblau <[email protected]> # Contributor: Eli Schwartz <[email protected]> _pkgname=rawkit @@ -4,8 +5,8 @@ pkgbase=python-rawkit pkgname=('python-rawkit' 'python2-rawkit') pkgver=0.6.0 -pkgrel=4 -pkgdesc="ctypes based libraw bindings" +pkgrel=5 +pkgdesc="ctypes based libraw bindings " arch=('any') url="https://rawkit.readthedocs.io/" license=('MIT') @@ -12,44 +13,48 @@ depends=('libraw') makedepends=('python-setuptools' 'python2-setuptools') checkdepends=('python-mock' 'python2-mock' 'python-pytest' 'python2-pytest') -source=("${_pkgname}-${pkgver}.tar.gz::https://github.com/photoshell/rawkit/archive/v${pkgver}.tar.gz" - "https://github.com/photoshell/rawkit/pull/140/commits/663e90afa835d398aedd782c87b8cd0bff64bc9f.patch") +source=(${_pkgname}-${pkgver}.tar.gz::https://github.com/photoshell/rawkit/archive/v${pkgver}.tar.gz + https://github.com/photoshell/rawkit/pull/140/commits/663e90afa835d398aedd782c87b8cd0bff64bc9f.patch + libraw19-support.patch) sha256sums=('c07971ddbca9568cef93753ebb06a72b5b622f9b827a5d8bf96f2a137cc4219e' - '1297740c3825d41b394808b3be145d0f41effc415e5dbd6fd1e17e51328ce418') + '1297740c3825d41b394808b3be145d0f41effc415e5dbd6fd1e17e51328ce418' + '104598076673c435f863cd25508060c0f2639b46d0fdcce7fa89b7723af443c5') prepare() { - cd "${srcdir}"/${_pkgname}-${pkgver} + cd "${srcdir}"/${_pkgname}-${pkgver} - # python 3.7 - patch -p1 -i ../663e90afa835d398aedd782c87b8cd0bff64bc9f.patch + # python 3.7 + patch -p1 -i "${srcdir}"/663e90afa835d398aedd782c87b8cd0bff64bc9f.patch + # FS#60708 fix + patch -p1 -i "${srcdir}"/libraw19-support.patch } build() { - cd "${srcdir}"/${_pkgname}-${pkgver} + cd "${srcdir}"/${_pkgname}-${pkgver} - python setup.py build - python2 setup.py build + python setup.py build + python2 setup.py build } check() { - cd "${srcdir}"/${_pkgname}-${pkgver} + cd "${srcdir}"/${_pkgname}-${pkgver} - python -m pytest - python2 -m pytest + python -m pytest + python2 -m pytest } package_python-rawkit() { - depends+=('python') + depends+=('python') - cd "${srcdir}"/${_pkgname}-${pkgver} - python setup.py install --root="${pkgdir}" --optimize=1 --skip-build - install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE + cd "${srcdir}"/${_pkgname}-${pkgver} + python setup.py install --root="${pkgdir}" --optimize=1 --skip-build + install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE } package_python2-rawkit() { - depends+=('python2') + depends+=('python2') - cd "${srcdir}"/${_pkgname}-${pkgver} - python2 setup.py install --root="${pkgdir}" --optimize=1 --skip-build - install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE + cd "${srcdir}"/${_pkgname}-${pkgver} + python2 setup.py install --root="${pkgdir}" --optimize=1 --skip-build + install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE } Added: libraw19-support.patch =================================================================== --- libraw19-support.patch (rev 0) +++ libraw19-support.patch 2018-11-13 20:22:36 UTC (rev 407155) @@ -0,0 +1,843 @@ +--- a/docs/source/index.rst ++++ b/docs/source/index.rst +@@ -48,7 +48,7 @@ Requirements + - Python + + - CPython 2.7+ +- - CPython 3.4+ ++ - CPython 3.5+ + - PyPy 2.5+ + - PyPy3 2.4+ + +@@ -64,8 +65,8 @@ Installing rawkit + First, you'll need to install LibRaw: + + - `libraw` on Arch_ +- - `LibRaw` on Fedora_ 21+ +- - `libraw10` on Ubuntu_ Utopic+ ++ - `LibRaw` on Fedora_ 21+ and EPEL 6 ++ - `libraw-bin` on Ubuntu_ trusty+ + - `libraw-bin` on Debian_ Jessie+ + + Now you can fetch rawkit from PyPi_: +@@ -76,7 +77,7 @@ Now you can fetch rawkit from PyPi_: + + .. _Arch: https://www.archlinux.org/packages/extra/x86_64/libraw/ + .. _Fedora: https://apps.fedoraproject.org/packages/LibRaw +-.. _Ubuntu: http://packages.ubuntu.com/utopic/libraw10 ++.. _Ubuntu: https://packages.ubuntu.com/bionic/libraw-bin + .. _Debian: https://packages.debian.org/stable/graphics/libraw-bin + .. _PyPi: https://pypi.python.org/pypi/rawkit + +--- a/libraw/bindings.py ++++ b/libraw/bindings.py +@@ -6,2 +6,6 @@ + ++import os.path ++import platform ++import sys ++ + from ctypes import * # noqa +@@ -11,2 +15,3 @@ + from libraw.callbacks import data_callback ++from libraw.callbacks import exif_parser_callback + from libraw.callbacks import memory_callback +@@ -17,2 +22,3 @@ + from libraw import structs_18 ++from libraw import structs_19 + +@@ -32,2 +38,12 @@ + libraw = util.find_library('raw') ++ if libraw is None: ++ # Windows (apparently; see #142) ++ libraw = util.find_library('libraw') ++ if libraw is None: ++ # Attempt to guess manually (See #116) ++ shared_lib_ext = {'Linux': '.so', ++ 'Darwin': '.dylib', 'Windows': '.dll'} ++ libraw = os.path.join( ++ sys.prefix, 'lib', 'libraw' + shared_lib_ext[platform.system()]) ++ + try: +@@ -45,2 +61,3 @@ + 18: structs_18, ++ 19: structs_19, + }[self.version_number[1]] +@@ -57,3 +74,3 @@ + +- self.libraw_init.argtypes = [c_int] ++ self.libraw_init.argtypes = [c_uint] + # enum LibRaw_progress +@@ -79,2 +96,7 @@ + self.libraw_close.argtypes = [POINTER(libraw_data_t)] ++ self.libraw_set_exifparser_handler.argtypes = [ ++ POINTER(libraw_data_t), ++ exif_parser_callback, ++ c_void_p, ++ ] + self.libraw_set_memerror_handler.argtypes = [ +--- a/libraw/callbacks.py ++++ b/libraw/callbacks.py +@@ -93,3 +93,33 @@ def progress_cb(data, stage, iteration, expected): + Returns: + _ctypes.PyCFuncPtrType: A C callback. + """ ++ ++exif_parser_callback = CFUNCTYPE( ++ c_void_p, c_int, c_int, c_int, c_uint, c_void_p) ++""" ++A callback that will be called to alert you when EXIF data is parsed. ++ ++ ++.. sourcecode:: python ++ ++ def exif_cb(context, tag, type, len, ord, ifp): ++ pass ++ ++ cb = exif_parser_callback(exif_cb) ++ ++ libraw.libraw_set_exifparser_handler(libraw_data, cb, data) ++ ++Your callback function should map to the LibRaw C callback defintion below: ++ ++.. sourcecode:: c ++ ++ typedef void (*exif_parser_callback)( ++ void *context, int tag, int type, int len, unsigned int ord, void *ifp ++ ); ++ ++Args: ++ callback (function): The Python function to convert to a C callback. ++ ++Returns: ++ _ctypes.PyCFuncPtrType: A C callback. ++""" +--- /dev/null ++++ b/libraw/structs_19.py +@@ -0,0 +1,726 @@ ++""":mod:`libraw.structs` --- LibRaw struct definitions ++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++""" ++ ++from ctypes import * # noqa ++ ++ ++class ph1_t(Structure): ++ ++ """Contains color data read by Phase One cameras.""" ++ _fields_ = [ ++ ('format', c_int), ++ ('key_off', c_int), ++ ('tag_21a', c_int), ++ ('t_black', c_int), ++ ('split_col', c_int), ++ ('black_col', c_int), ++ ('split_row', c_int), ++ ('black_row', c_int), ++ ('tag_210', c_float), ++ ] ++ ++ ++class libraw_iparams_t(Structure): ++ ++ """The primary parameters of the image.""" ++ _fields_ = [ ++ ('guard', c_char * 4), ++ ('make', c_char * 64), ++ ('model', c_char * 64), ++ ('software', c_char * 64), ++ ('raw_count', c_uint), ++ ('dng_version', c_uint), ++ ('is_foveon', c_uint), ++ ('colors', c_int), ++ ('filters', c_uint), ++ ('xtrans', c_char * 6 * 6), ++ ('xtrans_abs', c_char * 6 * 6), ++ ('cdesc', c_char * 5), ++ ('xmplen', c_uint), ++ ('xmpdata', POINTER(c_char)), ++ ] ++ ++ ++class libraw_raw_crop_t(Structure): ++ ++ """Describes the crop of an image.""" ++ _fields_ = [ ++ ('cleft', c_ushort), ++ ('ctop', c_ushort), ++ ('cwidth', c_ushort), ++ ('cheight', c_ushort), ++ ] ++ ++ ++class libraw_image_sizes_t(Structure): ++ ++ """Describes the size of the image.""" ++ _fields_ = [ ++ ('raw_height', c_ushort), ++ ('raw_width', c_ushort), ++ ('height', c_ushort), ++ ('width', c_ushort), ++ ('top_margin', c_ushort), ++ ('left_margin', c_ushort), ++ ('iheight', c_ushort), ++ ('iwidth', c_ushort), ++ ('raw_pitch', c_uint), ++ ('pixel_aspect', c_double), ++ ('flip', c_int), ++ ('mask', c_int * 8 * 4), ++ ('raw_crop', libraw_raw_crop_t), ++ ] ++ ++ ++class libraw_dng_color_t(Structure): ++ ++ _fields_ = [ ++ ('parsedfields', c_uint), ++ ('illuminant', c_ushort), ++ ('calibration', c_float * 4 * 4), ++ ('colormatrix', c_float * 4 * 3), ++ ('forwardmatrix', c_float * 3 * 4), ++ ] ++ ++ ++class libraw_canon_makernotes_t(Structure): ++ ++ _fields_ = [ ++ ('CanonColorDataVer', c_int), ++ ('CanonColorDataSubVer', c_int), ++ ('SpecularWhiteLevel', c_int), ++ ('NormalWhiteLevel', c_int), ++ ('ChannelBlackLevel', c_int * 4), ++ ('AverageBlackLevel', c_int), ++ ('multishot', c_uint * 4), ++ ('MeteringMode', c_short), ++ ('SpotMeteringMode', c_short), ++ ('FlashMeteringMode', c_char), ++ ('FlashExposureLock', c_short), ++ ('ExposureMode', c_short), ++ ('AESetting', c_short), ++ ('HighlightTonePriority', c_char), ++ ('ImageStabilization', c_short), ++ ('FocusMode', c_short), ++ ('AFPoint', c_short), ++ ('FocusContinuous', c_short), ++ ('AFPointsInFocus30D', c_short), ++ ('AFPointsInFocus1D', c_char * 8), ++ ('AFPointsInFocus5D', c_ushort), ++ ('AFAreaMode', c_ushort), ++ ('NumAFPoints', c_ushort), ++ ('ValidAFPoints', c_ushort), ++ ('AFImageWidth', c_ushort), ++ ('AFImageHeight', c_ushort), ++ ('AFAreaWidths', c_short * 61), ++ ('AFAreaHeights', c_short * 61), ++ ('AFAreaXPositions', c_short * 61), ++ ('AFAreaYPositions', c_short * 61), ++ ('AFPointsInFocus', c_short * 4), ++ ('AFPointsSelected', c_short * 4), ++ ('PrimaryAFPoint', c_ushort), ++ ('FlashMode', c_short), ++ ('FlashActivity', c_short), ++ ('FlashBits', c_short), ++ ('ManualFlashOutput', c_short), ++ ('FlashOutput', c_short), ++ ('FlashGuideNumber', c_short), ++ ('ContinuousDrive', c_short), ++ ('SensorWidth', c_short), ++ ('SensorHeight', c_short), ++ ('SensorLeftBorder', c_short), ++ ('SensorTopBorder', c_short), ++ ('SensorRightBorder', c_short), ++ ('SensorBottomBorder', c_short), ++ ('BlackMaskLeftBorder', c_short), ++ ('BlackMaskTopBorder', c_short), ++ ('BlackMaskRightBorder', c_short), ++ ('BlackMaskBottomBorder', c_short), ++ ('AFMicroAdjMode', c_int), ++ ('AFMicroAdjValue', c_float), ++ ] ++ ++ ++class libraw_hasselblad_makernotes_t(Structure): ++ ++ _fields_ = [ ++ ('BaseISO', c_int), ++ ('Gain', c_double), ++ ] ++ ++ ++class libraw_dng_levels_t(Structure): ++ ++ _fields_ = [ ++ ('parsedFields', c_uint), ++ ('dng_cblack', c_uint * 4102), ++ ('dng_black', c_uint), ++ ('dng_whitelevel', c_uint * 4), ++ ('default_crop', c_uint * 4), # Origin and size ++ ('preview_colorspace', c_uint), ++ ('analogbalance', c_float * 4), ++ ] ++ ++ ++class libraw_P1_color_t(Structure): ++ ++ _fields_ = [ ++ ('romm_cam', c_float * 9), ++ ] ++ ++ ++class libraw_colordata_t(Structure): ++ ++ """Describes all color data of the image.""" ++ _fields_ = [ ++ ('curve', c_ushort * 0x10000), ++ ('cblack', c_uint * 4102), ++ ('black', c_uint), ++ ('data_maximum', c_uint), ++ ('maximum', c_uint), ++ ('linear_max', c_long * 4), ++ ('fmaximum', c_float), ++ ('fnorm', c_float), ++ ('white', c_ushort * 8 * 8), ++ ('cam_mul', c_float * 4), ++ ('pre_mul', c_float * 4), ++ ('cmatrix', c_float * 3 * 4), ++ ('ccm', c_float * 3 * 4), ++ ('rgb_cam', c_float * 3 * 4), ++ ('cam_xyz', c_float * 4 * 3), ++ ('phase_one_data', ph1_t), ++ ('flash_used', c_float), ++ ('canon_ev', c_float), ++ ('model2', c_char * 64), ++ ('UniqueCameraModel', c_char * 64), ++ ('LocalizedCameraModel', c_char * 64), ++ ('profile', c_void_p), ++ ('profile_length', c_uint), ++ ('black_stat', c_uint * 8), ++ ('dng_color', libraw_dng_color_t * 2), ++ ('dng_levels', libraw_dng_levels_t), ++ ('baseline_exposure', c_float), ++ ('WB_Coeffs', c_int * 256 * 4), ++ ('WBCT_Coeffs', c_float * 64 * 5), ++ ('P1_color', libraw_P1_color_t * 2), ++ ] ++ ++ ++class libraw_gps_info_t(Structure): ++ ++ """GPS data for the image.""" ++ _fields_ = [ ++ ('latitude', c_float * 3), ++ ('longitude', c_float * 3), ++ ('gpstimestamp', c_float * 3), ++ ('altitude', c_float), ++ ('altref', c_char), ++ ('latref', c_char), ++ ('longref', c_char), ++ ('gpsstatus', c_char), ++ ('gpsparsed', c_char), ++ ] ++ ++ ++class libraw_imgother_t(Structure): ++ ++ """ ++ Information read from the raw file that is unnecessary for raw processing. ++ """ ++ _fields_ = [ ++ ('iso_speed', c_float), ++ ('shutter', c_float), ++ ('aperture', c_float), ++ ('focal_len', c_float), ++ ('timestamp', c_uint), # time_t ++ ('shot_order', c_uint), ++ ('gpsdata', c_uint * 32), ++ ('parsed_gps', libraw_gps_info_t), ++ ('desc', c_char * 512), ++ ('artist', c_char * 64), ++ ('FlashEC', c_float), ++ ('FlashGN', c_float), ++ ('CameraTemperature', c_float), ++ ('SensorTemperature', c_float), ++ ('SensorTemperature2', c_float), ++ ('LensTemperature', c_float), ++ ('AmbientTemperature', c_float), ++ ('BatteryTemperature', c_float), ++ ('exifAmbientTemperature', c_float), ++ ('exifHumidity', c_float), ++ ('exifPressure', c_float), ++ ('exifWaterDepth', c_float), ++ ('exifAcceleration', c_float), ++ ('exifCameraElevationAngle', c_float), ++ ('real_ISO', c_float), ++ ] ++ ++ ++class libraw_thumbnail_t(Structure): ++ ++ """Describes the thumbnail image embedded in the raw file.""" ++ _fields_ = [ ++ ('tformat', c_uint), # LibRaw_thumbnail_formats ++ ('twidth', c_ushort), ++ ('theight', c_ushort), ++ ('tlength', c_uint), ++ ('tcolors', c_int), ++ ('thumb', POINTER(c_char)), ++ ] ++ ++ ++class libraw_internal_output_params_t(Structure): ++ ++ _fields_ = [ ++ ('mix_green', c_uint), ++ ('raw_color', c_uint), ++ ('zero_is_bad', c_uint), ++ ('shrink', c_ushort), ++ ('fuji_width', c_ushort), ++ ] ++ ++ ++class libraw_rawdata_t(Structure): ++ ++ """ ++ Raw image data (after it has been unpacked) and a backup copy of color info ++ used during post processing. ++ """ ++ _fields_ = [ ++ ('raw_alloc', c_void_p), ++ ('raw_image', POINTER(c_ushort)), ++ ('color4_image', POINTER(c_ushort * 4)), ++ ('color3_image', POINTER(c_ushort * 3)), ++ ('float_image', POINTER(c_float)), ++ ('float3_image', POINTER(c_float * 3)), ++ ('float4_image', POINTER(c_float * 4)), ++ ('ph1_cblack', POINTER(c_short * 2)), ++ ('ph1_rblack', POINTER(c_short * 2)), ++ ('iparams', libraw_iparams_t), ++ ('sizes', libraw_image_sizes_t), ++ ('ioparams', libraw_internal_output_params_t), ++ ('color', libraw_colordata_t), ++ ] ++ ++ ++class libraw_output_params_t(Structure): ++ ++ """Output parameters for processing the image with dcraw.""" ++ _fields_ = [ ++ ('greybox', c_uint * 4), # -A x1 y1 x2 y2 ++ ('cropbox', c_uint * 4), # -B x1 y1 x2 y2 ++ ('aber', c_double * 4), # -C ++ ('gamm', c_double * 6), # -g ++ ('user_mul', c_float * 4), # -r mul0 mul1 mul2 mul3 ++ ('shot_select', c_uint), # -s ++ ('bright', c_float), # -b ++ ('threshold', c_float), # -n ++ ('half_size', c_int), # -h ++ ('four_color_rgb', c_int), # -f ++ ('highlight', c_int), # -H ++ ('use_auto_wb', c_int), # -a ++ ('use_camera_wb', c_int), # -w ++ ('use_camera_matrix', c_int), # +M/-M ++ ('output_color', c_int), # -o ++ ('output_profile', c_char_p), # -o ++ ('camera_profile', c_char_p), # -p ++ ('bad_pixels', c_char_p), # -P ++ ('dark_frame', c_char_p), # -K ++ ('output_bps', c_int), # -4 ++ ('output_tiff', c_int), # -T ++ ('user_flip', c_int), # -t ++ ('user_qual', c_int), # -q ++ ('user_black', c_int), # -k ++ ('user_cblack', c_int * 4), ++ ('user_sat', c_int), # -S ++ ++ ('med_passes', c_int), # -m ++ ('auto_bright_thr', c_float), ++ ('adjust_maximum_thr', c_float), ++ ('no_auto_bright', c_int), # -W ++ ('use_fuji_rotate', c_int), # -j ++ ('green_matching', c_int), ++ # DCB parameters ++ ('dcb_iterations', c_int), ++ ('dcb_enhance_fl', c_int), ++ ('fbdd_noiserd', c_int), ++ ('exp_correc', c_int), ++ ('exp_shift', c_float), ++ ('exp_preser', c_float), ++ # Raw speed ++ ('use_rawspeed', c_int), ++ # DNG SDK ++ ('use_dngsdk', c_int), ++ # Disable Auto-scale ++ ('no_auto_scale', c_int), ++ # Disable intepolation ++ ('no_interpolation', c_int), ++ ('raw_processing_options', c_uint), ++ ('sony_arw2_posterization_thr', c_int), ++ # Nikon Coolscan ++ ('coolscan_nef_gamma', c_float), ++ ('p4shot_order', c_char * 5), ++ # Custom camera list ++ ('custom_camera_strings', POINTER(c_char_p)), ++ ] ++ ++ ++class libraw_nikonlens_t(Structure): ++ ++ _fields_ = [ ++ ('NikonEffectiveMaxAp', c_float), ++ ('NikonLensIDNumber', c_ubyte), ++ ('NikonLensFStops', c_ubyte), ++ ('NikonMCUVersion', c_ubyte), ++ ('NikonLensType', c_ubyte), ++ ] ++ ++ ++class libraw_dnglens_t(Structure): ++ ++ _fields_ = [ ++ ('MinFocal', c_float), ++ ('MaxFocal', c_float), ++ ('MaxAp4MinFocal', c_float), ++ ('MaxAp4MaxFocal', c_float), ++ ] ++ ++ ++class libraw_makernotes_lens_t(Structure): ++ ++ _fields_ = [ ++ ('LensID', c_ulonglong), ++ ('Lens', c_char * 128), ++ ('LensFormat', c_ushort), ++ ('LensMount', c_ushort), ++ ('CamID', c_ulonglong), ++ ('CameraFormat', c_ushort), ++ ('CameraMount', c_ushort), ++ ('body', c_char * 64), ++ ('FocalType', c_short), ++ ('LensFeatures_pre', c_char * 16), ++ ('LensFeatures_suf', c_char * 16), ++ ('MinFocal', c_float), ++ ('MaxFocal', c_float), ++ ('MaxAp4MinFocal', c_float), ++ ('MaxAp4MaxFocal', c_float), ++ ('MinAp4MinFocal', c_float), ++ ('MinAp4MaxFocal', c_float), ++ ('MaxAp', c_float), ++ ('MinAp', c_float), ++ ('CurFocal', c_float), ++ ('CurAp', c_float), ++ ('MaxAp4CurFocal', c_float), ++ ('MinAp4CurFocal', c_float), ++ ('MinFocusDistance', c_float), ++ ('FocusRangeIndex', c_float), ++ ('LensFStops', c_float), ++ ('TeleconverterID', c_ulonglong), ++ ('Teleconverter', c_char * 128), ++ ('AdapterID', c_ulonglong), ++ ('Adapter', c_char * 128), ++ ('AttachmentID', c_ulonglong), ++ ('Attachment', c_char * 128), ++ ('CanonFocalUnits', c_short), ++ ('FocalLengthIn35mmFormat', c_float), ++ ] ++ ++ ++class libraw_lensinfo_t(Structure): ++ ++ _fields_ = [ ++ ('MinFocal', c_float), ++ ('MaxFocal', c_float), ++ ('MaxAp4MinFocal', c_float), ++ ('MaxAp4MaxFocal', c_float), ++ ('EXIF_MaxAp', c_float), ++ ('LensMake', c_char * 128), ++ ('Lens', c_char * 128), ++ ('LensSerial', c_char * 128), ++ ('InternalLensSerial', c_char * 128), ++ ('FocalLengthIn35mmFormat', c_ushort), ++ ('nikon', libraw_nikonlens_t), ++ ('dng', libraw_dnglens_t), ++ ('makernotes', libraw_makernotes_lens_t), ++ ] ++ ++ ++class libraw_processed_image_t(Structure): ++ ++ """A container for processed image data.""" ++ _fields_ = [ ++ ('type', c_uint), # Libraw_image_formats ++ ('height', c_ushort), ++ ('width', c_ushort), ++ ('colors', c_ushort), ++ ('bits', c_ushort), ++ ('data_size', c_uint), ++ ('data', c_ubyte * 1), ++ ] ++ ++ ++class libraw_decoder_info_t(Structure): ++ ++ """Describes a raw format decoder name and format.""" ++ _fields_ = [ ++ ('decoder_name', c_char_p), ++ ('decoder_flags', c_uint), ++ ] ++ ++ ++class libraw_fuji_info_t(Structure): ++ ++ _fields_ = [ ++ ('FujiExpoMidPointShift', c_float), ++ ('FujiDynamicRange', c_ushort), ++ ('FujiFilmMode', c_ushort), ++ ('FujiDynamicRangeSetting', c_ushort), ++ ('FujiDevelopmentDynamicRange', c_ushort), ++ ('FujiAutoDynamicRange', c_ushort), ++ ('FocusMode', c_ushort), ++ ('AFMode', c_ushort), ++ ('FocusPixel', c_ushort * 2), ++ ('ImageStabilization', c_ushort * 3), ++ ('FlashMode', c_ushort), ++ ('WB_Preset', c_ushort), ++ ('ShutterType', c_ushort), ++ ('ExrMode', c_ushort), ++ ('Macro', c_ushort), ++ ('Rating', c_uint), ++ ('FrameRate', c_ushort), ++ ('FrameWidth', c_ushort), ++ ('FrameHeight', c_ushort), ++ ] ++ ++ ++class libraw_nikon_makernotes_t(Structure): ++ ++ _fields_ = [ ++ ('ExposureBracketValue', c_double), ++ ('ActiveDLighting', c_ushort), ++ ('ShootingMode', c_ushort), ++ ('ImageStabilization', c_ubyte * 7), ++ ('VibrationReduction', c_ubyte), ++ ('VRMode', c_ubyte), ++ ('FocusMode', c_char * 7), ++ ('AFPoint', c_ubyte), ++ ('AFPointsInFocus', c_ushort), ++ ('ContrastDetectAF', c_ubyte), ++ ('AFAreaMode', c_ubyte), ++ ('PhaseDetectAF', c_ubyte), ++ ('PrimaryAFPoint', c_ubyte), ++ ('AFPointsUsed', c_ubyte * 29), ++ ('AFImageWidth', c_ushort), ++ ('AFImageHeight', c_ushort), ++ ('AFAreaXPposition', c_ushort), ++ ('AFAreaYPosition', c_ushort), ++ ('AFAreaWidth', c_ushort), ++ ('AFAreaHeight', c_ushort), ++ ('ContrastDetectAFInFocus', c_ubyte), ++ ('FlashSetting', c_char * 13), ++ ('FlashType', c_char * 20), ++ ('FlashExposureCompensation', c_ubyte * 4), ++ ('ExternalFlashExposureComp', c_ubyte * 4), ++ ('FlashExposureBracketValue', c_ubyte * 4), ++ ('FlashMode', c_ubyte), ++ ('FlashExposureCompensation2', c_char), ++ ('FlashExposureCompensation3', c_char), ++ ('FlashExposureCompensation4', c_char), ++ ('FlashSource', c_ubyte), ++ ('FlashFirmware', c_ubyte * 2), ++ ('ExternalFlashFlags', c_ubyte), ++ ('FlashControlCommanderMode', c_ubyte), ++ ('FlashOutputAndCompensation', c_ubyte), ++ ('FlashFocalLength', c_ubyte), ++ ('FlashGNDistance', c_ubyte), ++ ('FlashGroupControlMode', c_ubyte * 4), ++ ('FlashGroupOutputAndCompensation', c_ubyte * 4), ++ ('FlashColorFilter', c_ubyte), ++ ('NEFCompression', c_ushort), ++ ('ExposureMode', c_int), ++ ('nMEshots', c_int), ++ ('MEgainOn', c_int), ++ ('ME_WB', c_double * 4), ++ ('AFFineTune', c_ubyte), ++ ('AFFineTuneIndex', c_ubyte), ++ ('AFFineTuneAdj', c_int8), ++ ] ++ ++ ++class libraw_olympus_makernotes_t(Structure): ++ ++ _fields_ = [ ++ ('OlympusCropID', c_int), ++ ('OlympusFrame', c_ushort * 4), ++ ('OlympusSensorCalibration', c_int * 2), ++ ('FocusMode', c_ushort * 2), ++ ('AutoFocus', c_ushort), ++ ('AFPoint', c_ushort), ++ ('AFAreas', c_uint * 64), ++ ('AFPointSelected', c_double * 5), ++ ('AFResult', c_ushort), ++ ('ImageStabilization', c_uint), ++ ('ColorSpace', c_ushort), ++ ('AffineTune', c_ubyte), ++ ('AffineTuneAdj', c_short * 3), ++ ] ++ ++ ++class libraw_panasonic_makernotes_t(Structure): ++ ++ _fields_ = [ ++ # Compression: ++ # 34826 (Panasonic RAW 2): LEICA DIGILUX 2; ++ # 34828 (Panasonic RAW 3): LEICA D-LUX 3; LEICA V-LUX 1; Panasonic DMC-LX1; Panasonic DMC-LX2; Panasonic DMC-FZ30; Panasonic DMC-FZ50; ++ # 34830 (not in exiftool): LEICA DIGILUX 3; Panasonic DMC-L1; ++ # 34316 (Panasonic RAW 1): others (LEICA, Panasonic, YUNEEC); ++ ('Compression', c_ushort), ++ ('BlackLevelDim', c_ushort), ++ ('BlackLevel', c_float * 8), ++ ] ++ ++ ++class libraw_pentax_makernotes_t(Structure): ++ ++ _fields_ = [ ++ ('FocusMode', c_ushort), ++ ('AFPointSelected', c_ushort), ++ ('AFPointsInFocus', c_uint), ++ ('FocusPosition', c_ushort), ++ ('DriveMode', c_ubyte * 4), ++ ('AFAdjustment', c_short), ++ ] ++ ++ ++class libraw_kodak_makernotes_t(Structure): ++ ++ _fields_ = [ ++ ('BlackLevelTop', c_ushort), ++ ('BlackLevelBottom', c_ushort), ++ ('offset_left', c_short), # KDC files, negative values or zeros ++ ('offset_top', c_short), # KDC files, negative values or zeros ++ ('clipBlack', c_ushort), # valid for P712, P850, P880 ++ ('clipWhite', c_ushort), # valid for P712, P850, P880 ++ ('romm_camDaylight', c_float * 3 * 3), ++ ('romm_camTungsten', c_float * 3 * 3), ++ ('romm_camFlourescent', c_float * 3 * 3), ++ ('romm_camFlash', c_float * 3 * 3), ++ ('romm_camCustom', c_float * 3 * 3), ++ ('romm_camAuto', c_float * 3 * 3), ++ ] ++ ++ ++class libraw_sony_info_t(Structure): ++ ++ _fields_ = [ ++ ('SonyCameraType', c_ushort), ++ # 0 if not found/deciphered, 0xa, 0xb, 0xc following exiftool convention ++ ('Sony0x9400_version', c_ubyte), ++ ('Sony0x9400_ReleaseMode2', c_ubyte), ++ ('Sony0x9400_SequenceImageNumber', c_uint), ++ ('Sony0x9400_SequenceLength1', c_ubyte), ++ ('Sony0x9400_SequenceFileNumber', c_uint), ++ ('Sony0x9400_SequenceLength2', c_ubyte), ++ ('raw_crop', libraw_raw_crop_t), ++ ('AFMicroAdjValue', c_int8), ++ ('AFMicroAdjOn', c_int8), ++ ('AFMicroAdjRegisteredLenses;', c_ubyte), ++ ('group2010', c_ushort), ++ ('real_iso_offset', c_ushort), ++ ('firmware', c_float), ++ ('ImageCount3_offset', c_ushort), ++ ('ImageCount3', c_uint), ++ ('ElectronicFrontCurtainShutter', c_uint), ++ ('MeteringMode2', c_ushort), ++ ('SonyDateTime', c_char * 20), ++ ('TimeStamp', c_ubyte * 6), ++ ('ShotNumberSincePowerUp', c_uint), ++ ] ++ ++ ++class libraw_makernotes_t(Structure): ++ ++ _fields_ = [ ++ ('canon', libraw_canon_makernotes_t), ++ ('nikon', libraw_nikon_makernotes_t), ++ ('hasselblad', libraw_hasselblad_makernotes_t), ++ ('fuji', libraw_fuji_info_t), ++ ('olympus', libraw_olympus_makernotes_t), ++ ('sony', libraw_sony_info_t), ++ ('kodak', libraw_kodak_makernotes_t), ++ ('panasonic', libraw_panasonic_makernotes_t), ++ ('pentax', libraw_pentax_makernotes_t), ++ ] ++ ++ ++class libraw_shootinginfo_t(Structure): ++ ++ _fields_ = [ ++ ('DriveMode', c_short), ++ ('FocusMode', c_short), ++ ('MeteringMode', c_short), ++ ('AFPoint', c_short), ++ ('ExposureMode', c_short), ++ ('ImageStabilization', c_short), ++ ('BodySerial', c_char * 64), ++ ('InternalBodySerial', c_char * 64), ++ ] ++ ++ ++class libraw_custom_camera_t(Structure): ++ ++ _fields_ = [ ++ ('fsize', c_uint), ++ ('rw', c_ushort), ++ ('rh', c_ushort), ++ ('lm', c_ubyte), ++ ('tm', c_ubyte), ++ ('rm', c_ubyte), ++ ('bm', c_ubyte), ++ ('lf', c_ubyte), ++ ('cf', c_ubyte), ++ ('max', c_ubyte), ++ ('flags', c_ubyte), ++ ('t_make', c_char * 10), ++ ('t_model', c_char * 20), ++ ('offset', c_ushort) ++ ] ++ ++ ++class libraw_data_t(Structure): ++ ++ """ ++ A container which comprises the data structures that make up libraw's ++ representation of a raw file. ++ """ ++ _fields_ = [ ++ ('image', POINTER(c_ushort * 4)), ++ ('sizes', libraw_image_sizes_t), ++ ('idata', libraw_iparams_t), ++ ('lens', libraw_lensinfo_t), ++ ('makernotes', libraw_makernotes_t), ++ ('shootinginfo', libraw_shootinginfo_t), ++ ('params', libraw_output_params_t), ++ ('progress_flags', c_uint), ++ ('process_warnings', c_uint), ++ ('color', libraw_colordata_t), ++ ('other', libraw_imgother_t), ++ ('thumbnail', libraw_thumbnail_t), ++ ('rawdata', libraw_rawdata_t), ++ ('parent_class', c_void_p), ++ ] ++ ++ ++class fuji_compressed_params(Structure): ++ ++ _fields_ = [ ++ ('q_table', POINTER(c_int8)), # quantization table ++ ('q_points', c_int * 5), # quantization points ++ ('max_bits', c_int), ++ ('min_value', c_int), ++ ('raw_bits', c_int), ++ ('total_values', c_int), ++ ('maxDiff', c_int), ++ ('line_width', c_ushort), ++ ]
