Fixup
- bitmap.go format - c.go cleanup
This commit is contained in:
parent
2924980035
commit
27eae9dc8b
@ -5,93 +5,93 @@ package allegro5
|
|||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Bitmap represents an in memory bitmap
|
// Bitmap represents an in memory bitmap
|
||||||
type Bitmap struct {
|
type Bitmap struct {
|
||||||
bitmap *C.ALLEGRO_BITMAP
|
bitmap *C.ALLEGRO_BITMAP
|
||||||
width int
|
width int
|
||||||
height int
|
height int
|
||||||
}
|
}
|
||||||
|
|
||||||
type DrawOptions struct {
|
type DrawOptions struct {
|
||||||
Center bool
|
Center bool
|
||||||
Scale *Scale
|
Scale *Scale
|
||||||
Tint *Color
|
Tint *Color
|
||||||
}
|
}
|
||||||
|
|
||||||
type Scale struct {
|
type Scale struct {
|
||||||
Horizontal float32
|
Horizontal float32
|
||||||
Vertical float32
|
Vertical float32
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBitmap creates a new bitmap of given width and height
|
// NewBitmap creates a new bitmap of given width and height
|
||||||
func NewBitmap(width, height int) (*Bitmap, error) {
|
func NewBitmap(width, height int) (*Bitmap, error) {
|
||||||
b := C.al_create_bitmap(C.int(width), C.int(height))
|
b := C.al_create_bitmap(C.int(width), C.int(height))
|
||||||
if nil == b {
|
if nil == b {
|
||||||
return nil, fmt.Errorf("Error creating bitmap")
|
return nil, fmt.Errorf("Error creating bitmap")
|
||||||
}
|
}
|
||||||
return &Bitmap{b, width, height}, nil
|
return &Bitmap{b, width, height}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadBitmap tries to load the image at the specified path as a bitmap
|
// LoadBitmap tries to load the image at the specified path as a bitmap
|
||||||
func LoadBitmap(path string) (*Bitmap, error) {
|
func LoadBitmap(path string) (*Bitmap, error) {
|
||||||
p := C.CString(path)
|
p := C.CString(path)
|
||||||
defer C.free(unsafe.Pointer(p))
|
defer C.free(unsafe.Pointer(p))
|
||||||
b := C.al_load_bitmap(p)
|
b := C.al_load_bitmap(p)
|
||||||
if nil == b {
|
if nil == b {
|
||||||
return nil, fmt.Errorf("Error loading bitmap")
|
return nil, fmt.Errorf("Error loading bitmap")
|
||||||
}
|
}
|
||||||
width := int(C.al_get_bitmap_width(b))
|
width := int(C.al_get_bitmap_width(b))
|
||||||
height := int(C.al_get_bitmap_height(b))
|
height := int(C.al_get_bitmap_height(b))
|
||||||
return &Bitmap{b, width, height}, nil
|
return &Bitmap{b, width, height}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw draws the bitmap at the given location
|
// Draw draws the bitmap at the given location
|
||||||
func (b *Bitmap) Draw(left, top float32) {
|
func (b *Bitmap) Draw(left, top float32) {
|
||||||
C.al_draw_bitmap(b.bitmap, C.float(left), C.float(top), 0)
|
C.al_draw_bitmap(b.bitmap, C.float(left), C.float(top), 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bitmap) DrawOptions(left, top float32, options DrawOptions) {
|
func (b *Bitmap) DrawOptions(left, top float32, options DrawOptions) {
|
||||||
width := float32(b.width)
|
width := float32(b.width)
|
||||||
height := float32(b.height)
|
height := float32(b.height)
|
||||||
|
|
||||||
scale := nil != options.Scale
|
scale := nil != options.Scale
|
||||||
if scale {
|
if scale {
|
||||||
width *= options.Scale.Horizontal
|
width *= options.Scale.Horizontal
|
||||||
height *= options.Scale.Vertical
|
height *= options.Scale.Vertical
|
||||||
}
|
}
|
||||||
if options.Center {
|
if options.Center {
|
||||||
left -= width * 0.5
|
left -= width * 0.5
|
||||||
top -= height * 0.5
|
top -= height * 0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
if scale {
|
if scale {
|
||||||
if nil == options.Tint {
|
if nil == options.Tint {
|
||||||
C.al_draw_scaled_bitmap(b.bitmap, 0, 0, C.float(b.width), C.float(b.height), C.float(left), C.float(top), C.float(width), C.float(height), 0)
|
C.al_draw_scaled_bitmap(b.bitmap, 0, 0, C.float(b.width), C.float(b.height), C.float(left), C.float(top), C.float(width), C.float(height), 0)
|
||||||
} else {
|
} else {
|
||||||
C.al_draw_tinted_scaled_bitmap(b.bitmap, options.Tint.color, 0, 0, C.float(b.width), C.float(b.height), C.float(left), C.float(top), C.float(width), C.float(height), 0)
|
C.al_draw_tinted_scaled_bitmap(b.bitmap, options.Tint.color, 0, 0, C.float(b.width), C.float(b.height), C.float(left), C.float(top), C.float(width), C.float(height), 0)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if nil == options.Tint {
|
if nil == options.Tint {
|
||||||
C.al_draw_bitmap(b.bitmap, C.float(left), C.float(top), 0)
|
C.al_draw_bitmap(b.bitmap, C.float(left), C.float(top), 0)
|
||||||
} else {
|
} else {
|
||||||
C.al_draw_tinted_bitmap(b.bitmap, options.Tint.color, C.float(left), C.float(top), 0)
|
C.al_draw_tinted_bitmap(b.bitmap, options.Tint.color, C.float(left), C.float(top), 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bitmap) Width() int {
|
func (b *Bitmap) Width() int {
|
||||||
return b.width
|
return b.width
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bitmap) Height() int {
|
func (b *Bitmap) Height() int {
|
||||||
return b.height
|
return b.height
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destroy destroys the bitmap
|
// Destroy destroys the bitmap
|
||||||
func (b *Bitmap) Destroy() {
|
func (b *Bitmap) Destroy() {
|
||||||
C.al_destroy_bitmap(b.bitmap)
|
C.al_destroy_bitmap(b.bitmap)
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
package allegro5
|
package allegro5
|
||||||
|
|
||||||
// #cgo linux pkg-config: allegro-5 allegro_font-5 allegro_image-5 allegro_primitives-5 allegro_ttf-5
|
// #cgo !windows pkg-config: allegro-5 allegro_font-5 allegro_image-5 allegro_primitives-5 allegro_ttf-5
|
||||||
// #cgo windows LDFLAGS: -lallegro
|
// #cgo windows LDFLAGS: -lallegro -lallegro_font -lallegro_image -lallegro_primitives -lallegro_ttf
|
||||||
// #cgo windows LDFLAGS: -lallegro_font
|
|
||||||
// #cgo windows LDFLAGS: -lallegro_image
|
|
||||||
// #cgo windows LDFLAGS: -lallegro_primitives
|
|
||||||
// #cgo windows LDFLAGS: -lallegro_ttf
|
|
||||||
import "C"
|
import "C"
|
||||||
|
Loading…
Reference in New Issue
Block a user