format && add images

Laurent Le Goff 2015-04-19 23:00:53 +02:00
parent c0710570ac
commit 4243a36c24
24 changed files with 116 additions and 101 deletions

@ -1,7 +1,7 @@
## Getting Started ## Getting Started
see http://code.google.com/p/draw2d/source/browse/cmd/gettingStarted.go
Writing to a png file Draw2d Hello World, initialize a graphic context on a image and save it in apng file.
```go ```go
package main package main
@ -17,40 +17,50 @@ import (
"image/png" "image/png"
) )
func saveToPngFile(filePath string, m image.Image) error {
// Create the file
f, err := os.Create(filePath)
if err != nil {
return err
}
defer f.Close()
// Create Writer from file
b := bufio.NewWriter(f)
// Write the image into the buffer
err = png.Encode(b, m)
if err != nil {
return err
}
err = b.Flush()
if err != nil {
return err
}
return nil
}
func main() { func main() {
i := image.NewRGBA(image.Rect(0, 0, 200, 200)) // Create a 200x200 RGBA image
gc := draw2d.NewGraphicContext(i) img := image.NewRGBA(image.Rect(0, 0, 200, 200))
gc.MoveTo(10.0, 10.0) // Initialize a graphic context on this image
gc.LineTo(100.0, 10.0) gc := draw2d.NewGraphicContext(img)
gc.Stroke() // Create a new path
filePath := "TestPath.png" gc.BeginPath()
saveToPngFile(filePath, i) // start the path at (10, 10)
fmt.Printf("Wrote %s OK.\n", filePath) gc.MoveTo(10.0, 10.0)
// add a lineto the path to (100.0, 10.0)
gc.LineTo(100.0, 10.0)
// Stroke
gc.Stroke()
// Save image to disk
filePath := "TestGettingStarted.png"
saveToPngFile(filePath, img)
fmt.Printf("Wrote %s OK.\n", filePath)
} }
// Save image to a file path using PNG format
func saveToPngFile(filePath string, m image.Image) error {
// Create the file
f, err := os.Create(filePath)
if err != nil {
return err
}
defer f.Close()
// Create Writer from file
b := bufio.NewWriter(f)
// Write the image into the buffer
err = png.Encode(b, m)
if err != nil {
return err
}
err = b.Flush()
if err != nil {
return err
}
return nil
}
``` ```
# Where to go next # See [Samples](Samples) to go further.
Now you are ready to start using the draw2d package. Go to [Samples](Samples.md) or [GettingStartedGUI](GettingStartedGUI.md).

@ -1,24 +1,15 @@
# Test results # ### Test results
You can find samples here generated by these program:
> http://code.google.com/p/draw2d/source/browse/cmd/testdraw2d.go
Those samples are largely inspired by this page: Those samples are largely inspired by this page:
> http://cairographics.org/samples/ > http://cairographics.org/samples/
Please see the corresponding HTML canvas, Postscript and svg results from [ajstarks](http://groups.google.com/group/golang-nuts/browse_thread/thread/62288215d63e263a/6d1159b2f965289c#6d1159b2f965289c) (for comparison purpose):
* http://draw2d.googlecode.com/hg/resource/image/Tests.html
* http://draw2d.googlecode.com/hg/resource/image/test.js
* http://draw2d.googlecode.com/hg/resource/image/Tests.ps
* http://www.flickr.com/photos/ajstarks/5207943227/
There's already some bugs please refer to [issue tracking](http://code.google.com/p/draw2d/issues/list) ## Test Rectangle
![test_results/TestRectangle.png](test_results/TestPath.png)
```go
func TestRectangle() {
## Test Path ##
![http://draw2d.googlecode.com/hg/resource/result/TestPath.png](http://draw2d.googlecode.com/hg/resource/result/TestPath.png)
```
func TestPath() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
gc.MoveTo(10.0, 10.0) gc.MoveTo(10.0, 10.0)
gc.LineTo(100.0, 10.0) gc.LineTo(100.0, 10.0)
@ -26,14 +17,14 @@ func TestPath() {
gc.LineTo(10.0, 100.0) gc.LineTo(10.0, 100.0)
gc.LineTo(10.0, 10.0) gc.LineTo(10.0, 10.0)
gc.FillStroke() gc.FillStroke()
saveToPngFile("TestPath", i) saveToPngFile("TestRectangle", i)
} }
``` ```
## Test Draw Arc
![test_results/TestDrawArc.png](test_results/TestDrawArc.png)
## Test Draw Arc ## ```go
![http://draw2d.googlecode.com/hg/resource/result/TestDrawArc.png](http://draw2d.googlecode.com/hg/resource/result/TestDrawArc.png)
```
func TestDrawArc() { func TestDrawArc() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
// draw an arc // draw an arc
@ -63,9 +54,11 @@ func TestDrawArc() {
} }
``` ```
## Test Draw Arc Negative ## ## Test Draw Arc Negative
![http://draw2d.googlecode.com/hg/resource/result/TestDrawArcNegative.png](http://draw2d.googlecode.com/hg/resource/result/TestDrawArcNegative.png) ![test_results/TestDrawArcNegative.png](test_results/TestDrawArcNegative.png)
```
```go
func TestDrawArcNegative() { func TestDrawArcNegative() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
// draw an arc // draw an arc
@ -95,9 +88,10 @@ func TestDrawArcNegative() {
} }
``` ```
## Test Curve Rectangle ## ## Test Curve Rectangle
![http://draw2d.googlecode.com/hg/resource/result/TestCurveRectangle.png](http://draw2d.googlecode.com/hg/resource/result/TestCurveRectangle.png) ![test_results/TestCurveRectangle.png](test_results/TestCurveRectangle.png)
```
```go
func TestCurveRectangle() { func TestCurveRectangle() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
@ -154,10 +148,10 @@ func TestCurveRectangle() {
} }
``` ```
## Test Draw Cubic Curve
![test_results/TestDrawCubicCurve.png](test_results/TestDrawCubicCurve.png)
## Test Draw Cubic Curve ## ```go
![http://draw2d.googlecode.com/hg/resource/result/TestDrawCubicCurve.png](http://draw2d.googlecode.com/hg/resource/result/TestDrawCubicCurve.png)
```
func TestDrawCubicCurve() { func TestDrawCubicCurve() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
// draw a cubic curve // draw a cubic curve
@ -186,10 +180,10 @@ func TestDrawCubicCurve() {
``` ```
## Test Dash ## ## Test Dash ##
![http://draw2d.googlecode.com/hg/resource/result/TestDash.png](http://draw2d.googlecode.com/hg/resource/result/TestDash.png) ![test_results/TestDash.png](test_results/TestDash.png)
```
```go
func TestDash() { func TestDash() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
gc.SetLineDash([]float{50, 10, 10, 10}, -50.0) gc.SetLineDash([]float{50, 10, 10, 10}, -50.0)
@ -209,8 +203,9 @@ func TestDash() {
``` ```
## Test Fill Stroke ## ## Test Fill Stroke ##
![http://draw2d.googlecode.com/hg/resource/result/TestFillStroke.png](http://draw2d.googlecode.com/hg/resource/result/TestFillStroke.png) ![test_results/TestFillStroke.png](test_results/TestFillStroke.png)
```
```go
func TestFillStroke() { func TestFillStroke() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
gc.MoveTo(128.0, 25.6) gc.MoveTo(128.0, 25.6)
@ -233,9 +228,10 @@ func TestFillStroke() {
} }
``` ```
## Test Fill Style ## ## Test Fill Style
![http://draw2d.googlecode.com/hg/resource/result/TestFillStyle.png](http://draw2d.googlecode.com/hg/resource/result/TestFillStyle.png) ![test_results/TestFillStyle.png](test_results/TestFillStyle.png)
```
```go
func TestFillStyle() { func TestFillStyle() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
gc.SetLineWidth(6) gc.SetLineWidth(6)
@ -266,9 +262,10 @@ func TestFillStyle() {
} }
``` ```
## Test Multi Segment Caps ## ## Test Multi Segment Caps
![http://draw2d.googlecode.com/hg/resource/result/TestMultiSegmentCaps.png](http://draw2d.googlecode.com/hg/resource/result/TestMultiSegmentCaps.png) ![test_results/TestMultiSegmentCaps.png](test_results/TestMultiSegmentCaps.png)
```
```go
func TestMultiSegmentCaps() { func TestMultiSegmentCaps() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
gc.MoveTo(50.0, 75.0) gc.MoveTo(50.0, 75.0)
@ -287,9 +284,10 @@ func TestMultiSegmentCaps() {
} }
``` ```
## Test Round Rectangle ## ## Test Round Rectangle
![http://draw2d.googlecode.com/hg/resource/result/TestRoundRectangle.png](http://draw2d.googlecode.com/hg/resource/result/TestRoundRectangle.png) ![test_results/TestRoundRectangle.png](test_results/TestRoundRectangle.png)
```
```go
func TestRoundRectangle() { func TestRoundRectangle() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
/* a custom shape that could be wrapped in a function */ /* a custom shape that could be wrapped in a function */
@ -316,9 +314,10 @@ func TestRoundRectangle() {
} }
``` ```
## Test Line Cap ## ## Test Line Cap
![http://draw2d.googlecode.com/hg/resource/result/TestLineCap.png](http://draw2d.googlecode.com/hg/resource/result/TestLineCap.png) ![test_results/TestLineCap.png](test_results/TestLineCap.png)
```
```go
func TestLineCap() { func TestLineCap() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
gc.SetLineWidth(30.0) gc.SetLineWidth(30.0)
@ -349,9 +348,10 @@ func TestLineCap() {
} }
``` ```
## Test Line Join ## ## Test Line Join
![http://draw2d.googlecode.com/hg/resource/result/TestLineJoin.png](http://draw2d.googlecode.com/hg/resource/result/TestLineJoin.png) ![test_results/TestLineJoin.png](test_results/TestLineJoin.png)
```
```go
func TestLineJoin() { func TestLineJoin() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
gc.SetLineWidth(40.96) gc.SetLineWidth(40.96)
@ -376,9 +376,10 @@ func TestLineJoin() {
} }
``` ```
## Test Bubble ## ## Test Bubble
![http://draw2d.googlecode.com/hg/resource/result/TestBubble.png](http://draw2d.googlecode.com/hg/resource/result/TestBubble.png) ![test_results/TestBubble.png](test_results/TestBubble.png)
```
```go
func TestBubble() { func TestBubble() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
gc.BeginPath(); gc.BeginPath();
@ -394,9 +395,10 @@ func TestBubble() {
} }
``` ```
## Test Star ## ## Test Star
![http://draw2d.googlecode.com/hg/resource/result/TestStar.png](http://draw2d.googlecode.com/hg/resource/result/TestStar.png) ![test_results/TestStar.png](test_results/TestStar.png)
```
```go
func TestStar() { func TestStar() {
i, gc := initGc(w, h) i, gc := initGc(w, h)
for i := 0.0 ; i < 360; i = i + 10 {// Go from 0 to 360 degrees in 10 degree steps for i := 0.0 ; i < 360; i = i + 10 {// Go from 0 to 360 degrees in 10 degree steps
@ -413,10 +415,10 @@ func TestStar() {
} }
``` ```
## Test Transform ## ## Test Transform
![http://draw2d.googlecode.com/hg/resource/result/TestTransform.png](http://draw2d.googlecode.com/hg/resource/result/TestTransform.png) ![test_results/TestTransform.png](test_results/TestTransform.png)
```
```go
func TestTransform() { func TestTransform() {
i, gc := initGc(800, 600) i, gc := initGc(800, 600)
@ -472,10 +474,10 @@ func TestTransform() {
} }
``` ```
## Test Path Transform ## ## Test Path Transform
![http://draw2d.googlecode.com/hg/resource/result/TestPathTransform.png](http://draw2d.googlecode.com/hg/resource/result/TestPathTransform.png) ![test_results/TestPathTransform.png](test_results/TestPathTransform.png)
```
```go
func TestPathTransform() { func TestPathTransform() {
i, gc := initGc(800, 600) i, gc := initGc(800, 600)
gc.SetLineWidth(20) gc.SetLineWidth(20)
@ -486,10 +488,10 @@ func TestPathTransform() {
} }
``` ```
## Test Android ## ## Test Android
![http://draw2d.googlecode.com/hg/resource/result/TestAndroid.png](http://draw2d.googlecode.com/hg/resource/result/TestAndroid.png) ![test_results/TestAndroid.png](test_results/TestAndroid.png)
```
```go
func android(gc *draw2d.GraphicContext, x, y float) { func android(gc *draw2d.GraphicContext, x, y float) {
gc.SetLineCap(draw2d.RoundCap) gc.SetLineCap(draw2d.RoundCap)
gc.SetLineWidth(5) gc.SetLineWidth(5)
@ -518,10 +520,11 @@ func android(gc *draw2d.GraphicContext, x, y float) {
gc.FillStroke() gc.FillStroke()
} }
``` ```
## Test Gopher ##
![http://draw2d.googlecode.com/hg/resource/result/TestGopher.png](http://draw2d.googlecode.com/hg/resource/result/TestGopher.png)
```
## Test Gopher
![test_results/TestGopher.png](test_results/TestGopher.png)
```go
func gordon(gc *draw2d.GraphicContext, x, y, w, h float) { func gordon(gc *draw2d.GraphicContext, x, y, w, h float) {
h23 := (h * 2) / 3 h23 := (h * 2) / 3
@ -587,9 +590,11 @@ func gordon(gc *draw2d.GraphicContext, x, y, w, h float) {
} }
``` ```
## Test Fill String ##
![http://draw2d.googlecode.com/hg/resource/result/TestFillString.png](http://draw2d.googlecode.com/hg/resource/result/TestFillString.png) ## Test Fill String
``` ![test_results/TestFillString.png](test_results/TestFillString.png)
```go
func TestFillString() { func TestFillString() {
i, gc := initGc(100, 100) i, gc := initGc(100, 100)
draw2d.RoundRect(gc, 5, 5, 95, 95, 10, 10) draw2d.RoundRect(gc, 5, 5, 95, 95, 10, 10)

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
test_results/TestBubble.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

BIN
test_results/TestDash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 603 B

BIN
test_results/TestGopher.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

BIN
test_results/TestStar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB