evas_common.h | evas_common.h | |||
---|---|---|---|---|
skipping to change at line 206 | skipping to change at line 206 | |||
#define RDLKL(x) eina_rwlock_take_read(&(x)) | #define RDLKL(x) eina_rwlock_take_read(&(x)) | |||
#define WRLKL(x) eina_rwlock_take_write(&(x)) | #define WRLKL(x) eina_rwlock_take_write(&(x)) | |||
#define RWLKU(x) eina_rwlock_release(&(x)) | #define RWLKU(x) eina_rwlock_release(&(x)) | |||
#ifdef BUILD_PTHREAD | #ifdef BUILD_PTHREAD | |||
# define TH(x) pthread_t x | # define TH(x) pthread_t x | |||
# define THI(x) int x | # define THI(x) int x | |||
# define TH_MAX 8 | # define TH_MAX 8 | |||
// even though in theory having every Nth rendered line done by a different | ||||
// thread might even out load across threads - it actually slows things dow | ||||
n. | ||||
//#define EVAS_SLI 1 | ||||
#else | #else | |||
# define TH(x) | # define TH(x) | |||
# define THI(x) | # define THI(x) | |||
# define TH_MAX 0 | # define TH_MAX 0 | |||
#endif | #endif | |||
#include <ft2build.h> | #include <ft2build.h> | |||
#include FT_FREETYPE_H | #include FT_FREETYPE_H | |||
#include FT_GLYPH_H | #include FT_GLYPH_H | |||
skipping to change at line 402 | skipping to change at line 398 | |||
#ifdef BUILD_PIPE_RENDER | #ifdef BUILD_PIPE_RENDER | |||
typedef struct _RGBA_Pipe_Op RGBA_Pipe_Op; | typedef struct _RGBA_Pipe_Op RGBA_Pipe_Op; | |||
typedef struct _RGBA_Pipe RGBA_Pipe; | typedef struct _RGBA_Pipe RGBA_Pipe; | |||
typedef struct _RGBA_Pipe_Thread_Info RGBA_Pipe_Thread_Info; | typedef struct _RGBA_Pipe_Thread_Info RGBA_Pipe_Thread_Info; | |||
#endif | #endif | |||
typedef struct _RGBA_Image RGBA_Image; | typedef struct _RGBA_Image RGBA_Image; | |||
typedef struct _RGBA_Image_Span RGBA_Image_Span; | typedef struct _RGBA_Image_Span RGBA_Image_Span; | |||
typedef struct _RGBA_Draw_Context RGBA_Draw_Context; | typedef struct _RGBA_Draw_Context RGBA_Draw_Context; | |||
typedef struct _RGBA_Polygon_Point RGBA_Polygon_Point; | typedef struct _RGBA_Polygon_Point RGBA_Polygon_Point; | |||
typedef struct _RGBA_Map_Point RGBA_Map_Point; | typedef struct _RGBA_Map_Point RGBA_Map_Point; | |||
typedef struct _RGBA_Map RGBA_Map; | ||||
typedef struct _RGBA_Font RGBA_Font; | typedef struct _RGBA_Font RGBA_Font; | |||
typedef struct _RGBA_Font_Int RGBA_Font_Int; | typedef struct _RGBA_Font_Int RGBA_Font_Int; | |||
typedef struct _RGBA_Font_Source RGBA_Font_Source; | typedef struct _RGBA_Font_Source RGBA_Font_Source; | |||
typedef struct _RGBA_Font_Glyph RGBA_Font_Glyph; | typedef struct _RGBA_Font_Glyph RGBA_Font_Glyph; | |||
typedef struct _RGBA_Font_Glyph_Out RGBA_Font_Glyph_Out; | ||||
typedef struct _RGBA_Gfx_Compositor RGBA_Gfx_Compositor; | typedef struct _RGBA_Gfx_Compositor RGBA_Gfx_Compositor; | |||
typedef struct _Cutout_Rect Cutout_Rect; | typedef struct _Cutout_Rect Cutout_Rect; | |||
typedef struct _Cutout_Rects Cutout_Rects; | typedef struct _Cutout_Rects Cutout_Rects; | |||
typedef struct _Convert_Pal Convert_Pal; | typedef struct _Convert_Pal Convert_Pal; | |||
typedef struct _Tilebuf Tilebuf; | typedef struct _Tilebuf Tilebuf; | |||
typedef struct _Tilebuf_Tile Tilebuf_Tile; | typedef struct _Tilebuf_Tile Tilebuf_Tile; | |||
typedef struct _Tilebuf_Rect Tilebuf_Rect; | typedef struct _Tilebuf_Rect Tilebuf_Rect; | |||
skipping to change at line 442 | skipping to change at line 440 | |||
typedef struct _Regionspan Regionspan; | typedef struct _Regionspan Regionspan; | |||
*/ | */ | |||
typedef void (*RGBA_Gfx_Func) (DATA32 *src, DATA8 *mask, DATA32 col, DAT A32 *dst, int len); | typedef void (*RGBA_Gfx_Func) (DATA32 *src, DATA8 *mask, DATA32 col, DAT A32 *dst, int len); | |||
typedef void (*RGBA_Gfx_Pt_Func) (DATA32 src, DATA8 mask, DATA32 col, DATA3 2 *dst); | typedef void (*RGBA_Gfx_Pt_Func) (DATA32 src, DATA8 mask, DATA32 col, DATA3 2 *dst); | |||
typedef void (*Gfx_Func_Copy) (DATA32 *src, DATA32 *dst, int len); | typedef void (*Gfx_Func_Copy) (DATA32 *src, DATA32 *dst, int len); | |||
typedef void (*Gfx_Func_Convert) (DATA32 *src, DATA8 *dst, int src_jump, in t dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal); | typedef void (*Gfx_Func_Convert) (DATA32 *src, DATA8 *dst, int src_jump, in t dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal); | |||
#include "../cache/evas_cache.h" | #include "../cache/evas_cache.h" | |||
#ifdef EVAS_CSERVE2 | ||||
#include "../cache2/evas_cache2.h" | ||||
#endif | ||||
/************************************************************************** ***/ | /************************************************************************** ***/ | |||
typedef enum _RGBA_Image_Flags | typedef enum _RGBA_Image_Flags | |||
{ | { | |||
RGBA_IMAGE_NOTHING = (0), | RGBA_IMAGE_NOTHING = (0), | |||
/* RGBA_IMAGE_HAS_ALPHA = (1 << 0), */ | /* RGBA_IMAGE_HAS_ALPHA = (1 << 0), */ | |||
RGBA_IMAGE_IS_DIRTY = (1 << 1), | RGBA_IMAGE_IS_DIRTY = (1 << 1), | |||
RGBA_IMAGE_INDEXED = (1 << 2), | RGBA_IMAGE_INDEXED = (1 << 2), | |||
RGBA_IMAGE_ALPHA_ONLY = (1 << 3), | RGBA_IMAGE_ALPHA_ONLY = (1 << 3), | |||
skipping to change at line 576 | skipping to change at line 577 | |||
#ifdef _STAT_VER_LINUX | #ifdef _STAT_VER_LINUX | |||
unsigned long int mtime_nsec; | unsigned long int mtime_nsec; | |||
#endif | #endif | |||
}; | }; | |||
struct _Image_Entry | struct _Image_Entry | |||
{ | { | |||
EINA_INLIST; | EINA_INLIST; | |||
Evas_Cache_Image *cache; | Evas_Cache_Image *cache; | |||
#ifdef EVAS_CSERVE2 | ||||
Evas_Cache2 *cache2; | ||||
#endif | ||||
const char *cache_key; | const char *cache_key; | |||
const char *file; | const char *file; | |||
const char *key; | const char *key; | |||
Evas_Cache_Target *targets; | Evas_Cache_Target *targets; | |||
Evas_Preload_Pthread *preload; | Evas_Preload_Pthread *preload; | |||
Image_Timestamp tstamp; | Image_Timestamp tstamp; | |||
int references; | int references; | |||
#ifdef EVAS_FRAME_QUEUING | ||||
LK(lock_references); // needed for accessing references | ||||
#endif | ||||
#ifdef BUILD_PIPE_RENDER | #ifdef BUILD_PIPE_RENDER | |||
RGBA_Pipe *pipe; | RGBA_Pipe *pipe; | |||
#ifdef EVAS_FRAME_QUEUING | ||||
LK(ref_fq_add); | ||||
LK(ref_fq_del); | ||||
Eina_Condition cond_fq_del; | ||||
int ref_fq[2]; // ref_fq[0] is for addition, ref_fq[1] is f | ||||
or deletion | ||||
#endif | ||||
#endif | #endif | |||
unsigned char scale; | unsigned char scale; | |||
RGBA_Image_Loadopts load_opts; | RGBA_Image_Loadopts load_opts; | |||
int space; | int space; | |||
unsigned int w; | unsigned int w; | |||
unsigned int h; | unsigned int h; | |||
struct | struct | |||
skipping to change at line 630 | skipping to change at line 625 | |||
#ifdef BUILD_ASYNC_PRELOAD | #ifdef BUILD_ASYNC_PRELOAD | |||
LK(lock); | LK(lock); | |||
LK(lock_cancel); | LK(lock_cancel); | |||
Eina_Bool unload_cancel : 1; | Eina_Bool unload_cancel : 1; | |||
#endif | #endif | |||
Image_Entry_Flags flags; | Image_Entry_Flags flags; | |||
Evas_Image_Scale_Hint scale_hint; | Evas_Image_Scale_Hint scale_hint; | |||
void *data1, *data2; | void *data1, *data2; | |||
#ifdef EVAS_CSERVE2 | ||||
unsigned int open_rid, load_rid, preload_rid; | ||||
#endif | ||||
int server_id; | int server_id; | |||
int connect_num; | int connect_num; | |||
int channel; | int channel; | |||
int load_error; | int load_error; | |||
/* for animation feature */ | /* for animation feature */ | |||
int frame_count; | int frame_count; | |||
Evas_Image_Animated_Loop_Hint loop_hint; | Evas_Image_Animated_Loop_Hint loop_hint; | |||
int loop_count; | int loop_count; | |||
int cur_frame; | int cur_frame; | |||
skipping to change at line 733 | skipping to change at line 731 | |||
Eina_Bool anti_alias : 1; | Eina_Bool anti_alias : 1; | |||
}; | }; | |||
#ifdef BUILD_PIPE_RENDER | #ifdef BUILD_PIPE_RENDER | |||
#include "../engines/common/evas_map_image.h" | #include "../engines/common/evas_map_image.h" | |||
#include "../engines/common/evas_text_utils.h" | #include "../engines/common/evas_text_utils.h" | |||
struct _RGBA_Pipe_Op | struct _RGBA_Pipe_Op | |||
{ | { | |||
RGBA_Draw_Context context; | RGBA_Draw_Context context; | |||
void (*op_func) (RGBA_Image *dst, RGBA_Pipe_Op *op, R | Eina_Bool (*prepare_func) (void *data, RGBA_Image *dst, RG | |||
GBA_Pipe_Thread_Info *info); | BA_Pipe_Op *op); | |||
void (*op_func) (RGBA_Image *dst, const RGBA_Pipe_Op | ||||
*op, const RGBA_Pipe_Thread_Info *info); | ||||
void (*free_func) (RGBA_Pipe_Op *op); | void (*free_func) (RGBA_Pipe_Op *op); | |||
Cutout_Rects *rects; | ||||
union { | union { | |||
struct { | struct { | |||
int x, y, w, h; | int x, y, w, h; | |||
} rect; | } rect; | |||
struct { | struct { | |||
int x0, y0, x1, y1; | int x0, y0, x1, y1; | |||
} line; | } line; | |||
struct { | struct { | |||
int x, y; | ||||
RGBA_Polygon_Point *points; | RGBA_Polygon_Point *points; | |||
} poly; | } poly; | |||
struct { | struct { | |||
RGBA_Font *font; | ||||
int x, y; | int x, y; | |||
Evas_Text_Props intl_props; | Evas_Text_Props *intl_props; | |||
RGBA_Gfx_Func func; | ||||
} text; | } text; | |||
struct { | struct { | |||
RGBA_Image *src; | RGBA_Image *src; | |||
int sx, sy, sw, sh, dx, dy, dw, dh; | int sx, sy, sw, sh, dx, dy, dw, dh; | |||
int smooth; | int smooth; | |||
char *text; | char *text; | |||
} image; | } image; | |||
struct { | struct { | |||
RGBA_Image *src; | RGBA_Image *src; | |||
RGBA_Map_Point *p; | RGBA_Map *m; | |||
int npoints; | int npoints; | |||
int smooth; | int smooth; | |||
int level; | int level; | |||
} map; | } map; | |||
} op; | } op; | |||
Eina_Bool render : 1; | ||||
}; | }; | |||
#define PIPE_LEN 256 | #define PIPE_LEN 256 | |||
struct _RGBA_Pipe | struct _RGBA_Pipe | |||
{ | { | |||
EINA_INLIST; | EINA_INLIST; | |||
int op_num; | int op_num; | |||
RGBA_Pipe_Op op[PIPE_LEN]; | RGBA_Pipe_Op op[PIPE_LEN]; | |||
}; | }; | |||
struct _RGBA_Pipe_Thread_Info | struct _RGBA_Pipe_Thread_Info | |||
{ | { | |||
RGBA_Image *im; | EINA_INLIST; | |||
int x, y, w, h; | Eina_Rectangle area; | |||
}; | }; | |||
#endif | #endif | |||
struct _RGBA_Image | struct _RGBA_Image | |||
{ | { | |||
Image_Entry cache_entry; | Image_Entry cache_entry; | |||
RGBA_Image_Flags flags; | RGBA_Image_Flags flags; | |||
struct | struct | |||
{ | { | |||
skipping to change at line 859 | skipping to change at line 862 | |||
FPc x, y; // x, y screenspace | FPc x, y; // x, y screenspace | |||
float fx, fy, fz; // x, y, z in floats | float fx, fy, fz; // x, y, z in floats | |||
// FPc x3, y3; // x, y 3d space | // FPc x3, y3; // x, y 3d space | |||
FPc z; // z in world space. optional | FPc z; // z in world space. optional | |||
FPc u, v; // u, v in tex coords | FPc u, v; // u, v in tex coords | |||
DATA32 col; // color at this point | DATA32 col; // color at this point | |||
// for perspective correctness - only point 0 has relevant info | // for perspective correctness - only point 0 has relevant info | |||
FPc px, py, z0, foc; | FPc px, py, z0, foc; | |||
}; | }; | |||
struct _RGBA_Map | ||||
{ | ||||
void *engine_data; | ||||
struct { | ||||
int w, h; | ||||
} image, uv; | ||||
int x, y; | ||||
int count; | ||||
RGBA_Map_Point pts[1]; | ||||
}; | ||||
#if 0 // filtering disabled | #if 0 // filtering disabled | |||
struct _Filtered_Image | struct _Filtered_Image | |||
{ | { | |||
void *key; | void *key; | |||
size_t keylen; | size_t keylen; | |||
RGBA_Image *image; | RGBA_Image *image; | |||
int ref; | int ref; | |||
}; | }; | |||
#endif | #endif | |||
skipping to change at line 919 | skipping to change at line 936 | |||
void (*freeme) (Fash_Glyph *fash); | void (*freeme) (Fash_Glyph *fash); | |||
}; | }; | |||
///// | ///// | |||
struct _RGBA_Font | struct _RGBA_Font | |||
{ | { | |||
Eina_List *fonts; | Eina_List *fonts; | |||
Fash_Int *fash; | Fash_Int *fash; | |||
Font_Hint_Flags hinting; | Font_Hint_Flags hinting; | |||
int references; | int references; | |||
#ifdef EVAS_FRAME_QUEUING | ||||
int ref_fq[2]; //ref_fq[0] is for addition, ref_fq[1] is fo | ||||
r deletion | ||||
Eina_Condition cond_fq_del; | ||||
LK(ref_fq_add); | ||||
LK(ref_fq_del); | ||||
#endif | ||||
LK(lock); | LK(lock); | |||
unsigned char sizeok : 1; | unsigned char sizeok : 1; | |||
}; | }; | |||
#include "../engines/common/evas_font_ot.h" | #include "../engines/common/evas_font_ot.h" | |||
struct _RGBA_Font_Int | struct _RGBA_Font_Int | |||
{ | { | |||
EINA_INLIST; | EINA_INLIST; | |||
RGBA_Font_Source *src; | RGBA_Font_Source *src; | |||
skipping to change at line 953 | skipping to change at line 964 | |||
FT_Size size; | FT_Size size; | |||
#ifdef USE_HARFBUZZ | #ifdef USE_HARFBUZZ | |||
void *hb_font; | void *hb_font; | |||
#endif | #endif | |||
} ft; | } ft; | |||
LK(ft_mutex); | LK(ft_mutex); | |||
Font_Hint_Flags hinting; | Font_Hint_Flags hinting; | |||
Font_Rend_Flags wanted_rend; /* The wanted rendering style */ | Font_Rend_Flags wanted_rend; /* The wanted rendering style */ | |||
Font_Rend_Flags runtime_rend; /* The rendering we need to do on runtime | Font_Rend_Flags runtime_rend; /* The rendering we need to do on runtime | |||
in order to comply with the wanted_ren d. */ | in order to comply with the wanted_ren d. */ | |||
Eina_List *task; | ||||
#ifdef EVAS_CSERVE2 | ||||
void *cs2_handler; | ||||
#endif | ||||
int generation; | ||||
unsigned char sizeok : 1; | unsigned char sizeok : 1; | |||
unsigned char inuse : 1; | unsigned char inuse : 1; | |||
}; | }; | |||
struct _RGBA_Font_Source | struct _RGBA_Font_Source | |||
{ | { | |||
const char *name; | const char *name; | |||
const char *file; | const char *file; | |||
void *data; | void *data; | |||
unsigned int current_size; | unsigned int current_size; | |||
int data_size; | int data_size; | |||
int references; | int references; | |||
struct { | struct { | |||
int orig_upem; | int orig_upem; | |||
FT_Face face; | FT_Face face; | |||
} ft; | } ft; | |||
}; | }; | |||
/* | ||||
* laziness wins for now. The parts used from the freetpye struct are | ||||
* kept intact to avoid changing the code using it until we know exactly | ||||
* what needs to be changed | ||||
*/ | ||||
struct _RGBA_Font_Glyph_Out | ||||
{ | ||||
struct { | ||||
int rows; | ||||
int width; | ||||
int pitch; | ||||
unsigned char *buffer; | ||||
short num_grays; | ||||
char pixel_mode; | ||||
} bitmap; | ||||
}; | ||||
struct _RGBA_Font_Glyph | struct _RGBA_Font_Glyph | |||
{ | { | |||
FT_UInt index; | FT_UInt index; | |||
Evas_Coord width; | ||||
Evas_Coord x_bear; | ||||
Evas_Coord y_bear; | ||||
FT_Glyph glyph; | FT_Glyph glyph; | |||
FT_BitmapGlyph glyph_out; | RGBA_Font_Glyph_Out *glyph_out; | |||
void (*glyph_out_free)(void *); | ||||
/* this is a problem - only 1 engine at a time can extend such a font... grrr */ | /* this is a problem - only 1 engine at a time can extend such a font... grrr */ | |||
void *ext_dat; | void *ext_dat; | |||
void (*ext_dat_free) (void *ext_dat); | void (*ext_dat_free) (void *ext_dat); | |||
RGBA_Font_Int *fi; | RGBA_Font_Int *fi; | |||
}; | }; | |||
struct _RGBA_Gfx_Compositor | struct _RGBA_Gfx_Compositor | |||
{ | { | |||
const char *name; | const char *name; | |||
skipping to change at line 1244 | skipping to change at line 1284 | |||
void evas_common_regionbuf_span_del (Regionbuf *rb, int x1, int x 2, int y); | void evas_common_regionbuf_span_del (Regionbuf *rb, int x1, int x 2, int y); | |||
Tilebuf_Rect *evas_common_regionbuf_rects_get (Regionbuf *rb); | Tilebuf_Rect *evas_common_regionbuf_rects_get (Regionbuf *rb); | |||
*/ | */ | |||
/****/ | /****/ | |||
#include "../engines/common/evas_draw.h" | #include "../engines/common/evas_draw.h" | |||
#include "../engines/common/evas_map_image.h" | #include "../engines/common/evas_map_image.h" | |||
/****/ | /****/ | |||
#ifdef BUILD_PIPE_RENDER | #include "../engines/common/evas_pipe.h" | |||
# include "../engines/common/evas_pipe.h" | ||||
#endif | ||||
void evas_font_dir_cache_free(void); | void evas_font_dir_cache_free(void); | |||
/****/ | /****/ | |||
/************************************************************************** ***/ | /************************************************************************** ***/ | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
End of changes. 23 change blocks. | ||||
33 lines changed or deleted | 69 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |