Open Priff13 opened 1 month ago
Hi @Priff13, it was done to keep compatibility with SDL2’s native C integers. Would you happen to have a suggestion on how to make the fields int and keep them compatible?
Hi @Priff13, it was done to keep compatibility with SDL2’s native C integers. Would you happen to have a suggestion on how to make the fields int and keep them compatible?
@veeableful, the way that I would go about it is like this:
I would convert the struct types to int
, but keep the old struct, like this:
type Rect struct {
X, Y, W, H int
}
type rect_internal struct {
X, Y, W, H int32
}
I see that the function func (a *Rect) cptr() *C.SDL_Rect
is the primary function that is used when interacting with C, so I would adjust it to work like this:
func (a *Rect) cptr() *C.SDL_Rect {
b := &rect_internal{ X: int32(*a.X), Y: int32(*a.Y), W: int32(*a.W), H: int32(*a.H) }
return (*C.SDL_Rect)(unsafe.Pointer(b))
}
In the rest of the cases where sdl.Rect
is used, all that would need to be done is convert the fields to or from int32
.
It's not an insignificant amount of changes, but I believe that it would be overall beneficial for the developer experience.
PS: Applying the same changes to sdl.Point
would be greatly appreciated.
Thanks @Priff13. I think I will have to postpone it due to the amount of effort that it would require for me to maintain by myself but if you would like to create a pull request, it would be greatly appreciated!
Would you mind converting the
sdl.Rect
field types fromint32
toint
? This would help code readability when defining new rectangles.