Author: alg Date: Wed Oct 8 11:03:03 2014 New Revision: 1630069 URL: http://svn.apache.org/r1630069 Log: i125447 corrected some string to number conversion tools to correct svg:d imports
Modified: openoffice/trunk/main/basegfx/source/inc/stringconversiontools.hxx openoffice/trunk/main/basegfx/source/tools/stringconversiontools.cxx Modified: openoffice/trunk/main/basegfx/source/inc/stringconversiontools.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/source/inc/stringconversiontools.hxx?rev=1630069&r1=1630068&r2=1630069&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/source/inc/stringconversiontools.hxx (original) +++ openoffice/trunk/main/basegfx/source/inc/stringconversiontools.hxx Wed Oct 8 11:03:03 2014 @@ -38,19 +38,19 @@ namespace basegfx const ::rtl::OUString& rStr, const sal_Int32 nLen); - inline bool lcl_isOnNumberChar(const sal_Unicode aChar, bool bSignAllowed = true) + inline bool lcl_isOnNumberChar(const sal_Unicode aChar, bool bSignAllowed = true, bool bDotAllowed = true) { const bool bPredicate( (sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar) || (bSignAllowed && sal_Unicode('+') == aChar) - || (bSignAllowed && sal_Unicode('-') == aChar) ); + || (bSignAllowed && sal_Unicode('-') == aChar) + || (bDotAllowed && sal_Unicode('.') == aChar)); return bPredicate; } - inline bool lcl_isOnNumberChar(const ::rtl::OUString& rStr, const sal_Int32 nPos, bool bSignAllowed = true) + inline bool lcl_isOnNumberChar(const ::rtl::OUString& rStr, const sal_Int32 nPos, bool bSignAllowed = true, bool bDotAllowed = true) { - return lcl_isOnNumberChar(rStr[nPos], - bSignAllowed); + return lcl_isOnNumberChar(rStr[nPos], bSignAllowed, bDotAllowed); } bool lcl_getDoubleChar(double& o_fRetval, Modified: openoffice/trunk/main/basegfx/source/tools/stringconversiontools.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/source/tools/stringconversiontools.cxx?rev=1630069&r1=1630068&r2=1630069&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/source/tools/stringconversiontools.cxx (original) +++ openoffice/trunk/main/basegfx/source/tools/stringconversiontools.cxx Wed Oct 8 11:03:03 2014 @@ -51,37 +51,53 @@ namespace basegfx } } - bool lcl_getDoubleChar(double& o_fRetval, - sal_Int32& io_rPos, - const ::rtl::OUString& rStr) + bool lcl_getDoubleChar(double& o_fRetval, sal_Int32& io_rPos, const ::rtl::OUString& rStr) { sal_Unicode aChar( rStr[io_rPos] ); ::rtl::OUStringBuffer sNumberString; + // sign if(sal_Unicode('+') == aChar || sal_Unicode('-') == aChar) { sNumberString.append(rStr[io_rPos]); aChar = rStr[++io_rPos]; } - while((sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar) - || sal_Unicode('.') == aChar) + // numbers before point + while(sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar) + { + sNumberString.append(rStr[io_rPos]); + aChar = rStr[++io_rPos]; + } + + // point + if(sal_Unicode('.') == aChar) + { + sNumberString.append(rStr[io_rPos]); + aChar = rStr[++io_rPos]; + } + + // numbers after point + while(sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar) { sNumberString.append(rStr[io_rPos]); aChar = rStr[++io_rPos]; } + // 'e' if(sal_Unicode('e') == aChar || sal_Unicode('E') == aChar) { sNumberString.append(rStr[io_rPos]); aChar = rStr[++io_rPos]; - + + // sign for 'e' if(sal_Unicode('+') == aChar || sal_Unicode('-') == aChar) { sNumberString.append(rStr[io_rPos]); aChar = rStr[++io_rPos]; } + // number for 'e' while(sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar) { sNumberString.append(rStr[io_rPos]); @@ -153,34 +169,53 @@ namespace basegfx { bool bSignAllowed(true); - while(io_rPos < nLen && lcl_isOnNumberChar(rStr, io_rPos, bSignAllowed)) + while(io_rPos < nLen && lcl_isOnNumberChar(rStr, io_rPos, bSignAllowed, true)) { bSignAllowed = false; ++io_rPos; } } - void lcl_skipDouble(sal_Int32& io_rPos, - const ::rtl::OUString& rStr) + void lcl_skipDouble(sal_Int32& io_rPos, const ::rtl::OUString& rStr) { sal_Unicode aChar( rStr[io_rPos] ); + // sign if(sal_Unicode('+') == aChar || sal_Unicode('-') == aChar) + { aChar = rStr[++io_rPos]; + } + + // numbers before point + while(sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar) + { + aChar = rStr[++io_rPos]; + } + + // point + if(sal_Unicode('.') == aChar) + { + aChar = rStr[++io_rPos]; + } - while((sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar) - || sal_Unicode('.') == aChar) + // numbers after point + while(sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar) { aChar = rStr[++io_rPos]; } + // 'e' if(sal_Unicode('e') == aChar || sal_Unicode('E') == aChar) { aChar = rStr[++io_rPos]; - + + // sign of 'e' if(sal_Unicode('+') == aChar || sal_Unicode('-') == aChar) + { aChar = rStr[++io_rPos]; + } + // numbers for 'e' while(sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar) { aChar = rStr[++io_rPos]; @@ -199,7 +234,7 @@ namespace basegfx const sal_Int32 aLen( rStr.getLength() ); if(aLen) { - if( lcl_isOnNumberChar(rStr.charAt(aLen - 1), false) && + if( lcl_isOnNumberChar(rStr.charAt(aLen - 1), false, true) && fValue >= 0.0 ) { rStr.append( sal_Unicode(' ') );