Add new textures functions

This commit is contained in:
Milan Nikolic 2023-11-08 19:08:52 +01:00
parent c869c2069e
commit 42fa435e0f
No known key found for this signature in database
GPG key ID: 9229D0EAA3AA4E75

View file

@ -63,6 +63,17 @@ func LoadImageRaw(fileName string, width, height int32, format PixelFormat, head
return v return v
} }
// LoadImageSvg - Load image from SVG file data or string with specified size
func LoadImageSvg(fileNameOrString string, width, height int32) *Image {
cfileNameOrString := C.CString(fileNameOrString)
defer C.free(unsafe.Pointer(cfileNameOrString))
cwidth := (C.int)(width)
cheight := (C.int)(height)
ret := C.LoadImageSvg(cfileNameOrString, cwidth, cheight)
v := newImageFromPointer(unsafe.Pointer(&ret))
return v
}
// LoadImageAnim - Load image sequence from file (frames appended to image.data) // LoadImageAnim - Load image sequence from file (frames appended to image.data)
func LoadImageAnim(fileName string, frames *int32) *Image { func LoadImageAnim(fileName string, frames *int32) *Image {
cfileName := C.CString(fileName) cfileName := C.CString(fileName)
@ -84,6 +95,14 @@ func LoadImageFromMemory(fileType string, fileData []byte, dataSize int32) *Imag
return v return v
} }
// LoadImageFromTexture - Get pixel data from GPU texture and return an Image
func LoadImageFromTexture(texture Texture2D) *Image {
ctexture := texture.cptr()
ret := C.LoadImageFromTexture(*ctexture)
v := newImageFromPointer(unsafe.Pointer(&ret))
return v
}
// LoadImageFromScreen - Load image from screen buffer (screenshot) // LoadImageFromScreen - Load image from screen buffer (screenshot)
func LoadImageFromScreen() *Image { func LoadImageFromScreen() *Image {
ret := C.LoadImageFromScreen() ret := C.LoadImageFromScreen()
@ -171,14 +190,6 @@ func UnloadImageColors(cols []color.RGBA) {
C.UnloadImageColors((*C.Color)(unsafe.Pointer(&cols[0]))) C.UnloadImageColors((*C.Color)(unsafe.Pointer(&cols[0])))
} }
// LoadImageFromTexture - Get pixel data from GPU texture and return an Image
func LoadImageFromTexture(texture Texture2D) *Image {
ctexture := texture.cptr()
ret := C.LoadImageFromTexture(*ctexture)
v := newImageFromPointer(unsafe.Pointer(&ret))
return v
}
// UpdateTexture - Update GPU texture with new data // UpdateTexture - Update GPU texture with new data
func UpdateTexture(texture Texture2D, pixels []color.RGBA) { func UpdateTexture(texture Texture2D, pixels []color.RGBA) {
ctexture := texture.cptr() ctexture := texture.cptr()
@ -195,12 +206,23 @@ func UpdateTextureRec(texture Texture2D, rec Rectangle, pixels []color.RGBA) {
} }
// ExportImage - Export image as a PNG file // ExportImage - Export image as a PNG file
func ExportImage(image Image, name string) { func ExportImage(image Image, fileName string) {
cname := C.CString(name) cfileName := C.CString(fileName)
defer C.free(unsafe.Pointer(cname)) defer C.free(unsafe.Pointer(cfileName))
cimage := image.cptr()
C.ExportImage(*cimage, cfileName)
}
// ExportImageToMemory - Export image to memory buffer
func ExportImageToMemory(image Image, fileType string) []byte {
cfileType := C.CString(fileType)
defer C.free(unsafe.Pointer(cfileType))
cimage := image.cptr() cimage := image.cptr()
C.ExportImage(*cimage, cname) var size C.int
ret := C.ExportImageToMemory(*cimage, cfileType, &size)
v := unsafe.Slice((*byte)(unsafe.Pointer(ret)), size)
return v
} }
// ImageCopy - Create an image duplicate (useful for transformations) // ImageCopy - Create an image duplicate (useful for transformations)
@ -346,6 +368,13 @@ func ImageFlipHorizontal(image *Image) {
C.ImageFlipHorizontal(cimage) C.ImageFlipHorizontal(cimage)
} }
// ImageRotate - Rotate image by input angle in degrees (-359 to 359)
func ImageRotate(image *Image, degrees int32) {
cimage := image.cptr()
cdegrees := (C.int)(degrees)
C.ImageRotate(cimage, cdegrees)
}
// ImageRotateCW - Rotate image clockwise 90deg // ImageRotateCW - Rotate image clockwise 90deg
func ImageRotateCW(image *Image) { func ImageRotateCW(image *Image) {
cimage := image.cptr() cimage := image.cptr()
@ -575,6 +604,19 @@ func GenImageColor(width, height int, col color.RGBA) *Image {
return v return v
} }
// GenImageGradientLinear - Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient
func GenImageGradientLinear(width, height, direction int, start, end color.RGBA) *Image {
cwidth := (C.int)(width)
cheight := (C.int)(height)
cdensity := (C.int)(direction)
cstart := colorCptr(start)
cend := colorCptr(end)
ret := C.GenImageGradientLinear(cwidth, cheight, cdensity, *cstart, *cend)
v := newImageFromPointer(unsafe.Pointer(&ret))
return v
}
// GenImageGradientRadial - Generate image: radial gradient // GenImageGradientRadial - Generate image: radial gradient
func GenImageGradientRadial(width, height int, density float32, inner, outer color.RGBA) *Image { func GenImageGradientRadial(width, height int, density float32, inner, outer color.RGBA) *Image {
cwidth := (C.int)(width) cwidth := (C.int)(width)
@ -588,6 +630,19 @@ func GenImageGradientRadial(width, height int, density float32, inner, outer col
return v return v
} }
// GenImageGradientSquare - Generate image: square gradient
func GenImageGradientSquare(width, height int, density float32, inner, outer color.RGBA) *Image {
cwidth := (C.int)(width)
cheight := (C.int)(height)
cdensity := (C.float)(density)
cinner := colorCptr(inner)
couter := colorCptr(outer)
ret := C.GenImageGradientSquare(cwidth, cheight, cdensity, *cinner, *couter)
v := newImageFromPointer(unsafe.Pointer(&ret))
return v
}
// GenImageChecked - Generate image: checked // GenImageChecked - Generate image: checked
func GenImageChecked(width, height, checksX, checksY int, col1, col2 color.RGBA) *Image { func GenImageChecked(width, height, checksX, checksY int, col1, col2 color.RGBA) *Image {
cwidth := (C.int)(width) cwidth := (C.int)(width)