2000-07-30 13:21:14 -07:00
|
|
|
#include <Evas.h>
|
2000-08-05 22:10:24 -07:00
|
|
|
#include "../src/evas_gl_routines.h"
|
2000-08-01 21:23:04 -07:00
|
|
|
#include <math.h>
|
2000-07-30 13:21:14 -07:00
|
|
|
|
2000-08-05 17:26:34 -07:00
|
|
|
double get_time(void);
|
|
|
|
|
2000-08-02 09:23:23 -07:00
|
|
|
double
|
|
|
|
get_time(void)
|
|
|
|
{
|
|
|
|
struct timeval timev;
|
|
|
|
|
|
|
|
gettimeofday(&timev, NULL);
|
|
|
|
return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000);
|
|
|
|
}
|
|
|
|
|
2000-07-30 13:21:14 -07:00
|
|
|
int
|
|
|
|
main(int argc, char **argv)
|
|
|
|
{
|
2000-08-01 21:23:04 -07:00
|
|
|
Display *d;
|
|
|
|
Visual *vis;
|
|
|
|
Colormap cmap;
|
|
|
|
Window win;
|
2000-08-02 09:23:23 -07:00
|
|
|
int win_w, win_h;
|
2000-08-01 21:23:04 -07:00
|
|
|
|
|
|
|
d = XOpenDisplay(NULL);
|
2000-08-05 23:01:25 -07:00
|
|
|
__evas_gl_init(d, DefaultScreen(d));
|
2000-08-05 22:10:24 -07:00
|
|
|
vis = __evas_gl_get_visual(d, DefaultScreen(d));
|
|
|
|
cmap = __evas_gl_get_colormap(d, DefaultScreen(d));
|
2000-08-06 14:33:42 -07:00
|
|
|
|
|
|
|
win_w = 640; win_h = 480;
|
|
|
|
if (argc == 3)
|
|
|
|
{
|
|
|
|
win_w = atoi(argv[1]);
|
|
|
|
win_h = atoi(argv[2]);
|
|
|
|
}
|
2000-08-01 21:23:04 -07:00
|
|
|
{
|
|
|
|
XSetWindowAttributes att;
|
|
|
|
|
|
|
|
att.colormap = cmap;
|
|
|
|
att.border_pixel = 0;
|
|
|
|
att.event_mask = 0;
|
|
|
|
|
|
|
|
win = XCreateWindow(d,
|
|
|
|
RootWindow(d, DefaultScreen(d)),
|
2000-08-02 09:23:23 -07:00
|
|
|
0, 0, win_w, win_h, 0,
|
2000-08-05 22:10:24 -07:00
|
|
|
(__evas_gl_get_visual_info(d, DefaultScreen(d)))->depth,
|
2000-08-01 21:23:04 -07:00
|
|
|
InputOutput,
|
|
|
|
vis,
|
|
|
|
CWColormap | CWBorderPixel | CWEventMask,
|
|
|
|
&att);
|
|
|
|
XMapWindow(d, win);
|
|
|
|
}
|
2000-08-05 22:10:24 -07:00
|
|
|
if (__evas_gl_capable(d))
|
2000-08-01 21:23:04 -07:00
|
|
|
{
|
2000-08-01 22:55:17 -07:00
|
|
|
int a = 0;
|
2000-08-02 09:23:23 -07:00
|
|
|
double t1, t2;
|
2000-08-10 03:14:55 -07:00
|
|
|
Evas_GL_Image *i[4], *bg, *l, *sel, *ic, *tm;
|
2000-08-06 17:50:26 -07:00
|
|
|
Evas_GL_Font *fn[4];
|
2000-08-09 21:20:29 -07:00
|
|
|
Evas_GL_Graident *gr;
|
2000-08-01 21:23:04 -07:00
|
|
|
|
2000-08-05 22:10:24 -07:00
|
|
|
bg = __evas_gl_image_new_from_file(d, "img/sky001.png");
|
|
|
|
i[0] = __evas_gl_image_new_from_file(d, "img/fog1001.png");
|
|
|
|
i[1] = __evas_gl_image_new_from_file(d, "img/fog2001.png");
|
|
|
|
i[2] = __evas_gl_image_new_from_file(d, "img/fog3001.png");
|
|
|
|
i[3] = __evas_gl_image_new_from_file(d, "img/fog4001.png");
|
2000-08-10 03:14:55 -07:00
|
|
|
ic = __evas_gl_image_new_from_file(d, "img/mush.png");
|
|
|
|
tm = __evas_gl_image_new_from_file(d, "img/tm.png");
|
2000-08-05 22:10:24 -07:00
|
|
|
l = __evas_gl_image_new_from_file(d, "img/logo001.png");
|
2000-08-10 03:14:55 -07:00
|
|
|
sel = __evas_gl_image_new_from_file(d, "img/sel.png");
|
|
|
|
__evas_gl_image_set_borders(sel, 3, 3, 3, 3);
|
2000-08-06 17:50:26 -07:00
|
|
|
__evas_gl_text_font_add_path("./fnt");
|
|
|
|
fn[0] = __evas_gl_text_font_new(d, "cinema", 24);
|
|
|
|
fn[1] = __evas_gl_text_font_new(d, "grunge", 16);
|
|
|
|
fn[2] = __evas_gl_text_font_new(d, "morpheus", 24);
|
|
|
|
fn[3] = __evas_gl_text_font_new(d, "notepad", 24);
|
2000-08-09 21:20:29 -07:00
|
|
|
gr = __evas_gl_gradient_new(d);
|
|
|
|
__evas_gl_gradient_color_add(gr, 255, 255, 255, 255, 4);
|
|
|
|
__evas_gl_gradient_color_add(gr, 255, 255, 0, 200, 4);
|
|
|
|
__evas_gl_gradient_color_add(gr, 255, 0, 0, 100, 4);
|
|
|
|
__evas_gl_gradient_color_add(gr, 0, 0, 0, 0, 4);
|
2000-08-02 09:23:23 -07:00
|
|
|
if (!bg)
|
|
|
|
{
|
|
|
|
printf("cannot find images!\n");
|
|
|
|
exit(1);
|
|
|
|
}
|
2000-08-05 17:26:34 -07:00
|
|
|
t1 = 0;
|
2000-08-01 21:23:04 -07:00
|
|
|
for(;;)
|
|
|
|
{
|
2000-08-05 17:26:34 -07:00
|
|
|
int j, k;
|
2000-08-01 21:23:04 -07:00
|
|
|
|
2000-08-02 09:23:23 -07:00
|
|
|
if (a == 0)
|
|
|
|
t1 = get_time();
|
2000-08-05 22:10:24 -07:00
|
|
|
__evas_gl_draw_add_rect(d, win, 0, 0, win_w, win_h);
|
|
|
|
__evas_gl_image_draw(bg, d, win, win_w, win_h,
|
|
|
|
0, 0, __evas_gl_image_get_width(bg), __evas_gl_image_get_height(bg),
|
2000-08-02 09:23:23 -07:00
|
|
|
0, 0, win_w, win_h);
|
|
|
|
for (k = 0; k < 4; k++)
|
2000-08-01 21:23:04 -07:00
|
|
|
{
|
2000-08-01 22:55:17 -07:00
|
|
|
int xx, yy;
|
|
|
|
|
2000-08-03 16:54:32 -07:00
|
|
|
j = 3 - (k % 4);
|
2000-08-02 09:23:23 -07:00
|
|
|
xx = (((k + 1) * a) / 2) % win_w;
|
2000-08-01 22:55:17 -07:00
|
|
|
yy = 0;
|
2000-08-02 09:23:23 -07:00
|
|
|
if (k == 2)
|
2000-08-05 22:10:24 -07:00
|
|
|
__evas_gl_image_draw(l, d, win, win_w, win_h,
|
|
|
|
0, 0, __evas_gl_image_get_width(l), __evas_gl_image_get_height(l),
|
|
|
|
(win_w - __evas_gl_image_get_width(l)) / 2, (win_h - __evas_gl_image_get_height(l)) /2, __evas_gl_image_get_width(l), __evas_gl_image_get_height(l));
|
|
|
|
__evas_gl_image_draw(i[j], d, win, win_w, win_h,
|
|
|
|
0, 0, __evas_gl_image_get_width(i[j]), __evas_gl_image_get_height(i[j]),
|
2000-08-02 09:23:23 -07:00
|
|
|
xx, yy, win_w, win_h);
|
2000-08-05 22:10:24 -07:00
|
|
|
__evas_gl_image_draw(i[j], d, win, win_w, win_h,
|
|
|
|
0, 0, __evas_gl_image_get_width(i[j]), __evas_gl_image_get_height(i[j]),
|
2000-08-02 09:23:23 -07:00
|
|
|
xx - win_w, yy, win_w, win_h);
|
2000-08-01 21:23:04 -07:00
|
|
|
}
|
2000-08-06 17:50:26 -07:00
|
|
|
__evas_gl_text_draw(fn[0], d, win, win_w, win_h, 30, 50,
|
|
|
|
"This is a line...",
|
|
|
|
255, 255, 255, 255);
|
|
|
|
__evas_gl_text_draw(fn[1], d, win, win_w, win_h, 30, 100,
|
|
|
|
"Of anti-aliased text drawn nicely...",
|
|
|
|
255, 100, 100, 255);
|
|
|
|
__evas_gl_text_draw(fn[2], d, win, win_w, win_h, 30, 150,
|
|
|
|
"With evas... Oh goodie isn't this fun!",
|
|
|
|
100, 100, 255, 200);
|
|
|
|
__evas_gl_text_draw(fn[3], d, win, win_w, win_h, 30, 200,
|
|
|
|
"With Lots of colors & transparency too!",
|
|
|
|
50, 200, 100, 100);
|
2000-08-06 20:11:05 -07:00
|
|
|
__evas_gl_rectangle_draw(d, win, win_w, win_h,
|
|
|
|
80, 100, 100, 30,
|
|
|
|
200, 40, 100, 100);
|
|
|
|
__evas_gl_rectangle_draw(d, win, win_w, win_h,
|
|
|
|
150, 110, 25, 25,
|
|
|
|
200, 40, 100, 255);
|
|
|
|
__evas_gl_rectangle_draw(d, win, win_w, win_h,
|
|
|
|
170, 160, 200, 180,
|
2000-08-06 20:13:32 -07:00
|
|
|
30, 40, 200, 120);
|
2000-08-06 20:11:05 -07:00
|
|
|
__evas_gl_line_draw(d, win, win_w, win_h,
|
|
|
|
10, 20, 100, 160,
|
|
|
|
255, 255, 255, 255);
|
2000-08-07 18:55:28 -07:00
|
|
|
__evas_gl_line_draw(d, win, win_w, win_h,
|
|
|
|
10, 20, 100, 40,
|
|
|
|
0, 0, 255, 180);
|
2000-08-06 20:11:05 -07:00
|
|
|
__evas_gl_line_draw(d, win, win_w, win_h,
|
|
|
|
10, 20, 100, 20,
|
|
|
|
0, 0, 0, 255);
|
2000-08-07 18:55:28 -07:00
|
|
|
__evas_gl_line_draw(d, win, win_w, win_h,
|
|
|
|
10, 20, 100, 5,
|
|
|
|
255, 0, 0, 255);
|
|
|
|
__evas_gl_line_draw(d, win, win_w, win_h,
|
|
|
|
10, 20, 12, 2,
|
|
|
|
80, 160, 80, 255);
|
2000-08-06 20:11:05 -07:00
|
|
|
__evas_gl_line_draw(d, win, win_w, win_h,
|
|
|
|
10, 20, 10, 200,
|
|
|
|
255, 255, 0, 100);
|
2000-08-10 03:14:55 -07:00
|
|
|
__evas_gl_image_draw(tm, d, win, win_w, win_h,
|
|
|
|
|
|
|
|
(__evas_gl_image_get_width(tm) / 2) - (((a / 4) + 4) / 2),
|
|
|
|
(__evas_gl_image_get_height(tm) / 2) - (((a / 4) + 4) / 2),
|
|
|
|
(a / 4) + 4, (a / 4) + 4,
|
|
|
|
|
|
|
|
360, 220,
|
|
|
|
200, 250);
|
|
|
|
__evas_gl_image_draw(tm, d, win, win_w, win_h,
|
|
|
|
|
|
|
|
0, 0,
|
|
|
|
(a / 4) + 4, (a / 4) + 4,
|
|
|
|
|
|
|
|
110, 320,
|
|
|
|
100, 100);
|
|
|
|
__evas_gl_image_draw(sel, d, win, win_w, win_h,
|
|
|
|
0, 0, __evas_gl_image_get_width(sel), __evas_gl_image_get_height(sel),
|
|
|
|
10, 50,
|
|
|
|
abs(sin((double)a / win_w) * 300) + 20, abs(cos((double)a / win_w) * 300) + 20);
|
2000-08-09 21:20:29 -07:00
|
|
|
__evas_gl_gradient_draw(gr,
|
|
|
|
d, win, win_w, win_h,
|
|
|
|
300, 100, 200, 200,
|
|
|
|
((double)a * 360) / (double)win_w);
|
2000-08-10 03:14:55 -07:00
|
|
|
__evas_gl_image_draw(ic, d, win, win_w, win_h,
|
|
|
|
|
|
|
|
0, 0,
|
|
|
|
__evas_gl_image_get_width(ic),
|
|
|
|
__evas_gl_image_get_height(ic),
|
|
|
|
|
|
|
|
a / 4, a / 8,
|
|
|
|
__evas_gl_image_get_width(ic),
|
|
|
|
__evas_gl_image_get_height(ic));
|
|
|
|
__evas_gl_image_draw(ic, d, win, win_w, win_h,
|
|
|
|
|
|
|
|
0, 0,
|
|
|
|
__evas_gl_image_get_width(ic),
|
|
|
|
__evas_gl_image_get_height(ic),
|
|
|
|
|
|
|
|
a / 4, a / 4,
|
|
|
|
__evas_gl_image_get_width(ic),
|
|
|
|
__evas_gl_image_get_height(ic));
|
|
|
|
__evas_gl_image_draw(ic, d, win, win_w, win_h,
|
|
|
|
|
|
|
|
0, 0,
|
|
|
|
__evas_gl_image_get_width(ic),
|
|
|
|
__evas_gl_image_get_height(ic),
|
|
|
|
|
|
|
|
a / 8, a / 4,
|
|
|
|
__evas_gl_image_get_width(ic),
|
|
|
|
__evas_gl_image_get_height(ic));
|
2000-08-05 22:10:24 -07:00
|
|
|
__evas_gl_flush_draw(d, win);
|
2000-08-01 22:28:28 -07:00
|
|
|
a++;
|
2000-08-02 09:23:23 -07:00
|
|
|
if (a == (win_w * 4))
|
|
|
|
{
|
|
|
|
double pixels;
|
|
|
|
double tim;
|
|
|
|
|
|
|
|
t2 = get_time();
|
|
|
|
tim = t2 - t1;
|
2000-08-05 22:10:24 -07:00
|
|
|
pixels = (((((double)k + 1) * (double)win_w * (double)win_h) + ((double)__evas_gl_image_get_width(l) * (double)__evas_gl_image_get_height(l))) * (double)a);
|
2000-08-02 09:23:23 -07:00
|
|
|
printf("%3.0f pixels in %3.3f seconds\n", pixels, tim);
|
|
|
|
printf("..... %4.1f Mpixels/second\n", pixels / (tim * 1000000));
|
|
|
|
a = 0;
|
|
|
|
}
|
2000-08-01 21:23:04 -07:00
|
|
|
}
|
|
|
|
}
|
2000-08-03 16:54:32 -07:00
|
|
|
else
|
|
|
|
{
|
|
|
|
printf("Your X server is unable to do GLX - no go buddy.\n");
|
|
|
|
}
|
2000-08-05 17:26:34 -07:00
|
|
|
argv = NULL;
|
|
|
|
argc = 0;
|
|
|
|
return 0;
|
2000-07-30 13:21:14 -07:00
|
|
|
}
|