[Libreoffice-commits] core.git: Branch 'aoo/trunk' - basegfx/source
Armin Le Grand
alg at apache.org
Wed Oct 8 05:07:41 PDT 2014
basegfx/source/inc/stringconversiontools.hxx | 10 ++--
basegfx/source/tools/stringconversiontools.cxx | 57 ++++++++++++++++++++-----
2 files changed, 51 insertions(+), 16 deletions(-)
New commits:
commit f077f99da3cb2903fa903dcf30e6cfd714fd009c
Author: Armin Le Grand <alg at apache.org>
Date: Wed Oct 8 11:03:03 2014 +0000
i125447 corrected some string to number conversion tools to correct svg:d imports
diff --git a/basegfx/source/inc/stringconversiontools.hxx b/basegfx/source/inc/stringconversiontools.hxx
index 568772f..d18ccd3 100755
--- a/basegfx/source/inc/stringconversiontools.hxx
+++ b/basegfx/source/inc/stringconversiontools.hxx
@@ -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,
diff --git a/basegfx/source/tools/stringconversiontools.cxx b/basegfx/source/tools/stringconversiontools.cxx
index 01fbf26..08c023b 100755
--- a/basegfx/source/tools/stringconversiontools.cxx
+++ b/basegfx/source/tools/stringconversiontools.cxx
@@ -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];
+ }
- while((sal_Unicode('0') <= aChar && sal_Unicode('9') >= aChar)
- || sal_Unicode('.') == aChar)
+ // 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];
+ }
+
+ // 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(' ') );
More information about the Libreoffice-commits
mailing list