1
1
mirror of https://github.com/exyte/Macaw.git synced 2024-08-15 16:10:39 +03:00

Merge branch 'master'

Conflicts:
	Macaw.xcodeproj/project.pbxproj
This commit is contained in:
Daniil Manin 2019-05-24 18:17:55 +07:00
commit f7783594a2
14 changed files with 3534 additions and 21 deletions

View File

@ -522,6 +522,16 @@
A74C822B2297D5350085A832 /* coords-trans-14-f-manual.reference in Resources */ = {isa = PBXBuildFile; fileRef = A74C82262297D5340085A832 /* coords-trans-14-f-manual.reference */; };
A74C822C2297D5350085A832 /* coords-trans-10-f-manual.reference in Resources */ = {isa = PBXBuildFile; fileRef = A74C82272297D5340085A832 /* coords-trans-10-f-manual.reference */; };
A74C822D2297D5350085A832 /* coords-trans-13-f-manual.reference in Resources */ = {isa = PBXBuildFile; fileRef = A74C82282297D5350085A832 /* coords-trans-13-f-manual.reference */; };
A74C82322297D8B40085A832 /* shapes-rect-06-f-manual.svg in Resources */ = {isa = PBXBuildFile; fileRef = A74C822E2297D8B30085A832 /* shapes-rect-06-f-manual.svg */; };
A74C82332297D8B40085A832 /* shapes-rect-02-t-manual.svg in Resources */ = {isa = PBXBuildFile; fileRef = A74C822F2297D8B30085A832 /* shapes-rect-02-t-manual.svg */; };
A74C82342297D8B40085A832 /* shapes-rect-03-t-manual.svg in Resources */ = {isa = PBXBuildFile; fileRef = A74C82302297D8B30085A832 /* shapes-rect-03-t-manual.svg */; };
A74C82352297D8B40085A832 /* shapes-rect-07-f-manual.svg in Resources */ = {isa = PBXBuildFile; fileRef = A74C82312297D8B40085A832 /* shapes-rect-07-f-manual.svg */; };
A74C823C2297DB2C0085A832 /* shapes-rect-07-f-manual.reference in Resources */ = {isa = PBXBuildFile; fileRef = A74C82382297DB2B0085A832 /* shapes-rect-07-f-manual.reference */; };
A74C823E2297DB2C0085A832 /* shapes-rect-03-t-manual.reference in Resources */ = {isa = PBXBuildFile; fileRef = A74C823A2297DB2B0085A832 /* shapes-rect-03-t-manual.reference */; };
A74C823F2297DB2C0085A832 /* shapes-rect-06-f-manual.reference in Resources */ = {isa = PBXBuildFile; fileRef = A74C823B2297DB2B0085A832 /* shapes-rect-06-f-manual.reference */; };
A74C82412297DC220085A832 /* shapes-rect-02-t-manual.reference in Resources */ = {isa = PBXBuildFile; fileRef = A74C82402297DC220085A832 /* shapes-rect-02-t-manual.reference */; };
A74C82032296BE5F0085A832 /* paths-data-20-f-manual.svg in Resources */ = {isa = PBXBuildFile; fileRef = A74C82022296BE5F0085A832 /* paths-data-20-f-manual.svg */; };
A74C82052296BFC60085A832 /* paths-data-20-f-manual.reference in Resources */ = {isa = PBXBuildFile; fileRef = A74C82042296BFC60085A832 /* paths-data-20-f-manual.reference */; };
A7E675561EC4213500BD9ECB /* NodeBoundsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E675551EC4213500BD9ECB /* NodeBoundsTests.swift */; };
C410148E1F834D290022EE44 /* style.svg in Resources */ = {isa = PBXBuildFile; fileRef = C410148D1F834D280022EE44 /* style.svg */; };
C4153A8F1F8793DE001BA5EE /* small-logo.png in Resources */ = {isa = PBXBuildFile; fileRef = C4153A8E1F8793DD001BA5EE /* small-logo.png */; };
@ -951,6 +961,16 @@
A74C82262297D5340085A832 /* coords-trans-14-f-manual.reference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "coords-trans-14-f-manual.reference"; sourceTree = "<group>"; };
A74C82272297D5340085A832 /* coords-trans-10-f-manual.reference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "coords-trans-10-f-manual.reference"; sourceTree = "<group>"; };
A74C82282297D5350085A832 /* coords-trans-13-f-manual.reference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "coords-trans-13-f-manual.reference"; sourceTree = "<group>"; };
A74C822E2297D8B30085A832 /* shapes-rect-06-f-manual.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "shapes-rect-06-f-manual.svg"; sourceTree = "<group>"; };
A74C822F2297D8B30085A832 /* shapes-rect-02-t-manual.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "shapes-rect-02-t-manual.svg"; sourceTree = "<group>"; };
A74C82302297D8B30085A832 /* shapes-rect-03-t-manual.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "shapes-rect-03-t-manual.svg"; sourceTree = "<group>"; };
A74C82312297D8B40085A832 /* shapes-rect-07-f-manual.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "shapes-rect-07-f-manual.svg"; sourceTree = "<group>"; };
A74C82382297DB2B0085A832 /* shapes-rect-07-f-manual.reference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "shapes-rect-07-f-manual.reference"; sourceTree = "<group>"; };
A74C823A2297DB2B0085A832 /* shapes-rect-03-t-manual.reference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "shapes-rect-03-t-manual.reference"; sourceTree = "<group>"; };
A74C823B2297DB2B0085A832 /* shapes-rect-06-f-manual.reference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "shapes-rect-06-f-manual.reference"; sourceTree = "<group>"; };
A74C82402297DC220085A832 /* shapes-rect-02-t-manual.reference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "shapes-rect-02-t-manual.reference"; sourceTree = "<group>"; };
A74C82022296BE5F0085A832 /* paths-data-20-f-manual.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "paths-data-20-f-manual.svg"; sourceTree = "<group>"; };
A74C82042296BFC60085A832 /* paths-data-20-f-manual.reference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "paths-data-20-f-manual.reference"; sourceTree = "<group>"; };
A7E675551EC4213500BD9ECB /* NodeBoundsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NodeBoundsTests.swift; path = Bounds/NodeBoundsTests.swift; sourceTree = "<group>"; };
C410148D1F834D280022EE44 /* style.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = style.svg; sourceTree = "<group>"; };
C4153A8E1F8793DD001BA5EE /* small-logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "small-logo.png"; sourceTree = "<group>"; };
@ -1522,6 +1542,8 @@
5BFEF5D420BC1C1E008DAC11 /* paths-data-18-f-manual.svg */,
5B1AE1D720B6A669007EECCB /* paths-data-19-f-manual.reference */,
5B1AE21A20B6A669007EECCB /* paths-data-19-f-manual.svg */,
A74C82022296BE5F0085A832 /* paths-data-20-f-manual.svg */,
A74C82042296BFC60085A832 /* paths-data-20-f-manual.reference */,
5B37139620BE95D7004BB6EE /* pservers-grad-01-b-manual.reference */,
5B37139220BE95D6004BB6EE /* pservers-grad-01-b-manual.svg */,
5B37139320BE95D6004BB6EE /* pservers-grad-02-b-manual.reference */,
@ -1566,10 +1588,18 @@
5B1AE1BA20B6A669007EECCB /* shapes-polyline-01-t-manual.svg */,
5B1AE1AF20B6A669007EECCB /* shapes-polyline-02-t-manual.reference */,
5B1AE1E120B6A669007EECCB /* shapes-polyline-02-t-manual.svg */,
A74C82402297DC220085A832 /* shapes-rect-02-t-manual.reference */,
A74C822F2297D8B30085A832 /* shapes-rect-02-t-manual.svg */,
A74C823A2297DB2B0085A832 /* shapes-rect-03-t-manual.reference */,
A74C82302297D8B30085A832 /* shapes-rect-03-t-manual.svg */,
5B1AE22520B6A669007EECCB /* shapes-rect-04-f-manual.reference */,
5B1AE1CE20B6A669007EECCB /* shapes-rect-04-f-manual.svg */,
5B1AE19620B6A669007EECCB /* shapes-rect-05-f-manual.reference */,
5B1AE1B720B6A669007EECCB /* shapes-rect-05-f-manual.svg */,
A74C823B2297DB2B0085A832 /* shapes-rect-06-f-manual.reference */,
A74C822E2297D8B30085A832 /* shapes-rect-06-f-manual.svg */,
A74C82382297DB2B0085A832 /* shapes-rect-07-f-manual.reference */,
A74C82312297D8B40085A832 /* shapes-rect-07-f-manual.svg */,
5B1AE22220B6A669007EECCB /* struct-defs-01-t-manual.reference */,
5B1AE22E20B6A669007EECCB /* struct-defs-01-t-manual.svg */,
5B1AE19720B6A669007EECCB /* struct-frag-01-t-manual.reference */,
@ -1800,6 +1830,7 @@
5BAE203C208E163D006BF277 /* triangle.reference in Resources */,
C4153A8F1F8793DE001BA5EE /* small-logo.png in Resources */,
5BAE2048208E163D006BF277 /* line.reference in Resources */,
A74C82322297D8B40085A832 /* shapes-rect-06-f-manual.svg in Resources */,
5B1AE2A420B6A669007EECCB /* paths-data-12-t-manual.reference in Resources */,
57CAB1361D7832E000FD8E47 /* triangle.svg in Resources */,
5B7E79CF20CBE69700C50BCF /* masking-path-02-b-manual.svg in Resources */,
@ -1821,6 +1852,7 @@
5B1AE2B820B6A669007EECCB /* painting-stroke-03-t-manual.reference in Resources */,
4269F43E2257265800D91393 /* color-prop-04-t-manual.reference in Resources */,
5B1AE2C720B6A669007EECCB /* paths-data-02-t-manual.svg in Resources */,
A74C823C2297DB2C0085A832 /* shapes-rect-07-f-manual.reference in Resources */,
5B1AE27120B6A669007EECCB /* painting-stroke-04-t-manual.reference in Resources */,
5B1AE2C220B6A669007EECCB /* coords-trans-05-t-manual.svg in Resources */,
5B1AE29D20B6A669007EECCB /* types-basic-01-f-manual.reference in Resources */,
@ -1840,6 +1872,7 @@
5BAE2040208E163D006BF277 /* ellipse.reference in Resources */,
5B1AE27E20B6A669007EECCB /* coords-transformattr-02-f-manual.reference in Resources */,
5B1AE25720B6A669007EECCB /* coords-trans-07-t-manual.svg in Resources */,
A74C823F2297DB2C0085A832 /* shapes-rect-06-f-manual.reference in Resources */,
5B1AE2BC20B6A669007EECCB /* coords-coord-02-t-manual.svg in Resources */,
5B1AE23520B6A669007EECCB /* shapes-line-02-f-manual.reference in Resources */,
5B1AE2CD20B6A669007EECCB /* paths-data-10-t-manual.svg in Resources */,
@ -1847,9 +1880,11 @@
5B1AE29320B6A669007EECCB /* coords-trans-09-t-manual.svg in Resources */,
5B1AE2DC20B6A669007EECCB /* struct-defs-01-t-manual.svg in Resources */,
A74C821F2297D4810085A832 /* coords-trans-13-f-manual.svg in Resources */,
A74C82052296BFC60085A832 /* paths-data-20-f-manual.reference in Resources */,
5B1AE29020B6A669007EECCB /* painting-stroke-08-t-manual.svg in Resources */,
5B1AE2A720B6A669007EECCB /* paths-data-09-t-manual.svg in Resources */,
5B1AE2AB20B6A669007EECCB /* painting-stroke-08-t-manual.reference in Resources */,
A74C82352297D8B40085A832 /* shapes-rect-07-f-manual.svg in Resources */,
5B1AE2A520B6A669007EECCB /* coords-trans-02-t-manual.reference in Resources */,
5B1AE23220B6A669007EECCB /* text-align-01-b-manual.svg in Resources */,
5B1AE2B220B6A669007EECCB /* types-basic-01-f-manual.svg in Resources */,
@ -1865,6 +1900,7 @@
A74C822C2297D5350085A832 /* coords-trans-10-f-manual.reference in Resources */,
5B1AE24520B6A669007EECCB /* struct-frag-01-t-manual.reference in Resources */,
5B1AE25B20B6A669007EECCB /* painting-stroke-01-t-manual.svg in Resources */,
A74C823E2297DB2C0085A832 /* shapes-rect-03-t-manual.reference in Resources */,
5BAE2047208E163D006BF277 /* viewBox.reference in Resources */,
5B1AE2C120B6A669007EECCB /* painting-stroke-04-t-manual.svg in Resources */,
5B1AE2BE20B6A669007EECCB /* painting-stroke-03-t-manual.svg in Resources */,
@ -1897,11 +1933,13 @@
5B1AE2CF20B6A669007EECCB /* paths-data-07-t-manual.reference in Resources */,
5B1AE28D20B6A669007EECCB /* shapes-circle-01-t-manual.reference in Resources */,
5B1AE2A320B6A669007EECCB /* painting-fill-01-t-manual.svg in Resources */,
A74C82332297D8B40085A832 /* shapes-rect-02-t-manual.svg in Resources */,
5B1AE2CB20B6A669007EECCB /* painting-fill-02-t-manual.reference in Resources */,
5B1AE26520B6A669007EECCB /* shapes-rect-05-f-manual.svg in Resources */,
5B1AE2D120B6A669007EECCB /* paths-data-03-f-manual.reference in Resources */,
5B1AE28920B6A669007EECCB /* shapes-intro-01-t-manual.reference in Resources */,
5B1AE2C020B6A669007EECCB /* paths-data-14-t-manual.reference in Resources */,
A74C82032296BE5F0085A832 /* paths-data-20-f-manual.svg in Resources */,
5B1AE27420B6A669007EECCB /* color-prop-02-f-manual.svg in Resources */,
5B1AE25120B6A669007EECCB /* coords-trans-05-t-manual.reference in Resources */,
5B1AE29120B6A669007EECCB /* coords-transformattr-01-f-manual.svg in Resources */,
@ -1922,6 +1960,7 @@
5B1AE28220B6A669007EECCB /* coords-coord-01-t-manual.reference in Resources */,
A74C81F32292B45E0085A832 /* color-prop-05-t-manual.reference in Resources */,
5B1AE23420B6A669007EECCB /* painting-control-03-f-manual.reference in Resources */,
A74C82342297D8B40085A832 /* shapes-rect-03-t-manual.svg in Resources */,
5B1AE26820B6A669007EECCB /* shapes-polyline-01-t-manual.svg in Resources */,
5B1AE29A20B6A669007EECCB /* struct-frag-02-t-manual.svg in Resources */,
5B1AE2A620B6A669007EECCB /* text-fonts-01-t-manual.svg in Resources */,
@ -1952,6 +1991,7 @@
5B1AE26A20B6A669007EECCB /* painting-control-06-f-manual.reference in Resources */,
C46E83551F94B20E00208037 /* transform.svg in Resources */,
5B1AE2C420B6A669007EECCB /* painting-fill-01-t-manual.reference in Resources */,
A74C82412297DC220085A832 /* shapes-rect-02-t-manual.reference in Resources */,
5B1AE2AE20B6A669007EECCB /* shapes-circle-02-t-manual.reference in Resources */,
5B1AE29520B6A669007EECCB /* shapes-ellipse-03-f-manual.reference in Resources */,
5B1AE23820B6A669007EECCB /* color-prop-01-b-manual.svg in Resources */,

View File

@ -393,10 +393,30 @@ class MacawSVGTests: XCTestCase {
validateJSON("painting-fill-03-t-manual")
}
func testShapesRect02() {
validateJSON("shapes-rect-02-t-manual")
}
func testShapesRect03() {
validateJSON("shapes-rect-03-t-manual")
}
func testShapesRect04() {
validateJSON("shapes-rect-04-f-manual")
}
func testShapesRect05() {
validateJSON("shapes-rect-05-f-manual")
}
func testShapesRect06() {
validateJSON("shapes-rect-06-f-manual")
}
func testShapesRect07() {
validateJSON("shapes-rect-07-f-manual")
}
func testPaintingFill04() {
validateJSON("painting-fill-04-t-manual")
}
@ -437,10 +457,6 @@ class MacawSVGTests: XCTestCase {
validateJSON("painting-fill-02-t-manual")
}
func testShapesRect04() {
validateJSON("shapes-rect-04-f-manual")
}
func testCoordsTransformattr03() {
validateJSON("coords-transformattr-03-f-manual")
}
@ -557,6 +573,10 @@ class MacawSVGTests: XCTestCase {
validateJSON("paths-data-19-f-manual")
}
func testPathsData20() {
validateJSON("paths-data-20-f-manual")
}
func testStructGroup01() {
validateJSON("struct-group-01-t-manual")
}

View File

@ -10,12 +10,12 @@ There are [521 SVG tests](https://github.com/web-platform-tests/wpt/tree/master/
* [switch/object](https://www.w3.org/TR/SVG11/backward.html) (7)
The rest 306 tests can be split into following categories:
* 31.4% passed (96)
* 31.7% passed (97)
* 14.1% filters (43) [#390](https://github.com/exyte/Macaw/issues/390)
* 7.8% images (24) [wpt issue](https://github.com/web-platform-tests/wpt/issues/11178)
* 2.6% markers (8) [#392](https://github.com/exyte/Macaw/issues/392)
* 19.9% text (61) [#391](https://github.com/exyte/Macaw/issues/391)
* 24.5% blocked by issues (75)
* 24.2% blocked by issues (75)
Status of each test:
@ -183,7 +183,7 @@ Status of each test:
|[paths-data-17-f-manual](w3cSVGTests/paths-data-17-f-manual.svg) | ✅ |
|[paths-data-18-f-manual](w3cSVGTests/paths-data-18-f-manual.svg) | ✅ |
|[paths-data-19-f-manual](w3cSVGTests/paths-data-19-f-manual.svg) | ✅ |
|[paths-data-20-f-manual](w3cSVGTests/paths-data-20-f-manual.svg) | [#395](https://github.com/exyte/Macaw/issues/395) |
|[paths-data-20-f-manual](w3cSVGTests/paths-data-20-f-manual.svg) | |
|[pservers-grad-01-b-manual](w3cSVGTests/pservers-grad-01-b-manual.svg) | ✅ |
|[pservers-grad-02-b-manual](w3cSVGTests/pservers-grad-02-b-manual.svg) | ✅ |
|[pservers-grad-03-b-manual](w3cSVGTests/pservers-grad-03-b-manual.svg) | ✅ |

View File

@ -0,0 +1,793 @@
{
"contents" : [
{
"contents" : [
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"segments" : [
{
"data" : [
120,
120
],
"type" : "M"
},
{
"data" : [
25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
0,
-25,
25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"segments" : [
{
"data" : [
120,
120
],
"type" : "M"
},
{
"data" : [
25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
0,
-25,
25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"segments" : [
{
"data" : [
200,
120
],
"type" : "M"
},
{
"data" : [
-25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
1,
25,
25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"segments" : [
{
"data" : [
200,
120
],
"type" : "M"
},
{
"data" : [
-25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
1,
25,
25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"segments" : [
{
"data" : [
280,
120
],
"type" : "M"
},
{
"data" : [
25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
0,
-25,
25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"segments" : [
{
"data" : [
280,
120
],
"type" : "M"
},
{
"data" : [
25
],
"type" : "h"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"segments" : [
{
"data" : [
360,
120
],
"type" : "M"
},
{
"data" : [
-25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
1,
25,
25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"segments" : [
{
"data" : [
360,
120
],
"type" : "M"
},
{
"data" : [
-25
],
"type" : "h"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"segments" : [
{
"data" : [
120,
200
],
"type" : "M"
},
{
"data" : [
25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
1,
-25,
-25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"segments" : [
{
"data" : [
120,
200
],
"type" : "M"
},
{
"data" : [
25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
1,
-25,
-25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"segments" : [
{
"data" : [
200,
200
],
"type" : "M"
},
{
"data" : [
-25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
0,
25,
-25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"segments" : [
{
"data" : [
200,
200
],
"type" : "M"
},
{
"data" : [
-25
],
"type" : "h"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"segments" : [
{
"data" : [
280,
200
],
"type" : "M"
},
{
"data" : [
25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
1,
-25,
-25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"segments" : [
{
"data" : [
280,
200
],
"type" : "M"
},
{
"data" : [
25
],
"type" : "h"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"segments" : [
{
"data" : [
360,
200
],
"type" : "M"
},
{
"data" : [
-25
],
"type" : "h"
},
{
"data" : [
25,
25,
0,
1,
0,
25,
-25
],
"type" : "a"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"segments" : [
{
"data" : [
360,
200
],
"type" : "M"
},
{
"data" : [
-25
],
"type" : "h"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape"
}
],
"node" : "Group"
},
{
"contents" : [
{
"align" : "min",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 32,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 10, 340",
"text" : "$Revision: 1.3 $"
}
],
"node" : "Group"
},
{
"form" : {
"h" : 358,
"type" : "Rect",
"w" : 478,
"x" : 1,
"y" : 1
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 0
},
"join" : "miter",
"width" : 1
}
}
],
"layout" : {
"scalingMode" : "meet",
"svgSize" : {
"height" : "100.0%",
"width" : "100.0%"
},
"viewBox" : {
"h" : 360,
"type" : "Rect",
"w" : 480,
"x" : 0,
"y" : 0
},
"xAligningMode" : "mid",
"yAligningMode" : "mid"
},
"node" : "Canvas"
}

View File

@ -0,0 +1,87 @@
<svg id="svg-root" width="100%" height="100%"
viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
<d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
template-version="1.4" reviewer="CL" author="ED" status="accepted"
version="$Revision: 1.3 $" testname="$RCSfile: paths-data-20-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands">
<p>
Tests parsing of the elliptical arc path syntax.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test has passed if the image looks as if there are eight green circles that have
two white rectangles overlapping them, like in the reference image. If any red is visible
the test has failed.
</p>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: paths-data-20-f.svg,v $</title>
<defs>
<font-face
font-family="SVGFreeSansASCII"
unicode-range="U+0-7F">
<font-face-src>
<font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
</font-face-src>
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<!-- no commawsp between arc flags -->
<path d="M120,120 h25 a25,25 0 1,0 -25,25 z" fill="red" stroke="lime"/>
<path d="M120,120 h25 a25,25 0 10 -25,25z" fill="lime"/>
<!-- no commawsp between arc flags and no commawsp after arc flags -->
<path d="M200,120 h-25 a25,25 0 1,1 25,25 z" fill="red" stroke="lime"/>
<path d="M200,120 h-25 a25,25 0 1125,25 z" fill="lime"/>
<!-- out of range large-arc-flag value -->
<path d="M280,120 h25 a25,25 0 1,0 -25,25 z" fill="lime" stroke="lime"/>
<path d="M280,120 h25 a25,25 0 6 0 -25,25 z" fill="red"/>
<!-- negative sweep-flag value -->
<path d="M360,120 h-25 a25,25 0 1,1 25,25 z" fill="lime" stroke="lime"/>
<path d="M360,120 h-25 a25,25 0 1 -1 25,25 z" fill="red"/>
<!-- no commawsp between sweep-flag and following coordinate-pair -->
<path d="M120,200 h25 a25,25 0 1,1 -25,-25 z" fill="red" stroke="lime"/>
<path d="M120,200 h25 a25,25 0 1 1-25,-25 z" fill="lime"/>
<!-- no commawsp before arc flags -->
<path d="M200,200 h-25 a25,25 0 1,0 25,-25 z" fill="lime" stroke="lime"/>
<path d="M200,200 h-25 a25,2501 025,-25 z" fill="red"/>
<!-- out of range sweep-flag value -->
<path d="M280,200 h25 a25,25 0 1,1 -25,-25 z" fill="lime" stroke="lime"/>
<path d="M280,200 h25 a25 25 0 1 7 -25 -25 z" fill="red"/>
<!-- negative large-arc-flag value -->
<path d="M360,200 h-25 a25,25 0 1,0 25,-25 z" fill="lime" stroke="lime"/>
<path d="M360,200 h-25 a25,25 0 -1 0 25,-25 z" fill="red"/>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g> -->
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,188 @@
{
"contents" : [
{
"contents" : [
{
"contents" : [
{
"fill" : {
"type" : "Color",
"val" : 32768
},
"form" : {
"h" : 80,
"type" : "Rect",
"w" : 50,
"x" : 0,
"y" : 46
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 0
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 32768
},
"form" : {
"h" : 80,
"type" : "Rect",
"w" : 50,
"x" : 130,
"y" : 0
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 0
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 32768
},
"form" : {
"rect" : {
"h" : 80,
"type" : "Rect",
"w" : 50,
"x" : 30,
"y" : 196
},
"rx" : 20,
"ry" : 20,
"type" : "RoundRect"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 0
},
"join" : "miter",
"width" : 1
}
},
{
"fill" : {
"type" : "Color",
"val" : 32768
},
"form" : {
"rect" : {
"h" : 80,
"type" : "Rect",
"w" : 50,
"x" : 130,
"y" : 196
},
"rx" : 20,
"ry" : 20,
"type" : "RoundRect"
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 0
},
"join" : "miter",
"width" : 1
}
}
],
"node" : "Group"
}
],
"node" : "Group"
},
{
"contents" : [
{
"align" : "min",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 32,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 10, 340",
"text" : "$Revision: 1.5 $"
}
],
"node" : "Group"
},
{
"form" : {
"h" : 358,
"type" : "Rect",
"w" : 478,
"x" : 1,
"y" : 1
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 0
},
"join" : "miter",
"width" : 1
}
}
],
"layout" : {
"scalingMode" : "meet",
"svgSize" : {
"height" : "100.0%",
"width" : "100.0%"
},
"viewBox" : {
"h" : 360,
"type" : "Rect",
"w" : 480,
"x" : 0,
"y" : 0
},
"xAligningMode" : "mid",
"yAligningMode" : "mid"
},
"node" : "Canvas"
}

View File

@ -0,0 +1,71 @@
<svg version="1.1" baseProfile="tiny" id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= SVG 1.1 2nd Edition Test Case =-->
<!--======================================================================-->
<!--= Copyright 2009 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
<d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
template-version="1.4" reviewer="DJ" author="CN" status="accepted"
version="$Revision: 1.5 $" testname="$RCSfile: shapes-rect-02-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/shapes.html#RectElement">
<p>
Test x, y, width, height, rx and ry default/lacuna values on a rect element.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
There should be four green rectangles visible, two of them should have rounded corners.
</p>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: shapes-rect-02-t.svg,v $</title>
<defs>
<font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
<font-face-src>
<font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
</font-face-src>
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<g fill="green" stroke="#000000">
<!-- Set x coordinate to default. -->
<rect y="46" width="50" height="80"/>
<!-- Set y coordinate to default. -->
<rect x="130" width="50" height="80"/>
<!-- Set width to default. -->
<rect x="250" y="46" height="80" width="0"/>
<!-- Set height to default. -->
<rect x="350" y="46" height="0" width="50"/>
<!-- Set rx to default. -->
<rect x="30" y="196" width="50" height="80" ry="20"/>
<!-- Set ry to default. -->
<rect x="130" y="196" width="50" height="80" rx="20"/>
</g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.5 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
<!-- comment out this watermark once the test is approved -->
<!--<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,139 @@
<svg id="svg-root" width="100%" height="100%"
viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
<d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
template-version="1.4" reviewer="CM" author="ED" status="accepted"
version="$Revision: 1.9 $" testname="$RCSfile: shapes-rect-03-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/shapes.html#RectElement">
<p>
Tests rx and ry clamping and aliasing.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test has passed if:
</p>
<ul>
<li>There is no red visible</li>
<li>There is no green outside the black borders of each rectangle</li>
</ul>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: shapes-rect-03-t.svg,v $</title>
<defs>
<font-face
font-family="SVGFreeSansASCII"
unicode-range="U+0-7F">
<font-face-src>
<font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
</font-face-src>
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<g transform="translate(0, 30)">
<g fill="red">
<g id="references">
<rect x="100" width="20" height="100" rx="50" ry="20"/>
<rect x="130" width="20" height="100" rx="10" ry="20"/>
<rect x="160" width="20" height="100" rx="10" ry="20"/>
<rect x="190" width="20" height="100" rx="10" ry="50"/>
<rect x="220" width="20" height="100" rx="10" ry="20"/>
<rect x="250" width="20" height="100" rx="10" ry="10"/>
<rect x="280" width="20" height="100" rx="5" ry="5"/>
<rect x="310" width="20" height="100" rx="0" ry="0"/>
<rect x="340" width="20" height="100" rx="0" ry="0"/>
<g transform="translate(45,0)">
<rect x="10" y="120" width="100" height="20" rx="50" ry="10"/>
<rect x="10" y="150" width="100" height="20" rx="15" ry="10"/>
<rect x="10" y="180" width="100" height="20" rx="10" ry="10"/>
<rect x="130" y="120" width="100" height="20" rx="50" ry="10"/>
<rect x="130" y="150" width="100" height="20" rx="20" ry="10"/>
<rect x="130" y="180" width="100" height="20" rx="10" ry="10"/>
<rect x="250" y="120" width="100" height="20" rx="5" ry="5"/>
<rect x="250" y="150" width="100" height="20" rx="0" ry="0"/>
<rect x="250" y="180" width="100" height="20" rx="0" ry="0"/>
</g>
<g transform="translate(100,100)">
<rect x="10" y="120" width="50" height="20" rx="25" ry="10"/>
<rect x="80" y="120" width="20" height="50" rx="10" ry="25"/>
<rect x="120" y="120" width="50" height="20" rx="25" ry="10"/>
<rect stroke-width="0.5" width="20" height="30" rx="10" ry="15" transform="translate(-10 -15) scale(2) translate(10 15) translate(85 52.5)"/>
<rect x="230" y="120" width="20" height="30" rx="10" ry="25"/>
</g>
</g>
</g>
<g id="tests" fill="lime">
<rect x="100" width="20" height="100" rx="50" ry="20"/>
<rect x="130" width="20" height="100" rx="15" ry="20"/>
<rect x="160" width="20" height="100" rx="10" ry="20"/>
<rect x="190" width="20" height="100" rx="80"/>
<rect x="220" width="20" height="100" rx="20"/>
<rect x="250" width="20" height="100" rx="10"/>
<rect x="280" width="20" height="100" rx="5"/>
<rect x="310" width="20" height="100" rx="0"/>
<rect x="340" width="20" height="100" rx="0" ry="0"/>
<g transform="translate(45,0)">
<rect x="10" y="120" width="100" height="20" rx="50" ry="20"/>
<rect x="10" y="150" width="100" height="20" rx="15" ry="20"/>
<rect x="10" y="180" width="100" height="20" rx="10" ry="20"/>
<rect x="130" y="120" width="100" height="20" ry="50"/>
<rect x="130" y="150" width="100" height="20" ry="20"/>
<rect x="130" y="180" width="100" height="20" ry="10"/>
<rect x="250" y="120" width="100" height="20" ry="5"/>
<rect x="250" y="150" width="100" height="20" ry="0"/>
<rect x="250" y="180" width="100" height="20" rx="0" ry="0"/>
</g>
<g transform="translate(100,100)">
<rect x="10" y="120" width="50" height="20" rx="50"/>
<rect x="80" y="120" width="20" height="50" ry="50"/>
<rect x="120" y="120" width="50" height="20" rx="200" ry="200"/>
<rect width="20" height="30" rx="50" transform="translate(-10 -15) scale(2) translate(10 15) translate(85 52.5)"/>
<rect x="230" y="120" width="20" height="30" ry="50"/>
</g>
</g>
<use xlink:href="#references" fill="none" stroke="black"/>
</g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.9 $</text>
</g>
<rect xml:id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -0,0 +1,221 @@
{
"contents" : [
{
"contents" : [
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 25,
"y" : 50
},
"rx" : 100,
"ry" : 50,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 0
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 25,
"y" : 50
},
"rx" : 150,
"ry" : 50,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 25,
"y" : 200
},
"rx" : 150,
"ry" : 50,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 0
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 25,
"y" : 200
},
"rx" : 100,
"ry" : 50,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 275,
"y" : 50
},
"rx" : 100,
"ry" : 50,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 0
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 275,
"y" : 50
},
"rx" : 100,
"ry" : 75,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 275,
"y" : 200
},
"rx" : 100,
"ry" : 75,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 0
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 275,
"y" : 200
},
"rx" : 100,
"ry" : 50,
"type" : "RoundRect"
},
"node" : "Shape"
}
],
"node" : "Group"
},
{
"contents" : [
{
"align" : "min",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 32,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 10, 340",
"text" : "$Revision: 1.3 $"
}
],
"node" : "Group"
},
{
"form" : {
"h" : 358,
"type" : "Rect",
"w" : 478,
"x" : 1,
"y" : 1
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 0
},
"join" : "miter",
"width" : 1
}
}
],
"layout" : {
"scalingMode" : "meet",
"svgSize" : {
"height" : "100.0%",
"width" : "100.0%"
},
"viewBox" : {
"h" : 360,
"type" : "Rect",
"w" : 480,
"x" : 0,
"y" : 0
},
"xAligningMode" : "mid",
"yAligningMode" : "mid"
},
"node" : "Canvas"
}

View File

@ -0,0 +1,70 @@
<svg id="svg-root" width="100%" height="100%"
viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
<d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
template-version="1.4" reviewer="CL" author="Microsoft" status="accepted"
version="$Revision: 1.3 $" testname="$RCSfile: shapes-rect-06-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/shapes.html#RectElement">
<p>
When 'rect' attributes 'rx' and 'ry' have a value greater than half of the width/height of the rectangle, they are treated as half the width/height of the rectangle.
</p>
<p>
The test creates one 'rect' element with 'rx' greater than 1/2 the 'rect' width. Underneath that element, it creates a red 'rect' element with
'rx' set to 1/2 the width. Repeats with 'ry' attribute.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
Test passes if there is no red visible on the page.
</p>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: shapes-rect-06-f.svg,v $</title>
<defs>
<font-face
font-family="SVGFreeSansASCII"
unicode-range="U+0-7F">
<font-face-src>
<font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
</font-face-src>
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<rect x="25" y="50" width="200" height="100" rx="100" ry="50" fill="red" />
<rect x="25" y="50" width="200" height="100" rx="150" ry="50" fill="black" />
<rect x="25" y="200" width="200" height="100" rx="150" ry="50" fill="red" />
<rect x="25" y="200" width="200" height="100" rx="100" ry="50" fill="black" />
<rect x="275" y="50" width="200" height="100" ry="50" rx="100" fill="red" />
<rect x="275" y="50" width="200" height="100" ry="75" rx="100" fill="black" />
<rect x="275" y="200" width="200" height="100" ry="75" rx="100" fill="red" />
<rect x="275" y="200" width="200" height="100" ry="50" rx="100" fill="black" />
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved -->
<!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,145 @@
{
"contents" : [
{
"contents" : [
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 25,
"y" : 50
},
"rx" : 100,
"ry" : 100,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 0
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 25,
"y" : 50
},
"rx" : 100,
"ry" : 50,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 16711680
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 25,
"y" : 200
},
"rx" : 100,
"ry" : 50,
"type" : "RoundRect"
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 0
},
"form" : {
"rect" : {
"h" : 100,
"type" : "Rect",
"w" : 200,
"x" : 25,
"y" : 200
},
"rx" : 100,
"ry" : 100,
"type" : "RoundRect"
},
"node" : "Shape"
}
],
"node" : "Group"
},
{
"contents" : [
{
"align" : "min",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 32,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 10, 340",
"text" : "$Revision: 1.2 $"
}
],
"node" : "Group"
},
{
"form" : {
"h" : 358,
"type" : "Rect",
"w" : 478,
"x" : 1,
"y" : 1
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 0
},
"join" : "miter",
"width" : 1
}
}
],
"layout" : {
"scalingMode" : "meet",
"svgSize" : {
"height" : "100.0%",
"width" : "100.0%"
},
"viewBox" : {
"h" : 360,
"type" : "Rect",
"w" : 480,
"x" : 0,
"y" : 0
},
"xAligningMode" : "mid",
"yAligningMode" : "mid"
},
"node" : "Canvas"
}

View File

@ -0,0 +1,61 @@
<svg id="svg-root" width="100%" height="100%"
viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
<d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
template-version="1.4" reviewer="CL" author="Microsoft" status="accepted"
version="$Revision: 1.2 $" testname="$RCSfile: shapes-rect-07-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/shapes.html#RectElement">
<p>
Checks that unspecified 'ry' and 'rx' attributes are copied from each other before their values are clamped.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
Test passes if there is no red visible on the page.
</p>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: shapes-rect-07-f.svg,v $</title>
<defs>
<font-face
font-family="SVGFreeSansASCII"
unicode-range="U+0-7F">
<font-face-src>
<font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
</font-face-src>
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<rect x="25" y="50" width="200" height="100" rx="100" fill="red" />
<rect x="25" y="50" width="200" height="100" rx="100" ry="50" fill="black" />
<rect x="25" y="200" width="200" height="100" rx="100" ry="50" fill="red" />
<rect x="25" y="200" width="200" height="100" rx="100" fill="black" />
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.2 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved -->
<!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -1610,7 +1610,7 @@ private class PathDataReader {
}
public func read() -> [PathSegment] {
_ = readNext()
readNext()
var segments = [PathSegment]()
while let array = readSegments() {
segments.append(contentsOf: array)
@ -1625,7 +1625,12 @@ private class PathDataReader {
return [PathSegment(type: type)]
}
var result = [PathSegment]()
let data = readData()
let data: [Double]
if type == .a || type == .A {
data = readDataOfASegment()
} else {
data = readData()
}
var index = 0
var isFirstSegment = true
while index < data.count {
@ -1663,6 +1668,28 @@ private class PathDataReader {
}
}
private func readDataOfASegment() -> [Double] {
let argCount = getArgCount(segment: .A)
var data: [Double] = []
var index = 0
while true {
skipSpaces()
let value: Double?
let indexMod = index % argCount
if indexMod == 3 || indexMod == 4 {
value = readFlag()
} else {
value = readNum()
}
guard let doubleValue = value else {
return data
}
data.append(doubleValue)
index += 1
}
return data
}
private func skipSpaces() {
var ch = current
while ch != nil && "\n\r\t ,".contains(String(ch!)) {
@ -1670,21 +1697,42 @@ private class PathDataReader {
}
}
private func readFlag() -> Double? {
guard let ch = current else {
return .none
}
readNext()
switch ch {
case "0":
return 0
case "1":
return 1
default:
return .none
}
}
fileprivate func readNum() -> Double? {
guard let ch = current else {
return nil
return .none
}
if (ch >= "0" && ch <= "9") || ch == "." || ch == "-" {
var chars = [ch]
var hasDot = ch == "."
while let ch = readDigit(&hasDot) {
chars.append(ch)
}
var buf = ""
buf.unicodeScalars.append(contentsOf: chars)
return Double(buf)
guard ch >= "0" && ch <= "9" || ch == "." || ch == "-" else {
return .none
}
return nil
var chars = [ch]
var hasDot = ch == "."
while let ch = readDigit(&hasDot) {
chars.append(ch)
}
var buf = ""
buf.unicodeScalars.append(contentsOf: chars)
guard let value = Double(buf) else {
return .none
}
return value
}
fileprivate func readDigit(_ hasDot: inout Bool) -> UnicodeScalar? {
@ -1714,6 +1762,7 @@ private class PathDataReader {
return false
}
@discardableResult
private func readNext() -> UnicodeScalar? {
previous = current
current = iterator.next()
@ -1730,7 +1779,7 @@ private class PathDataReader {
private func readSegmentType() -> PathSegmentType? {
while true {
if let type = getPathSegmentType() {
_ = readNext()
readNext()
return type
}
if readNext() == nil {