summaryrefslogtreecommitdiffhomepage
path: root/src/textures.c
diff options
context:
space:
mode:
authorWilhem Barbier <[email protected]>2017-06-28 17:27:47 +0200
committerWilhem Barbier <[email protected]>2017-06-28 17:27:47 +0200
commit786cd63057d77e7987fe68986da6bca103c96415 (patch)
tree791a8a4bc04a3ae8dd38d40058184587f4c5a068 /src/textures.c
parentc3049a9b06490df865d92009dc80ad0683305128 (diff)
downloadraylib-786cd63057d77e7987fe68986da6bca103c96415.tar.gz
raylib-786cd63057d77e7987fe68986da6bca103c96415.zip
Add a density parameter to GenImageRadialGradient
Diffstat (limited to 'src/textures.c')
-rw-r--r--src/textures.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/textures.c b/src/textures.c
index 67d03d8d..9b0067cf 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -1493,7 +1493,7 @@ Image GenImageGradientH(int width, int height, Color left, Color right)
}
// Generate image: radial gradient
-Image GenImageRadialGradient(int width, int height, Color inner, Color outer)
+Image GenImageRadialGradient(int width, int height, float density, Color inner, Color outer)
{
Color *pixels = (Color*)malloc(width * height * sizeof(Color));
float radius = (width < height) ? (float)width / 2.f : (float)height / 2.f;
@@ -1505,7 +1505,8 @@ Image GenImageRadialGradient(int width, int height, Color inner, Color outer)
for (int x = 0; x < width; x++)
{
float dist = hypotf((float)x - center_x, (float)y - center_y);
- float factor = dist / radius;
+ float factor = (dist - radius * density) / (radius * (1.f - density));
+ factor = fmax(factor, 0.f);
factor = fmin(factor, 1.f); // dist can be bigger than radius so we have to check
pixels[y*width + x].r = (int)((float)outer.r * factor + (float)inner.r * (1.f - factor));
pixels[y*width + x].g = (int)((float)outer.g * factor + (float)inner.g * (1.f - factor));