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
d31d3050
Kaydet (Commit)
d31d3050
authored
May 23, 2013
tarafından
Jan Holesovsky
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
bnc#820786: Best effort mapping of the OOXML patterns to our hatches.
Change-Id: I0138c2186741acf0964f0166953b69872a822907
üst
ea28ce08
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
91 additions
and
8 deletions
+91
-8
shapepropertymap.hxx
include/oox/drawingml/shapepropertymap.hxx
+1
-0
fillproperties.cxx
oox/source/drawingml/fillproperties.cxx
+86
-7
shapepropertymap.cxx
oox/source/drawingml/shapepropertymap.cxx
+3
-1
properties.txt
oox/source/token/properties.txt
+1
-0
No files found.
include/oox/drawingml/shapepropertymap.hxx
Dosyayı görüntüle @
d31d3050
...
...
@@ -61,6 +61,7 @@ enum ShapePropertyId
SHAPEPROP_FillBitmapOffsetX
,
SHAPEPROP_FillBitmapOffsetY
,
SHAPEPROP_FillBitmapRectanglePoint
,
SHAPEPROP_FillHatch
,
SHAPEPROP_ShadowXDistance
,
SHAPEPROP_END
};
...
...
oox/source/drawingml/fillproperties.cxx
Dosyayı görüntüle @
d31d3050
...
...
@@ -27,6 +27,7 @@
#include <com/sun/star/drawing/BitmapMode.hpp>
#include <com/sun/star/drawing/ColorMode.hpp>
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/Hatch.hpp>
#include <com/sun/star/drawing/RectanglePoint.hpp>
#include <com/sun/star/graphic/XGraphicTransformer.hpp>
#include "oox/helper/graphichelper.hxx"
...
...
@@ -180,6 +181,74 @@ Color FillProperties::getBestSolidColor() const
return
aSolidColor
;
}
/// Maps the hatch token to drawing::Hatch.
static
drawing
::
Hatch
createHatch
(
sal_Int32
nHatchToken
,
sal_Int32
nColor
)
{
drawing
::
Hatch
aHatch
;
aHatch
.
Color
=
nColor
;
// best-effort mapping; we do not support all the styles in core
switch
(
nHatchToken
)
{
case
XML_pct5
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
250
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct10
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
200
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct20
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct25
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
200
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct30
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
175
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct40
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct50
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
125
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct60
:
aHatch
.
Style
=
drawing
::
HatchStyle_TRIPLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct70
:
aHatch
.
Style
=
drawing
::
HatchStyle_TRIPLE
;
aHatch
.
Distance
=
125
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct75
:
aHatch
.
Style
=
drawing
::
HatchStyle_TRIPLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct80
:
aHatch
.
Style
=
drawing
::
HatchStyle_TRIPLE
;
aHatch
.
Distance
=
75
;
aHatch
.
Angle
=
450
;
break
;
case
XML_pct90
:
aHatch
.
Style
=
drawing
::
HatchStyle_TRIPLE
;
aHatch
.
Distance
=
50
;
aHatch
.
Angle
=
450
;
break
;
case
XML_horz
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
0
;
break
;
case
XML_vert
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
900
;
break
;
case
XML_ltHorz
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
0
;
break
;
case
XML_ltVert
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
900
;
break
;
case
XML_dkHorz
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
25
;
aHatch
.
Angle
=
0
;
break
;
case
XML_dkVert
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
25
;
aHatch
.
Angle
=
900
;
break
;
case
XML_narHorz
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
50
;
aHatch
.
Angle
=
0
;
break
;
case
XML_narVert
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
50
;
aHatch
.
Angle
=
900
;
break
;
case
XML_dashHorz
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
0
;
break
;
case
XML_dashVert
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
900
;
break
;
case
XML_cross
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
0
;
break
;
case
XML_dnDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
1350
;
break
;
case
XML_upDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
450
;
break
;
case
XML_ltDnDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
1350
;
break
;
case
XML_ltUpDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
450
;
break
;
case
XML_dkDnDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
50
;
aHatch
.
Angle
=
1350
;
break
;
case
XML_dkUpDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
50
;
aHatch
.
Angle
=
450
;
break
;
case
XML_wdDnDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
200
;
aHatch
.
Angle
=
1350
;
break
;
case
XML_wdUpDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
200
;
aHatch
.
Angle
=
450
;
break
;
case
XML_dashDnDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
1350
;
break
;
case
XML_dashUpDiag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
450
;
break
;
case
XML_diagCross
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
450
;
break
;
case
XML_smCheck
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
50
;
aHatch
.
Angle
=
450
;
break
;
case
XML_lgCheck
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
450
;
break
;
case
XML_smGrid
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
0
;
break
;
case
XML_lgGrid
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
250
;
aHatch
.
Angle
=
0
;
break
;
case
XML_dotGrid
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
400
;
aHatch
.
Angle
=
0
;
break
;
case
XML_smConfetti
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
200
;
aHatch
.
Angle
=
600
;
break
;
case
XML_lgConfetti
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
600
;
break
;
case
XML_horzBrick
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
300
;
aHatch
.
Angle
=
0
;
break
;
case
XML_diagBrick
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
300
;
aHatch
.
Angle
=
450
;
break
;
case
XML_solidDmnd
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
450
;
break
;
case
XML_openDmnd
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
200
;
aHatch
.
Angle
=
450
;
break
;
case
XML_dotDmnd
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
300
;
aHatch
.
Angle
=
450
;
break
;
case
XML_plaid
:
aHatch
.
Style
=
drawing
::
HatchStyle_TRIPLE
;
aHatch
.
Distance
=
200
;
aHatch
.
Angle
=
900
;
break
;
case
XML_sphere
:
aHatch
.
Style
=
drawing
::
HatchStyle_TRIPLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
0
;
break
;
case
XML_weave
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
150
;
aHatch
.
Angle
=
450
;
break
;
case
XML_divot
:
aHatch
.
Style
=
drawing
::
HatchStyle_TRIPLE
;
aHatch
.
Distance
=
400
;
aHatch
.
Angle
=
450
;
break
;
case
XML_shingle
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
200
;
aHatch
.
Angle
=
1350
;
break
;
case
XML_wave
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
100
;
aHatch
.
Angle
=
0
;
break
;
case
XML_trellis
:
aHatch
.
Style
=
drawing
::
HatchStyle_DOUBLE
;
aHatch
.
Distance
=
75
;
aHatch
.
Angle
=
450
;
break
;
case
XML_zigZag
:
aHatch
.
Style
=
drawing
::
HatchStyle_SINGLE
;
aHatch
.
Distance
=
75
;
aHatch
.
Angle
=
0
;
break
;
}
return
aHatch
;
}
void
FillProperties
::
pushToPropMap
(
ShapePropertyMap
&
rPropMap
,
const
GraphicHelper
&
rGraphicHelper
,
sal_Int32
nShapeRotation
,
sal_Int32
nPhClr
,
bool
bFlipH
,
bool
bFlipV
)
const
...
...
@@ -348,14 +417,24 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
case
XML_pattFill
:
{
// todo
Color
aColor
=
getBestSolidColor
();
if
(
aColor
.
isUsed
()
)
if
(
rPropMap
.
supportsProperty
(
SHAPEPROP_FillHatch
)
)
{
rPropMap
.
setProperty
(
SHAPEPROP_FillColor
,
aColor
.
getColor
(
rGraphicHelper
,
nPhClr
)
);
if
(
aColor
.
hasTransparency
()
)
rPropMap
.
setProperty
(
SHAPEPROP_FillTransparency
,
aColor
.
getTransparency
()
);
eFillStyle
=
FillStyle_SOLID
;
Color
aColor
(
maPatternProps
.
maPattFgColor
);
if
(
aColor
.
isUsed
()
&&
maPatternProps
.
moPattPreset
.
has
()
)
{
// we do not support hatches that have background
// color too, so all this is some best-effort approach
eFillStyle
=
FillStyle_HATCH
;
rPropMap
.
setProperty
(
SHAPEPROP_FillHatch
,
createHatch
(
maPatternProps
.
moPattPreset
.
get
(),
aColor
.
getColor
(
rGraphicHelper
,
nPhClr
)
)
);
}
else
if
(
maPatternProps
.
maPattBgColor
.
isUsed
()
)
{
aColor
=
maPatternProps
.
maPattBgColor
;
rPropMap
.
setProperty
(
SHAPEPROP_FillColor
,
aColor
.
getColor
(
rGraphicHelper
,
nPhClr
)
);
if
(
aColor
.
hasTransparency
()
)
rPropMap
.
setProperty
(
SHAPEPROP_FillTransparency
,
aColor
.
getTransparency
()
);
eFillStyle
=
FillStyle_SOLID
;
}
}
}
break
;
...
...
oox/source/drawingml/shapepropertymap.cxx
Dosyayı görüntüle @
d31d3050
...
...
@@ -45,7 +45,9 @@ static const sal_Int32 spnDefaultShapeIds[ SHAPEPROP_END ] =
PROP_LineStartName
,
PROP_LineStartWidth
,
PROP_LineStartCenter
,
PROP_LineEndName
,
PROP_LineEndWidth
,
PROP_LineEndCenter
,
PROP_FillStyle
,
PROP_FillColor
,
PROP_FillTransparence
,
PROP_FillTransparenceGradientName
,
PROP_FillGradient
,
PROP_FillBitmapURL
,
PROP_FillBitmapMode
,
PROP_FillBitmapSizeX
,
PROP_FillBitmapSizeY
,
PROP_FillBitmapPositionOffsetX
,
PROP_FillBitmapPositionOffsetY
,
PROP_FillBitmapRectanglePoint
PROP_FillBitmapPositionOffsetX
,
PROP_FillBitmapPositionOffsetY
,
PROP_FillBitmapRectanglePoint
,
PROP_FillHatch
,
PROP_ShadowXDistance
};
}
// namespace
...
...
oox/source/token/properties.txt
Dosyayı görüntüle @
d31d3050
...
...
@@ -159,6 +159,7 @@ FillBitmapURL
FillColor
FillGradient
FillGradientName
FillHatch
FillStyle
FillTransparence
FillTransparenceGradient
...
...
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