sw/source/filter/html/parcss1.cxx | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-)
New commits: commit 78f6e6f7cc9a30138330ee1b4041480b6f2bbb25 Author: Matteo Casalin <matteo.casa...@yahoo.com> Date: Sun Jan 4 11:18:39 2015 +0100 Simplify CSS1Expression::GetColor for CSS1_RGB case Relies on toInt32 features: * Skip control characters at the beginning of the token * Stop conversion at first non-digit character Also avoid conversion of negative values to 255, due to downcast to unsigned 16-bits value Change-Id: I2029e35dd779220bd3fb74d5173b1482b571f76c Reviewed-on: https://gerrit.libreoffice.org/13730 Tested-by: Michael Stahl <mst...@redhat.com> Reviewed-by: Michael Stahl <mst...@redhat.com> diff --git a/sw/source/filter/html/parcss1.cxx b/sw/source/filter/html/parcss1.cxx index e20424c..4c3767a 100644 --- a/sw/source/filter/html/parcss1.cxx +++ b/sw/source/filter/html/parcss1.cxx @@ -1276,34 +1276,17 @@ bool CSS1Expression::GetColor( Color &rColor ) const break; } - OUString aColorStr(aValue.copy(4, aValue.getLength() - 5)); - - sal_Int32 nPos = 0; - int nCol = 0; - - while( nCol < 3 && nPos < aColorStr.getLength() ) + sal_Int32 nPos = 4; // start after "rgb(" + for ( int nCol = 0; nCol < 3 && nPos > 0; ++nCol ) { - sal_Unicode c; - while( nPos < aColorStr.getLength() && - ((c=aColorStr[nPos]) == ' ' || c == '\t' || - c == '\n' || c== '\r' ) ) - nPos++; - - sal_Int32 nEnd = aColorStr.indexOf( ',', nPos ); - OUString aNumber; - if( nEnd == -1 ) - { - aNumber = aColorStr.copy(nPos); - nPos = aColorStr.getLength(); - } - else + const OUString aNumber = aValue.getToken(0, ',', nPos); + + sal_Int32 nNumber = aNumber.toInt32(); + if( nNumber<0 ) { - aNumber = aColorStr.copy( nPos, nEnd-nPos ); - nPos = nEnd+1; + nNumber = 0; } - - sal_uInt16 nNumber = (sal_uInt16)aNumber.toInt32(); - if( aNumber.indexOf('%') >= 0 ) + else if( aNumber.indexOf('%') >= 0 ) { if( nNumber > 100 ) nNumber = 100; @@ -1313,8 +1296,7 @@ bool CSS1Expression::GetColor( Color &rColor ) const else if( nNumber > 255 ) nNumber = 255; - aColors[nCol] = (sal_uInt8)nNumber; - nCol ++; + aColors[nCol] = static_cast<sal_uInt8>(nNumber); } rColor.SetRed( aColors[0] ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits