diff --git a/legacy/evas/configure.in b/legacy/evas/configure.in index 9ae5e1ccb3..c6e6574606 100644 --- a/legacy/evas/configure.in +++ b/legacy/evas/configure.in @@ -3,6 +3,7 @@ AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE(evas, 0.0.1) AC_PROG_CC AM_PROG_CC_STDC +AM_WITH_DMALLOC AC_C_CONST AM_ENABLE_SHARED AM_PROG_LIBTOOL diff --git a/legacy/evas/src/evas_gl_routines.c b/legacy/evas/src/evas_gl_routines.c index be4dde68ea..45ff578a8d 100644 --- a/legacy/evas/src/evas_gl_routines.c +++ b/legacy/evas/src/evas_gl_routines.c @@ -16,7 +16,6 @@ static int __evas_gl_configuration[] = static void __evas_gl_image_copy_image_rect_to_texture(Evas_GL_Image *im, int x, int y, int w, int h, int tw, int th, GLuint texture); static void __evas_gl_image_move_state_data_to_texture(Evas_GL_Image *im); static void __evas_gl_image_calc_tex_and_poly(Evas_GL_Image *im, int x, double *x1, double *x2, int *tx, int *txx, double *dtx, double *dtxx, int tw, int w, int edge); -static void __evas_gl_image_set_context_for_dest(Evas_GL_Image *im, Display *disp, Window w, int win_w, int win_h); static Evas_GL_Image *__evas_gl_create_image(void); static Evas_GL_Image *__evas_gl_image_create_from_file(Display *disp, char *file); static void __evas_gl_image_destroy(Evas_GL_Image *im); @@ -114,9 +113,22 @@ __evas_gl_image_copy_image_rect_to_texture(Evas_GL_Image *im, int x, int y, ((*p1 & 0x000000ff) << 16); p2++; p1++; } - + if (tx < tw) + *p2 = p2[-1]; } - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tw, th, 0, + if (ty < th) + { + p1 = data + ((ty - 1) * tw); + p2 = data + (ty * tw); + for (tx = 0; tx < w; tx++) + { + *p2 = *p1; + p2++; p1++; + } + if (tx < tw) + *p2 = p2[-1]; + } + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, tw, th, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); free(data); } @@ -135,7 +147,6 @@ __evas_gl_image_move_state_data_to_texture(Evas_GL_Image *im) { imlib_context_set_image(image); im->data = imlib_image_get_data_for_reading_only(); - imlib_free_image(); image_data = 1; } } @@ -203,7 +214,7 @@ __evas_gl_image_move_state_data_to_texture(Evas_GL_Image *im) for (x = 0; x < im->texture.w; x++, i++) { int xx, yy, ww, hh, tw, th; - + if (x == (im->texture.w - 1)) tw = im->texture.edge_w; else tw = im->texture.max_size; if (y == (im->texture.h - 1)) th = im->texture.edge_h; @@ -285,52 +296,6 @@ __evas_gl_image_calc_tex_and_poly(Evas_GL_Image *im, int x, double *x1, double * *x2 = (double)w; } -static void -__evas_gl_image_set_context_for_dest(Evas_GL_Image *im, Display *disp, Window w, - int win_w, int win_h) -{ - if ((__evas_current_win != w) || (__evas_current_disp != disp)) - { - glXMakeCurrent(disp, w, im->context); - __evas_current_disp = disp; - __evas_current_win = w; - im->buffer.dest = w; - } - if (im->alpha) - { - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - } - else - { - glDisable(GL_BLEND); - } - glEnable(GL_DITHER); - glEnable(GL_TEXTURE_2D); - glShadeModel(GL_FLAT); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); - glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); - /* why doesnt scissor work ? */ - /* - glEnable(GL_SCISSOR_TEST); - glScissor(dst_x, win_h - dst_y - 1, dst_w, dst_h); - */ - if ((win_w != im->buffer.dest_w) || (win_h != im->buffer.dest_h)) - { - glViewport(0, 0, win_w, win_h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, win_w, 0, win_h, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glScalef(1, -1, 1); - glTranslatef(0, -win_h, 0); - im->buffer.dest_w = win_w; - im->buffer.dest_h = win_h; - } -} - static Evas_GL_Image * __evas_gl_create_image(void) { @@ -436,48 +401,141 @@ __evas_gl_image_draw(Evas_GL_Image *im, { int x, y, i; double dx, dy, dw, dh; - + + if ((src_w <= 0) || (src_h <= 0) || (dst_w <= 0) || (dst_h <= 0)) return; if (im->state != EVAS_STATE_TEXTURE) __evas_gl_image_move_state_data_to_texture(im); - __evas_gl_image_set_context_for_dest(im, disp, w, win_w, win_h); - /* project src and dst rects to overall dest rect */ + if ((__evas_current_win != w) || (__evas_current_disp != disp)) + { + glXMakeCurrent(disp, w, im->context); + __evas_current_disp = disp; + __evas_current_win = w; + im->buffer.dest = w; + } + if (im->alpha) + { + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + else + { + glDisable(GL_BLEND); + } + + src_y = im->h - src_h - src_y; + dw = (((double)dst_w * (double)im->w)/ (double)src_w); dx = (double)dst_x - (((double)dst_w * (double)src_x)/ (double)src_w); - dh = (((double)dst_h * (double)im->h)/ (double)src_h); dy = (double)dst_y - (((double)dst_h * (double)src_y)/ (double)src_h); + + glEnable(GL_DITHER); + glEnable(GL_TEXTURE_2D); + glShadeModel(GL_FLAT); + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); + + glViewport(dst_x, win_h - dst_y - dst_h, dst_w, dst_h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, dst_w, 0, dst_h, -1, 1); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glScalef(1, -1, 1); + glTranslatef((double)(-dst_x), (dst_y - dy) -dy - dh + , 0); + im->buffer.dest_w = win_w; + im->buffer.dest_h = win_h; + + /* project src and dst rects to overall dest rect */ glColor4f(1.0, 1.0, 1.0, 1.0); - for (y = 0, i = 0; y < im->texture.h; y++) + if ((im->direct) || + ((im->bl == 0) && (im->br == 0) && (im->bt == 0) && (im->bb == 0))) { - for (x = 0; x < im->texture.w; x++, i++) + for (y = 0, i = 0; y < im->texture.h; y++) { - int tx, ty, txx, tyy; - double x1, y1, x2, y2; - double dtx, dtxx, dty, dtyy; - - - __evas_gl_image_calc_tex_and_poly(im, x, &x1, &x2, &tx, &txx, - &dtx, &dtxx, - im->texture.w, im->w, - im->texture.edge_w); - __evas_gl_image_calc_tex_and_poly(im, y, &y1, &y2, &ty, &tyy, - &dty, &dtyy, - im->texture.h, im->h, - im->texture.edge_h); - x1 = dx + ((x1 * dw) / (double)im->w); - y1 = dy + ((y1 * dh) / (double)im->h); - x2 = dx + ((x2 * dw) / (double)im->w); - y2 = dy + ((y2 * dh) / (double)im->h); - glBindTexture(GL_TEXTURE_2D, im->texture.textures[i]); - glBegin(GL_QUADS); - glTexCoord2d(dtx, dty); glVertex2d(x1, y1); - glTexCoord2d(dtxx, dty); glVertex2d(x2, y1); - glTexCoord2d(dtxx, dtyy); glVertex2d(x2, y2); - glTexCoord2d(dtx, dtyy); glVertex2d(x1, y2); - glEnd(); + for (x = 0; x < im->texture.w; x++, i++) + { + int tx, ty, txx, tyy; + double x1, y1, x2, y2; + double dtx, dtxx, dty, dtyy; + + + __evas_gl_image_calc_tex_and_poly(im, x, &x1, &x2, + &tx, &txx, + &dtx, &dtxx, + im->texture.w, im->w, + im->texture.edge_w); + __evas_gl_image_calc_tex_and_poly(im, y, &y1, &y2, + &ty, &tyy, + &dty, &dtyy, + im->texture.h, im->h, + im->texture.edge_h); + x1 = dx + ((x1 * dw) / (double)im->w); + y1 = dy + ((y1 * dh) / (double)im->h); + x2 = dx + ((x2 * dw) / (double)im->w); + y2 = dy + ((y2 * dh) / (double)im->h); + glBindTexture(GL_TEXTURE_2D, im->texture.textures[i]); + glBegin(GL_QUADS); + glTexCoord2d(dtx, dty); glVertex2d(x1, y1); + glTexCoord2d(dtxx, dty); glVertex2d(x2, y1); + glTexCoord2d(dtxx, dtyy); glVertex2d(x2, y2); + glTexCoord2d(dtx, dtyy); glVertex2d(x1, y2); + glEnd(); + } } } -/* glDisable(GL_SCISSOR_TEST);*/ + else + { + int bl, br, bt, bb; + + im->direct = 1; + bl = im->bl; + br = im->br; + bt = im->bt; + bb = im->bb; + if ((bl + br) > (int)dw) + { + bl = (int)dw / 2; + br = (int)dw - bl; + } + if ((bt + bb) > (int)dh) + { + bt = (int)dh / 2; + bb = (int)dh - bt; + } + __evas_gl_image_draw(im, disp, w, win_w, win_h, + 0, 0, bl, bt, + dx, dy, bl, bt); + __evas_gl_image_draw(im, disp, w, win_w, win_h, + bl, 0, im->w - bl - br, bt, + dx + bl, dy, dw - bl - br, bt); + __evas_gl_image_draw(im, disp, w, win_w, win_h, + im->w - br, 0, br, bt, + dx + dw - br, dy, br, bt); + + __evas_gl_image_draw(im, disp, w, win_w, win_h, + 0, bt, bl, im->h - bt - bb, + dx, dy + bt, bl, dh - bt - bb); + __evas_gl_image_draw(im, disp, w, win_w, win_h, + bl, bt, im->w - bl - br, im->h - bt - bb, + dx + bl, dy + bt, dw - bl - br, dh - bt - bb); + __evas_gl_image_draw(im, disp, w, win_w, win_h, + im->w - br, bt, br, im->h - bt - bb, + dx + dw - br, dy + bt, br, dh - bt - bb); + + __evas_gl_image_draw(im, disp, w, win_w, win_h, + 0, im->h - bb, bl, bb, + dx, dy + dh - bb, bl, bb); + __evas_gl_image_draw(im, disp, w, win_w, win_h, + bl, im->h - bb, im->w - bl - br, bb, + dx + bl, dy + dh - bb, dw - bl - br, bb); + __evas_gl_image_draw(im, disp, w, win_w, win_h, + im->w - br, im->h - bb, br, bb, + dx + dw - br, dy + dh - bb, br, bb); + im->direct = 0; + } } Evas_GL_Image * @@ -569,7 +627,25 @@ __evas_gl_image_get_height(Evas_GL_Image *im) return im->h; } - +void +__evas_gl_image_set_borders(Evas_GL_Image *im, int left, int right, + int top, int bottom) +{ + im->bl = left; + im->br = right; + im->bt = top; + im->bb = bottom; + if ((im->bl + im->br) > im->w) + { + im->bl = im->w / 2; + im->br = im->w - im->bl; + } + if ((im->bt + im->bb) > im->h) + { + im->bt = im->h / 2; + im->bb = im->h - im->bt; + } +} @@ -642,19 +718,16 @@ __evas_gl_text_paste(Evas_GL_Font *f, char *text, bb = (float)b / 255; aa = (float)a / 255; glColor4f(rr, gg, bb, aa); - if ((win_w != f->buffer.dest_w) || (win_h != f->buffer.dest_h)) - { - glViewport(0, 0, win_w, win_h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, win_w, 0, win_h, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glScalef(1, -1, 1); - glTranslatef(0, -win_h, 0); - f->buffer.dest_w = win_w; - f->buffer.dest_h = win_h; - } + glViewport(0, 0, win_w, win_h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, win_w, 0, win_h, -1, 1); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glScalef(1, -1, 1); + glTranslatef(0, -win_h, 0); + f->buffer.dest_w = win_w; + f->buffer.dest_h = win_h; __evas_gl_text_calc_size(f, &w, &h, text); rows = h; @@ -1387,19 +1460,16 @@ void __evas_gl_rectangle_draw(Display *disp, Window win, bb = (float)b / 255; aa = (float)a / 255; glColor4f(rr, gg, bb, aa); - if ((win_w != dest_w) || (win_h != dest_h)) - { - glViewport(0, 0, win_w, win_h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, win_w, 0, win_h, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glScalef(1, -1, 1); - glTranslatef(0, -win_h, 0); - dest_w = win_w; - dest_h = win_h; - } + glViewport(0, 0, win_w, win_h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, win_w, 0, win_h, -1, 1); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glScalef(1, -1, 1); + glTranslatef(0, -win_h, 0); + dest_w = win_w; + dest_h = win_h; if (a < 255) { glEnable(GL_BLEND); @@ -1466,19 +1536,17 @@ void __evas_gl_line_draw(Display *disp, Window win, bb = (float)b / 255; aa = (float)a / 255; glColor4f(rr, gg, bb, aa); - if ((win_w != dest_w) || (win_h != dest_h)) - { - glViewport(0, 0, win_w, win_h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, win_w, 0, win_h, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glScalef(1, -1, 1); - glTranslatef(0, -win_h, 0); - dest_w = win_w; - dest_h = win_h; - } + glViewport(0, 0, win_w, win_h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, win_w, 0, win_h, -1, 1); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glScalef(1, -1, 1); + glTranslatef(0, -win_h, 0); + dest_w = win_w; + dest_h = win_h; + glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_DITHER); @@ -1622,6 +1690,13 @@ __evas_gl_gradient_gen_texture(Evas_GL_Graident *gr) map[j++] = b; map[j++] = a; } + for (i = ll; i < gr->max_texture_size; i++) + { + map[j++] = r; + map[j++] = g; + map[j++] = b; + map[j++] = a; + } } if (!__evas_context_window) { @@ -1661,7 +1736,7 @@ __evas_gl_gradient_gen_texture(Evas_GL_Graident *gr) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, gr->max_texture_size, 1, 0, + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, gr->max_texture_size, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, map); gr->texture_w = ll; gr->texture_h = 1; @@ -1743,19 +1818,17 @@ __evas_gl_gradient_draw(Evas_GL_Graident *gr, __evas_current_win = win; } glColor4f(1.0, 1.0, 1.0, 1.0); - if ((win_w != dest_w) || (win_h != dest_h)) - { - glViewport(0, 0, win_w, win_h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, win_w, 0, win_h, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glScalef(1, -1, 1); - glTranslatef(0, -win_h, 0); - dest_w = win_w; - dest_h = win_h; - } + glViewport(0, 0, win_w, win_h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, win_w, 0, win_h, -1, 1); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glScalef(1, -1, 1); + glTranslatef(0, -win_h, 0); + dest_w = win_w; + dest_h = win_h; + glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_DITHER); diff --git a/legacy/evas/src/evas_gl_routines.h b/legacy/evas/src/evas_gl_routines.h index 618318b2b5..db2ea3c499 100644 --- a/legacy/evas/src/evas_gl_routines.h +++ b/legacy/evas/src/evas_gl_routines.h @@ -39,6 +39,8 @@ struct _evas_gl_image { Evas_GL_Image_State state; int w, h; + int direct; + int bl, br, bt, bb; int alpha; char *file; /* data specific params */ @@ -139,6 +141,7 @@ int __evas_gl_image_cache_get_size(Display *disp); void __evas_gl_image_draw(Evas_GL_Image *im, Display *disp, Window w, int win_w, int win_h, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h); int __evas_gl_image_get_width(Evas_GL_Image *im); int __evas_gl_image_get_height(Evas_GL_Image *im); +void __evas_gl_image_set_borders(Evas_GL_Image *im, int left, int right, int top, int bottom); /********/ /* text */ diff --git a/legacy/evas/src/evas_imlib_routines.c b/legacy/evas/src/evas_imlib_routines.c index 4df2902c4e..643f8905b2 100644 --- a/legacy/evas/src/evas_imlib_routines.c +++ b/legacy/evas/src/evas_imlib_routines.c @@ -120,7 +120,19 @@ __evas_imlib_image_get_height(Evas_Imlib_Image *im) return imlib_image_get_height(); } - +void +__evas_imlib_image_set_borders(Evas_Imlib_Image *im, int left, int right, + int top, int bottom) +{ + Imlib_Border bd; + + imlib_context_set_image((Imlib_Image)im); + bd.left = left; + bd.right = right; + bd.top = top; + bd.bottom = bottom; + imlib_image_set_border(&bd); +} @@ -409,7 +421,7 @@ void __evas_imlib_line_draw(Display *disp, Window win, if (!up->image) up->image = imlib_create_image(up->w, up->h); imlib_context_set_image(up->image); - imlib_image_draw_line(x1 - up->x, y - up->x, x2 - up->x, y2 - up->y, 0); + imlib_image_draw_line(x1 - up->x, y1 - up->x, x2 - up->x, y2 - up->y, 0); } } } @@ -432,6 +444,81 @@ void __evas_imlib_line_draw(Display *disp, Window win, +/*****************************************************************************/ +/* gradient externals ********************************************************/ +/*****************************************************************************/ + + +Evas_Imlib_Graident * +__evas_imlib_gradient_new(Display *disp) +{ + return (Evas_Imlib_Graident *)imlib_create_color_range(); +} + +void +__evas_imlib_gradient_free(Evas_Imlib_Graident *gr) +{ + imlib_context_set_color_range((Imlib_Color_Range)gr); + imlib_free_color_range(); +} + +void +__evas_imlib_gradient_color_add(Evas_Imlib_Graident *gr, int r, int g, int b, int a, int dist) +{ + imlib_context_set_color_range((Imlib_Color_Range)gr); + imlib_context_set_color(r, g, b, a); + imlib_add_color_to_color_range(dist); +} + +void +__evas_imlib_gradient_draw(Evas_Imlib_Graident *gr, Display *disp, Window win, int win_w, int win_h, int x, int y, int w, int h, double angle) +{ + Evas_List l; + + imlib_context_set_angle(angle); + imlib_context_set_operation(IMLIB_OP_COPY); + imlib_context_set_color_modifier(NULL); + imlib_context_set_direction(IMLIB_TEXT_TO_RIGHT); + imlib_context_set_color_range((Imlib_Color_Range)gr); + imlib_context_set_anti_alias(1); + for(l = drawable_list; l; l = l->next) + { + Evas_Imlib_Drawable *dr; + + dr = l->data; + + if ((dr->win == win) && (dr->disp == disp)) + { + Evas_List ll; + + for (ll = dr->tmp_images; ll; ll = ll->next) + { + Evas_Imlib_Update *up; + + up = ll->data; + + /* if image intersects image update - render */ + if (RECTS_INTERSECT(up->x, up->y, up->w, up->h, + x, y, w, h)) + { + if (!up->image) + up->image = imlib_create_image(up->w, up->h); + imlib_context_set_image(up->image); + imlib_image_fill_color_range_rectangle(x - up->x, y - up->y, w, h, angle); + } + } + } + } +} + + + + + + + + + @@ -462,6 +549,7 @@ __evas_imlib_flush_draw(Display *disp, Window win) imlib_context_set_visual(__evas_visual); imlib_context_set_colormap(__evas_cmap); imlib_context_set_drawable(win); + imlib_context_set_dither(1); for(l = drawable_list; l; l = l->next) { diff --git a/legacy/evas/src/evas_imlib_routines.h b/legacy/evas/src/evas_imlib_routines.h index e0dde3d6ef..62d5cd92bb 100644 --- a/legacy/evas/src/evas_imlib_routines.h +++ b/legacy/evas/src/evas_imlib_routines.h @@ -18,6 +18,7 @@ typedef void Evas_Imlib_Image; typedef void Evas_Imlib_Font; +typedef void Evas_Imlib_Graident; typedef struct _evas_imlib_drawable Evas_Imlib_Drawable; typedef struct _evas_imlib_update Evas_Imlib_Update; @@ -43,9 +44,10 @@ void __evas_imlib_image_free(Evas_Imlib_Image *im); void __evas_imlib_image_cache_empty(Display *disp); void __evas_imlib_image_cache_set_size(Display *disp, int size); int __evas_imlib_image_cache_get_size(Display *disp); -void __evas_imlib_image_draw(Evas_Imlib_Image *im, Display *disp, Window w, int win_w, int win_h, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h); int __evas_imlib_image_get_width(Evas_Imlib_Image *im); int __evas_imlib_image_get_height(Evas_Imlib_Image *im); +void __evas_imlib_image_set_borders(Evas_Imlib_Image *im, int left, int right, int top, int bottom); +void __evas_imlib_image_draw(Evas_Imlib_Image *im, Display *disp, Window w, int win_w, int win_h, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h); /********/ /* text */ @@ -76,6 +78,10 @@ void __evas_imlib_line_draw(Display *disp, Window win, int win_w, i /*************/ /* gradients */ /*************/ +Evas_Imlib_Graident *__evas_imlib_gradient_new(Display *disp); +void __evas_imlib_gradient_free(Evas_Imlib_Graident *gr); +void __evas_imlib_gradient_color_add(Evas_Imlib_Graident *gr, int r, int g, int b, int a, int dist); +void __evas_imlib_gradient_draw(Evas_Imlib_Graident *gr, Display *disp, Window win, int win_w, int win_h, int x, int y, int w, int h, double angle); /***********/ /* drawing */ diff --git a/legacy/evas/test/evas_test.c b/legacy/evas/test/evas_test.c index a1fc171286..b9a859d8fd 100644 --- a/legacy/evas/test/evas_test.c +++ b/legacy/evas/test/evas_test.c @@ -54,7 +54,7 @@ main(int argc, char **argv) { int a = 0; double t1, t2; - Evas_GL_Image *i[4], *bg, *l; + Evas_GL_Image *i[4], *bg, *l, *sel, *ic, *tm; Evas_GL_Font *fn[4]; Evas_GL_Graident *gr; @@ -63,7 +63,11 @@ main(int argc, char **argv) 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"); + ic = __evas_gl_image_new_from_file(d, "img/mush.png"); + tm = __evas_gl_image_new_from_file(d, "img/tm.png"); l = __evas_gl_image_new_from_file(d, "img/logo001.png"); + sel = __evas_gl_image_new_from_file(d, "img/sel.png"); + __evas_gl_image_set_borders(sel, 3, 3, 3, 3); __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); @@ -147,10 +151,56 @@ main(int argc, char **argv) __evas_gl_line_draw(d, win, win_w, win_h, 10, 20, 10, 200, 255, 255, 0, 100); + __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); __evas_gl_gradient_draw(gr, d, win, win_w, win_h, 300, 100, 200, 200, ((double)a * 360) / (double)win_w); + __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)); __evas_gl_flush_draw(d, win); a++; if (a == (win_w * 4))