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
4f49f1d9
Kaydet (Commit)
4f49f1d9
authored
May 15, 2013
tarafından
Armin Le Grand
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
i121801 Corrected handling of gradient transformations
üst
58d20429
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
51 additions
and
7 deletions
+51
-7
svggradientprimitive2d.hxx
...r/inc/drawinglayer/primitive2d/svggradientprimitive2d.hxx
+7
-0
svggradientprimitive2d.cxx
drawinglayer/source/primitive2d/svggradientprimitive2d.cxx
+21
-4
svgnode.hxx
svgio/inc/svgio/svgreader/svgnode.hxx
+5
-0
svggnode.cxx
svgio/source/svgreader/svggnode.cxx
+1
-1
svgnode.cxx
svgio/source/svgreader/svgnode.cxx
+0
-0
svgstyleattributes.cxx
svgio/source/svgreader/svgstyleattributes.cxx
+17
-2
No files found.
drawinglayer/inc/drawinglayer/primitive2d/svggradientprimitive2d.hxx
Dosyayı görüntüle @
4f49f1d9
...
...
@@ -95,6 +95,9 @@ namespace drawinglayer
class
SvgGradientHelper
{
private
:
/// the extra gradient transform
basegfx
::
B2DHomMatrix
maGradientTransform
;
/// geometric definition, the geometry to be filled
basegfx
::
B2DPolyPolygon
maPolyPolygon
;
...
...
@@ -149,6 +152,7 @@ namespace drawinglayer
public
:
/// constructor
SvgGradientHelper
(
const
basegfx
::
B2DHomMatrix
&
rGradientTransform
,
const
basegfx
::
B2DPolyPolygon
&
rPolyPolygon
,
const
SvgGradientEntryVector
&
rGradientEntries
,
const
basegfx
::
B2DPoint
&
rStart
,
...
...
@@ -156,6 +160,7 @@ namespace drawinglayer
SpreadMethod
aSpreadMethod
=
Spread_pad
);
/// data read access
const
basegfx
::
B2DHomMatrix
&
getGradientTransform
()
const
{
return
maGradientTransform
;
}
const
basegfx
::
B2DPolyPolygon
&
getPolyPolygon
()
const
{
return
maPolyPolygon
;
}
const
SvgGradientEntryVector
&
getGradientEntries
()
const
{
return
maGradientEntries
;
}
const
basegfx
::
B2DPoint
&
getStart
()
const
{
return
maStart
;
}
...
...
@@ -198,6 +203,7 @@ namespace drawinglayer
public
:
/// constructor
SvgLinearGradientPrimitive2D
(
const
basegfx
::
B2DHomMatrix
&
rGradientTransform
,
const
basegfx
::
B2DPolyPolygon
&
rPolyPolygon
,
const
SvgGradientEntryVector
&
rGradientEntries
,
const
basegfx
::
B2DPoint
&
rStart
,
...
...
@@ -266,6 +272,7 @@ namespace drawinglayer
public
:
/// constructor
SvgRadialGradientPrimitive2D
(
const
basegfx
::
B2DHomMatrix
&
rGradientTransform
,
const
basegfx
::
B2DPolyPolygon
&
rPolyPolygon
,
const
SvgGradientEntryVector
&
rGradientEntries
,
const
basegfx
::
B2DPoint
&
rStart
,
...
...
drawinglayer/source/primitive2d/svggradientprimitive2d.cxx
Dosyayı görüntüle @
4f49f1d9
...
...
@@ -285,12 +285,14 @@ namespace drawinglayer
}
SvgGradientHelper
::
SvgGradientHelper
(
const
basegfx
::
B2DHomMatrix
&
rGradientTransform
,
const
basegfx
::
B2DPolyPolygon
&
rPolyPolygon
,
const
SvgGradientEntryVector
&
rGradientEntries
,
const
basegfx
::
B2DPoint
&
rStart
,
bool
bUseUnitCoordinates
,
SpreadMethod
aSpreadMethod
)
:
maPolyPolygon
(
rPolyPolygon
),
:
maGradientTransform
(
rGradientTransform
),
maPolyPolygon
(
rPolyPolygon
),
maGradientEntries
(
rGradientEntries
),
maStart
(
rStart
),
maSpreadMethod
(
aSpreadMethod
),
...
...
@@ -306,7 +308,8 @@ namespace drawinglayer
{
const
SvgGradientHelper
&
rCompare
=
static_cast
<
const
SvgGradientHelper
&
>
(
rSvgGradientHelper
);
return
(
getPolyPolygon
()
==
rCompare
.
getPolyPolygon
()
return
(
getGradientTransform
()
==
rCompare
.
getGradientTransform
()
&&
getPolyPolygon
()
==
rCompare
.
getPolyPolygon
()
&&
getGradientEntries
()
==
rCompare
.
getGradientEntries
()
&&
getStart
()
==
rCompare
.
getStart
()
&&
getUseUnitCoordinates
()
==
rCompare
.
getUseUnitCoordinates
()
...
...
@@ -432,6 +435,11 @@ namespace drawinglayer
aUnitGradientToObject
.
translate
(
aStart
.
getX
(),
aStart
.
getY
());
}
if
(
!
getGradientTransform
().
isIdentity
())
{
aUnitGradientToObject
=
getGradientTransform
()
*
aUnitGradientToObject
;
}
// create inverse from it
basegfx
::
B2DHomMatrix
aObjectToUnitGradient
(
aUnitGradientToObject
);
aObjectToUnitGradient
.
invert
();
...
...
@@ -550,6 +558,7 @@ namespace drawinglayer
}
SvgLinearGradientPrimitive2D
::
SvgLinearGradientPrimitive2D
(
const
basegfx
::
B2DHomMatrix
&
rGradientTransform
,
const
basegfx
::
B2DPolyPolygon
&
rPolyPolygon
,
const
SvgGradientEntryVector
&
rGradientEntries
,
const
basegfx
::
B2DPoint
&
rStart
,
...
...
@@ -557,7 +566,7 @@ namespace drawinglayer
bool
bUseUnitCoordinates
,
SpreadMethod
aSpreadMethod
)
:
BufferedDecompositionPrimitive2D
(),
SvgGradientHelper
(
rPolyPolygon
,
rGradientEntries
,
rStart
,
bUseUnitCoordinates
,
aSpreadMethod
),
SvgGradientHelper
(
r
GradientTransform
,
r
PolyPolygon
,
rGradientEntries
,
rStart
,
bUseUnitCoordinates
,
aSpreadMethod
),
maEnd
(
rEnd
)
{
}
...
...
@@ -753,6 +762,8 @@ namespace drawinglayer
else
{
// interpret in object coordinate system -> object aspect ratio will not scale result
// use X-Axis with radius, it was already made relative to object width when coming from
// SVG import
const
double
fRadius
((
aObjectTransform
*
basegfx
::
B2DVector
(
getRadius
(),
0.0
)).
getLength
());
const
basegfx
::
B2DPoint
aStart
(
aObjectTransform
*
getStart
());
...
...
@@ -760,6 +771,11 @@ namespace drawinglayer
aUnitGradientToObject
.
translate
(
aStart
.
getX
(),
aStart
.
getY
());
}
if
(
!
getGradientTransform
().
isIdentity
())
{
aUnitGradientToObject
=
getGradientTransform
()
*
aUnitGradientToObject
;
}
// create inverse from it
basegfx
::
B2DHomMatrix
aObjectToUnitGradient
(
aUnitGradientToObject
);
aObjectToUnitGradient
.
invert
();
...
...
@@ -827,6 +843,7 @@ namespace drawinglayer
}
SvgRadialGradientPrimitive2D
::
SvgRadialGradientPrimitive2D
(
const
basegfx
::
B2DHomMatrix
&
rGradientTransform
,
const
basegfx
::
B2DPolyPolygon
&
rPolyPolygon
,
const
SvgGradientEntryVector
&
rGradientEntries
,
const
basegfx
::
B2DPoint
&
rStart
,
...
...
@@ -835,7 +852,7 @@ namespace drawinglayer
SpreadMethod
aSpreadMethod
,
const
basegfx
::
B2DPoint
*
pFocal
)
:
BufferedDecompositionPrimitive2D
(),
SvgGradientHelper
(
rPolyPolygon
,
rGradientEntries
,
rStart
,
bUseUnitCoordinates
,
aSpreadMethod
),
SvgGradientHelper
(
r
GradientTransform
,
r
PolyPolygon
,
rGradientEntries
,
rStart
,
bUseUnitCoordinates
,
aSpreadMethod
),
mfRadius
(
fRadius
),
maFocal
(
rStart
),
maFocalVector
(
0.0
,
0.0
),
...
...
svgio/inc/svgio/svgreader/svgnode.hxx
Dosyayı görüntüle @
4f49f1d9
...
...
@@ -82,6 +82,11 @@ namespace svgio
Display_inherit
};
// helper to convert a string associated with a token of type SVGTokenDisplay
// to the enum Display. Empty trings return the default 'Display_inline' with
// which members should be initialized
Display
getDisplayFromContent
(
const
rtl
::
OUString
&
aContent
);
class
SvgNode
:
private
boost
::
noncopyable
,
public
InfoProvider
{
private
:
...
...
svgio/source/svgreader/svggnode.cxx
Dosyayı görüntüle @
4f49f1d9
...
...
@@ -96,7 +96,7 @@ namespace svgio
{
const
double
fOpacity
(
pStyle
->
getOpacity
().
getNumber
());
if
(
fOpacity
>
0.0
)
if
(
fOpacity
>
0.0
&&
Display_none
!=
getDisplay
()
)
{
drawinglayer
::
primitive2d
::
Primitive2DSequence
aContent
;
...
...
svgio/source/svgreader/svgnode.cxx
Dosyayı görüntüle @
4f49f1d9
This diff is collapsed.
Click to expand it.
svgio/source/svgreader/svgstyleattributes.cxx
Dosyayı görüntüle @
4f49f1d9
...
...
@@ -318,10 +318,11 @@ namespace svgio
if
(
!
aSvgGradientEntryVector
.
empty
())
{
basegfx
::
B2DHomMatrix
aGeoToUnit
;
basegfx
::
B2DHomMatrix
aGradientTransform
;
if
(
rFillGradient
.
getGradientTransform
())
{
aG
eoToUnit
=
*
rFillGradient
.
getGradientTransform
();
aG
radientTransform
=
*
rFillGradient
.
getGradientTransform
();
}
if
(
userSpaceOnUse
==
rFillGradient
.
getGradientUnits
())
...
...
@@ -366,6 +367,7 @@ namespace svgio
drawinglayer
::
primitive2d
::
appendPrimitive2DReferenceToPrimitive2DSequence
(
rTarget
,
new
drawinglayer
::
primitive2d
::
SvgLinearGradientPrimitive2D
(
aGradientTransform
,
rPath
,
aSvgGradientEntryVector
,
aStart
,
...
...
@@ -427,6 +429,7 @@ namespace svgio
drawinglayer
::
primitive2d
::
appendPrimitive2DReferenceToPrimitive2DSequence
(
rTarget
,
new
drawinglayer
::
primitive2d
::
SvgRadialGradientPrimitive2D
(
aGradientTransform
,
rPath
,
aSvgGradientEntryVector
,
aStart
,
...
...
@@ -1184,7 +1187,7 @@ namespace svgio
{
}
void
SvgStyleAttributes
::
parseStyleAttribute
(
const
rtl
::
OUString
&
/*rTokenName*/
,
SVGToken
aSVGToken
,
const
rtl
::
OUString
&
aContent
)
void
SvgStyleAttributes
::
parseStyleAttribute
(
const
rtl
::
OUString
&
rTokenName
,
SVGToken
aSVGToken
,
const
rtl
::
OUString
&
aContent
)
{
switch
(
aSVGToken
)
{
...
...
@@ -1788,6 +1791,18 @@ namespace svgio
readLocalUrl
(
aContent
,
maMarkerEndXLink
);
break
;
}
case
SVGTokenDisplay
:
{
// There may be display:none statements inside of style defines, e.g. the following line:
// style="display:none"
// taken from a svg example; this needs to be parsed and set at the owning node. Do not call
// mrOwner.parseAttribute(...) here, this would lead to a recursion
if
(
aContent
.
getLength
())
{
mrOwner
.
setDisplay
(
getDisplayFromContent
(
aContent
));
}
break
;
}
default
:
{
break
;
...
...
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