diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..1e63d4a7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.bmp +*.png diff --git a/examples/events.go b/examples/events.go index b81e90d5..57bd01d2 100644 --- a/examples/events.go +++ b/examples/events.go @@ -3,8 +3,8 @@ package main import ( - "github.com/veandco/go-sdl2/sdl" "fmt" + "github.com/veandco/go-sdl2/sdl" "os" ) @@ -18,16 +18,16 @@ func main() { var running bool window = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, - winWidth, winHeight, sdl.WINDOW_SHOWN) + winWidth, winHeight, sdl.WINDOW_SHOWN) if window == nil { - fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", sdl.GetError()); - os.Exit(1); + fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", sdl.GetError()) + os.Exit(1) } renderer = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED) if renderer == nil { - fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", sdl.GetError()); - os.Exit(2); + fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", sdl.GetError()) + os.Exit(2) } running = true @@ -38,16 +38,16 @@ func main() { running = false case *sdl.MouseMotionEvent: fmt.Printf("[%d ms] MouseMotion\ttype:%d\tid:%d\tx:%d\ty:%d\txrel:%d\tyrel:%d\n", - t.Timestamp, t.Type, t.Which, t.X, t.Y, t.XRel, t.YRel) + t.Timestamp, t.Type, t.Which, t.X, t.Y, t.XRel, t.YRel) case *sdl.MouseButtonEvent: fmt.Printf("[%d ms] MouseButton\ttype:%d\tid:%d\tx:%d\ty:%d\tbutton:%d\tstate:%d\n", - t.Timestamp, t.Type, t.Which, t.X, t.Y, t.Button, t.State) + t.Timestamp, t.Type, t.Which, t.X, t.Y, t.Button, t.State) case *sdl.MouseWheelEvent: fmt.Printf("[%d ms] MouseWheel\ttype:%d\tid:%d\tx:%d\ty:%d\n", - t.Timestamp, t.Type, t.Which, t.X, t.Y) + t.Timestamp, t.Type, t.Which, t.X, t.Y) case *sdl.KeyUpEvent: fmt.Printf("[%d ms] Keyboard\ttype:%d\tsym:%c\tmodifiers:%d\tstate:%d\trepeat:%d\n", - t.Timestamp, t.Type, t.Keysym.Sym, t.Keysym.Mod, t.State, t.Repeat) + t.Timestamp, t.Type, t.Keysym.Sym, t.Keysym.Mod, t.State, t.Repeat) } } } diff --git a/examples/render.go b/examples/render.go index 358e473e..e95bc307 100644 --- a/examples/render.go +++ b/examples/render.go @@ -3,8 +3,8 @@ package main import ( - "github.com/veandco/go-sdl2/sdl" "fmt" + "github.com/veandco/go-sdl2/sdl" "os" ) @@ -19,16 +19,16 @@ func main() { var rects []sdl.Rect window = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, - winWidth, winHeight, sdl.WINDOW_SHOWN) + winWidth, winHeight, sdl.WINDOW_SHOWN) if window == nil { - fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", sdl.GetError()); - os.Exit(1); + fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", sdl.GetError()) + os.Exit(1) } renderer = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED) if renderer == nil { - fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", sdl.GetError()); - os.Exit(2); + fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", sdl.GetError()) + os.Exit(2) } renderer.SetDrawColor(255, 255, 255, 255) @@ -37,23 +37,23 @@ func main() { renderer.SetDrawColor(0, 0, 255, 255) renderer.DrawLine(0, 0, 200, 200) - points = []sdl.Point { {0, 0}, {100, 300}, {100, 300}, {200, 0} } + points = []sdl.Point{{0, 0}, {100, 300}, {100, 300}, {200, 0}} renderer.SetDrawColor(255, 255, 0, 255) renderer.DrawLines(points) - rect = sdl.Rect { 300, 0, 200, 200 } + rect = sdl.Rect{300, 0, 200, 200} renderer.SetDrawColor(255, 0, 0, 255) renderer.DrawRect(&rect) - rects = []sdl.Rect { {400, 400, 100, 100}, {550, 350, 200, 200} } + rects = []sdl.Rect{{400, 400, 100, 100}, {550, 350, 200, 200}} renderer.SetDrawColor(0, 255, 255, 255) renderer.DrawRects(rects) - rect = sdl.Rect { 250, 250, 200, 200 } + rect = sdl.Rect{250, 250, 200, 200} renderer.SetDrawColor(0, 255, 0, 255) renderer.FillRect(&rect) - rects = []sdl.Rect { {500, 300, 100, 100}, {200, 300, 200, 200} } + rects = []sdl.Rect{{500, 300, 100, 100}, {200, 300, 200, 200}} renderer.SetDrawColor(255, 0, 255, 255) renderer.FillRects(rects) diff --git a/examples/syswminfo.go b/examples/syswminfo.go index 02e41061..254ec5c7 100644 --- a/examples/syswminfo.go +++ b/examples/syswminfo.go @@ -3,8 +3,8 @@ package main import ( - "github.com/veandco/go-sdl2/sdl" "fmt" + "github.com/veandco/go-sdl2/sdl" "os" ) diff --git a/examples/test.png b/examples/test.png new file mode 100644 index 00000000..d7f535bc Binary files /dev/null and b/examples/test.png differ diff --git a/examples/texture.go b/examples/texture.go index c98aa2ac..dedc3cc3 100644 --- a/examples/texture.go +++ b/examples/texture.go @@ -3,8 +3,8 @@ package main import ( - "github.com/veandco/go-sdl2/sdl" "fmt" + "github.com/veandco/go-sdl2/sdl" "os" ) @@ -20,32 +20,32 @@ func main() { var src, dst sdl.Rect window = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, - winWidth, winHeight, sdl.WINDOW_SHOWN) + winWidth, winHeight, sdl.WINDOW_SHOWN) if window == nil { - fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", sdl.GetError()); - os.Exit(1); + fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", sdl.GetError()) + os.Exit(1) } renderer = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED) if renderer == nil { - fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", sdl.GetError()); - os.Exit(2); + fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", sdl.GetError()) + os.Exit(2) } image = sdl.LoadBMP(imageName) if image == nil { fmt.Fprintf(os.Stderr, "Failed to load BMP: %s", sdl.GetError()) - os.Exit(3); + os.Exit(3) } texture = renderer.CreateTextureFromSurface(image) if texture == nil { - fmt.Fprintf(os.Stderr, "Failed to create texture: %s\n", sdl.GetError()); - os.Exit(4); + fmt.Fprintf(os.Stderr, "Failed to create texture: %s\n", sdl.GetError()) + os.Exit(4) } - src = sdl.Rect { 0, 0, 512, 512 } - dst = sdl.Rect { 100, 50, 512, 512 } + src = sdl.Rect{0, 0, 512, 512} + dst = sdl.Rect{100, 50, 512, 512} renderer.Clear() renderer.Copy(texture, &src, &dst) diff --git a/examples/texture_png.go b/examples/texture_png.go new file mode 100644 index 00000000..215a25cf --- /dev/null +++ b/examples/texture_png.go @@ -0,0 +1,62 @@ +// author: Jacky Boen + +package main + +import ( + "fmt" + "github.com/veandco/go-sdl2/sdl" + "github.com/veandco/go-sdl2/sdl_image" + "os" +) + +var winTitle string = "Go-SDL2 Texture" +var winWidth, winHeight int = 800, 600 +var imageName string = "test.png" + +func main() { + var window *sdl.Window + var renderer *sdl.Renderer + var texture *sdl.Texture + var src, dst sdl.Rect + + window = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, + winWidth, winHeight, sdl.WINDOW_SHOWN) + if window == nil { + fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", sdl.GetError()) + os.Exit(1) + } + + renderer = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED) + if renderer == nil { + fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", sdl.GetError()) + os.Exit(2) + } + + image := img.Load(imageName) + if image == nil { + fmt.Fprintf(os.Stderr, "Failed to load PNG: %s\n", sdl.GetError()) + os.Exit(3) + } + + texture = renderer.CreateTextureFromSurface(image) + if texture == nil { + fmt.Fprintf(os.Stderr, "Failed to create texture: %s\n", sdl.GetError()) + os.Exit(4) + } + + src = sdl.Rect{0, 0, 512, 512} + dst = sdl.Rect{100, 50, 512, 512} + + renderer.Clear() + renderer.SetDrawColor(255, 0, 0, 255) + renderer.FillRect(&sdl.Rect{0, 0, int32(winWidth), int32(winHeight)}) + renderer.Copy(texture, &src, &dst) + renderer.Present() + + sdl.Delay(2000) + + image.Free() + texture.Destroy() + renderer.Destroy() + window.Destroy() +} diff --git a/sdl/events.go b/sdl/events.go index 1a34161c..be7b01ef 100644 --- a/sdl/events.go +++ b/sdl/events.go @@ -2,7 +2,7 @@ package sdl /* #include -//#include "events.h" +#include "events.h" */ import "C" import "unsafe" @@ -475,7 +475,6 @@ func PushEvent(event Event) int { return int(C.SDL_PushEvent(_event)) } -/* //export goFilter func goFilter(userdata interface{}, e Event) int { a := reflect.ValueOf(&userdata).Elem() @@ -503,7 +502,6 @@ func DelEventWatch(filter EventFilter, userdata interface{}) { func FilterEvents(filter EventFilter, userdata interface{}) { } -*/ func EventState(type_ uint32, state int) uint8 { return uint8(C.SDL_EventState(C.Uint32(type_), C.int(state)))