1111#include " canonmn_int.hpp"
1212#include " casiomn_int.hpp"
1313#include " fujimn_int.hpp"
14+ #include " image_int.hpp"
1415#include " minoltamn_int.hpp"
1516#include " nikonmn_int.hpp"
1617#include " olympusmn_int.hpp"
@@ -2908,6 +2909,7 @@ std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*)
29082909 if (value.typeId () != unsignedRational)
29092910 return os << " (" << value << " )" ;
29102911
2912+ using Exiv2::operator <<;
29112913 URational t = value.toRational ();
29122914 if (t.first == 0 || t.second == 0 ) {
29132915 os << " (" << t << " )" ;
@@ -2924,18 +2926,10 @@ std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*)
29242926}
29252927
29262928std::ostream& print0x829d (std::ostream& os, const Value& value, const ExifData*) {
2927- std::ios::fmtflags f (os.flags ());
29282929 Rational fnumber = value.toRational ();
2929- if (fnumber.second != 0 ) {
2930- std::ostringstream oss;
2931- oss.copyfmt (os);
2932- os << " F" << std::setprecision (2 ) << static_cast <float >(fnumber.first ) / fnumber.second ;
2933- os.copyfmt (oss);
2934- } else {
2935- os << " (" << value << " )" ;
2936- }
2937- os.flags (f);
2938- return os;
2930+ if (fnumber.second != 0 )
2931+ return os << stringFormat (" F{:.2}" , static_cast <float >(fnumber.first ) / fnumber.second );
2932+ return os << " (" << value << " )" ;
29392933}
29402934
29412935// ! ExposureProgram, tag 0x8822
@@ -2999,16 +2993,9 @@ std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*)
29992993}
30002994
30012995std::ostream& print0x9202 (std::ostream& os, const Value& value, const ExifData*) {
3002- std::ios::fmtflags f (os.flags ());
3003- if (value.count () == 0 || value.toRational ().second == 0 ) {
2996+ if (value.count () == 0 || value.toRational ().second == 0 )
30042997 return os << " (" << value << " )" ;
3005- }
3006- std::ostringstream oss;
3007- oss.copyfmt (os);
3008- os << " F" << std::setprecision (2 ) << fnumber (value.toFloat ());
3009- os.copyfmt (oss);
3010- os.flags (f);
3011- return os;
2998+ return os << stringFormat (" F{:.2}" , fnumber (value.toFloat ()));
30122999}
30133000
30143001std::ostream& print0x9204 (std::ostream& os, const Value& value, const ExifData*) {
@@ -3032,22 +3019,14 @@ std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*)
30323019}
30333020
30343021std::ostream& print0x9206 (std::ostream& os, const Value& value, const ExifData*) {
3035- std::ios::fmtflags f (os.flags ());
30363022 Rational distance = value.toRational ();
3037- if (distance.first == 0 ) {
3038- os << _ (" Unknown" );
3039- } else if (static_cast <uint32_t >(distance.first ) == 0xffffffff ) {
3040- os << _ (" Infinity" );
3041- } else if (distance.second != 0 ) {
3042- std::ostringstream oss;
3043- oss.copyfmt (os);
3044- os << std::fixed << std::setprecision (2 ) << static_cast <float >(distance.first ) / distance.second << " m" ;
3045- os.copyfmt (oss);
3046- } else {
3047- os << " (" << value << " )" ;
3048- }
3049- os.flags (f);
3050- return os;
3023+ if (distance.first == 0 )
3024+ return os << _ (" Unknown" );
3025+ if (static_cast <uint32_t >(distance.first ) == 0xffffffff )
3026+ return os << _ (" Infinity" );
3027+ if (distance.second != 0 )
3028+ return os << stringFormat (" {:.2f} m" , static_cast <float >(distance.first ) / distance.second );
3029+ return os << " (" << value << " )" ;
30513030}
30523031
30533032// ! MeteringMode, tag 0x9207
@@ -3066,18 +3045,10 @@ std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData*
30663045}
30673046
30683047std::ostream& print0x920a (std::ostream& os, const Value& value, const ExifData*) {
3069- std::ios::fmtflags f (os.flags ());
30703048 Rational length = value.toRational ();
3071- if (length.second != 0 ) {
3072- std::ostringstream oss;
3073- oss.copyfmt (os);
3074- os << std::fixed << std::setprecision (1 ) << static_cast <float >(length.first ) / length.second << " mm" ;
3075- os.copyfmt (oss);
3076- } else {
3077- os << " (" << value << " )" ;
3078- }
3079- os.flags (f);
3080- return os;
3049+ if (length.second != 0 )
3050+ return os << stringFormat (" {:.1f} mm" , static_cast <float >(length.first ) / length.second );
3051+ return os << " (" << value << " )" ;
30813052}
30823053
30833054// ! ColorSpace, tag 0xa001
@@ -3158,26 +3129,16 @@ std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData*
31583129}
31593130
31603131std::ostream& print0xa404 (std::ostream& os, const Value& value, const ExifData*) {
3161- std::ios::fmtflags f (os.flags ());
31623132 Rational zoom = value.toRational ();
3163- if (zoom.second == 0 ) {
3164- os << _ (" Digital zoom not used" );
3165- } else {
3166- std::ostringstream oss;
3167- oss.copyfmt (os);
3168- os << std::fixed << std::setprecision (1 ) << static_cast <float >(zoom.first ) / zoom.second ;
3169- os.copyfmt (oss);
3170- }
3171- os.flags (f);
3172- return os;
3133+ if (zoom.second == 0 )
3134+ return os << _ (" Digital zoom not used" );
3135+ return os << stringFormat (" {:.1f}" , static_cast <float >(zoom.first ) / zoom.second );
31733136}
31743137
31753138std::ostream& print0xa405 (std::ostream& os, const Value& value, const ExifData*) {
3176- if (auto length = value.toInt64 (); length == 0 )
3177- os << _ (" Unknown" );
3178- else
3179- os << length << " .0 mm" ;
3180- return os;
3139+ if (auto length = value.toInt64 (); length != 0 )
3140+ return os << length << " .0 mm" ;
3141+ return os << _ (" Unknown" );
31813142}
31823143
31833144// ! SceneCaptureType, tag 0xa406
0 commit comments