From 19bdd59547193d0611de99d9ee85682a71f83b29 Mon Sep 17 00:00:00 2001 From: JupiterRider <60042618+JupiterRider@users.noreply.github.com> Date: Sun, 24 Nov 2024 12:39:13 +0100 Subject: [PATCH] ImageKernelConvolution function added --- raylib/raylib_purego.go | 7 +++++++ raylib/rtextures.go | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/raylib/raylib_purego.go b/raylib/raylib_purego.go index 182d4d3..648a7a9 100644 --- a/raylib/raylib_purego.go +++ b/raylib/raylib_purego.go @@ -287,6 +287,7 @@ var imageAlphaClear func(image *Image, col uintptr, threshold float32) var imageAlphaMask func(image *Image, alphaMask uintptr) var imageAlphaPremultiply func(image *Image) var imageBlurGaussian func(image *Image, blurSize int32) +var imageKernelConvolution func(image *Image, kernel []float32, kernelSize int32) var imageResize func(image *Image, newWidth int32, newHeight int32) var imageResizeNN func(image *Image, newWidth int32, newHeight int32) var imageResizeCanvas func(image *Image, newWidth int32, newHeight int32, offsetX int32, offsetY int32, fill uintptr) @@ -792,6 +793,7 @@ func init() { purego.RegisterLibFunc(&imageAlphaMask, raylibDll, "ImageAlphaMask") purego.RegisterLibFunc(&imageAlphaPremultiply, raylibDll, "ImageAlphaPremultiply") purego.RegisterLibFunc(&imageBlurGaussian, raylibDll, "ImageBlurGaussian") + purego.RegisterLibFunc(&imageKernelConvolution, raylibDll, "ImageKernelConvolution") purego.RegisterLibFunc(&imageResize, raylibDll, "ImageResize") purego.RegisterLibFunc(&imageResizeNN, raylibDll, "ImageResizeNN") purego.RegisterLibFunc(&imageResizeCanvas, raylibDll, "ImageResizeCanvas") @@ -2535,6 +2537,11 @@ func ImageBlurGaussian(image *Image, blurSize int32) { imageBlurGaussian(image, blurSize) } +// ImageKernelConvolution - Apply custom square convolution kernel to image +func ImageKernelConvolution(image *Image, kernel []float32) { + imageKernelConvolution(image, kernel, int32(len(kernel))) +} + // ImageResize - Resize image (Bicubic scaling algorithm) func ImageResize(image *Image, newWidth int32, newHeight int32) { imageResize(image, newWidth, newHeight) diff --git a/raylib/rtextures.go b/raylib/rtextures.go index f986acd..901fd22 100644 --- a/raylib/rtextures.go +++ b/raylib/rtextures.go @@ -381,6 +381,13 @@ func ImageBlurGaussian(image *Image, blurSize int32) { C.ImageBlurGaussian(cimage, cblurSize) } +// ImageKernelConvolution - Apply custom square convolution kernel to image +func ImageKernelConvolution(image *Image, kernel []float32) { + cimage := image.cptr() + ckernel := (*C.float)(unsafe.Pointer(&kernel[0])) + C.ImageKernelConvolution(cimage, ckernel, C.int(len(kernel))) +} + // ImageResize - Resize an image (bilinear filtering) func ImageResize(image *Image, newWidth, newHeight int32) { cimage := image.cptr()