Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ImportedProjects
SVG
Commits
ce8f2a64
"Source/vscode:/vscode.git/clone" did not exist on "1585c700a80de458ee8c5204bfa6b6bb14db0fb7"
Commit
ce8f2a64
authored
Jul 30, 2014
by
Eric Domke
Browse files
Fixing compile errors and spacing inconsistencies
parent
05c51974
Changes
9
Hide whitespace changes
Inline
Side-by-side
Source/Document Structure/SvgDescription.cs
View file @
ce8f2a64
...
@@ -14,8 +14,7 @@ namespace Svg
...
@@ -14,8 +14,7 @@ namespace Svg
return
this
.
Content
;
return
this
.
Content
;
}
}
public
override
SvgElement
DeepCopy
()
public
override
SvgElement
DeepCopy
()
{
{
return
DeepCopy
<
SvgDescription
>();
return
DeepCopy
<
SvgDescription
>();
}
}
...
@@ -23,9 +22,7 @@ namespace Svg
...
@@ -23,9 +22,7 @@ namespace Svg
public
override
SvgElement
DeepCopy
<
T
>()
public
override
SvgElement
DeepCopy
<
T
>()
{
{
var
newObj
=
base
.
DeepCopy
<
T
>()
as
SvgDescription
;
var
newObj
=
base
.
DeepCopy
<
T
>()
as
SvgDescription
;
newObj
.
Text
=
this
.
Text
;
return
newObj
;
return
newObj
;
}
}
}
}
}
}
\ No newline at end of file
Source/Document Structure/SvgUse.cs
View file @
ce8f2a64
...
@@ -49,8 +49,8 @@ namespace Svg
...
@@ -49,8 +49,8 @@ namespace Svg
/// </summary>
/// </summary>
public
SvgUse
()
public
SvgUse
()
{
{
this
.
X
=
0
;
this
.
X
=
0
;
this
.
Y
=
0
;
this
.
Y
=
0
;
}
}
public
override
System
.
Drawing
.
Drawing2D
.
GraphicsPath
Path
public
override
System
.
Drawing
.
Drawing2D
.
GraphicsPath
Path
...
@@ -69,16 +69,16 @@ namespace Svg
...
@@ -69,16 +69,16 @@ namespace Svg
get
{
return
new
System
.
Drawing
.
RectangleF
();
}
get
{
return
new
System
.
Drawing
.
RectangleF
();
}
}
}
// public override SvgElementCollection Children
// public override SvgElementCollection Children
// {
// {
// get
// get
// {
// {
// SvgElement element = this.OwnerDocument.IdManager.GetElementById(this.ReferencedElement);
// SvgElement element = this.OwnerDocument.IdManager.GetElementById(this.ReferencedElement);
// SvgElementCollection elements = new SvgElementCollection(this, true);
// SvgElementCollection elements = new SvgElementCollection(this, true);
// elements.Add(element);
// elements.Add(element);
// return elements;
// return elements;
// }
// }
// }
// }
protected
override
void
Render
(
SvgRenderer
renderer
)
protected
override
void
Render
(
SvgRenderer
renderer
)
{
{
...
@@ -99,20 +99,20 @@ namespace Svg
...
@@ -99,20 +99,20 @@ namespace Svg
}
}
public
override
SvgElement
DeepCopy
()
public
override
SvgElement
DeepCopy
()
{
{
return
DeepCopy
<
SvgUse
>();
return
DeepCopy
<
SvgUse
>();
}
}
public
override
SvgElement
DeepCopy
<
T
>()
public
override
SvgElement
DeepCopy
<
T
>()
{
{
var
newObj
=
base
.
DeepCopy
<
T
>()
as
SvgUse
;
var
newObj
=
base
.
DeepCopy
<
T
>()
as
SvgUse
;
newObj
.
ReferencedElement
=
this
.
ReferencedElement
;
newObj
.
ReferencedElement
=
this
.
ReferencedElement
;
newObj
.
X
=
this
.
X
;
newObj
.
X
=
this
.
X
;
newObj
.
Y
=
this
.
Y
;
newObj
.
Y
=
this
.
Y
;
return
newObj
;
return
newObj
;
}
}
}
}
}
}
\ No newline at end of file
Source/Filter Effects/feGaussianBlur/SvgGaussianBlur.cs
View file @
ce8f2a64
...
@@ -14,10 +14,10 @@ namespace Svg.FilterEffects
...
@@ -14,10 +14,10 @@ namespace Svg.FilterEffects
[
SvgElement
(
"feGaussianBlur"
)]
[
SvgElement
(
"feGaussianBlur"
)]
public
class
SvgGaussianBlur
:
SvgFilterPrimitive
public
class
SvgGaussianBlur
:
SvgFilterPrimitive
{
{
private
float
_stdDeviation
;
private
float
_stdDeviation
;
private
BlurType
_blurType
;
private
BlurType
_blurType
;
private
int
[]
_kernel
;
private
int
[]
_kernel
;
private
int
_kernelSum
;
private
int
_kernelSum
;
private
int
[,]
_multable
;
private
int
[,]
_multable
;
...
@@ -220,10 +220,10 @@ namespace Svg.FilterEffects
...
@@ -220,10 +220,10 @@ namespace Svg.FilterEffects
}
}
}
}
/// <summary>
/// <summary>
/// Gets or sets the radius of the blur (only allows for one value - not the two specified in the SVG Spec)
/// Gets or sets the radius of the blur (only allows for one value - not the two specified in the SVG Spec)
/// </summary>
/// </summary>
[
SvgAttribute
(
"stdDeviation"
)]
[
SvgAttribute
(
"stdDeviation"
)]
public
float
StdDeviation
public
float
StdDeviation
{
{
get
{
return
_stdDeviation
;
}
get
{
return
_stdDeviation
;
}
...
@@ -249,27 +249,27 @@ namespace Svg.FilterEffects
...
@@ -249,27 +249,27 @@ namespace Svg.FilterEffects
}
}
public
override
Bitmap
Process
()
{
//Todo
return
null
;
public
override
Bitmap
Process
()
}
{
//Todo
return
null
;
}
public
override
SvgElement
DeepCopy
()
public
override
SvgElement
DeepCopy
()
{
{
return
DeepCopy
<
SvgGaussianBlur
>();
return
DeepCopy
<
SvgGaussianBlur
>();
}
}
public
override
SvgElement
DeepCopy
<
T
>()
public
override
SvgElement
DeepCopy
<
T
>()
{
{
var
newObj
=
base
.
DeepCopy
<
T
>()
as
SvgGaussianBlur
;
var
newObj
=
base
.
DeepCopy
<
T
>()
as
SvgGaussianBlur
;
newObj
.
StdDeviation
=
this
.
StdDeviation
;
newObj
.
StdDeviation
=
this
.
StdDeviation
;
newObj
.
BlurType
=
this
.
BlurType
;
newObj
.
BlurType
=
this
.
BlurType
;
return
newObj
;
return
newObj
;
}
}
}
}
}
}
\ No newline at end of file
Source/Painting/SvgLinearGradientServer.cs
View file @
ce8f2a64
...
@@ -130,7 +130,7 @@ namespace Svg
...
@@ -130,7 +130,7 @@ namespace Svg
public
PointF
EndPoint
;
public
PointF
EndPoint
;
public
GradientPoints
(
PointF
startPoint
,
PointF
endPoint
)
public
GradientPoints
(
PointF
startPoint
,
PointF
endPoint
)
{
{
this
.
StartPoint
=
startPoint
;
this
.
StartPoint
=
startPoint
;
this
.
EndPoint
=
endPoint
;
this
.
EndPoint
=
endPoint
;
}
}
...
@@ -193,7 +193,7 @@ namespace Svg
...
@@ -193,7 +193,7 @@ namespace Svg
for
(
var
i
=
0
;
i
<
colorBlend
.
Positions
.
Length
;
i
++)
for
(
var
i
=
0
;
i
<
colorBlend
.
Positions
.
Length
;
i
++)
{
{
var
originalPoint
=
MovePointAlongVector
(
specifiedStart
,
specifiedUnitVector
,
(
float
)
specifiedLength
*
colorBlend
.
Positions
[
i
]);
var
originalPoint
=
MovePointAlongVector
(
specifiedStart
,
specifiedUnitVector
,
(
float
)
specifiedLength
*
colorBlend
.
Positions
[
i
]);
var
distanceFromEffectiveStart
=
CalculateDistance
(
effectiveStart
,
originalPoint
);
var
distanceFromEffectiveStart
=
CalculateDistance
(
effectiveStart
,
originalPoint
);
...
@@ -253,7 +253,7 @@ namespace Svg
...
@@ -253,7 +253,7 @@ namespace Svg
private
float
Y1
private
float
Y1
{
{
get
;
get
;
set
;
set
;
}
}
...
...
Source/Paths/SvgClosePathSegment.cs
View file @
ce8f2a64
...
@@ -8,7 +8,6 @@ namespace Svg.Pathing
...
@@ -8,7 +8,6 @@ namespace Svg.Pathing
{
{
public
override
void
AddToPath
(
System
.
Drawing
.
Drawing2D
.
GraphicsPath
graphicsPath
)
public
override
void
AddToPath
(
System
.
Drawing
.
Drawing2D
.
GraphicsPath
graphicsPath
)
{
{
// Important for custom line caps. Force the path the close with an explicit line, not just an implicit close of the figure.
// Important for custom line caps. Force the path the close with an explicit line, not just an implicit close of the figure.
if
(
graphicsPath
.
PointCount
>
0
&&
!
graphicsPath
.
PathPoints
[
0
].
Equals
(
graphicsPath
.
PathPoints
[
graphicsPath
.
PathPoints
.
Length
-
1
]))
if
(
graphicsPath
.
PointCount
>
0
&&
!
graphicsPath
.
PathPoints
[
0
].
Equals
(
graphicsPath
.
PathPoints
[
graphicsPath
.
PathPoints
.
Length
-
1
]))
{
{
...
@@ -19,11 +18,11 @@ namespace Svg.Pathing
...
@@ -19,11 +18,11 @@ namespace Svg.Pathing
}
}
graphicsPath
.
CloseFigure
();
graphicsPath
.
CloseFigure
();
}
}
public
override
string
ToString
()
public
override
string
ToString
()
{
{
return
"z"
;
return
"z"
;
}
}
}
}
}
}
\ No newline at end of file
Source/Svg.csproj
View file @
ce8f2a64
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
<OldToolsVersion>
3.5
</OldToolsVersion>
<OldToolsVersion>
3.5
</OldToolsVersion>
<UpgradeBackupLocation>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkVersion>
v
4.0
</TargetFrameworkVersion>
<TargetFrameworkVersion>
v
3.5
</TargetFrameworkVersion>
<IsWebBootstrapper>
false
</IsWebBootstrapper>
<IsWebBootstrapper>
false
</IsWebBootstrapper>
<SccProjectName>
<SccProjectName>
</SccProjectName>
</SccProjectName>
...
@@ -121,7 +121,6 @@
...
@@ -121,7 +121,6 @@
<Compile
Include=
"Extensions.cs"
/>
<Compile
Include=
"Extensions.cs"
/>
<Compile
Include=
"Painting\ISvgBoundable.cs"
/>
<Compile
Include=
"Painting\ISvgBoundable.cs"
/>
<Compile
Include=
"Painting\SvgDeferredPaintServer.cs"
/>
<Compile
Include=
"Painting\SvgDeferredPaintServer.cs"
/>
<Compile
Include=
"Painting\ISvgBoundable.cs"
/>
<Compile
Include=
"Painting\SvgMarker.cs"
/>
<Compile
Include=
"Painting\SvgMarker.cs"
/>
<Compile
Include=
"Document Structure\SvgDefinitionList.cs"
/>
<Compile
Include=
"Document Structure\SvgDefinitionList.cs"
/>
<Compile
Include=
"Document Structure\SvgDescription.cs"
/>
<Compile
Include=
"Document Structure\SvgDescription.cs"
/>
...
...
Source/Text/SvgText.cs
View file @
ce8f2a64
...
@@ -17,17 +17,18 @@ namespace Svg
...
@@ -17,17 +17,18 @@ namespace Svg
/// <summary>
/// <summary>
/// Initializes the <see cref="SvgText"/> class.
/// Initializes the <see cref="SvgText"/> class.
/// </summary>
/// </summary>
public
SvgText
()
:
base
()
{}
public
SvgText
()
:
base
()
{
}
/// <summary>
/// <summary>
/// Initializes a new instance of the <see cref="SvgText"/> class.
/// Initializes a new instance of the <see cref="SvgText"/> class.
/// </summary>
/// </summary>
/// <param name="text">The text.</param>
/// <param name="text">The text.</param>
public
SvgText
(
string
text
)
:
this
()
public
SvgText
(
string
text
)
:
this
()
{
{
this
.
Text
=
text
;
this
.
Text
=
text
;
}
}
public
override
SvgElement
DeepCopy
()
public
override
SvgElement
DeepCopy
()
{
{
return
DeepCopy
<
SvgText
>();
return
DeepCopy
<
SvgText
>();
...
...
Source/Text/SvgTextBase.cs
View file @
ce8f2a64
...
@@ -16,7 +16,7 @@ namespace Svg
...
@@ -16,7 +16,7 @@ namespace Svg
@default
,
@default
,
preserve
preserve
}
}
public
abstract
class
SvgTextBase
:
SvgVisualElement
public
abstract
class
SvgTextBase
:
SvgVisualElement
{
{
private
SvgUnitCollection
_x
=
new
SvgUnitCollection
();
private
SvgUnitCollection
_x
=
new
SvgUnitCollection
();
...
@@ -28,7 +28,7 @@ namespace Svg
...
@@ -28,7 +28,7 @@ namespace Svg
private
SvgTextAnchor
_textAnchor
=
SvgTextAnchor
.
Start
;
private
SvgTextAnchor
_textAnchor
=
SvgTextAnchor
.
Start
;
private
static
readonly
SvgRenderer
_stringMeasure
;
private
static
readonly
SvgRenderer
_stringMeasure
;
private
const
string
DefaultFontFamily
=
"Times New Roman"
;
private
const
string
DefaultFontFamily
=
"Times New Roman"
;
private
XmlSpaceHandling
_space
=
XmlSpaceHandling
.
@default
;
private
XmlSpaceHandling
_space
=
XmlSpaceHandling
.
@default
;
/// <summary>
/// <summary>
...
@@ -40,7 +40,7 @@ namespace Svg
...
@@ -40,7 +40,7 @@ namespace Svg
_stringMeasure
=
SvgRenderer
.
FromImage
(
bitmap
);
_stringMeasure
=
SvgRenderer
.
FromImage
(
bitmap
);
_stringMeasure
.
TextRenderingHint
=
TextRenderingHint
.
AntiAlias
;
_stringMeasure
.
TextRenderingHint
=
TextRenderingHint
.
AntiAlias
;
}
}
/// <summary>
/// <summary>
/// Gets or sets the text to be rendered.
/// Gets or sets the text to be rendered.
/// </summary>
/// </summary>
...
@@ -68,16 +68,16 @@ namespace Svg
...
@@ -68,16 +68,16 @@ namespace Svg
[
SvgAttribute
(
"x"
)]
[
SvgAttribute
(
"x"
)]
public
virtual
SvgUnitCollection
X
public
virtual
SvgUnitCollection
X
{
{
get
{
return
this
.
_x
;
}
get
{
return
this
.
_x
;
}
set
set
{
{
if
(
_x
!=
value
)
if
(
_x
!=
value
)
{
{
this
.
_x
=
value
;
this
.
_x
=
value
;
this
.
IsPathDirty
=
true
;
this
.
IsPathDirty
=
true
;
OnAttributeChanged
(
new
AttributeEventArgs
{
Attribute
=
"x"
,
Value
=
value
});
OnAttributeChanged
(
new
AttributeEventArgs
{
Attribute
=
"x"
,
Value
=
value
});
}
}
}
}
}
}
/// <summary>
/// <summary>
...
@@ -106,16 +106,16 @@ namespace Svg
...
@@ -106,16 +106,16 @@ namespace Svg
[
SvgAttribute
(
"y"
)]
[
SvgAttribute
(
"y"
)]
public
virtual
SvgUnitCollection
Y
public
virtual
SvgUnitCollection
Y
{
{
get
{
return
this
.
_y
;
}
get
{
return
this
.
_y
;
}
set
set
{
{
if
(
_y
!=
value
)
if
(
_y
!=
value
)
{
{
this
.
_y
=
value
;
this
.
_y
=
value
;
this
.
IsPathDirty
=
true
;
this
.
IsPathDirty
=
true
;
OnAttributeChanged
(
new
AttributeEventArgs
{
Attribute
=
"y"
,
Value
=
value
});
OnAttributeChanged
(
new
AttributeEventArgs
{
Attribute
=
"y"
,
Value
=
value
});
}
}
}
}
}
}
/// <summary>
/// <summary>
...
@@ -202,7 +202,7 @@ namespace Svg
...
@@ -202,7 +202,7 @@ namespace Svg
private
static
string
ValidateFontFamily
(
string
fontFamilyList
)
private
static
string
ValidateFontFamily
(
string
fontFamilyList
)
{
{
// Split font family list on "," and then trim start and end spaces and quotes.
// Split font family list on "," and then trim start and end spaces and quotes.
var
fontParts
=
fontFamilyList
.
Split
(
new
[]
{
','
}).
Select
(
fontName
=>
fontName
.
Trim
(
new
[]
{
'"'
,
' '
,
'\''
}));
var
fontParts
=
fontFamilyList
.
Split
(
new
[]
{
','
}).
Select
(
fontName
=>
fontName
.
Trim
(
new
[]
{
'"'
,
' '
,
'\''
}));
var
families
=
System
.
Drawing
.
FontFamily
.
Families
;
var
families
=
System
.
Drawing
.
FontFamily
.
Families
;
...
@@ -261,7 +261,7 @@ namespace Svg
...
@@ -261,7 +261,7 @@ namespace Svg
protected
class
BoundsData
protected
class
BoundsData
{
{
private
List
<
NodeBounds
>
_nodes
=
new
List
<
NodeBounds
>();
private
List
<
NodeBounds
>
_nodes
=
new
List
<
NodeBounds
>();
public
IList
<
NodeBounds
>
Nodes
public
IList
<
NodeBounds
>
Nodes
{
{
get
{
return
_nodes
;
}
get
{
return
_nodes
;
}
}
}
...
@@ -276,10 +276,10 @@ namespace Svg
...
@@ -276,10 +276,10 @@ namespace Svg
float
totalWidth
=
0
;
float
totalWidth
=
0
;
var
result
=
new
BoundsData
();
var
result
=
new
BoundsData
();
var
nodes
=
(
from
n
in
this
.
Nodes
var
nodes
=
(
from
n
in
this
.
Nodes
where
(
n
is
SvgContentNode
||
n
is
SvgTextBase
)
&&
!
string
.
IsNullOrEmpty
(
n
.
Content
)
where
(
n
is
SvgContentNode
||
n
is
SvgTextBase
)
&&
!
string
.
IsNullOrEmpty
(
n
.
Content
)
select
n
).
ToList
();
select
n
).
ToList
();
if
(
nodes
.
FirstOrDefault
()
is
SvgContentNode
&&
_x
.
Count
>
1
)
if
(
nodes
.
FirstOrDefault
()
is
SvgContentNode
&&
_x
.
Count
>
1
)
{
{
string
ch
;
string
ch
;
...
@@ -287,15 +287,18 @@ namespace Svg
...
@@ -287,15 +287,18 @@ namespace Svg
nodes
.
RemoveAt
(
0
);
nodes
.
RemoveAt
(
0
);
int
posCount
=
Math
.
Min
(
content
.
Content
.
Length
,
_x
.
Count
);
int
posCount
=
Math
.
Min
(
content
.
Content
.
Length
,
_x
.
Count
);
var
text
=
PrepareText
(
content
.
Content
,
false
,
(
nodes
.
Count
>
1
&&
nodes
[
1
]
is
SvgTextBase
));
var
text
=
PrepareText
(
content
.
Content
,
false
,
(
nodes
.
Count
>
1
&&
nodes
[
1
]
is
SvgTextBase
));
for
(
var
i
=
0
;
i
<
posCount
;
i
++)
for
(
var
i
=
0
;
i
<
posCount
;
i
++)
{
{
ch
=
(
i
==
posCount
-
1
?
text
.
Substring
(
i
)
:
text
.
Substring
(
i
,
1
));
ch
=
(
i
==
posCount
-
1
?
text
.
Substring
(
i
)
:
text
.
Substring
(
i
,
1
));
stringBounds
=
_stringMeasure
.
MeasureString
(
ch
,
font
);
stringBounds
=
_stringMeasure
.
MeasureString
(
ch
,
font
);
totalHeight
=
Math
.
Max
(
totalHeight
,
stringBounds
.
Height
);
totalHeight
=
Math
.
Max
(
totalHeight
,
stringBounds
.
Height
);
result
.
Nodes
.
Add
(
new
NodeBounds
()
{
Bounds
=
stringBounds
,
result
.
Nodes
.
Add
(
new
NodeBounds
()
Node
=
new
SvgContentNode
()
{
Content
=
ch
},
{
xOffset
=
(
i
==
0
?
0
:
_x
[
i
].
ToDeviceValue
(
this
)
-
_x
[
0
].
ToDeviceValue
(
this
))});
Bounds
=
stringBounds
,
Node
=
new
SvgContentNode
()
{
Content
=
ch
},
xOffset
=
(
i
==
0
?
0
:
_x
[
i
].
ToDeviceValue
(
this
)
-
_x
[
0
].
ToDeviceValue
(
this
))
});
}
}
}
}
...
@@ -349,7 +352,7 @@ namespace Svg
...
@@ -349,7 +352,7 @@ namespace Svg
{
{
// Measure the overall bounds of all the text
// Measure the overall bounds of all the text
var
boundsData
=
GetTextBounds
();
var
boundsData
=
GetTextBounds
();
var
font
=
GetFont
();
var
font
=
GetFont
();
SvgTextBase
innerText
;
SvgTextBase
innerText
;
float
x
=
(
_x
.
Count
<
1
?
_calcX
:
_x
[
0
].
ToDeviceValue
(
this
))
+
(
_dx
.
Count
<
1
?
0
:
_dx
[
0
].
ToDeviceValue
(
this
));
float
x
=
(
_x
.
Count
<
1
?
_calcX
:
_x
[
0
].
ToDeviceValue
(
this
))
+
(
_dx
.
Count
<
1
?
0
:
_dx
[
0
].
ToDeviceValue
(
this
));
...
@@ -379,7 +382,7 @@ namespace Svg
...
@@ -379,7 +382,7 @@ namespace Svg
{
{
// Minus FontSize because the x/y coords mark the bottom left, not bottom top.
// Minus FontSize because the x/y coords mark the bottom left, not bottom top.
DrawString
(
_path
,
x
+
data
.
xOffset
,
y
-
boundsData
.
Bounds
.
Height
,
font
,
DrawString
(
_path
,
x
+
data
.
xOffset
,
y
-
boundsData
.
Bounds
.
Height
,
font
,
PrepareText
(
data
.
Node
.
Content
,
i
>
0
&&
boundsData
.
Nodes
[
i
-
1
].
Node
is
SvgTextBase
,
PrepareText
(
data
.
Node
.
Content
,
i
>
0
&&
boundsData
.
Nodes
[
i
-
1
].
Node
is
SvgTextBase
,
i
<
boundsData
.
Nodes
.
Count
-
1
&&
boundsData
.
Nodes
[
i
+
1
].
Node
is
SvgTextBase
));
i
<
boundsData
.
Nodes
.
Count
-
1
&&
boundsData
.
Nodes
[
i
+
1
].
Node
is
SvgTextBase
));
}
}
else
else
...
@@ -436,7 +439,7 @@ namespace Svg
...
@@ -436,7 +439,7 @@ namespace Svg
{
{
fontSize
=
fontSizeUnit
.
ToDeviceValue
(
this
);
fontSize
=
fontSizeUnit
.
ToDeviceValue
(
this
);
}
}
var
fontStyle
=
System
.
Drawing
.
FontStyle
.
Regular
;
var
fontStyle
=
System
.
Drawing
.
FontStyle
.
Regular
;
// Get the font-weight
// Get the font-weight
...
@@ -486,60 +489,60 @@ namespace Svg
...
@@ -486,60 +489,60 @@ namespace Svg
/// Draws a string on a path at a specified location and with a specified font.
/// Draws a string on a path at a specified location and with a specified font.
/// </summary>
/// </summary>
internal
void
DrawString
(
GraphicsPath
path
,
float
x
,
float
y
,
Font
font
,
string
text
)
internal
void
DrawString
(
GraphicsPath
path
,
float
x
,
float
y
,
Font
font
,
string
text
)
{
{
PointF
location
=
new
PointF
(
x
,
y
);
PointF
location
=
new
PointF
(
x
,
y
);
// No way to do letter-spacing or word-spacing, so do manually
// No way to do letter-spacing or word-spacing, so do manually
if
(
this
.
LetterSpacing
.
Value
>
0.0f
||
this
.
WordSpacing
.
Value
>
0.0f
)
if
(
this
.
LetterSpacing
.
Value
>
0.0f
||
this
.
WordSpacing
.
Value
>
0.0f
)
{
{
// Cut up into words, or just leave as required
// Cut up into words, or just leave as required
string
[]
words
=
(
this
.
WordSpacing
.
Value
>
0.0f
)
?
text
.
Split
(
' '
)
:
new
string
[]
{
text
};
string
[]
words
=
(
this
.
WordSpacing
.
Value
>
0.0f
)
?
text
.
Split
(
' '
)
:
new
string
[]
{
text
};
float
wordSpacing
=
this
.
WordSpacing
.
ToDeviceValue
(
this
);
float
wordSpacing
=
this
.
WordSpacing
.
ToDeviceValue
(
this
);
float
letterSpacing
=
this
.
LetterSpacing
.
ToDeviceValue
(
this
);
float
letterSpacing
=
this
.
LetterSpacing
.
ToDeviceValue
(
this
);
float
start
=
x
;
float
start
=
x
;
foreach
(
string
word
in
words
)
foreach
(
string
word
in
words
)
{
{
// Only do if there is line spacing, just write the word otherwise
// Only do if there is line spacing, just write the word otherwise
if
(
this
.
LetterSpacing
.
Value
>
0.0f
)
if
(
this
.
LetterSpacing
.
Value
>
0.0f
)
{
{
char
[]
characters
=
word
.
ToCharArray
();
char
[]
characters
=
word
.
ToCharArray
();
foreach
(
char
currentCharacter
in
characters
)
foreach
(
char
currentCharacter
in
characters
)
{
{
path
.
AddString
(
currentCharacter
.
ToString
(),
font
.
FontFamily
,
(
int
)
font
.
Style
,
font
.
Size
,
location
,
StringFormat
.
GenericTypographic
);
path
.
AddString
(
currentCharacter
.
ToString
(),
font
.
FontFamily
,
(
int
)
font
.
Style
,
font
.
Size
,
location
,
StringFormat
.
GenericTypographic
);
location
=
new
PointF
(
path
.
GetBounds
().
Width
+
start
+
letterSpacing
,
location
.
Y
);
location
=
new
PointF
(
path
.
GetBounds
().
Width
+
start
+
letterSpacing
,
location
.
Y
);
}
}
}
}
else
else
{
{
path
.
AddString
(
word
,
font
.
FontFamily
,
(
int
)
font
.
Style
,
font
.
Size
,
location
,
StringFormat
.
GenericTypographic
);
path
.
AddString
(
word
,
font
.
FontFamily
,
(
int
)
font
.
Style
,
font
.
Size
,
location
,
StringFormat
.
GenericTypographic
);
}
}
// Move the location of the word to be written along
// Move the location of the word to be written along
location
=
new
PointF
(
path
.
GetBounds
().
Width
+
start
+
wordSpacing
,
location
.
Y
);
location
=
new
PointF
(
path
.
GetBounds
().
Width
+
start
+
wordSpacing
,
location
.
Y
);
}
}
}
}
else
else
{
{
if
(!
string
.
IsNullOrEmpty
(
text
))
if
(!
string
.
IsNullOrEmpty
(
text
))
{
{
path
.
AddString
(
text
,
font
.
FontFamily
,
(
int
)
font
.
Style
,
font
.
Size
,
location
,
StringFormat
.
GenericTypographic
);
path
.
AddString
(
text
,
font
.
FontFamily
,
(
int
)
font
.
Style
,
font
.
Size
,
location
,
StringFormat
.
GenericTypographic
);
}
}
}
}
}
}
[
SvgAttribute
(
"onchange"
)]
[
SvgAttribute
(
"onchange"
)]
public
event
EventHandler
<
StringArg
>
Change
;
public
event
EventHandler
<
StringArg
>
Change
;
//change
//change
protected
void
OnChange
(
string
newString
,
string
sessionID
)
protected
void
OnChange
(
string
newString
,
string
sessionID
)
{
{
RaiseChange
(
this
,
new
StringArg
{
s
=
newString
,
SessionID
=
sessionID
});
RaiseChange
(
this
,
new
StringArg
{
s
=
newString
,
SessionID
=
sessionID
});
}
}
protected
void
RaiseChange
(
object
sender
,
StringArg
s
)
protected
void
RaiseChange
(
object
sender
,
StringArg
s
)
{
{
var
handler
=
Change
;
var
handler
=
Change
;
if
(
handler
!=
null
)
if
(
handler
!=
null
)
{
{
handler
(
sender
,
s
);
handler
(
sender
,
s
);
...
@@ -547,24 +550,24 @@ namespace Svg
...
@@ -547,24 +550,24 @@ namespace Svg
}
}
#if Net4
#if Net4
public
override
void
RegisterEvents
(
ISvgEventCaller
caller
)
public
override
void
RegisterEvents
(
ISvgEventCaller
caller
)
{
{
//register basic events
//register basic events
base
.
RegisterEvents
(
caller
);
base
.
RegisterEvents
(
caller
);
//add change event for text
//add change event for text
caller
.
RegisterAction
<
string
,
string
>(
this
.
ID
+
"/onchange"
,
OnChange
);
caller
.
RegisterAction
<
string
,
string
>(
this
.
ID
+
"/onchange"
,
OnChange
);
}
}
public
override
void
UnregisterEvents
(
ISvgEventCaller
caller
)
public
override
void
UnregisterEvents
(
ISvgEventCaller
caller
)
{
{
//unregister base events
//unregister base events
base
.
UnregisterEvents
(
caller
);
base
.
UnregisterEvents
(
caller
);
//unregister change event
//unregister change event
caller
.
UnregisterAction
(
this
.
ID
+
"/onchange"
);
caller
.
UnregisterAction
(
this
.
ID
+
"/onchange"
);
}
}
#endif
#endif
}
}
}
}
Source/Text/SvgTextSpan.cs
View file @
ce8f2a64
...
@@ -8,24 +8,24 @@ using System.Text;
...
@@ -8,24 +8,24 @@ using System.Text;
namespace
Svg
namespace
Svg
{
{
[
SvgElement
(
"tspan"
)]
[
SvgElement
(
"tspan"
)]
public
class
SvgTextSpan
:
SvgTextBase
public
class
SvgTextSpan
:
SvgTextBase
{
{
public
override
SvgElement
DeepCopy
()
public
override
SvgElement
DeepCopy
()
{
{
return
DeepCopy
<
SvgTextSpan
>();
return
DeepCopy
<
SvgTextSpan
>();
}
}
public
override
SvgElement
DeepCopy
<
T
>()
public
override
SvgElement
DeepCopy
<
T
>()
{
{
var
newObj
=
base
.
DeepCopy
<
T
>()
as
SvgTextSpan
;
var
newObj
=
base
.
DeepCopy
<
T
>()
as
SvgTextSpan
;
newObj
.
X
=
this
.
X
;
newObj
.
X
=
this
.
X
;
newObj
.
Y
=
this
.
Y
;
newObj
.
Y
=
this
.
Y
;
newObj
.
Dx
=
this
.
Dx
;
newObj
.
Dx
=
this
.
Dx
;
newObj
.
Dy
=
this
.
Dy
;
newObj
.
Dy
=
this
.
Dy
;
newObj
.
Text
=
this
.
Text
;
newObj
.
Text
=
this
.
Text
;
return
newObj
;
return
newObj
;
}
}
}
}
...
...
Write
Preview
Supports
Markdown
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