diff options
author | Martin Ashby <martin@martin-laptop.lan> | 2018-05-28 16:31:18 +0100 |
---|---|---|
committer | Martin Ashby <martin@martin-laptop.lan> | 2018-05-28 16:31:18 +0100 |
commit | 28f0ac19eb3b42601b0511131b5e39c77b80da9c (patch) | |
tree | a0765d2742926bb418ce623175876a68cb000c8b /unicorn/BaseFakeUnicorn.go | |
parent | 5766b0c285052d48ab7756c9c3eef6ae41ecd36e (diff) | |
parent | f20896ef3b147ac07769eb36c67ba436c6d2ed22 (diff) | |
download | unicornpaint-28f0ac19eb3b42601b0511131b5e39c77b80da9c.tar.gz unicornpaint-28f0ac19eb3b42601b0511131b5e39c77b80da9c.tar.bz2 unicornpaint-28f0ac19eb3b42601b0511131b5e39c77b80da9c.tar.xz unicornpaint-28f0ac19eb3b42601b0511131b5e39c77b80da9c.zip |
Merge branch 'master' of github.com:MFAshby/unicornpaint
Diffstat (limited to 'unicorn/BaseFakeUnicorn.go')
-rw-r--r-- | unicorn/BaseFakeUnicorn.go | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/unicorn/BaseFakeUnicorn.go b/unicorn/BaseFakeUnicorn.go new file mode 100644 index 0000000..7910814 --- /dev/null +++ b/unicorn/BaseFakeUnicorn.go @@ -0,0 +1,78 @@ +package unicorn + +import "github.com/veandco/go-sdl2/sdl" + +// BaseFakeUnicorn ... +// The base for FakeUnicorn & FakeUnicorn2 +// Share the SDL code. +type BaseFakeUnicorn struct { + displayWidth int32 + displayHeight int32 + window *sdl.Window + renderer *sdl.Renderer +} + +func NewBaseFakeUnicorn(width, height int32) (*BaseFakeUnicorn, error) { + if err := sdl.Init(sdl.INIT_EVERYTHING); err != nil { + return nil, err + } + + unicorn := &BaseFakeUnicorn{ + displayWidth: width, + displayHeight: height, + window: nil, + renderer: nil, + } + if err := unicorn.createWindow(); err != nil { + unicorn.Close() + return nil, err + } + if err := unicorn.createRenderer(); err != nil { + unicorn.Close() + return nil, err + } + return unicorn, nil +} + +func (f *BaseFakeUnicorn) createWindow() error { + window, err := sdl.CreateWindow("Fake Unicorn", + sdl.WINDOWPOS_UNDEFINED, + sdl.WINDOWPOS_UNDEFINED, + f.displayWidth, + f.displayHeight, + sdl.WINDOW_SHOWN) + f.window = window + return err +} + +func (f *BaseFakeUnicorn) createRenderer() error { + renderer, err := sdl.CreateRenderer(f.window, -1, sdl.RENDERER_ACCELERATED) + f.renderer = renderer + return err +} + +func (f *BaseFakeUnicorn) Close() error { + if f.window != nil { + f.window.Destroy() + } + if f.renderer != nil { + f.renderer.Destroy() + } + return nil +} + +// MainLoop ... +// Handle UI events so OS doesn't think we're frozen +func (f *BaseFakeUnicorn) MainLoop() { + running := true + for running { + for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() { + switch event.(type) { + case *sdl.QuitEvent: + println("Quit") + running = false + break + } + } + } +} |