forked from enlightenment/efl
add some code ro render routines to hanbdle render extension... not much yet
SVN revision: 3654
This commit is contained in:
parent
b4db700396
commit
261a868816
|
@ -28,12 +28,48 @@ __evas_render_image_cache_flush(Display *disp)
|
||||||
Evas_Render_Image *
|
Evas_Render_Image *
|
||||||
__evas_render_image_new_from_file(Display *disp, char *file)
|
__evas_render_image_new_from_file(Display *disp, char *file)
|
||||||
{
|
{
|
||||||
return NULL;
|
Evas_Render_Image *im;
|
||||||
|
Imlib_Image i;
|
||||||
|
XRenderPictFormat fmt, *format, *format_color;
|
||||||
|
Visual *visual;
|
||||||
|
int screen;
|
||||||
|
|
||||||
|
/* need to look for image i local cache */
|
||||||
|
/* not found - load */
|
||||||
|
i = imlib_load_image(file);
|
||||||
|
if (!i) return NULL;
|
||||||
|
imlib_context_set_image(i);
|
||||||
|
im = malloc(sizeof(Evas_Render_Image));
|
||||||
|
memset(im, 0, sizeof(Evas_Render_Image));
|
||||||
|
/* this stuff needs to become a context lookup for the display pointer */
|
||||||
|
visual = DefaultVisual (disp, screen);
|
||||||
|
format = XRenderFindVisualFormat (disp, visual);
|
||||||
|
fmt.depth = 32;
|
||||||
|
fmt.type = PictTypeDirect;
|
||||||
|
format_color = XRenderFindFormat(disp, PictFormatType | PictFormatDepth, &fmt, 0);
|
||||||
|
|
||||||
|
im->file = strdup(file);
|
||||||
|
im->references = 1;
|
||||||
|
im->disp = disp;
|
||||||
|
im->has_alpha = imlib_image_has_alpha();
|
||||||
|
im->w = imlib_image_get_width();
|
||||||
|
im->h = imlib_image_get_height();
|
||||||
|
im->pmap = XCreatePixmap (disp, RootWindow (disp, screen), im->w, im->h, fmt.depth);
|
||||||
|
im->pic = XRenderCreatePicture (disp, im->pmap, &fmt, 0, 0);
|
||||||
|
|
||||||
|
/* need to xshmputimage to the pixmap */
|
||||||
|
/* need to add to local cache list */
|
||||||
|
return im;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
__evas_render_image_free(Evas_Render_Image *im)
|
__evas_render_image_free(Evas_Render_Image *im)
|
||||||
{
|
{
|
||||||
|
im->references--;
|
||||||
|
if (im->references <= 0)
|
||||||
|
{
|
||||||
|
/* need to flush cache */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
#include "Evas_private.h"
|
#include "Evas_private.h"
|
||||||
#include "Evas.h"
|
#include "Evas.h"
|
||||||
|
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/extensions/Xrender.h>
|
||||||
#include <Imlib2.h>
|
#include <Imlib2.h>
|
||||||
|
|
||||||
#ifdef HAVE_RENDER
|
#ifdef HAVE_RENDER
|
||||||
|
@ -28,10 +30,25 @@
|
||||||
((SPANS_COMMON((x), (w), (xx), (ww))) && (SPANS_COMMON((y), (h), (yy), (hh))))
|
((SPANS_COMMON((x), (w), (xx), (ww))) && (SPANS_COMMON((y), (h), (yy), (hh))))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef void Evas_Render_Image;
|
typedef struct _evas_render_image Evas_Render_Image;
|
||||||
typedef void Evas_Render_Font;
|
typedef void Evas_Render_Font;
|
||||||
typedef void Evas_Render_Graident;
|
typedef void Evas_Render_Graident;
|
||||||
|
|
||||||
|
struct _evas_render_image
|
||||||
|
{
|
||||||
|
char *file;
|
||||||
|
int references;
|
||||||
|
int w, h;
|
||||||
|
Display *disp;
|
||||||
|
Picture pic;
|
||||||
|
Pixmap pmap;
|
||||||
|
int has_alpha;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
int l, r, t, b;
|
||||||
|
} border;
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct _evas_render_drawable Evas_Render_Drawable;
|
typedef struct _evas_render_drawable Evas_Render_Drawable;
|
||||||
typedef struct _evas_render_update Evas_Render_Update;
|
typedef struct _evas_render_update Evas_Render_Update;
|
||||||
|
|
||||||
|
@ -44,6 +61,8 @@ struct _evas_render_drawable
|
||||||
|
|
||||||
struct _evas_render_update
|
struct _evas_render_update
|
||||||
{
|
{
|
||||||
|
Picture pic;
|
||||||
|
Pixmap pmap;
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -112,6 +112,8 @@ main(int argc, char **argv)
|
||||||
i++;
|
i++;
|
||||||
if (!strcmp(argv[i], "x11"))
|
if (!strcmp(argv[i], "x11"))
|
||||||
evas_set_output_method(e, RENDER_METHOD_BASIC_HARDWARE);
|
evas_set_output_method(e, RENDER_METHOD_BASIC_HARDWARE);
|
||||||
|
else if (!strcmp(argv[i], "alpha"))
|
||||||
|
evas_set_output_method(e, RENDER_METHOD_ALPHA_HARDWARE);
|
||||||
else if (!strcmp(argv[i], "soft"))
|
else if (!strcmp(argv[i], "soft"))
|
||||||
evas_set_output_method(e, RENDER_METHOD_ALPHA_SOFTWARE);
|
evas_set_output_method(e, RENDER_METHOD_ALPHA_SOFTWARE);
|
||||||
else if (!strcmp(argv[i], "hard"))
|
else if (!strcmp(argv[i], "hard"))
|
||||||
|
|
Loading…
Reference in New Issue