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
535abaf8
Commit
535abaf8
authored
Aug 04, 2014
by
Tebjan Halm
Browse files
Merge pull request #90 from erdomke/master
Initial Work on W3C Test Compliance
parents
4b1ff3d4
bd05ecbc
Changes
1000
Show whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 1000+
files are displayed.
Plain diff
Email patch
Source/Text/SvgTextBase.cs
View file @
535abaf8
...
...
@@ -25,9 +25,7 @@ namespace Svg
private
SvgUnitCollection
_dx
=
new
SvgUnitCollection
();
private
SvgUnit
_letterSpacing
;
private
SvgUnit
_wordSpacing
;
private
SvgTextAnchor
_textAnchor
=
SvgTextAnchor
.
Start
;
private
static
readonly
SvgRenderer
_stringMeasure
;
private
const
string
DefaultFontFamily
=
"Times New Roman"
;
private
XmlSpaceHandling
_space
=
XmlSpaceHandling
.
@default
;
...
...
@@ -57,8 +55,15 @@ namespace Svg
[
SvgAttribute
(
"text-anchor"
)]
public
virtual
SvgTextAnchor
TextAnchor
{
get
{
return
this
.
_textAnchor
;
}
set
{
this
.
_textAnchor
=
value
;
this
.
IsPathDirty
=
true
;
}
get
{
return
(
this
.
Attributes
[
"text-anchor"
]
==
null
)
?
SvgTextAnchor
.
inherit
:
(
SvgTextAnchor
)
this
.
Attributes
[
"text-anchor"
];
}
set
{
this
.
Attributes
[
"text-anchor"
]
=
value
;
this
.
IsPathDirty
=
true
;
}
}
[
SvgAttribute
(
"baseline-shift"
)]
public
virtual
string
BaselineShift
{
get
{
return
this
.
Attributes
[
"baseline-shift"
]
as
string
;
}
set
{
this
.
Attributes
[
"baseline-shift"
]
=
value
;
this
.
IsPathDirty
=
true
;
}
}
/// <summary>
...
...
@@ -166,7 +171,7 @@ namespace Svg
/// <value>The fill.</value>
public
override
SvgPaintServer
Fill
{
get
{
return
(
this
.
Attributes
[
"fill"
]
==
null
)
?
new
SvgColourServer
(
Color
.
Black
)
:
(
SvgPaintServer
)
this
.
Attributes
[
"fill"
];
}
get
{
return
(
this
.
Attributes
[
"fill"
]
==
null
)
?
new
SvgColourServer
(
System
.
Drawing
.
Color
.
Black
)
:
(
SvgPaintServer
)
this
.
Attributes
[
"fill"
];
}
set
{
this
.
Attributes
[
"fill"
]
=
value
;
}
}
...
...
@@ -196,26 +201,16 @@ namespace Svg
/// <value>The bounds.</value>
public
override
System
.
Drawing
.
RectangleF
Bounds
{
get
{
return
this
.
Path
.
GetBounds
();
}
}
private
static
string
ValidateFontFamily
(
string
fontFamilyList
)
get
{
// 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
families
=
System
.
Drawing
.
FontFamily
.
Families
;
// Find a the first font that exists in the list of installed font families.
//styles from IE get sent through as lowercase.
foreach
(
var
f
in
fontParts
.
Where
(
f
=>
families
.
Any
(
family
=>
family
.
Name
.
ToLower
()
==
f
.
ToLower
())))
var
path
=
this
.
Path
(
null
);
foreach
(
var
elem
in
this
.
Children
.
OfType
<
SvgVisualElement
>())
{
return
f
;
path
.
AddPath
(
elem
.
Path
(
null
),
false
);
}
return
path
.
GetBounds
();
}
// No valid font family found from the list requested.
return
null
;
}
/// <summary>
/// Renders the <see cref="SvgElement"/> and contents to the specified <see cref="Graphics"/> object.
...
...
@@ -224,7 +219,7 @@ namespace Svg
/// <remarks>Necessary to make sure that any internal tspan elements get rendered as well</remarks>
protected
override
void
Render
(
SvgRenderer
renderer
)
{
if
((
this
.
Path
!=
null
)
&&
this
.
Visible
&&
this
.
Displayable
)
if
((
this
.
Path
(
renderer
)
!=
null
)
&&
this
.
Visible
&&
this
.
Displayable
)
{
this
.
PushTransforms
(
renderer
);
this
.
SetClip
(
renderer
);
...
...
@@ -267,9 +262,9 @@ namespace Svg
}
public
SizeF
Bounds
{
get
;
set
;
}
}
protected
BoundsData
GetTextBounds
()
protected
BoundsData
GetTextBounds
(
SvgRenderer
renderer
)
{
var
font
=
GetFont
();
var
font
=
GetFont
(
renderer
);
SvgTextBase
innerText
;
SizeF
stringBounds
;
float
totalHeight
=
0
;
...
...
@@ -297,7 +292,8 @@ namespace Svg
{
Bounds
=
stringBounds
,
Node
=
new
SvgContentNode
()
{
Content
=
ch
},
xOffset
=
(
i
==
0
?
0
:
_x
[
i
].
ToDeviceValue
(
this
)
-
_x
[
0
].
ToDeviceValue
(
this
))
xOffset
=
(
i
==
0
?
0
:
_x
[
i
].
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Horizontal
,
this
)
-
_x
[
0
].
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Horizontal
,
this
))
});
}
}
...
...
@@ -318,9 +314,9 @@ namespace Svg
}
else
{
stringBounds
=
innerText
.
GetTextBounds
().
Bounds
;
stringBounds
=
innerText
.
GetTextBounds
(
renderer
).
Bounds
;
result
.
Nodes
.
Add
(
new
NodeBounds
()
{
Bounds
=
stringBounds
,
Node
=
node
,
xOffset
=
totalWidth
});
if
(
innerText
.
Dx
.
Count
==
1
)
totalWidth
+=
innerText
.
Dx
[
0
].
ToDeviceValue
(
this
);
if
(
innerText
.
Dx
.
Count
==
1
)
totalWidth
+=
innerText
.
Dx
[
0
].
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Horizontal
,
this
);
}
totalHeight
=
Math
.
Max
(
totalHeight
,
stringBounds
.
Height
);
totalWidth
+=
stringBounds
.
Width
;
...
...
@@ -337,9 +333,7 @@ namespace Svg
/// Gets the <see cref="GraphicsPath"/> for this element.
/// </summary>
/// <value></value>
public
override
System
.
Drawing
.
Drawing2D
.
GraphicsPath
Path
{
get
public
override
System
.
Drawing
.
Drawing2D
.
GraphicsPath
Path
(
SvgRenderer
renderer
)
{
// Make sure the path is always null if there is no text
//if there is a TSpan inside of this text element then path should not be null (even if this text is empty!)
...
...
@@ -350,13 +344,16 @@ namespace Svg
if
(
_path
==
null
||
this
.
IsPathDirty
)
{
renderer
=
(
renderer
??
SvgRenderer
.
FromNull
());
// Measure the overall bounds of all the text
var
boundsData
=
GetTextBounds
();
var
boundsData
=
GetTextBounds
(
renderer
);
var
font
=
GetFont
();
var
font
=
GetFont
(
renderer
);
SvgTextBase
innerText
;
float
x
=
(
_x
.
Count
<
1
?
_calcX
:
_x
[
0
].
ToDeviceValue
(
this
))
+
(
_dx
.
Count
<
1
?
0
:
_dx
[
0
].
ToDeviceValue
(
this
));
float
y
=
(
_y
.
Count
<
1
?
_calcY
:
_y
[
0
].
ToDeviceValue
(
this
,
true
))
+
(
_dy
.
Count
<
1
?
0
:
_dy
[
0
].
ToDeviceValue
(
this
,
true
));
float
x
=
(
_x
.
Count
<
1
?
_calcX
:
_x
[
0
].
ToDeviceValue
(
renderer
,
UnitRenderingType
.
HorizontalOffset
,
this
))
+
(
_dx
.
Count
<
1
?
0
:
_dx
[
0
].
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Horizontal
,
this
));
float
y
=
(
_y
.
Count
<
1
?
_calcY
:
_y
[
0
].
ToDeviceValue
(
renderer
,
UnitRenderingType
.
VerticalOffset
,
this
))
+
(
_dy
.
Count
<
1
?
0
:
_dy
[
0
].
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Vertical
,
this
));
_path
=
new
GraphicsPath
();
_path
.
StartFigure
();
...
...
@@ -372,6 +369,35 @@ namespace Svg
break
;
}
try
{
renderer
.
Boundable
(
new
FontBoundable
(
font
));
switch
(
this
.
BaselineShift
)
{
case
null
:
case
""
:
case
"baseline"
:
case
"inherit"
:
// do nothing
break
;
case
"sub"
:
y
+=
new
SvgUnit
(
SvgUnitType
.
Ex
,
1
).
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Vertical
,
this
);
break
;
case
"super"
:
y
-=
new
SvgUnit
(
SvgUnitType
.
Ex
,
1
).
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Vertical
,
this
);
break
;
default
:
var
convert
=
new
SvgUnitConverter
();
var
shift
=
(
SvgUnit
)
convert
.
ConvertFromInvariantString
(
this
.
BaselineShift
);
y
-=
shift
.
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Vertical
,
this
);
break
;
}
}
finally
{
renderer
.
PopBoundable
();
}
NodeBounds
data
;
var
yCummOffset
=
0.0f
;
for
(
var
i
=
0
;
i
<
boundsData
.
Nodes
.
Count
;
i
++)
...
...
@@ -381,7 +407,7 @@ namespace Svg
if
(
innerText
==
null
)
{
// 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
(
renderer
,
_path
,
x
+
data
.
xOffset
,
y
-
boundsData
.
Bounds
.
Height
,
font
,
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
));
}
...
...
@@ -389,7 +415,7 @@ namespace Svg
{
innerText
.
_calcX
=
x
+
data
.
xOffset
;
innerText
.
_calcY
=
y
+
yCummOffset
;
if
(
innerText
.
Dy
.
Count
==
1
)
yCummOffset
+=
innerText
.
Dy
[
0
].
ToDeviceValue
(
this
);
if
(
innerText
.
Dy
.
Count
==
1
)
yCummOffset
+=
innerText
.
Dy
[
0
].
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Vertical
,
this
);
}
}
...
...
@@ -398,11 +424,8 @@ namespace Svg
}
return
_path
;
}
protected
set
{
_path
=
value
;
}
}
private
static
readonly
Regex
MultipleSpaces
=
new
Regex
(
@" {2,}"
,
RegexOptions
.
Compiled
);
/// <summary>
/// Prepare the text according to the whitespace handling rules. <see href="http://www.w3.org/TR/SVG/text.html">SVG Spec</see>.
...
...
@@ -413,82 +436,21 @@ namespace Svg
{
if
(
_space
==
XmlSpaceHandling
.
preserve
)
{
return
(
leadingSpace
?
" "
:
""
)
+
value
.
Replace
(
'\t'
,
' '
).
Replace
(
"\r\n"
,
" "
).
Replace
(
'\r'
,
' '
).
Replace
(
'\n'
,
' '
)
+
(
trailingSpace
?
" "
:
""
)
;
return
value
.
Replace
(
'\t'
,
' '
).
Replace
(
"\r\n"
,
" "
).
Replace
(
'\r'
,
' '
).
Replace
(
'\n'
,
' '
);
}
else
{
return
(
leadingSpace
?
" "
:
""
)
+
value
.
Replace
(
"\r"
,
""
).
Replace
(
"\n"
,
""
).
Replace
(
'\t'
,
' '
).
Trim
().
Replace
(
" "
,
" "
)
+
(
trailingSpace
?
" "
:
""
);
var
convValue
=
MultipleSpaces
.
Replace
(
value
.
Replace
(
"\r"
,
""
).
Replace
(
"\n"
,
""
).
Replace
(
'\t'
,
' '
),
" "
);
if
(!
leadingSpace
)
convValue
=
convValue
.
TrimStart
();
if
(!
trailingSpace
)
convValue
=
convValue
.
TrimEnd
();
return
convValue
;
}
}
/// <summary>
/// Get the font information based on data stored with the text object or inherited from the parent.
/// </summary>
/// <returns></returns>
internal
Font
GetFont
()
{
var
parentList
=
this
.
ParentsAndSelf
.
OfType
<
SvgVisualElement
>().
ToList
();
// Get the font-size
float
fontSize
;
var
fontSizeUnit
=
GetInheritedFontSize
();
if
(
fontSizeUnit
==
SvgUnit
.
None
)
{
fontSize
=
1.0f
;
}
else
{
fontSize
=
fontSizeUnit
.
ToDeviceValue
(
this
);
}
var
fontStyle
=
System
.
Drawing
.
FontStyle
.
Regular
;
// Get the font-weight
var
weightElement
=
(
from
e
in
parentList
where
e
.
FontWeight
!=
SvgFontWeight
.
inherit
select
e
).
FirstOrDefault
();
if
(
weightElement
!=
null
)
{
switch
(
weightElement
.
FontWeight
)
{
case
SvgFontWeight
.
bold
:
case
SvgFontWeight
.
bolder
:
case
SvgFontWeight
.
w700
:
case
SvgFontWeight
.
w800
:
case
SvgFontWeight
.
w900
:
fontStyle
|=
System
.
Drawing
.
FontStyle
.
Bold
;
break
;
}
}
// Get the font-style
var
styleElement
=
(
from
e
in
parentList
where
e
.
FontStyle
!=
SvgFontStyle
.
inherit
select
e
).
FirstOrDefault
();
if
(
styleElement
!=
null
)
{
switch
(
styleElement
.
FontStyle
)
{
case
SvgFontStyle
.
italic
:
case
SvgFontStyle
.
oblique
:
fontStyle
|=
System
.
Drawing
.
FontStyle
.
Italic
;
break
;
}
}
// Get the font-family
var
fontFamilyElement
=
(
from
e
in
parentList
where
e
.
FontFamily
!=
null
&&
e
.
FontFamily
!=
"inherit"
select
e
).
FirstOrDefault
();
string
family
;
if
(
fontFamilyElement
==
null
)
{
family
=
DefaultFontFamily
;
}
else
{
family
=
ValidateFontFamily
(
fontFamilyElement
.
FontFamily
)
??
DefaultFontFamily
;
}
return
new
Font
(
family
,
fontSize
,
fontStyle
,
GraphicsUnit
.
Pixel
);
}
/// <summary>
/// Draws a string on a path at a specified location and with a specified font.
/// </summary>
internal
void
DrawString
(
GraphicsPath
path
,
float
x
,
float
y
,
Font
font
,
string
text
)
internal
void
DrawString
(
SvgRenderer
renderer
,
GraphicsPath
path
,
float
x
,
float
y
,
Font
font
,
string
text
)
{
PointF
location
=
new
PointF
(
x
,
y
);
...
...
@@ -497,8 +459,8 @@ namespace Svg
{
// Cut up into words, or just leave as required
string
[]
words
=
(
this
.
WordSpacing
.
Value
>
0.0f
)
?
text
.
Split
(
' '
)
:
new
string
[]
{
text
};
float
wordSpacing
=
this
.
WordSpacing
.
ToDeviceValue
(
this
);
float
letterSpacing
=
this
.
LetterSpacing
.
ToDeviceValue
(
this
);
float
wordSpacing
=
this
.
WordSpacing
.
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Horizontal
,
this
);
float
letterSpacing
=
this
.
LetterSpacing
.
ToDeviceValue
(
renderer
,
UnitRenderingType
.
Horizontal
,
this
);
float
start
=
x
;
foreach
(
string
word
in
words
)
...
...
@@ -569,5 +531,30 @@ namespace Svg
}
#endif
private
class
FontBoundable
:
ISvgBoundable
{
private
Font
_font
;
public
FontBoundable
(
Font
font
)
{
_font
=
font
;
}
public
PointF
Location
{
get
{
return
PointF
.
Empty
;
}
}
public
SizeF
Size
{
get
{
return
new
SizeF
(
1
,
_font
.
Size
);
}
}
public
RectangleF
Bounds
{
get
{
return
new
RectangleF
(
this
.
Location
,
this
.
Size
);
}
}
}
}
}
Source/TraceAndTestImpact.testsettings
0 → 100644
View file @
535abaf8
<?xml version="1.0" encoding="UTF-8"?>
<TestSettings
name=
"Trace and Test Impact"
id=
"23149ffc-ac6c-4c10-b846-c450c14dcd05"
xmlns=
"http://microsoft.com/schemas/VisualStudio/TeamTest/2010"
>
<Description>
These are test settings for Trace and Test Impact.
</Description>
<Execution>
<TestTypeSpecific
/>
<AgentRule
name=
"Execution Agents"
>
</AgentRule>
</Execution>
</TestSettings>
\ No newline at end of file
Source/Transforms/SvgTransformConverter.cs
View file @
535abaf8
...
...
@@ -21,7 +21,8 @@ namespace Svg.Transforms
if
(
transforms
[
i
]
==
')'
)
{
yield
return
transforms
.
Substring
(
transformEnd
,
i
-
transformEnd
+
1
).
Trim
();
transformEnd
=
i
+
1
;
while
(
i
<
transforms
.
Length
&&
!
char
.
IsLetter
(
transforms
[
i
]))
i
++;
transformEnd
=
i
;
}
}
}
...
...
Tests/Svg.UnitTests/CssQueryTest.cs
0 → 100644
View file @
535abaf8
using
Svg.Css
;
using
Microsoft.VisualStudio.TestTools.UnitTesting
;
using
System
;
using
ExCSS
;
namespace
Svg.UnitTests
{
/// <summary>
///This is a test class for CssQueryTest and is intended
///to contain all CssQueryTest Unit Tests
///</summary>
[
TestClass
()]
public
class
CssQueryTest
{
private
TestContext
testContextInstance
;
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public
TestContext
TestContext
{
get
{
return
testContextInstance
;
}
set
{
testContextInstance
=
value
;
}
}
#
region
Additional
test
attributes
//
//You can use the following additional attributes as you write your tests:
//
//Use ClassInitialize to run code before running the first test in the class
//[ClassInitialize()]
//public static void MyClassInitialize(TestContext testContext)
//{
//}
//
//Use ClassCleanup to run code after all tests in a class have run
//[ClassCleanup()]
//public static void MyClassCleanup()
//{
//}
//
//Use TestInitialize to run code before running each test
//[TestInitialize()]
//public void MyTestInitialize()
//{
//}
//
//Use TestCleanup to run code after each test has run
//[TestCleanup()]
//public void MyTestCleanup()
//{
//}
//
#
endregion
private
void
TestSelectorSpecificity
(
string
selector
,
int
specificity
)
{
var
parser
=
new
ExCSS
.
Parser
();
var
sheet
=
parser
.
Parse
(
selector
+
" {color:black}"
);
Assert
.
AreEqual
(
specificity
,
CssQuery
.
GetSpecificity
(
sheet
.
StyleRules
[
0
].
Selector
));
}
/// <summary>
///A test for GetSpecificity
///</summary>
///<remarks>Lifted from http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/, and http://css-tricks.com/specifics-on-css-specificity/ </remarks>
[
TestMethod
()]
public
void
RunSpecificityTests
()
{
TestSelectorSpecificity
(
"*"
,
0x0
);
TestSelectorSpecificity
(
"li"
,
0x10
);
TestSelectorSpecificity
(
"li:first-line"
,
0x20
);
TestSelectorSpecificity
(
"ul li"
,
0x20
);
TestSelectorSpecificity
(
"ul ol+li"
,
0x30
);
TestSelectorSpecificity
(
"h1 + *[rel=up]"
,
0x110
);
TestSelectorSpecificity
(
"ul ol li.red"
,
0x130
);
TestSelectorSpecificity
(
"li.red.level"
,
0x210
);
TestSelectorSpecificity
(
"p"
,
0x010
);
TestSelectorSpecificity
(
"div p"
,
0x020
);
TestSelectorSpecificity
(
".sith"
,
0x100
);
TestSelectorSpecificity
(
"div p.sith"
,
0x120
);
TestSelectorSpecificity
(
"#sith"
,
0x1000
);
TestSelectorSpecificity
(
"body #darkside .sith p"
,
0x1120
);
TestSelectorSpecificity
(
"body #content .data img:hover"
,
0x1220
);
TestSelectorSpecificity
(
"a#a-02"
,
0x1010
);
TestSelectorSpecificity
(
"a[id=\"a-02\"]"
,
0x0110
);
TestSelectorSpecificity
(
"ul#nav li.active a"
,
0x1130
);
TestSelectorSpecificity
(
"body.ie7 .col_3 h2 ~ h2"
,
0x0230
);
TestSelectorSpecificity
(
"#footer *:not(nav) li"
,
0x1020
);
TestSelectorSpecificity
(
"ul > li ul li ol li:first-letter"
,
0x0070
);
}
}
}
Tests/Svg.UnitTests/Properties/AssemblyInfo.cs
0 → 100644
View file @
535abaf8
using
System.Reflection
;
using
System.Runtime.CompilerServices
;
using
System.Runtime.InteropServices
;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[
assembly
:
AssemblyTitle
(
"Svg.UnitTests"
)]
[
assembly
:
AssemblyDescription
(
""
)]
[
assembly
:
AssemblyConfiguration
(
""
)]
[
assembly
:
AssemblyCompany
(
""
)]
[
assembly
:
AssemblyProduct
(
"Svg.UnitTests"
)]
[
assembly
:
AssemblyCopyright
(
"Copyright © 2014"
)]
[
assembly
:
AssemblyTrademark
(
""
)]
[
assembly
:
AssemblyCulture
(
""
)]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[
assembly
:
ComVisible
(
false
)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[
assembly
:
Guid
(
"6ab1d266-f201-46c0-9d14-523768eb18db"
)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
[
assembly
:
AssemblyVersion
(
"1.0.0.0"
)]
[
assembly
:
AssemblyFileVersion
(
"1.0.0.0"
)]
Tests/Svg.UnitTests/Svg.UnitTests.csproj
0 → 100644
View file @
535abaf8
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"4.0"
DefaultTargets=
"Build"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<PropertyGroup>
<Configuration
Condition=
" '$(Configuration)' == '' "
>
Debug
</Configuration>
<Platform
Condition=
" '$(Platform)' == '' "
>
AnyCPU
</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>
2.0
</SchemaVersion>
<ProjectGuid>
{E702EB7D-D01D-438A-BADD-E72D4E49109F}
</ProjectGuid>
<OutputType>
Library
</OutputType>
<AppDesignerFolder>
Properties
</AppDesignerFolder>
<RootNamespace>
Svg.UnitTests
</RootNamespace>
<AssemblyName>
Svg.UnitTests
</AssemblyName>
<TargetFrameworkVersion>
v4.0
</TargetFrameworkVersion>
<FileAlignment>
512
</FileAlignment>
<ProjectTypeGuids>
{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup
Condition=
" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "
>
<DebugSymbols>
true
</DebugSymbols>
<DebugType>
full
</DebugType>
<Optimize>
false
</Optimize>
<OutputPath>
bin\Debug\
</OutputPath>
<DefineConstants>
DEBUG;TRACE
</DefineConstants>
<ErrorReport>
prompt
</ErrorReport>
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
<PropertyGroup
Condition=
" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "
>
<DebugType>
pdbonly
</DebugType>
<Optimize>
true
</Optimize>
<OutputPath>
bin\Release\
</OutputPath>
<DefineConstants>
TRACE
</DefineConstants>
<ErrorReport>
prompt
</ErrorReport>
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference
Include=
"Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
/>
<Reference
Include=
"System"
/>
<Reference
Include=
"System.Core"
>
<RequiredTargetFramework>
3.5
</RequiredTargetFramework>
</Reference>
<Reference
Include=
"System.Drawing"
/>
<Reference
Include=
"System.Web"
/>
<Reference
Include=
"System.Xml"
/>
</ItemGroup>
<ItemGroup>
<CodeAnalysisDependentAssemblyPaths
Condition=
" '$(VS100COMNTOOLS)' != '' "
Include=
"$(VS100COMNTOOLS)..\IDE\PrivateAssemblies"
>
<Visible>
False
</Visible>
</CodeAnalysisDependentAssemblyPaths>
</ItemGroup>
<ItemGroup>
<Compile
Include=
"CssQueryTest.cs"
/>
<Compile
Include=
"Properties\AssemblyInfo.cs"
/>
</ItemGroup>
<ItemGroup>
<ProjectReference
Include=
"..\..\Source\Svg.csproj"
>
<Project>
{886A98C5-37C0-4E8B-885E-30C1D2F98B47}
</Project>
<Name>
Svg
</Name>
</ProjectReference>
</ItemGroup>
<Import
Project=
"$(MSBuildBinPath)\Microsoft.CSharp.targets"
/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
\ No newline at end of file
Tests/SvgW3CTestRunner/Program.cs
0 → 100644
View file @
535abaf8
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Windows.Forms
;
namespace
SvgW3CTestRunner
{
static
class
Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[
STAThread
]
static
void
Main
()
{
Application
.
EnableVisualStyles
();
Application
.
SetCompatibleTextRenderingDefault
(
false
);
Application
.
Run
(
new
View
());
}
}
}
Tests/SvgW3CTestRunner/Properties/AssemblyInfo.cs
0 → 100644
View file @
535abaf8
using
System.Reflection
;
using
System.Runtime.CompilerServices
;
using
System.Runtime.InteropServices
;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[
assembly
:
AssemblyTitle
(
"SvgW3CTestRunner"
)]
[
assembly
:
AssemblyDescription
(
""
)]
[
assembly
:
AssemblyConfiguration
(
""
)]
[
assembly
:
AssemblyCompany
(
""
)]
[
assembly
:
AssemblyProduct
(
"SvgW3CTestRunner"
)]
[
assembly
:
AssemblyCopyright
(
"Copyright © 2014"
)]
[
assembly
:
AssemblyTrademark
(
""
)]
[
assembly
:
AssemblyCulture
(
""
)]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[
assembly
:
ComVisible
(
false
)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[
assembly
:
Guid
(
"bf75ea0d-e099-432c-bad5-7fd6cf53d5ee"
)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[
assembly
:
AssemblyVersion
(
"1.0.0.0"
)]
[
assembly
:
AssemblyFileVersion
(
"1.0.0.0"
)]
Tests/SvgW3CTestRunner/Properties/Resources.Designer.cs
0 → 100644
View file @
535abaf8
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace
SvgW3CTestRunner.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[
global
::
System
.
CodeDom
.
Compiler
.
GeneratedCodeAttribute
(
"System.Resources.Tools.StronglyTypedResourceBuilder"
,
"4.0.0.0"
)]
[
global
::
System
.
Diagnostics
.
DebuggerNonUserCodeAttribute
()]
[
global
::
System
.
Runtime
.
CompilerServices
.
CompilerGeneratedAttribute
()]
internal
class
Resources
{
private
static
global
::
System
.
Resources
.
ResourceManager
resourceMan
;
private
static
global
::
System
.
Globalization
.
CultureInfo
resourceCulture
;
[
global
::
System
.
Diagnostics
.
CodeAnalysis
.
SuppressMessageAttribute
(
"Microsoft.Performance"
,
"CA1811:AvoidUncalledPrivateCode"
)]
internal
Resources
()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[
global
::
System
.
ComponentModel
.
EditorBrowsableAttribute
(
global
::
System
.
ComponentModel
.
EditorBrowsableState
.
Advanced
)]
internal
static
global
::
System
.
Resources
.
ResourceManager
ResourceManager
{
get
{
if
((
resourceMan
==
null
))
{
global
::
System
.
Resources
.
ResourceManager
temp
=
new
global
::
System
.
Resources
.
ResourceManager
(
"SvgW3CTestRunner.Properties.Resources"
,
typeof
(
Resources
).
Assembly
);
resourceMan
=
temp
;
}
return
resourceMan
;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[
global
::
System
.
ComponentModel
.
EditorBrowsableAttribute
(
global
::
System
.
ComponentModel
.
EditorBrowsableState
.
Advanced
)]
internal
static
global
::
System
.
Globalization
.
CultureInfo
Culture
{
get
{
return
resourceCulture
;
}
set
{
resourceCulture
=
value
;
}
}
}
}
Tests/SvgW3CTestRunner/Properties/Resources.resx
0 → 100644
View file @
535abaf8
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema
id=
"root"
xmlns=
""
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:msdata=
"urn:schemas-microsoft-com:xml-msdata"
>
<xsd:element
name=
"root"
msdata:IsDataSet=
"true"
>
<xsd:complexType>
<xsd:choice
maxOccurs=
"unbounded"
>
<xsd:element
name=
"metadata"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
name=
"value"
type=
"xsd:string"
minOccurs=
"0"
/>
</xsd:sequence>
<xsd:attribute
name=
"name"
type=
"xsd:string"
/>
<xsd:attribute
name=
"type"
type=
"xsd:string"
/>
<xsd:attribute
name=
"mimetype"
type=
"xsd:string"
/>
</xsd:complexType>
</xsd:element>
<xsd:element
name=
"assembly"
>
<xsd:complexType>
<xsd:attribute
name=
"alias"
type=
"xsd:string"
/>
<xsd:attribute
name=
"name"
type=
"xsd:string"
/>
</xsd:complexType>
</xsd:element>
<xsd:element
name=
"data"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
name=
"value"
type=
"xsd:string"
minOccurs=
"0"
msdata:Ordinal=
"1"
/>
<xsd:element
name=
"comment"
type=
"xsd:string"
minOccurs=
"0"
msdata:Ordinal=
"2"
/>
</xsd:sequence>
<xsd:attribute
name=
"name"
type=
"xsd:string"
msdata:Ordinal=
"1"
/>
<xsd:attribute
name=
"type"
type=
"xsd:string"
msdata:Ordinal=
"3"
/>
<xsd:attribute
name=
"mimetype"
type=
"xsd:string"
msdata:Ordinal=
"4"
/>
</xsd:complexType>
</xsd:element>
<xsd:element
name=
"resheader"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
name=
"value"
type=
"xsd:string"
minOccurs=
"0"
msdata:Ordinal=
"1"
/>
</xsd:sequence>
<xsd:attribute
name=
"name"
type=
"xsd:string"
use=
"required"
/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader
name=
"resmimetype"
>
<value>
text/microsoft-resx
</value>
</resheader>
<resheader
name=
"version"
>
<value>
2.0
</value>
</resheader>
<resheader
name=
"reader"
>
<value>
System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader
name=
"writer"
>
<value>
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>
\ No newline at end of file
Tests/SvgW3CTestRunner/Properties/Settings.Designer.cs
0 → 100644
View file @
535abaf8
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace
SvgW3CTestRunner.Properties
{
[
global
::
System
.
Runtime
.
CompilerServices
.
CompilerGeneratedAttribute
()]
[
global
::
System
.
CodeDom
.
Compiler
.
GeneratedCodeAttribute
(
"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator"
,
"10.0.0.0"
)]
internal
sealed
partial
class
Settings
:
global
::
System
.
Configuration
.
ApplicationSettingsBase
{
private
static
Settings
defaultInstance
=
((
Settings
)(
global
::
System
.
Configuration
.
ApplicationSettingsBase
.
Synchronized
(
new
Settings
())));
public
static
Settings
Default
{
get
{
return
defaultInstance
;
}
}
}
}
Tests/SvgW3CTestRunner/Properties/Settings.settings
0 → 100644
View file @
535abaf8
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile
xmlns=
"http://schemas.microsoft.com/VisualStudio/2004/01/settings"
CurrentProfile=
"(Default)"
>
<Profiles>
<Profile
Name=
"(Default)"
/>
</Profiles>
<Settings
/>
</SettingsFile>
Tests/SvgW3CTestRunner/SvgW3CTestRunner.csproj
0 → 100644
View file @
535abaf8
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"4.0"
DefaultTargets=
"Build"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<PropertyGroup>
<Configuration
Condition=
" '$(Configuration)' == '' "
>
Debug
</Configuration>
<Platform
Condition=
" '$(Platform)' == '' "
>
x86
</Platform>
<ProductVersion>
8.0.30703
</ProductVersion>
<SchemaVersion>
2.0
</SchemaVersion>
<ProjectGuid>
{8ED74C39-6CFF-421E-952A-30F9E6957108}
</ProjectGuid>
<OutputType>
WinExe
</OutputType>
<AppDesignerFolder>
Properties
</AppDesignerFolder>
<RootNamespace>
SvgW3CTestRunner
</RootNamespace>
<AssemblyName>
SvgW3CTestRunner
</AssemblyName>
<TargetFrameworkVersion>
v3.5
</TargetFrameworkVersion>
<FileAlignment>
512
</FileAlignment>
</PropertyGroup>
<PropertyGroup
Condition=
" '$(Configuration)|$(Platform)' == 'Debug|x86' "
>
<PlatformTarget>
x86
</PlatformTarget>
<DebugSymbols>
true
</DebugSymbols>
<DebugType>
full
</DebugType>
<Optimize>
false
</Optimize>
<OutputPath>
bin\Debug\
</OutputPath>
<DefineConstants>
DEBUG;TRACE
</DefineConstants>
<ErrorReport>
prompt
</ErrorReport>
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
<PropertyGroup
Condition=
" '$(Configuration)|$(Platform)' == 'Release|x86' "
>
<PlatformTarget>
x86
</PlatformTarget>
<DebugType>
pdbonly
</DebugType>
<Optimize>
true
</Optimize>
<OutputPath>
bin\Release\
</OutputPath>
<DefineConstants>
TRACE
</DefineConstants>
<ErrorReport>
prompt
</ErrorReport>
<WarningLevel>
4
</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference
Include=
"System"
/>
<Reference
Include=
"System.Core"
/>
<Reference
Include=
"System.Xml.Linq"
/>
<Reference
Include=
"System.Data.DataSetExtensions"
/>
<Reference
Include=
"System.Data"
/>
<Reference
Include=
"System.Deployment"
/>
<Reference
Include=
"System.Drawing"
/>
<Reference
Include=
"System.Windows.Forms"
/>
<Reference
Include=
"System.Xml"
/>
</ItemGroup>
<ItemGroup>
<Compile
Include=
"View.cs"
>
<SubType>
Form
</SubType>
</Compile>
<Compile
Include=
"View.Designer.cs"
>
<DependentUpon>
View.cs
</DependentUpon>
</Compile>
<Compile
Include=
"Program.cs"
/>
<Compile
Include=
"Properties\AssemblyInfo.cs"
/>
<EmbeddedResource
Include=
"View.resx"
>
<DependentUpon>
View.cs
</DependentUpon>
</EmbeddedResource>
<EmbeddedResource
Include=
"Properties\Resources.resx"
>
<Generator>
ResXFileCodeGenerator
</Generator>
<LastGenOutput>
Resources.Designer.cs
</LastGenOutput>
<SubType>
Designer
</SubType>
</EmbeddedResource>
<Compile
Include=
"Properties\Resources.Designer.cs"
>
<AutoGen>
True
</AutoGen>
<DependentUpon>
Resources.resx
</DependentUpon>
</Compile>
<None
Include=
"Properties\Settings.settings"
>
<Generator>
SettingsSingleFileGenerator
</Generator>
<LastGenOutput>
Settings.Designer.cs
</LastGenOutput>
</None>
<Compile
Include=
"Properties\Settings.Designer.cs"
>
<AutoGen>
True
</AutoGen>
<DependentUpon>
Settings.settings
</DependentUpon>
<DesignTimeSharedInput>
True
</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference
Include=
"..\..\Source\Svg.csproj"
>
<Project>
{886A98C5-37C0-4E8B-885E-30C1D2F98B47}
</Project>
<Name>
Svg
</Name>
</ProjectReference>
</ItemGroup>
<Import
Project=
"$(MSBuildToolsPath)\Microsoft.CSharp.targets"
/>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
\ No newline at end of file
Tests/SvgW3CTestRunner/View.Designer.cs
0 → 100644
View file @
535abaf8
namespace
SvgW3CTestRunner
{
partial
class
View
{
/// <summary>
/// Required designer variable.
/// </summary>
private
System
.
ComponentModel
.
IContainer
components
=
null
;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected
override
void
Dispose
(
bool
disposing
)
{
if
(
disposing
&&
(
components
!=
null
))
{
components
.
Dispose
();
}
base
.
Dispose
(
disposing
);
}
#
region
Windows
Form
Designer
generated
code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private
void
InitializeComponent
()
{
this
.
lstFiles
=
new
System
.
Windows
.
Forms
.
ListBox
();
this
.
tableLayoutPanel1
=
new
System
.
Windows
.
Forms
.
TableLayoutPanel
();
this
.
splitContainer1
=
new
System
.
Windows
.
Forms
.
SplitContainer
();
this
.
tableLayoutPanel2
=
new
System
.
Windows
.
Forms
.
TableLayoutPanel
();
this
.
tableLayoutPanel3
=
new
System
.
Windows
.
Forms
.
TableLayoutPanel
();
this
.
label1
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
label2
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
picSvg
=
new
System
.
Windows
.
Forms
.
PictureBox
();
this
.
picPng
=
new
System
.
Windows
.
Forms
.
PictureBox
();
this
.
tableLayoutPanel1
.
SuspendLayout
();
this
.
splitContainer1
.
Panel1
.
SuspendLayout
();
this
.
splitContainer1
.
Panel2
.
SuspendLayout
();
this
.
splitContainer1
.
SuspendLayout
();
this
.
tableLayoutPanel2
.
SuspendLayout
();
this
.
tableLayoutPanel3
.
SuspendLayout
();
((
System
.
ComponentModel
.
ISupportInitialize
)(
this
.
picSvg
)).
BeginInit
();
((
System
.
ComponentModel
.
ISupportInitialize
)(
this
.
picPng
)).
BeginInit
();
this
.
SuspendLayout
();
//
// lstFiles
//
this
.
lstFiles
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
lstFiles
.
FormattingEnabled
=
true
;
this
.
lstFiles
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
lstFiles
.
Name
=
"lstFiles"
;
this
.
lstFiles
.
Size
=
new
System
.
Drawing
.
Size
(
144
,
376
);
this
.
lstFiles
.
TabIndex
=
0
;
this
.
lstFiles
.
SelectedIndexChanged
+=
new
System
.
EventHandler
(
this
.
lstFiles_SelectedIndexChanged
);
//
// tableLayoutPanel1
//
this
.
tableLayoutPanel1
.
ColumnCount
=
2
;
this
.
tableLayoutPanel1
.
ColumnStyles
.
Add
(
new
System
.
Windows
.
Forms
.
ColumnStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Absolute
,
150F
));
this
.
tableLayoutPanel1
.
ColumnStyles
.
Add
(
new
System
.
Windows
.
Forms
.
ColumnStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
100F
));
this
.
tableLayoutPanel1
.
Controls
.
Add
(
this
.
splitContainer1
,
1
,
0
);
this
.
tableLayoutPanel1
.
Controls
.
Add
(
this
.
lstFiles
,
0
,
0
);
this
.
tableLayoutPanel1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
tableLayoutPanel1
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
tableLayoutPanel1
.
Name
=
"tableLayoutPanel1"
;
this
.
tableLayoutPanel1
.
RowCount
=
1
;
this
.
tableLayoutPanel1
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
100F
));
this
.
tableLayoutPanel1
.
Size
=
new
System
.
Drawing
.
Size
(
977
,
382
);
this
.
tableLayoutPanel1
.
TabIndex
=
1
;
//
// splitContainer1
//
this
.
splitContainer1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
splitContainer1
.
Location
=
new
System
.
Drawing
.
Point
(
153
,
3
);
this
.
splitContainer1
.
Name
=
"splitContainer1"
;
//
// splitContainer1.Panel1
//
this
.
splitContainer1
.
Panel1
.
Controls
.
Add
(
this
.
tableLayoutPanel2
);
//
// splitContainer1.Panel2
//
this
.
splitContainer1
.
Panel2
.
Controls
.
Add
(
this
.
tableLayoutPanel3
);
this
.
splitContainer1
.
Size
=
new
System
.
Drawing
.
Size
(
821
,
376
);
this
.
splitContainer1
.
SplitterDistance
=
424
;
this
.
splitContainer1
.
TabIndex
=
0
;
//
// tableLayoutPanel2
//
this
.
tableLayoutPanel2
.
ColumnCount
=
1
;
this
.
tableLayoutPanel2
.
ColumnStyles
.
Add
(
new
System
.
Windows
.
Forms
.
ColumnStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
50F
));
this
.
tableLayoutPanel2
.
Controls
.
Add
(
this
.
label1
,
0
,
0
);
this
.
tableLayoutPanel2
.
Controls
.
Add
(
this
.
picSvg
,
0
,
1
);
this
.
tableLayoutPanel2
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
tableLayoutPanel2
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
tableLayoutPanel2
.
Name
=
"tableLayoutPanel2"
;
this
.
tableLayoutPanel2
.
RowCount
=
2
;
this
.
tableLayoutPanel2
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
());
this
.
tableLayoutPanel2
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
50F
));
this
.
tableLayoutPanel2
.
Size
=
new
System
.
Drawing
.
Size
(
424
,
376
);
this
.
tableLayoutPanel2
.
TabIndex
=
0
;
//
// tableLayoutPanel3
//
this
.
tableLayoutPanel3
.
ColumnCount
=
1
;
this
.
tableLayoutPanel3
.
ColumnStyles
.
Add
(
new
System
.
Windows
.
Forms
.
ColumnStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
50F
));
this
.
tableLayoutPanel3
.
Controls
.
Add
(
this
.
picPng
,
0
,
1
);
this
.
tableLayoutPanel3
.
Controls
.
Add
(
this
.
label2
,
0
,
0
);
this
.
tableLayoutPanel3
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
tableLayoutPanel3
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
tableLayoutPanel3
.
Name
=
"tableLayoutPanel3"
;
this
.
tableLayoutPanel3
.
RowCount
=
2
;
this
.
tableLayoutPanel3
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
());
this
.
tableLayoutPanel3
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
50F
));
this
.
tableLayoutPanel3
.
Size
=
new
System
.
Drawing
.
Size
(
393
,
376
);
this
.
tableLayoutPanel3
.
TabIndex
=
0
;
//
// label1
//
this
.
label1
.
AutoSize
=
true
;
this
.
label1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
0
);
this
.
label1
.
Name
=
"label1"
;
this
.
label1
.
Size
=
new
System
.
Drawing
.
Size
(
67
,
13
);
this
.
label1
.
TabIndex
=
0
;
this
.
label1
.
Text
=
"SVG Render"
;
//
// label2
//
this
.
label2
.
AutoSize
=
true
;
this
.
label2
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
0
);
this
.
label2
.
Name
=
"label2"
;
this
.
label2
.
Size
=
new
System
.
Drawing
.
Size
(
68
,
13
);
this
.
label2
.
TabIndex
=
0
;
this
.
label2
.
Text
=
"PNG Render"
;
//
// picSvg
//
this
.
picSvg
.
BackColor
=
System
.
Drawing
.
Color
.
White
;
this
.
picSvg
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
picSvg
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
13
);
this
.
picSvg
.
Margin
=
new
System
.
Windows
.
Forms
.
Padding
(
0
);
this
.
picSvg
.
Name
=
"picSvg"
;
this
.
picSvg
.
Size
=
new
System
.
Drawing
.
Size
(
424
,
363
);
this
.
picSvg
.
TabIndex
=
1
;
this
.
picSvg
.
TabStop
=
false
;
//
// picPng
//
this
.
picPng
.
BackColor
=
System
.
Drawing
.
Color
.
White
;
this
.
picPng
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
picPng
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
13
);
this
.
picPng
.
Margin
=
new
System
.
Windows
.
Forms
.
Padding
(
0
);
this
.
picPng
.
Name
=
"picPng"
;
this
.
picPng
.
Size
=
new
System
.
Drawing
.
Size
(
393
,
363
);
this
.
picPng
.
TabIndex
=
2
;
this
.
picPng
.
TabStop
=
false
;
//
// frmView
//
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
6F
,
13F
);
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
Font
;
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
977
,
382
);
this
.
Controls
.
Add
(
this
.
tableLayoutPanel1
);
this
.
Name
=
"frmView"
;
this
.
Text
=
"Form1"
;
this
.
tableLayoutPanel1
.
ResumeLayout
(
false
);
this
.
splitContainer1
.
Panel1
.
ResumeLayout
(
false
);
this
.
splitContainer1
.
Panel2
.
ResumeLayout
(
false
);
this
.
splitContainer1
.
ResumeLayout
(
false
);
this
.
tableLayoutPanel2
.
ResumeLayout
(
false
);
this
.
tableLayoutPanel2
.
PerformLayout
();
this
.
tableLayoutPanel3
.
ResumeLayout
(
false
);
this
.
tableLayoutPanel3
.
PerformLayout
();
((
System
.
ComponentModel
.
ISupportInitialize
)(
this
.
picSvg
)).
EndInit
();
((
System
.
ComponentModel
.
ISupportInitialize
)(
this
.
picPng
)).
EndInit
();
this
.
ResumeLayout
(
false
);
}
#
endregion
private
System
.
Windows
.
Forms
.
ListBox
lstFiles
;
private
System
.
Windows
.
Forms
.
TableLayoutPanel
tableLayoutPanel1
;
private
System
.
Windows
.
Forms
.
SplitContainer
splitContainer1
;
private
System
.
Windows
.
Forms
.
TableLayoutPanel
tableLayoutPanel2
;
private
System
.
Windows
.
Forms
.
Label
label1
;
private
System
.
Windows
.
Forms
.
PictureBox
picSvg
;
private
System
.
Windows
.
Forms
.
TableLayoutPanel
tableLayoutPanel3
;
private
System
.
Windows
.
Forms
.
PictureBox
picPng
;
private
System
.
Windows
.
Forms
.
Label
label2
;
}
}
Tests/SvgW3CTestRunner/View.cs
0 → 100644
View file @
535abaf8
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Windows.Forms
;
using
System.Drawing
;
using
System.IO
;
using
Svg
;
namespace
SvgW3CTestRunner
{
public
partial
class
View
:
Form
{
private
const
string
_svgBasePath
=
@"..\..\..\W3CTestSuite\svg\"
;
private
const
string
_pngBasePath
=
@"..\..\..\W3CTestSuite\png\"
;
public
View
()
{
InitializeComponent
();
// ignore tests pertaining to javascript or xml reading
var
files
=
(
from
f
in
(
from
g
in
Directory
.
GetFiles
(
_svgBasePath
)
select
Path
.
GetFileName
(
g
))
where
!
f
.
StartsWith
(
"animate-"
)
&&
!
f
.
StartsWith
(
"conform-viewer"
)
&&
!
f
.
Contains
(
"-dom-"
)
&&
!
f
.
StartsWith
(
"linking-"
)
&&
!
f
.
StartsWith
(
"interact-"
)
orderby
f
select
(
object
)
f
);
lstFiles
.
Items
.
AddRange
(
files
.
ToArray
());
}
private
void
lstFiles_SelectedIndexChanged
(
object
sender
,
EventArgs
e
)
{
var
fileName
=
lstFiles
.
SelectedItem
.
ToString
();
var
doc
=
SvgDocument
.
Open
(
_svgBasePath
+
fileName
);
picSvg
.
Image
=
doc
.
Draw
();
var
png
=
Image
.
FromFile
(
_pngBasePath
+
Path
.
GetFileNameWithoutExtension
(
fileName
)
+
".png"
);
picPng
.
Image
=
png
;
}
}
}
Tests/SvgW3CTestRunner/View.resx
0 → 100644
View file @
535abaf8
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema
id=
"root"
xmlns=
""
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:msdata=
"urn:schemas-microsoft-com:xml-msdata"
>
<xsd:import
namespace=
"http://www.w3.org/XML/1998/namespace"
/>
<xsd:element
name=
"root"
msdata:IsDataSet=
"true"
>
<xsd:complexType>
<xsd:choice
maxOccurs=
"unbounded"
>
<xsd:element
name=
"metadata"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
name=
"value"
type=
"xsd:string"
minOccurs=
"0"
/>
</xsd:sequence>
<xsd:attribute
name=
"name"
use=
"required"
type=
"xsd:string"
/>
<xsd:attribute
name=
"type"
type=
"xsd:string"
/>
<xsd:attribute
name=
"mimetype"
type=
"xsd:string"
/>
<xsd:attribute
ref=
"xml:space"
/>
</xsd:complexType>
</xsd:element>
<xsd:element
name=
"assembly"
>
<xsd:complexType>
<xsd:attribute
name=
"alias"
type=
"xsd:string"
/>
<xsd:attribute
name=
"name"
type=
"xsd:string"
/>
</xsd:complexType>
</xsd:element>
<xsd:element
name=
"data"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
name=
"value"
type=
"xsd:string"
minOccurs=
"0"
msdata:Ordinal=
"1"
/>
<xsd:element
name=
"comment"
type=
"xsd:string"
minOccurs=
"0"
msdata:Ordinal=
"2"
/>
</xsd:sequence>
<xsd:attribute
name=
"name"
type=
"xsd:string"
use=
"required"
msdata:Ordinal=
"1"
/>
<xsd:attribute
name=
"type"
type=
"xsd:string"
msdata:Ordinal=
"3"
/>
<xsd:attribute
name=
"mimetype"
type=
"xsd:string"
msdata:Ordinal=
"4"
/>
<xsd:attribute
ref=
"xml:space"
/>
</xsd:complexType>
</xsd:element>
<xsd:element
name=
"resheader"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
name=
"value"
type=
"xsd:string"
minOccurs=
"0"
msdata:Ordinal=
"1"
/>
</xsd:sequence>
<xsd:attribute
name=
"name"
type=
"xsd:string"
use=
"required"
/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader
name=
"resmimetype"
>
<value>
text/microsoft-resx
</value>
</resheader>
<resheader
name=
"version"
>
<value>
2.0
</value>
</resheader>
<resheader
name=
"reader"
>
<value>
System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader
name=
"writer"
>
<value>
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>
\ No newline at end of file
Tests/W3CTestSuite/images/20x20.png
0 → 100644
View file @
535abaf8
1.01 KB
Tests/W3CTestSuite/images/50x50-viewbox-greencircle.svg
0 → 100644
View file @
535abaf8
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"50"
height=
"50"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
viewBox=
"0 0 100 100"
>
<circle
cx=
"50"
cy=
"50"
r=
"40"
stroke=
"lime"
fill=
"lime"
/>
</svg>
Tests/W3CTestSuite/images/50x50greencircle.svg
0 → 100644
View file @
535abaf8
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"50"
height=
"50"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<circle
cx=
"25"
cy=
"25"
r=
"20"
stroke=
"lime"
fill=
"lime"
/>
</svg>
Tests/W3CTestSuite/images/DisplaceChecker.png
0 → 100644
View file @
535abaf8
2.41 KB
Prev
1
…
4
5
6
7
8
9
10
11
12
…
50
Next
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