Browse Source

* Changed the cucul_rand() behaviour. Now cucul_rand(0, 10) returns random

values between 0 and 9 (used to be 0 and 10). Updated documentation
    accordingly.
tags/v0.99.beta14
Sam Hocevar sam 18 years ago
parent
commit
e3f0d6c57d
4 changed files with 34 additions and 33 deletions
  1. +3
    -2
      cucul/cucul.c
  2. +1
    -1
      cucul/dither.c
  3. +21
    -21
      test/demo.c
  4. +9
    -9
      test/dithering.c

+ 3
- 2
cucul/cucul.c View File

@@ -241,11 +241,12 @@ void cucul_free_canvas(cucul_canvas_t *cv)
* *
* \param min The lower bound of the integer range. * \param min The lower bound of the integer range.
* \param max The upper bound of the integer range. * \param max The upper bound of the integer range.
* \return A random integer comprised between \p min and \p max, inclusive.
* \return A random integer comprised between \p min and \p max - 1
* (inclusive).
*/ */
int cucul_rand(int min, int max) int cucul_rand(int min, int max)
{ {
return min + (int)((1.0*(max-min+1)) * rand() / (RAND_MAX+1.0));
return min + (int)((1.0 * (max - min)) * rand() / (RAND_MAX + 1.0));
} }


/* /*


+ 1
- 1
cucul/dither.c View File

@@ -1251,7 +1251,7 @@ static void init_random_dither(int line)


static unsigned int get_random_dither(void) static unsigned int get_random_dither(void)
{ {
return cucul_rand(0x00, 0xff);
return cucul_rand(0x00, 0x100);
} }


static void increment_random_dither(void) static void increment_random_dither(void)


+ 21
- 21
test/demo.c View File

@@ -310,8 +310,8 @@ static void demo_all(void)
/* Draw a trail behind the foreground sprite */ /* Draw a trail behind the foreground sprite */
for(j = i - 60; j < i; j++) for(j = i - 60; j < i; j++)
{ {
int delta = cucul_rand(-5, 5);
cucul_set_color(cv, cucul_rand(0, 15), cucul_rand(0, 15));
int delta = cucul_rand(-5, 6);
cucul_set_color(cv, cucul_rand(0, 16), cucul_rand(0, 16));
cucul_putchar(cv, cucul_get_canvas_width(cv) / 2 cucul_putchar(cv, cucul_get_canvas_width(cv) / 2
+ cos(0.02*j) * (delta + cucul_get_canvas_width(cv) / 4), + cos(0.02*j) * (delta + cucul_get_canvas_width(cv) / 4),
cucul_get_canvas_height(cv) / 2 cucul_get_canvas_height(cv) / 2
@@ -327,8 +327,8 @@ static void demo_all(void)


static void demo_dots(void) static void demo_dots(void)
{ {
int xmax = cucul_get_canvas_width(cv) - 1;
int ymax = cucul_get_canvas_height(cv) - 1;
int xmax = cucul_get_canvas_width(cv);
int ymax = cucul_get_canvas_height(cv);
int i; int i;
static char chars[10] = static char chars[10] =
{ {
@@ -338,7 +338,7 @@ static void demo_dots(void)
for(i = 1000; i--;) for(i = 1000; i--;)
{ {
/* Putpixel */ /* Putpixel */
cucul_set_color(cv, cucul_rand(0, 15), cucul_rand(0, 15));
cucul_set_color(cv, cucul_rand(0, 16), cucul_rand(0, 16));
cucul_putchar(cv, cucul_rand(0, xmax), cucul_rand(0, ymax), cucul_putchar(cv, cucul_rand(0, xmax), cucul_rand(0, ymax),
chars[cucul_rand(0, 9)]); chars[cucul_rand(0, 9)]);
} }
@@ -376,11 +376,11 @@ static void demo_lines(void)
} }
else else
{ {
xa = cucul_rand(0, w - 1); ya = cucul_rand(0, h - 1);
xb = cucul_rand(0, w - 1); yb = cucul_rand(0, h - 1);
xa = cucul_rand(0, w); ya = cucul_rand(0, h);
xb = cucul_rand(0, w); yb = cucul_rand(0, h);
} }


cucul_set_color(cv, cucul_rand(0, 15), CUCUL_COLOR_BLACK);
cucul_set_color(cv, cucul_rand(0, 16), CUCUL_COLOR_BLACK);
if(outline > 1) if(outline > 1)
cucul_draw_thin_line(cv, xa, ya, xb, yb); cucul_draw_thin_line(cv, xa, ya, xb, yb);
else else
@@ -400,14 +400,14 @@ static void demo_boxes(void)
} }
else else
{ {
xa = cucul_rand(0, w - 1); ya = cucul_rand(0, h - 1);
xb = cucul_rand(0, w - 1); yb = cucul_rand(0, h - 1);
xa = cucul_rand(0, w); ya = cucul_rand(0, h);
xb = cucul_rand(0, w); yb = cucul_rand(0, h);
} }


cucul_set_color(cv, cucul_rand(0, 15), cucul_rand(0, 15));
cucul_set_color(cv, cucul_rand(0, 16), cucul_rand(0, 16));
cucul_fill_box(cv, xa, ya, xb, yb, "#"); cucul_fill_box(cv, xa, ya, xb, yb, "#");


cucul_set_color(cv, cucul_rand(0, 15), CUCUL_COLOR_BLACK);
cucul_set_color(cv, cucul_rand(0, 16), CUCUL_COLOR_BLACK);
if(outline == 2) if(outline == 2)
cucul_draw_thin_box(cv, xa, ya, xb, yb); cucul_draw_thin_box(cv, xa, ya, xb, yb);
else if(outline == 1) else if(outline == 1)
@@ -435,10 +435,10 @@ static void demo_ellipses(void)
} while(x - a < 0 || x + a >= w || y - b < 0 || y + b >= h); } while(x - a < 0 || x + a >= w || y - b < 0 || y + b >= h);
} }


cucul_set_color(cv, cucul_rand(0, 15), cucul_rand(0, 15));
cucul_set_color(cv, cucul_rand(0, 16), cucul_rand(0, 16));
cucul_fill_ellipse(cv, x, y, a, b, "#"); cucul_fill_ellipse(cv, x, y, a, b, "#");


cucul_set_color(cv, cucul_rand(0, 15), CUCUL_COLOR_BLACK);
cucul_set_color(cv, cucul_rand(0, 16), CUCUL_COLOR_BLACK);
if(outline == 2) if(outline == 2)
cucul_draw_thin_ellipse(cv, x, y, a, b); cucul_draw_thin_ellipse(cv, x, y, a, b);
else if(outline == 1) else if(outline == 1)
@@ -460,15 +460,15 @@ static void demo_triangles(void)
else else
{ {


xa = cucul_rand(0, w - 1); ya = cucul_rand(0, h - 1);
xb = cucul_rand(0, w - 1); yb = cucul_rand(0, h - 1);
xc = cucul_rand(0, w - 1); yc = cucul_rand(0, h - 1);
xa = cucul_rand(0, w); ya = cucul_rand(0, h);
xb = cucul_rand(0, w); yb = cucul_rand(0, h);
xc = cucul_rand(0, w); yc = cucul_rand(0, h);
} }


cucul_set_color(cv, cucul_rand(0, 15), cucul_rand(0, 15));
cucul_set_color(cv, cucul_rand(0, 16), cucul_rand(0, 16));
cucul_fill_triangle(cv, xa, ya, xb, yb, xc, yc, "#"); cucul_fill_triangle(cv, xa, ya, xb, yb, xc, yc, "#");


cucul_set_color(cv, cucul_rand(0, 15), CUCUL_COLOR_BLACK);
cucul_set_color(cv, cucul_rand(0, 16), CUCUL_COLOR_BLACK);
if(outline == 2) if(outline == 2)
cucul_draw_thin_triangle(cv, xa, ya, xb, yb, xc, yc); cucul_draw_thin_triangle(cv, xa, ya, xb, yb, xc, yc);
else if(outline == 1) else if(outline == 1)
@@ -477,8 +477,8 @@ static void demo_triangles(void)


static void demo_sprites(void) static void demo_sprites(void)
{ {
cucul_draw_sprite(cv, cucul_rand(0, cucul_get_canvas_width(cv) - 1),
cucul_rand(0, cucul_get_canvas_height(cv) - 1), sprite, 0);
cucul_draw_sprite(cv, cucul_rand(0, cucul_get_canvas_width(cv)),
cucul_rand(0, cucul_get_canvas_height(cv)), sprite, 0);
} }


#if 0 #if 0


+ 9
- 9
test/dithering.c View File

@@ -54,7 +54,7 @@ int main(void)


/* distance to 40% */ /* distance to 40% */
dist = XRATIO * (x - 40) * (x - 40) + YRATIO * y * y; dist = XRATIO * (x - 40) * (x - 40) + YRATIO * y * y;
if(cucul_rand(-FUZZY, FUZZY) + dist < dista)
if(cucul_rand(-FUZZY, FUZZY+1) + dist < dista)
{ {
nearb = neara; distb = dista; neara = 1; dista = dist; nearb = neara; distb = dista; neara = 1; dista = dist;
} }
@@ -65,22 +65,22 @@ int main(void)


/* check dist to 70% */ /* check dist to 70% */
dist = XRATIO * (x - 70) * (x - 70) + YRATIO * y * y; dist = XRATIO * (x - 70) * (x - 70) + YRATIO * y * y;
if(cucul_rand(-FUZZY, FUZZY) + dist < dista)
if(cucul_rand(-FUZZY, FUZZY+1) + dist < dista)
{ {
nearb = neara; distb = dista; neara = 2; dista = dist; nearb = neara; distb = dista; neara = 2; dista = dist;
} }
else if(cucul_rand(-FUZZY, FUZZY) + dist < distb)
else if(cucul_rand(-FUZZY, FUZZY+1) + dist < distb)
{ {
nearb = 2; distb = dist; nearb = 2; distb = dist;
} }


/* check dist to white */ /* check dist to white */
dist = XRATIO * (x - 100) * (x - 100) + YRATIO * y * y; dist = XRATIO * (x - 100) * (x - 100) + YRATIO * y * y;
if(cucul_rand(-FUZZY, FUZZY) + dist < dista)
if(cucul_rand(-FUZZY, FUZZY+1) + dist < dista)
{ {
nearb = neara; distb = dista; neara = 3; dista = dist; nearb = neara; distb = dista; neara = 3; dista = dist;
} }
else if(cucul_rand(-FUZZY, FUZZY) + dist < distb)
else if(cucul_rand(-FUZZY, FUZZY+1) + dist < distb)
{ {
nearb = 3; distb = dist; nearb = 3; distb = dist;
} }
@@ -89,11 +89,11 @@ int main(void)
/* check dist to dark */ /* check dist to dark */
dist = XRATIO * (x - 40) * (x - 40) + YRATIO * (y - 100) * (y - 100); dist = XRATIO * (x - 40) * (x - 40) + YRATIO * (y - 100) * (y - 100);
dist = dist * 12 / 16; dist = dist * 12 / 16;
if(cucul_rand(-FUZZY, FUZZY) + dist < dista)
if(cucul_rand(-FUZZY, FUZZY+1) + dist < dista)
{ {
nearb = neara; distb = dista; neara = 4; dista = dist; nearb = neara; distb = dista; neara = 4; dista = dist;
} }
else if(cucul_rand(-FUZZY, FUZZY) + dist < distb)
else if(cucul_rand(-FUZZY, FUZZY+1) + dist < distb)
{ {
nearb = 4; distb = dist; nearb = 4; distb = dist;
} }
@@ -101,11 +101,11 @@ int main(void)
/* check dist to light */ /* check dist to light */
dist = XRATIO * (x - 100) * (x - 100) + YRATIO * (y - 100) * (y - 100); dist = XRATIO * (x - 100) * (x - 100) + YRATIO * (y - 100) * (y - 100);
dist = dist * 8 / 16; dist = dist * 8 / 16;
if(cucul_rand(-FUZZY, FUZZY) + dist < dista)
if(cucul_rand(-FUZZY, FUZZY+1) + dist < dista)
{ {
nearb = neara; distb = dista; neara = 5; dista = dist; nearb = neara; distb = dista; neara = 5; dista = dist;
} }
else if(cucul_rand(-FUZZY, FUZZY) + dist < distb)
else if(cucul_rand(-FUZZY, FUZZY+1) + dist < distb)
{ {
nearb = 5; distb = dist; nearb = 5; distb = dist;
} }


Loading…
Cancel
Save