inline void SET_DNG_TAG_GPS_URATIONAL(const JP4& jp4, int TAG, dng_urational* DEST) { ExifEntry* e = FIND_GPS_TAG(jp4, TAG); if (e==NULL) return; ExifRational r = exif_get_rational(e->data, exif_data_get_byte_order(jp4.exifData())); dng_urational dngR(r.numerator, r.denominator); *DEST = dngR; }
inline void SET_DNG_TAG_GPS_URATIONAL_ARRAY_3(const JP4& jp4, int TAG, dng_urational(*DEST)[3]) { ExifEntry* e = FIND_GPS_TAG(jp4, TAG); if (e==NULL) return; if (e->components != 3) return; ExifRational r1 = exif_get_rational(e->data, exif_data_get_byte_order(jp4.exifData())); dng_urational dngR1(r1.numerator, r1.denominator); (*DEST)[0] = dngR1; ExifRational r2 = exif_get_rational(e->data+exif_format_get_size(e->format), exif_data_get_byte_order(jp4.exifData())); dng_urational dngR2(r2.numerator, r2.denominator); (*DEST)[1] = dngR2; ExifRational r3 = exif_get_rational(e->data+2*exif_format_get_size(e->format), exif_data_get_byte_order(jp4.exifData())); dng_urational dngR3(r3.numerator, r3.denominator); (*DEST)[2] = dngR3; }
inline void SET_DNG_TAG_GPS_UINT32(const JP4& jp4, int TAG, uint32* DEST) { ExifEntry* e = FIND_GPS_TAG(jp4, TAG); if (e==NULL) return; *DEST = exif_get_long(e->data, exif_data_get_byte_order(jp4.exifData())); }