Project

General

Profile

Bug #1021 ยป honorMultiByteChar.diff

Thomas Schmidt, 06 Jan 2015 14:07

View differences:

src/actions.cpp (Arbeitskopie)
149 149
             exists and shouldn't be overwritten, else 0.
150 150
     */
151 151
    int dontOverwrite(const std::string& path);
152

  
153
    /*!
154
      @brief Output a text with a given minimum number of chars, honoring
155
             multi-byte characters correctly. Replace code in the form
156
             os << setw(width) << myString
157
             with
158
             os << make_pair( myString, width)
159
     */
160
    std::ostream& operator<<( std::ostream& os, std::pair< const std::string&, unsigned int> strAndWidth);
152 161
}
153 162

  
154 163
// *****************************************************************************
......
443 452
        if (Params::instance().files_.size() > 1) {
444 453
            std::cout << std::setw(20) << path_ << " ";
445 454
        }
446
        std::cout << std::setw(align_)
447
                  << label << ": ";
455
        std::cout << std::make_pair( label, align_)
456
                  << ": ";
448 457
    }
449 458

  
450 459
    int Print::printTag(const Exiv2::ExifData& exifData,
......
2009 2018
        return 0;
2010 2019
    }
2011 2020

  
2021
	std::ostream& operator<<( std::ostream& os, std::pair< const std::string&, unsigned int> strAndWidth)
2022
	{
2023
	  const std::string& str( strAndWidth.first);
2024
	  unsigned int minChCount( strAndWidth.second);
2025
	  unsigned int count = mbstowcs( NULL, str.c_str(), 0); // returns 0xFFFFFFFF on error
2026
	  if( count < minChCount)
2027
	  {
2028
		minChCount += str.size() - count;
2029
	  }
2030
	  return os << std::setw( minChCount) << str;
2031
	}
2032

  
2012 2033
}
    (1-1/1)