-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
88 lines (76 loc) · 3.44 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// English:
//
// This example was taken from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/intercept
//
// Português:
//
// Este exemplo foi retirado do site https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/intercept
//
// <svg viewBox="0 0 420 200" xmlns="http://www.w3.org/2000/svg">
// <defs>
// <linearGradient id="gradient" gradientUnits="userSpaceOnUse"
// x1="0" y1="0" x2="200" y2="0">
// <stop offset="0" stop-color="#ff0000" />
// <stop offset="0.5" stop-color="#00ff00" />
// <stop offset="1" stop-color="#0000ff" />
// </linearGradient>
// </defs>
//
// <filter id="componentTransfer1" x="0" y="0" width="100%" height="100%">
// <feComponentTransfer>
// <feFuncR type="linear" intercept="0"/>
// <feFuncG type="linear" intercept="0"/>
// <feFuncB type="linear" intercept="0"/>
// </feComponentTransfer>
// </filter>
// <filter id="componentTransfer2" x="0" y="0" width="100%" height="100%">
// <feComponentTransfer>
// <feFuncR type="linear" intercept="0.3"/>
// <feFuncG type="linear" intercept="0.1"/>
// <feFuncB type="linear" intercept="0.8"/>
// </feComponentTransfer>
// </filter>
//
// <rect x="0" y="0" width="200" height="200" fill="url(#gradient)"
// style="filter: url(#componentTransfer1);" />
// <rect x="0" y="0" width="200" height="200" fill="url(#gradient)"
// style="filter: url(#componentTransfer2); transform: translateX(220px);" />
// </svg>
//go:build js
// +build js
package main
import (
"github.com/helmutkemper/iotmaker.webassembly/browser/factoryBrowser"
"github.com/helmutkemper/iotmaker.webassembly/browser/html"
)
func main() {
done := make(chan struct{}, 0)
stage := factoryBrowser.NewStage()
s1 := factoryBrowser.NewTagSvg().ViewBox([]float64{0, 0, 420, 200}).Append(
factoryBrowser.NewTagSvgDefs().Append(
factoryBrowser.NewTagSvgLinearGradient().Id("gradient").GradientUnits(html.KSvgGradientUnitsUserSpaceOnUse).X1(0).Y1(0).X2(200).Y2(0).Append(
factoryBrowser.NewTagSvgStop().Offset(0.0).StopColor("#FF0000"),
factoryBrowser.NewTagSvgStop().Offset(0.5).StopColor("#00FF00"),
factoryBrowser.NewTagSvgStop().Offset(1.0).StopColor("#0000FF"),
),
factoryBrowser.NewTagSvgFilter().Id("componentTransfer1").X(0).Y(0).Width(float32(1.0)).Height(float32(1.0)).Append(
factoryBrowser.NewTagSvgFeComponentTransfer().Append(
factoryBrowser.NewTagSvgFeFuncR().Type(html.KSvgTypeFeFuncLinear).Intercept(0),
factoryBrowser.NewTagSvgFeFuncG().Type(html.KSvgTypeFeFuncLinear).Intercept(0),
factoryBrowser.NewTagSvgFeFuncB().Type(html.KSvgTypeFeFuncLinear).Intercept(0),
),
),
factoryBrowser.NewTagSvgFilter().Id("componentTransfer2").X(0).Y(0).Width(float32(1.0)).Height(float32(1.0)).Append(
factoryBrowser.NewTagSvgFeComponentTransfer().Append(
factoryBrowser.NewTagSvgFeFuncR().Type(html.KSvgTypeFeFuncLinear).Intercept(0.3),
factoryBrowser.NewTagSvgFeFuncG().Type(html.KSvgTypeFeFuncLinear).Intercept(0.1),
factoryBrowser.NewTagSvgFeFuncB().Type(html.KSvgTypeFeFuncLinear).Intercept(0.8),
),
),
),
factoryBrowser.NewTagSvgRect().X(0).Y(0).Width(200).Height(200).Fill("url(#gradient)").Style("filter: url(#componentTransfer1);"),
factoryBrowser.NewTagSvgRect().X(0).Y(0).Width(200).Height(200).Fill("url(#gradient)").Style("filter: url(#componentTransfer2); transform: translateX(220px);"),
)
stage.Append(s1)
<-done
}