123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /*
- Package svg generates SVG as defined by the Scalable Vector Graphics 1.1 Specification (<http://www.w3.org/TR/SVG11/>).
- Output goes to the specified io.Writer.
- Supported SVG elements and functions
- Shapes, lines, text
- circle, ellipse, polygon, polyline, rect (including roundrects), line, text
- Paths
- general, arc, cubic and quadratic bezier paths,
- Image and Gradients
- image, linearGradient, radialGradient,
- Transforms
- translate, rotate, scale, skewX, skewY
- Filter Effects
- filter, feBlend, feColorMatrix, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feDiffuseLighting,
- feDisplacementMap, feDistantLight, feFlood, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, fePointLight,
- feSpecularLighting, feSpotLight,feTile, feTurbulence
- Metadata elements
- desc, defs, g (style, transform, id), mask, marker, pattern, title, (a)ddress, link, script, style, use
- Usage: (assuming GOPATH is set)
- go get github.com/ajstarks/svgo
- go install github.com/ajstarks/svgo/...
- You can use godoc to browse the documentation from the command line:
- $ godoc github.com/ajstarks/svgo
- a minimal program, to generate SVG to standard output.
- package main
- import (
- "github.com/ajstarks/svgo"
- "os"
- )
- func main() {
- width := 500
- height := 500
- canvas := svg.New(os.Stdout)
- canvas.Start(width, height)
- canvas.Circle(width/2, height/2, 100)
- canvas.Text(width/2, height/2, "Hello, SVG", "text-anchor:middle;font-size:30px;fill:white")
- canvas.End()
- }
- Drawing in a web server: (http://localhost:2003/circle)
- package main
- import (
- "log"
- "github.com/ajstarks/svgo"
- "net/http"
- )
- func main() {
- http.Handle("/circle", http.HandlerFunc(circle))
- err := http.ListenAndServe(":2003", nil)
- if err != nil {
- log.Fatal("ListenAndServe:", err)
- }
- }
- func circle(w http.ResponseWriter, req *http.Request) {
- w.Header().Set("Content-Type", "image/svg+xml")
- s := svg.New(w)
- s.Start(500, 500)
- s.Circle(250, 250, 125, "fill:none;stroke:black")
- s.End()
- }
- Functions and types
- Many functions use x, y to specify an object's location, and w, h to specify the object's width and height.
- Where applicable, a final optional argument specifies the style to be applied to the object.
- The style strings follow the SVG standard; name:value pairs delimited by semicolons, or a
- series of name="value" pairs. For example: `"fill:none; opacity:0.3"` or `fill="none" opacity="0.3"` (see: <http://www.w3.org/TR/SVG11/styling.html>)
- The SVG type:
- type SVG struct {
- Writer io.Writer
- }
-
- Most operations are methods on this type, specifying the destination io.Writer.
- The Offcolor type:
- type Offcolor struct {
- Offset uint8
- Color string
- Opacity float64
- }
- is used to specify the offset, color, and opacity of stop colors in linear and radial gradients
- The Filterspec type:
- type Filterspec struct {
- In string
- In2 string
- Result string
- }
- is used to specify inputs and results for filter effects
- */
- package svg
|