@@ -33,14 +33,14 @@ static void demo_all(void);
static void demo_dots(void);
static void demo_dots(void);
static void demo_lines(void);
static void demo_lines(void);
static void demo_thin_lines(void);
static void demo_circles(void);
static void demo_boxes(void);
static void demo_ellipses(void);
static void demo_ellipses(void);
static void demo_triangles(void);
static void demo_triangles(void);
static void demo_outlined_triangles(void);
static void demo_sprites(void);
static void demo_sprites(void);
int force_clipping = 0;
int force_clipping = 0;
int outline = 0;
int thin = 0;
struct ee_sprite *sprite = NULL;
struct ee_sprite *sprite = NULL;
int main(int argc, char **argv)
int main(int argc, char **argv)
@@ -87,28 +87,38 @@ int main(int argc, char **argv)
case '2':
case '2':
ee_clear();
ee_clear();
demo = demo_lines;
demo = demo_lines;
thin = 0;
break;
break;
case '3':
case '3':
ee_clear();
ee_clear();
demo = demo_thin_lines;
demo = demo_lines;
thin = 1;
break;
break;
case '4':
case '4':
ee_clear();
ee_clear();
demo = demo_circles;
demo = demo_boxes;
outline = 0;
break;
break;
case '5':
case '5':
ee_clear();
ee_clear();
demo = demo_ellipses;
demo = demo_boxes;
outline = 1;
break;
break;
case '6':
case '6':
ee_clear();
ee_clear();
demo = demo_triangl es;
demo = demo_ellips es;
break;
break;
case '7':
case '7':
ee_clear();
ee_clear();
demo = demo_outlined_triangles;
demo = demo_triangles;
outline = 0;
break;
break;
case '8':
case '8':
ee_clear();
demo = demo_triangles;
outline = 1;
break;
case '9':
ee_clear();
ee_clear();
demo = demo_sprites;
demo = demo_sprites;
break;
break;
@@ -145,11 +155,12 @@ static void display_menu(void)
ee_putstr(4, 7, "1: dots demo");
ee_putstr(4, 7, "1: dots demo");
ee_putstr(4, 8, "2: lines demo");
ee_putstr(4, 8, "2: lines demo");
ee_putstr(4, 9, "3: thin lines demo");
ee_putstr(4, 9, "3: thin lines demo");
ee_putstr(4, 10, "4: circles demo");
ee_putstr(4, 11, "5: ellipses demo");
ee_putstr(4, 12, "6: triangles demo");
ee_putstr(4, 13, "7: outlined triangles demo");
ee_putstr(4, 14, "8: sprites demo");
ee_putstr(4, 10, "4: boxes demo");
ee_putstr(4, 11, "5: outlined boxes demo");
ee_putstr(4, 12, "6: ellipses demo");
ee_putstr(4, 13, "7: triangles demo");
ee_putstr(4, 14, "8: outlined triangles demo");
ee_putstr(4, 15, "9: sprites demo");
ee_putstr(4, yo - 2, "q: quit");
ee_putstr(4, yo - 2, "q: quit");
@@ -178,14 +189,11 @@ static void demo_all(void)
ee_draw_thin_line(xo, yo, x1, y1);
ee_draw_thin_line(xo, yo, x1, y1);
}
}
j = 15 + sin(0.03*i) * 8;
ee_color(EE_WHITE);
ee_color(EE_WHITE);
for(j = 15 + sin(0.03*i) * 8; j--;)
{
ee_draw_circle(xo, yo, j, '#');
}
ee_fill_ellipse(xo, yo, j, j / 2, '#');
ee_color(EE_YELLOW);
ee_color(EE_YELLOW);
ee_draw_circle(xo, yo, 15 + sin(0.03*i) * 8 , '#');
ee_draw_ellipse(xo, yo, j, j / 2, '#');
/* Draw the pyramid */
/* Draw the pyramid */
xo = ee_get_width() * 5 / 8;
xo = ee_get_width() * 5 / 8;
@@ -203,23 +211,17 @@ static void demo_all(void)
ee_color(EE_GREEN);
ee_color(EE_GREEN);
ee_fill_triangle(xo, yo, x2, y2, x1, y1, '%');
ee_fill_triangle(xo, yo, x2, y2, x1, y1, '%');
ee_color(EE_YELLOW);
ee_color(EE_YELLOW);
ee_draw_thin_line(xo, yo, x2, y2);
ee_draw_thin_line(x2, y2, x1, y1);
ee_draw_thin_line(x1, y1, xo, yo);
ee_draw_thin_triangle(xo, yo, x2, y2, x1, y1);
ee_color(EE_RED);
ee_color(EE_RED);
ee_fill_triangle(x1, y1, x2, y2, x3, y3, '#');
ee_fill_triangle(x1, y1, x2, y2, x3, y3, '#');
ee_color(EE_YELLOW);
ee_color(EE_YELLOW);
ee_draw_thin_line(x1, y1, x2, y2);
ee_draw_thin_line(x2, y2, x3, y3);
ee_draw_thin_line(x3, y3, x1, y1);
ee_draw_thin_triangle(x1, y1, x2, y2, x3, y3);
ee_color(EE_BLUE);
ee_color(EE_BLUE);
ee_fill_triangle(xo, yo, x2, y2, x3, y3, '%');
ee_fill_triangle(xo, yo, x2, y2, x3, y3, '%');
ee_color(EE_YELLOW);
ee_color(EE_YELLOW);
ee_draw_thin_line(xo, yo, x2, y2);
ee_draw_thin_line(x2, y2, x3, y3);
ee_draw_thin_line(x3, y3, xo, yo);
ee_draw_thin_triangle(xo, yo, x2, y2, x3, y3);
/* Draw a background triangle */
/* Draw a background triangle */
x1 = 2;
x1 = 2;
@@ -231,12 +233,8 @@ static void demo_all(void)
x3 = ee_get_width() / 3;
x3 = ee_get_width() / 3;
y3 = ee_get_height() - 3;
y3 = ee_get_height() - 3;
ee_color(EE_BLUE);
// ee_fill_triangle(x1, y1, x2, y2, x3, y3, '.');
ee_color(EE_CYAN);
ee_color(EE_CYAN);
ee_draw_thin_line(x1, y1, x3, y3);
ee_draw_thin_line(x2, y2, x1, y1);
ee_draw_thin_line(x3, y3, x2, y2);
ee_draw_thin_triangle(x1, y1, x2, y2, x3, y3);
xo = ee_get_width() / 2 + cos(0.027*i) * ee_get_width() / 3;
xo = ee_get_width() / 2 + cos(0.027*i) * ee_get_width() / 3;
yo = ee_get_height() / 2 - sin(0.027*i) * ee_get_height() / 2;
yo = ee_get_height() / 2 - sin(0.027*i) * ee_get_height() / 2;
@@ -245,7 +243,7 @@ static void demo_all(void)
ee_draw_thin_line(x2, y2, xo, yo);
ee_draw_thin_line(x2, y2, xo, yo);
ee_draw_thin_line(x3, y3, xo, yo);
ee_draw_thin_line(x3, y3, xo, yo);
/* Draw a sprite behind the pyramid */
/* Draw a sprite on the pyramid */
ee_draw_sprite(xo, yo, sprite);
ee_draw_sprite(xo, yo, sprite);
/* Draw a trail behind the foreground sprite */
/* Draw a trail behind the foreground sprite */
@@ -287,70 +285,52 @@ static void demo_lines(void)
{
{
int w = ee_get_width();
int w = ee_get_width();
int h = ee_get_height();
int h = ee_get_height();
int x1, y1, x2, y2;
/* Draw lines */
ee_color(ee_rand(1, 10));
if(force_clipping)
if(force_clipping)
{
{
ee_draw_line(ee_rand(- w, 2 * w), ee_rand(- h, 2 * h),
ee_rand(- w, 2 * w), ee_rand(- h, 2 * h), '#' );
x1 = ee_rand(- w, 2 * w); y1 = ee_rand(- h, 2 * h);
x2 = ee_rand(- w, 2 * w); y2 = ee_rand(- h, 2 * h );
}
}
else
else
{
{
ee_draw_line(ee_rand(0, w - 1), ee_rand(0, h - 1),
ee_rand(0, w - 1), ee_rand(0, h - 1), '#' );
x1 = ee_rand(0, w - 1); y1 = ee_rand(0, h - 1);
x2 = ee_rand(0, w - 1); y2 = ee_rand(0, h - 1 );
}
}
ee_refresh();
}
static void demo_thin_lines(void)
{
int w = ee_get_width();
int h = ee_get_height();
/* Draw lines */
ee_color(ee_rand(1, 10));
ee_color(ee_rand(1, 10));
if(force_clipping)
{
ee_draw_thin_line(ee_rand(- w, 2 * w), ee_rand(- h, 2 * h),
ee_rand(- w, 2 * w), ee_rand(- h, 2 * h));
}
if(thin)
ee_draw_thin_line(x1, y1, x2, y2);
else
else
{
ee_draw_thin_line(ee_rand(0, w), ee_rand(0, h),
ee_rand(0, w), ee_rand(0, h));
}
ee_draw_line(x1, y1, x2, y2, '#');
ee_refresh();
ee_refresh();
}
}
static void demo_circl es(void)
static void demo_box es(void)
{
{
int w = ee_get_width();
int w = ee_get_width();
int h = ee_get_height();
int h = ee_get_height();
int x1, y1, x2, y2;
/* Draw circles */
if(force_clipping)
if(force_clipping)
{
{
ee_color(ee_rand(1, 10));
ee_draw_circle(ee_rand(- w, 2 * w),
ee_rand(- h, 2 * h),
ee_rand(0, (w + h) / 2),
'#');
x1 = ee_rand(- w, 2 * w); y1 = ee_rand(- h, 2 * h);
x2 = ee_rand(- w, 2 * w); y2 = ee_rand(- h, 2 * h);
}
}
else
else
{
{
int x = ee_rand(0, w );
int y = ee_rand(0, h );
int r = ee_rand(0, (w + h) / 2);
x1 = ee_rand(0, w - 1); y1 = ee_rand(0, h - 1 );
x2 = ee_rand(0, w - 1); y2 = ee_rand(0, h - 1 );
}
if(x - r < 0 || x + r >= w || y - r < 0 || y + r >= h)
{
demo_circles();
return;
}
ee_color(ee_rand(1, 10));
ee_fill_box(x1, y1, x2, y2, '#');
if(outline)
{
ee_color(ee_rand(1, 10));
ee_color(ee_rand(1, 10));
ee_draw_circle(x, y, r, '#');
ee_draw_thin_box(x1, y1, x2, y2 );
}
}
ee_refresh();
ee_refresh();
@@ -360,93 +340,63 @@ static void demo_ellipses(void)
{
{
int w = ee_get_width();
int w = ee_get_width();
int h = ee_get_height();
int h = ee_get_height();
int x, y, a, b;
/* Draw circles */
if(force_clipping)
if(force_clipping)
{
{
ee_color(ee_rand(1, 10));
ee_draw_ellipse(ee_rand(- w, 2 * w),
ee_rand(- h, 2 * h),
ee_rand(0, w),
ee_rand(0, h),
'#');
x = ee_rand(- w, 2 * w); y = ee_rand(- h, 2 * h);
a = ee_rand(0, w); b = ee_rand(0, h);
}
}
else
else
{
{
int x = ee_rand(0, w);
int y = ee_rand(0, h);
int a = ee_rand(0, w);
int b = ee_rand(0, h);
if(x - a < 0 || x + a >= w || y - b < 0 || y + b >= h)
do
{
{
demo_ellipses();
return;
}
x = ee_rand(0, w); y = ee_rand(0, h);
a = ee_rand(0, w); b = ee_rand(0, h);
ee_color(ee_rand(1, 10));
ee_draw_ellipse(x, y, a, b, '#');
} while(x - a < 0 || x + a >= w || y - b < 0 || y + b >= h);
}
}
ee_refresh();
}
static void demo_triangles(void)
{
int w = ee_get_width();
int h = ee_get_height();
/* Draw lines */
ee_color(ee_rand(1, 10));
ee_color(ee_rand(1, 10));
if(force_clipping)
{
ee_fill_triangle(ee_rand(- w, 2 * w), ee_rand(- h, 2 * h),
ee_rand(- w, 2 * w), ee_rand(- h, 2 * h),
ee_rand(- w, 2 * w), ee_rand(- h, 2 * h), '#');
}
else
ee_fill_ellipse(x, y, a, b, '#');
if(outline)
{
{
ee_fill_triangle(ee_rand(0, w - 1), ee_rand(0, h - 1),
ee_rand(0, w - 1), ee_rand(0, h - 1),
ee_rand(0, w - 1), ee_rand(0, h - 1), '#');
ee_color(ee_rand(1, 10));
ee_draw_thin_ellipse(x, y, a, b);
}
}
ee_refresh();
ee_refresh();
}
}
static void demo_outlined_ triangles(void)
static void demo_triangles(void)
{
{
int w = ee_get_width();
int w = ee_get_width();
int h = ee_get_height();
int h = ee_get_height();
int x1, y1, x2, y2, x3, y3;
int x1, y1, x2, y2, x3, y3;
/* Draw lines */
ee_color(ee_rand(1, 10));
if(force_clipping)
if(force_clipping)
{
{
x1 = ee_rand(- w, 2 * w);
y1 = ee_rand(- h, 2 * h);
x2 = ee_rand(- w, 2 * w);
y2 = ee_rand(- h, 2 * h);
x3 = ee_rand(- w, 2 * w);
y3 = ee_rand(- h, 2 * h);
x1 = ee_rand(- w, 2 * w); y1 = ee_rand(- h, 2 * h);
x2 = ee_rand(- w, 2 * w); y2 = ee_rand(- h, 2 * h);
x3 = ee_rand(- w, 2 * w); y3 = ee_rand(- h, 2 * h);
}
}
else
else
{
{
x1 = ee_rand(0, w - 1);
y1 = ee_rand(0, h - 1);
x2 = ee_rand(0, w - 1);
y2 = ee_rand(0, h - 1);
x3 = ee_rand(0, w - 1);
y3 = ee_rand(0, h - 1);
x1 = ee_rand(0, w - 1); y1 = ee_rand(0, h - 1);
x2 = ee_rand(0, w - 1); y2 = ee_rand(0, h - 1);
x3 = ee_rand(0, w - 1); y3 = ee_rand(0, h - 1);
}
}
ee_color(ee_rand(1, 10));
ee_fill_triangle(x1, y1, x2, y2, x3, y3, '#');
ee_fill_triangle(x1, y1, x2, y2, x3, y3, '#');
ee_color(ee_rand(1, 10));
ee_draw_thin_line(x1, y1, x2, y2);
ee_draw_thin_line(x2, y2, x3, y3);
ee_draw_thin_line(x3, y3, x1, y1);
if(outline)
{
ee_color(ee_rand(1, 10));
ee_draw_thin_triangle(x1, y1, x2, y2, x3, y3);
}
ee_refresh();
ee_refresh();
}
}
@@ -458,49 +408,3 @@ static void demo_sprites(void)
ee_refresh();
ee_refresh();
}
}
static void demo_pyramid(void)
{
static int i = 0;
int xo, yo, x1, y1, x2, y2, x3, y3;
i++;
xo = ee_get_width() * 5 / 8;
yo = 2;
x1 = ee_get_width() / 8 + sin(0.03*i) * 5;
y1 = ee_get_height() / 2 + cos(0.03*i) * 5;
x2 = ee_get_width() - 10 - cos(0.02*i) * 10;
y2 = ee_get_height() - 5 + sin(0.02*i) * 5;
x3 = ee_get_width() / 4 - sin(0.02*i) * 5;
y3 = ee_get_height() + cos(0.02*i) * 5;
ee_clear();
ee_color(EE_GREEN);
ee_fill_triangle(xo, yo, x2, y2, x1, y1, '%');
ee_color(EE_YELLOW);
ee_draw_thin_line(xo, yo, x2, y2);
ee_draw_thin_line(x2, y2, x1, y1);
ee_draw_thin_line(x1, y1, xo, yo);
ee_color(EE_RED);
ee_fill_triangle(x1, y1, x2, y2, x3, y3, '#');
ee_color(EE_YELLOW);
ee_draw_thin_line(x1, y1, x2, y2);
ee_draw_thin_line(x2, y2, x3, y3);
ee_draw_thin_line(x3, y3, x1, y1);
ee_color(EE_BLUE);
ee_fill_triangle(xo, yo, x2, y2, x3, y3, '%');
ee_color(EE_YELLOW);
ee_draw_thin_line(xo, yo, x2, y2);
ee_draw_thin_line(x2, y2, x3, y3);
ee_draw_thin_line(x3, y3, xo, yo);
ee_refresh();
}