pkgsrc/print/podofo/patches/patch-src_base_PdfVariant.cpp
joerg 609739ab94 Merge two patches already upstream:
- use a more compact encoding for reals by dropping trailing zeros after
  the decimal point.
- ensure the BaseFont property of the standard PS fonts is preserved.

Bump revision.
2013-07-16 21:28:43 +00:00

30 lines
1.1 KiB
C++

$NetBSD: patch-src_base_PdfVariant.cpp,v 1.1 2013/07/16 21:28:43 joerg Exp $
--- src/base/PdfVariant.cpp.orig 2011-04-19 17:34:25.000000000 +0000
+++ src/base/PdfVariant.cpp
@@ -267,8 +267,24 @@ void PdfVariant::Write( PdfOutputDevice*
std::ostringstream oss;
PdfLocaleImbue(oss);
oss << std::fixed << m_Data.dNumber;
+ size_t len = oss.str().size();
- pDevice->Write( oss.str().c_str(), oss.str().size() );
+ if( (eWriteMode & ePdfWriteMode_Compact) == ePdfWriteMode_Compact &&
+ oss.str().find('.') != string::npos )
+ {
+ const char *str = oss.str().c_str();
+ while( str[len - 1] == '0' )
+ --len;
+ if( str[len - 1] == '.' )
+ --len;
+ if( len == 0 )
+ {
+ pDevice->Write( "0", 1 );
+ break;
+ }
+ }
+
+ pDevice->Write( oss.str().c_str(), len );
break;
}
case ePdfDataType_HexString: