Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
71e021c4
Kaydet (Commit)
71e021c4
authored
Ara 13, 2000
tarafından
Armin Weiss
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
#81908# corrected and cleanedup import/export of int and double numbers
üst
e6e6082e
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
147 additions
and
138 deletions
+147
-138
xexptran.cxx
xmloff/source/draw/xexptran.cxx
+147
-138
No files found.
xmloff/source/draw/xexptran.cxx
Dosyayı görüntüle @
71e021c4
...
...
@@ -2,9 +2,9 @@
*
* $RCSfile: xexptran.cxx,v $
*
* $Revision: 1.
3
$
* $Revision: 1.
4
$
*
* last change: $Author: aw $ $Date: 2000-12-
07 15:15:53
$
* last change: $Author: aw $ $Date: 2000-12-
13 11:02:34
$
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
...
...
@@ -86,7 +86,7 @@ using namespace ::com::sun::star;
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// parsing help functions
, no clas
s
// parsing help functions
for simple char
s
void
Imp_SkipSpaces
(
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
)
{
while
(
rPos
<
nLen
...
...
@@ -115,63 +115,51 @@ void Imp_SkipSpacesAndClosingBraces(const UniString& rStr, xub_StrLen& rPos, con
rPos
++
;
}
sal_Bool
Imp_IsOnNumberChar
(
const
UniString
&
rStr
,
const
xub_StrLen
nPos
,
BOOL
bSignIsNumber
=
TRUE
,
BOOL
bPointIsNumber
=
FALSE
)
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// parsing help functions for integer numbers
sal_Bool
Imp_IsOnNumberChar
(
const
UniString
&
rStr
,
const
xub_StrLen
nPos
,
BOOL
bSignAllowed
=
TRUE
)
{
sal_Unicode
aChar
(
rStr
.
GetChar
(
nPos
));
if
((
sal_Unicode
(
'0'
)
<=
aChar
&&
sal_Unicode
(
'9'
)
>=
aChar
)
||
(
bSign
IsNumber
&&
(
sal_Unicode
(
'-'
)
==
aChar
||
sal_Unicode
(
'+'
)
==
aChar
)
)
||
(
b
PointIsNumber
&&
sal_Unicode
(
'.
'
)
==
aChar
)
||
(
bSign
Allowed
&&
sal_Unicode
(
'+'
)
==
aChar
)
||
(
b
SignAllowed
&&
sal_Unicode
(
'-
'
)
==
aChar
)
)
return
TRUE
;
return
FALSE
;
}
void
Imp_SkipNumber
(
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
,
BOOL
bSignIsNumber
=
TRUE
,
BOOL
bPointIsNumber
=
FALSE
)
void
Imp_SkipNumber
(
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
)
{
sal_Bool
bFirstSign
(
TRUE
);
BOOL
bSignAllowed
(
TRUE
);
while
(
rPos
<
nLen
&&
Imp_IsOnNumberChar
(
rStr
,
rPos
,
bSign
IsNumber
&&
bFirstSign
,
bPointIsNumber
))
while
(
rPos
<
nLen
&&
Imp_IsOnNumberChar
(
rStr
,
rPos
,
bSign
Allowed
))
{
bSignAllowed
=
FALSE
;
rPos
++
;
bFirstSign
=
FALSE
;
}
}
double
Imp_GetNumberChar
(
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
,
const
SvXMLUnitConverter
&
rConv
,
double
fRetval
,
BOOL
bSignIsNumber
=
TRUE
,
BOOL
bPointIsNumber
=
FALSE
)
void
Imp_SkipNumberAndSpacesAndCommas
(
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
)
{
UniString
aNumberStr
;
sal_Bool
bFirstSign
(
TRUE
);
while
(
rPos
<
nLen
&&
Imp_IsOnNumberChar
(
rStr
,
rPos
,
bSignIsNumber
&&
bFirstSign
,
TRUE
))
{
aNumberStr
.
Append
(
rStr
.
GetChar
(
rPos
++
));
bFirstSign
=
FALSE
;
}
if
(
aNumberStr
.
Len
())
{
rConv
.
convertNumber
(
fRetval
,
aNumberStr
);
}
return
fRetval
;
Imp_SkipNumber
(
rStr
,
rPos
,
nLen
);
Imp_SkipSpacesAndCommas
(
rStr
,
rPos
,
nLen
);
}
sal_Int32
Imp_GetNumberChar
(
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
,
const
SvXMLUnitConverter
&
rConv
,
sal_Int32
nRetval
,
BOOL
bSignIsNumber
=
TRUE
,
BOOL
bPointIsNumber
=
FALSE
)
const
SvXMLUnitConverter
&
rConv
,
sal_Int32
nRetval
)
{
UniString
aNumberStr
;
sal_Bool
bFirstSign
(
TRUE
);
BOOL
bCharValid
(
TRUE
);
BOOL
bSignAllowed
(
TRUE
);
while
(
rPos
<
nLen
&&
Imp_IsOnNumberChar
(
rStr
,
rPos
,
bSign
IsNumber
&&
bFirstSign
,
FALSE
))
while
(
rPos
<
nLen
&&
Imp_IsOnNumberChar
(
rStr
,
rPos
,
bSign
Allowed
))
{
bSignAllowed
=
FALSE
;
aNumberStr
.
Append
(
rStr
.
GetChar
(
rPos
++
));
bFirstSign
=
FALSE
;
}
if
(
aNumberStr
.
Len
())
...
...
@@ -180,17 +168,65 @@ sal_Int32 Imp_GetNumberChar(const UniString& rStr, xub_StrLen& rPos, const xub_S
return
nRetval
;
}
void
Imp_PutNumberChar
(
UniString
&
rStr
,
const
SvXMLUnitConverter
&
rConv
,
double
f
Value
)
void
Imp_PutNumberChar
(
UniString
&
rStr
,
const
SvXMLUnitConverter
&
rConv
,
sal_Int32
n
Value
)
{
OUStringBuffer
sStringBuffer
;
rConv
.
convertNumber
(
sStringBuffer
,
f
Value
);
rConv
.
convertNumber
(
sStringBuffer
,
n
Value
);
rStr
+=
UniString
(
sStringBuffer
.
makeStringAndClear
());
}
void
Imp_PutNumberChar
(
UniString
&
rStr
,
const
SvXMLUnitConverter
&
rConv
,
sal_Int32
nValue
)
void
Imp_PutNumberCharWithSpace
(
UniString
&
rStr
,
const
SvXMLUnitConverter
&
rConv
,
sal_Int32
nValue
)
{
const
xub_StrLen
aLen
(
rStr
.
Len
());
if
(
aLen
)
if
(
Imp_IsOnNumberChar
(
rStr
,
aLen
-
1
,
FALSE
)
&&
nValue
>=
0
)
rStr
+=
sal_Unicode
(
' '
);
Imp_PutNumberChar
(
rStr
,
rConv
,
nValue
);
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// parsing help functions for double numbers
sal_Bool
Imp_IsOnDoubleChar
(
const
UniString
&
rStr
,
const
xub_StrLen
nPos
)
{
sal_Unicode
aChar
(
rStr
.
GetChar
(
nPos
));
if
((
sal_Unicode
(
'0'
)
<=
aChar
&&
sal_Unicode
(
'9'
)
>=
aChar
)
||
sal_Unicode
(
'+'
)
==
aChar
||
sal_Unicode
(
'-'
)
==
aChar
||
sal_Unicode
(
'.'
)
==
aChar
||
sal_Unicode
(
'e'
)
==
aChar
||
sal_Unicode
(
'E'
)
==
aChar
)
return
TRUE
;
return
FALSE
;
}
void
Imp_SkipDouble
(
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
)
{
while
(
rPos
<
nLen
&&
Imp_IsOnDoubleChar
(
rStr
,
rPos
))
rPos
++
;
}
double
Imp_GetDoubleChar
(
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
,
const
SvXMLUnitConverter
&
rConv
,
double
fRetval
)
{
UniString
aNumberStr
;
while
(
rPos
<
nLen
&&
Imp_IsOnDoubleChar
(
rStr
,
rPos
))
aNumberStr
.
Append
(
rStr
.
GetChar
(
rPos
++
));
if
(
aNumberStr
.
Len
())
rConv
.
convertNumber
(
fRetval
,
aNumberStr
);
return
fRetval
;
}
void
Imp_PutDoubleChar
(
UniString
&
rStr
,
const
SvXMLUnitConverter
&
rConv
,
double
fValue
)
{
OUStringBuffer
sStringBuffer
;
rConv
.
convertNumber
(
sStringBuffer
,
n
Value
);
rConv
.
convertNumber
(
sStringBuffer
,
f
Value
);
rStr
+=
UniString
(
sStringBuffer
.
makeStringAndClear
());
}
...
...
@@ -332,7 +368,7 @@ const OUString& SdXMLImExTransform2D::GetExportString(const SvXMLUnitConverter&
case
IMP_SDXMLEXP_TRANSOBJ2D_ROTATE
:
{
aNewString
+=
UniString
::
CreateFromAscii
(
"rotate ("
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj2DRotate
*
)
pObj
)
->
mfRotate
);
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj2DRotate
*
)
pObj
)
->
mfRotate
);
aNewString
+=
sal_Unicode
(
')'
);
break
;
}
...
...
@@ -401,7 +437,7 @@ SdXMLImExTransform2D::SdXMLImExTransform2D(const OUString& rNew, const SvXMLUnit
nPos
+=
6
;
Imp_SkipSpacesAndOpeningBraces
(
aStr
,
nPos
,
nLen
);
fValue
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
fValue
,
TRUE
,
TRUE
);
fValue
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
fValue
);
if
(
fValue
!=
0.0
)
maList
.
Insert
(
new
ImpSdXMLExpTransObj2DRotate
(
fValue
),
LIST_APPEND
);
...
...
@@ -613,43 +649,43 @@ const OUString& SdXMLImExTransform3D::GetExportString(const SvXMLUnitConverter&
case
IMP_SDXMLEXP_TRANSOBJ3D_ROTATE_X
:
{
aNewString
+=
UniString
::
CreateFromAscii
(
"rotatex ("
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DRotateX
*
)
pObj
)
->
mfRotateX
);
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DRotateX
*
)
pObj
)
->
mfRotateX
);
aNewString
+=
sal_Unicode
(
')'
);
break
;
}
case
IMP_SDXMLEXP_TRANSOBJ3D_ROTATE_Y
:
{
aNewString
+=
UniString
::
CreateFromAscii
(
"rotatey ("
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DRotateY
*
)
pObj
)
->
mfRotateY
);
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DRotateY
*
)
pObj
)
->
mfRotateY
);
aNewString
+=
sal_Unicode
(
')'
);
break
;
}
case
IMP_SDXMLEXP_TRANSOBJ3D_ROTATE_Z
:
{
aNewString
+=
UniString
::
CreateFromAscii
(
"rotatez ("
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DRotateZ
*
)
pObj
)
->
mfRotateZ
);
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DRotateZ
*
)
pObj
)
->
mfRotateZ
);
aNewString
+=
sal_Unicode
(
')'
);
break
;
}
case
IMP_SDXMLEXP_TRANSOBJ3D_SCALE
:
{
aNewString
+=
UniString
::
CreateFromAscii
(
"scale ("
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DScale
*
)
pObj
)
->
maScale
.
X
());
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DScale
*
)
pObj
)
->
maScale
.
X
());
aNewString
+=
sal_Unicode
(
' '
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DScale
*
)
pObj
)
->
maScale
.
Y
());
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DScale
*
)
pObj
)
->
maScale
.
Y
());
aNewString
+=
sal_Unicode
(
' '
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DScale
*
)
pObj
)
->
maScale
.
Z
());
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DScale
*
)
pObj
)
->
maScale
.
Z
());
aNewString
+=
sal_Unicode
(
')'
);
break
;
}
case
IMP_SDXMLEXP_TRANSOBJ3D_TRANSLATE
:
{
aNewString
+=
UniString
::
CreateFromAscii
(
"translate ("
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DTranslate
*
)
pObj
)
->
maTranslate
.
X
());
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DTranslate
*
)
pObj
)
->
maTranslate
.
X
());
aNewString
+=
sal_Unicode
(
' '
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DTranslate
*
)
pObj
)
->
maTranslate
.
Y
());
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DTranslate
*
)
pObj
)
->
maTranslate
.
Y
());
aNewString
+=
sal_Unicode
(
' '
);
Imp_Put
Number
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DTranslate
*
)
pObj
)
->
maTranslate
.
Z
());
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DTranslate
*
)
pObj
)
->
maTranslate
.
Z
());
aNewString
+=
sal_Unicode
(
')'
);
break
;
}
...
...
@@ -660,7 +696,7 @@ const OUString& SdXMLImExTransform3D::GetExportString(const SvXMLUnitConverter&
{
for
(
sal_uInt16
b
(
0
);
b
<
3
;
b
++
)
{
Imp_Put
Number
Char
(
aNewString
,
rConv
,
Imp_Put
Double
Char
(
aNewString
,
rConv
,
((
ImpSdXMLExpTransObj3DMatrix
*
)
pObj
)
->
maMatrix
[
a
][
b
]);
if
(
a
!=
2
||
b
!=
2
)
aNewString
+=
sal_Unicode
(
' '
);
...
...
@@ -709,7 +745,7 @@ SdXMLImExTransform3D::SdXMLImExTransform3D(const OUString& rNew, const SvXMLUnit
nPos
+=
7
;
Imp_SkipSpacesAndOpeningBraces
(
aStr
,
nPos
,
nLen
);
fValue
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
fValue
,
TRUE
,
TRUE
);
fValue
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
fValue
);
if
(
fValue
!=
0.0
)
maList
.
Insert
(
new
ImpSdXMLExpTransObj3DRotateX
(
fValue
),
LIST_APPEND
);
...
...
@@ -722,7 +758,7 @@ SdXMLImExTransform3D::SdXMLImExTransform3D(const OUString& rNew, const SvXMLUnit
nPos
+=
7
;
Imp_SkipSpacesAndOpeningBraces
(
aStr
,
nPos
,
nLen
);
fValue
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
fValue
,
TRUE
,
TRUE
);
fValue
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
fValue
);
if
(
fValue
!=
0.0
)
maList
.
Insert
(
new
ImpSdXMLExpTransObj3DRotateY
(
fValue
),
LIST_APPEND
);
...
...
@@ -735,7 +771,7 @@ SdXMLImExTransform3D::SdXMLImExTransform3D(const OUString& rNew, const SvXMLUnit
nPos
+=
7
;
Imp_SkipSpacesAndOpeningBraces
(
aStr
,
nPos
,
nLen
);
fValue
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
fValue
,
TRUE
,
TRUE
);
fValue
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
fValue
);
if
(
fValue
!=
0.0
)
maList
.
Insert
(
new
ImpSdXMLExpTransObj3DRotateZ
(
fValue
),
LIST_APPEND
);
...
...
@@ -748,11 +784,11 @@ SdXMLImExTransform3D::SdXMLImExTransform3D(const OUString& rNew, const SvXMLUnit
nPos
+=
5
;
Imp_SkipSpacesAndOpeningBraces
(
aStr
,
nPos
,
nLen
);
aValue
.
X
()
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
X
(),
TRUE
,
TRUE
);
aValue
.
X
()
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
X
()
);
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
aValue
.
Y
()
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
Y
(),
TRUE
,
TRUE
);
aValue
.
Y
()
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
Y
()
);
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
aValue
.
Z
()
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
Z
(),
TRUE
,
TRUE
);
aValue
.
Z
()
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
Z
()
);
if
(
aValue
.
X
()
!=
1.0
||
aValue
.
Y
()
!=
1.0
||
aValue
.
Z
()
!=
1.0
)
maList
.
Insert
(
new
ImpSdXMLExpTransObj3DScale
(
aValue
),
LIST_APPEND
);
...
...
@@ -766,11 +802,11 @@ SdXMLImExTransform3D::SdXMLImExTransform3D(const OUString& rNew, const SvXMLUnit
nPos
+=
9
;
Imp_SkipSpacesAndOpeningBraces
(
aStr
,
nPos
,
nLen
);
aValue
.
X
()
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
X
(),
TRUE
,
TRUE
);
aValue
.
X
()
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
X
()
);
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
aValue
.
Y
()
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
Y
(),
TRUE
,
TRUE
);
aValue
.
Y
()
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
Y
()
);
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
aValue
.
Z
()
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
Z
(),
TRUE
,
TRUE
);
aValue
.
Z
()
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
.
Z
()
);
if
(
aValue
.
X
()
!=
0.0
||
aValue
.
Y
()
!=
0.0
||
aValue
.
Z
()
!=
0.0
)
maList
.
Insert
(
new
ImpSdXMLExpTransObj3DTranslate
(
aValue
),
LIST_APPEND
);
...
...
@@ -789,7 +825,7 @@ SdXMLImExTransform3D::SdXMLImExTransform3D(const OUString& rNew, const SvXMLUnit
{
for
(
sal_uInt16
b
(
0
);
b
<
3
;
b
++
)
{
aValue
[
a
][
b
]
=
Imp_Get
NumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
[
a
][
b
],
TRUE
,
TRUE
);
aValue
[
a
][
b
]
=
Imp_Get
DoubleChar
(
aStr
,
nPos
,
nLen
,
rConv
,
aValue
[
a
][
b
]
);
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
}
}
...
...
@@ -910,25 +946,25 @@ SdXMLImExViewBox::SdXMLImExViewBox(const OUString& rNew, const SvXMLUnitConverte
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
// get mX
mnX
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
mnX
,
TRUE
,
TRUE
);
mnX
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
mnX
);
// skip spaces and commas
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
// get mY
mnY
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
mnY
,
TRUE
,
TRUE
);
mnY
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
mnY
);
// skip spaces and commas
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
// get mW
mnW
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
mnW
,
TRUE
,
TRUE
);
mnW
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
mnW
);
// skip spaces and commas
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
// get mH
mnH
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
mnH
,
TRUE
,
TRUE
);
mnH
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
mnH
);
}
}
...
...
@@ -1034,13 +1070,13 @@ SdXMLImExPointsElement::SdXMLImExPointsElement(const OUString& rNew,
while
(
nPos
<
nLen
)
{
// skip number
Imp_SkipNumber
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumber
(
aStr
,
nPos
,
nLen
);
// skip spaces and commas
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
// get mY
Imp_SkipNumber
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumber
(
aStr
,
nPos
,
nLen
);
// skip spaces and commas
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
...
...
@@ -1073,13 +1109,13 @@ SdXMLImExPointsElement::SdXMLImExPointsElement(const OUString& rNew,
sal_Int32
nY
(
0L
);
// get mX
nX
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
nX
,
TRUE
,
TRUE
);
nX
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
nX
);
// skip spaces and commas
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
// get mY
nY
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
nY
,
TRUE
,
TRUE
);
nY
=
Imp_GetNumberChar
(
aStr
,
nPos
,
nLen
,
rConv
,
nY
);
// skip spaces and commas
Imp_SkipSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
...
...
@@ -1162,24 +1198,6 @@ void Imp_PrepareCoorExport(sal_Int32& nX, sal_Int32& nY,
}
}
void
Imp_PutNumberCharWithSpace
(
UniString
&
rStr
,
const
SvXMLUnitConverter
&
rConv
,
double
fValue
)
{
const
xub_StrLen
aLen
(
rStr
.
Len
());
if
(
aLen
)
if
(
Imp_IsOnNumberChar
(
rStr
,
aLen
-
1
,
FALSE
,
TRUE
)
&&
fValue
>=
0.0
)
rStr
+=
sal_Unicode
(
' '
);
Imp_PutNumberChar
(
rStr
,
rConv
,
fValue
);
}
void
Imp_PutNumberCharWithSpace
(
UniString
&
rStr
,
const
SvXMLUnitConverter
&
rConv
,
sal_Int32
nValue
)
{
const
xub_StrLen
aLen
(
rStr
.
Len
());
if
(
aLen
)
if
(
Imp_IsOnNumberChar
(
rStr
,
aLen
-
1
,
FALSE
,
TRUE
)
&&
nValue
>=
0
)
rStr
+=
sal_Unicode
(
' '
);
Imp_PutNumberChar
(
rStr
,
rConv
,
nValue
);
}
void
SdXMLImExSvgDElement
::
AddPolygon
(
drawing
::
PointSequence
*
pPoints
,
drawing
::
FlagSequence
*
pFlags
,
...
...
@@ -1483,19 +1501,11 @@ void SdXMLImExSvgDElement::AddPolygon(
msString
=
OUString
(
aNewString
);
}
void
Imp_SkipNumberAndSpacesAndCommas
(
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
,
BOOL
bSignIsNumber
=
TRUE
,
BOOL
bPointIsNumber
=
FALSE
)
{
Imp_SkipNumber
(
rStr
,
rPos
,
nLen
,
bSignIsNumber
,
bPointIsNumber
);
Imp_SkipSpacesAndCommas
(
rStr
,
rPos
,
nLen
);
}
sal_Int32
Imp_ImportNumberAndSpaces
(
sal_Int32
nRetval
,
const
UniString
&
rStr
,
xub_StrLen
&
rPos
,
const
xub_StrLen
nLen
,
const
SvXMLUnitConverter
&
rConv
,
BOOL
bSignIsNumber
=
TRUE
,
BOOL
bPointIsNumber
=
FALSE
)
const
xub_StrLen
nLen
,
const
SvXMLUnitConverter
&
rConv
)
{
nRetval
=
Imp_GetNumberChar
(
rStr
,
rPos
,
nLen
,
rConv
,
nRetval
,
bSignIsNumber
,
bPointIsNumber
);
nRetval
=
Imp_GetNumberChar
(
rStr
,
rPos
,
nLen
,
rConv
,
nRetval
);
Imp_SkipSpacesAndCommas
(
rStr
,
rPos
,
nLen
);
return
nRetval
;
}
...
...
@@ -1625,8 +1635,7 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
}
}
if
(
bQuadraticBeziers
||
bEllipticalArc
)
DBG_ERROR
(
"XMLIMP: non-interpreted tags in svg:d element!"
);
DBG_ASSERT
(
!
(
bQuadraticBeziers
||
bEllipticalArc
),
"XMLIMP: non-interpreted tags in svg:d element!"
);
if
(
nNumPolys
)
{
...
...
@@ -1677,11 +1686,11 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
case
'l'
:
{
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
nPointCount
++
;
}
break
;
...
...
@@ -1692,10 +1701,10 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
case
'v'
:
{
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
nPointCount
++
;
}
break
;
...
...
@@ -1704,13 +1713,13 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
case
's'
:
{
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
nPointCount
+=
3
;
}
break
;
...
...
@@ -1719,15 +1728,15 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
case
'c'
:
{
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
,
TRUE
,
TRUE
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
Imp_SkipNumberAndSpacesAndCommas
(
aStr
,
nPos
,
nLen
);
nPointCount
+=
3
;
}
break
;
...
...
@@ -1796,11 +1805,11 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
nInnerIndex
=
0L
;
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
if
(
bRelative
)
{
...
...
@@ -1826,11 +1835,11 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
case
'L'
:
{
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
if
(
bRelative
)
{
...
...
@@ -1856,10 +1865,10 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
case
'H'
:
{
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nY
(
mnLastY
);
if
(
bRelative
)
...
...
@@ -1882,11 +1891,11 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
case
'V'
:
{
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
sal_Int32
nX
(
mnLastX
);
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
if
(
bRelative
)
nY
+=
mnLastY
;
...
...
@@ -1908,15 +1917,15 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
case
'S'
:
{
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
sal_Int32
nX1
;
sal_Int32
nY1
;
sal_Int32
nX2
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nY2
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nX2
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nY2
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
if
(
bRelative
)
{
...
...
@@ -1972,15 +1981,15 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
case
'C'
:
{
nPos
++
;
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
,
TRUE
,
TRUE
))
while
(
nPos
<
nLen
&&
Imp_IsOnNumberChar
(
aStr
,
nPos
))
{
Imp_SkipSpaces
(
aStr
,
nPos
,
nLen
);
sal_Int32
nX1
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nY1
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nX2
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nY2
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
,
TRUE
,
TRUE
));
sal_Int32
nX1
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nY1
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nX2
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nY2
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nX
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
sal_Int32
nY
(
Imp_ImportNumberAndSpaces
(
0L
,
aStr
,
nPos
,
nLen
,
rConv
));
if
(
bRelative
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment