imaging api--. as promised.

SVN revision: 51779
This commit is contained in:
Carsten Haitzler 2010-08-31 11:58:51 +00:00
parent fd44c06b68
commit 81ba0d8423
6 changed files with 24 additions and 407 deletions

View File

@ -1476,7 +1476,6 @@ src/bin/Makefile
src/lib/Makefile
src/lib/canvas/Makefile
src/lib/file/Makefile
src/lib/imaging/Makefile
src/lib/cache/Makefile
src/lib/cserve/Makefile
src/lib/engines/Makefile

View File

@ -2159,84 +2159,32 @@ struct _Evas_Smart_Cb_Description
EAPI int evas_string_char_prev_get (const char *str, int pos, int *decoded) EINA_ARG_NONNULL(1);
EAPI int evas_string_char_len_get (const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/* FIXME: kill off!! evas_imaging before 1.0.0 !!!! */
/**
* @defgroup Evas_Imaging Imaging and Commong GFX
*
* Evas imaging api - exports some of the comon gfx engine routines
* this is not complete and should be considered experimental. use at your
* own risk
*/
typedef struct _Evas_Imaging_Image Evas_Imaging_Image;
typedef struct _Evas_Imaging_Font Evas_Imaging_Font;
/**
* Error identifier or EVAS_LOAD_ERROR_NONE. see evas_load_error_str().
* @ingroup Evas_Imaging
*/
EAPI extern int evas_imaging_image_load_error;
EAPI Evas_Imaging_Image *evas_imaging_image_load (const char *file, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_MALLOC;
EAPI void evas_imaging_image_free (Evas_Imaging_Image *im) EINA_ARG_NONNULL(1);
EAPI void evas_imaging_image_size_get (const Evas_Imaging_Image *im, int *w, int *h) EINA_ARG_NONNULL(1);
EAPI Eina_Bool evas_imaging_image_alpha_get (const Evas_Imaging_Image *im) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI void evas_imaging_image_cache_set (int bytes);
EAPI int evas_imaging_image_cache_get (void) EINA_WARN_UNUSED_RESULT;
EAPI void evas_imaging_font_hinting_set (Evas_Font_Hinting_Flags hinting);
EAPI Evas_Font_Hinting_Flags evas_imaging_font_hinting_get (void) EINA_WARN_UNUSED_RESULT;
EAPI Eina_Bool evas_imaging_font_hinting_can_hint (Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT;
EAPI Evas_Imaging_Font *evas_imaging_font_load (const char *file, const char *key, int size) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
EAPI void evas_imaging_font_free (Evas_Imaging_Font *fn) EINA_ARG_NONNULL(1);
EAPI int evas_imaging_font_ascent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI int evas_imaging_font_descent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI int evas_imaging_font_max_ascent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI int evas_imaging_font_max_descent_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI int evas_imaging_font_line_advance_get (const Evas_Imaging_Font *fn) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI void evas_imaging_font_string_advance_get (const Evas_Imaging_Font *fn, const char *str, int *x, int *y) EINA_ARG_NONNULL(1, 2);
EAPI void evas_imaging_font_string_size_query (const Evas_Imaging_Font *fn, const char *str, int *w, int *h) EINA_ARG_NONNULL(1, 2);
EAPI int evas_imaging_font_string_inset_get (const Evas_Imaging_Font *fn, const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
EAPI int evas_imaging_font_string_char_coords_get (const Evas_Imaging_Font *fn, const char *str, int pos, int *cx, int *cy, int *cw, int *ch) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
EAPI int evas_imaging_font_string_char_at_coords_get (const Evas_Imaging_Font *fn, const char *str, int x, int y, int *cx, int *cy, int *cw, int *ch) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
EAPI void evas_imaging_font_cache_set (int bytes);
EAPI int evas_imaging_font_cache_get (void) EINA_WARN_UNUSED_RESULT;
/**
* TO BE DOCUMENTED:
* @todo document key modifiers.
*/
EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifier *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
EAPI Eina_Bool evas_key_lock_is_set (const Evas_Lock *l, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
EAPI void evas_key_modifier_add (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_modifier_del (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_lock_add (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_lock_del (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_modifier_on (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_modifier_off (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_lock_on (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_lock_off (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
EAPI Eina_Bool evas_object_key_grab (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
EAPI void evas_object_key_ungrab (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers) EINA_ARG_NONNULL(1, 2);
EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifier *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
EAPI Eina_Bool evas_key_lock_is_set (const Evas_Lock *l, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
EAPI void evas_key_modifier_add (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_modifier_del (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_lock_add (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_lock_del (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_modifier_on (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_modifier_off (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_lock_on (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI void evas_key_lock_off (Evas *e, const char *keyname) EINA_ARG_NONNULL(1, 2);
EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
EAPI Eina_Bool evas_object_key_grab (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2);
EAPI void evas_object_key_ungrab (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers) EINA_ARG_NONNULL(1, 2);
#ifdef __cplusplus
}
#endif

View File

@ -1,6 +1,6 @@
MAINTAINERCLEANFILES = Makefile.in
SUBDIRS = canvas cache cserve file engines imaging include
SUBDIRS = canvas cache cserve file engines include
EVAS_STATIC_MODULE =
EVAS_STATIC_LIBADD =
@ -200,7 +200,6 @@ libevas_la_LIBADD = \
canvas/libevas_canvas.la \
file/libevas_file.la \
cache/libevas_cache.la \
imaging/libevas_imaging.la \
$(libevas_cserve_la) \
engines/common/libevas_engine_common.la \
@FREETYPE_LIBS@ \
@ -217,7 +216,6 @@ libevas_la_DEPENDENCIES = \
canvas/libevas_canvas.la \
file/libevas_file.la \
cache/libevas_cache.la \
imaging/libevas_imaging.la \
$(libevas_cserve_la) \
engines/common/libevas_engine_common.la \
$(EVAS_STATIC_MODULE)
@ -238,4 +236,4 @@ endif
libevas_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@
DIST_SUBDIRS = canvas cache cserve file engines imaging include
DIST_SUBDIRS = canvas cache cserve file engines include

View File

@ -1,6 +0,0 @@
.deps
.libs
Makefile
Makefile.in
evas_imaging.lo
libevas_imaging.la

View File

@ -1,18 +0,0 @@
MAINTAINERCLEANFILES = Makefile.in
AM_CPPFLAGS = -I. \
-I$(top_srcdir)/src/lib \
-I$(top_srcdir)/src/lib/include \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
@FREETYPE_CFLAGS@ \
@EET_CFLAGS@ \
@EINA_CFLAGS@
noinst_LTLIBRARIES = libevas_imaging.la
libevas_imaging_la_SOURCES = \
evas_imaging.c
libevas_imaging_la_DEPENDENCIES = $(top_builddir)/config.h

View File

@ -1,304 +0,0 @@
#ifdef HAVE_CONFIG_H
# include "config.h" /* so that EAPI in Eet.h is correctly defined */
#endif
#ifdef BUILD_FONT_LOADER_EET
#include <Eet.h>
#endif
#include "evas_common.h"
#include "evas_private.h"
/**
* @addtogroup Evas_Imaging
* @{
*/
EAPI int evas_imaging_image_load_error = EVAS_LOAD_ERROR_NONE;
EAPI Evas_Imaging_Image *
evas_imaging_image_load(const char *file, const char *key)
{
Evas_Imaging_Image *im;
RGBA_Image *image;
evas_imaging_image_load_error = EVAS_LOAD_ERROR_NONE;
if (!file) file = "";
if (!key) key = "";
evas_common_cpu_init();
evas_common_image_init();
image = evas_common_load_image_from_file
(file, key, NULL, &evas_imaging_image_load_error);
if (!image) return NULL;
im = calloc(1, sizeof(Evas_Imaging_Image));
if (!im)
{
evas_imaging_image_load_error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
evas_cache_image_drop(&image->cache_entry);
return NULL;
}
im->image = image;
return im;
}
EAPI void
evas_imaging_image_free(Evas_Imaging_Image *im)
{
if (!im) return;
evas_cache_image_drop(&im->image->cache_entry);
free(im);
}
EAPI void
evas_imaging_image_size_get(const Evas_Imaging_Image *im, int *w, int *h)
{
if (!im) return;
if (w) *w = im->image->cache_entry.w;
if (h) *h = im->image->cache_entry.h;
}
EAPI Eina_Bool
evas_imaging_image_alpha_get(const Evas_Imaging_Image *im)
{
if (!im) return EINA_FALSE;
if (im->image->cache_entry.flags.alpha) return EINA_TRUE;
return EINA_FALSE;
}
EAPI void
evas_imaging_image_cache_set(int bytes)
{
evas_common_image_set_cache(bytes);
}
EAPI int
evas_imaging_image_cache_get(void)
{
return evas_common_image_get_cache();
}
static Evas_Font_Hinting_Flags _evas_hinting = EVAS_FONT_HINTING_BYTECODE;
EAPI void
evas_imaging_font_hinting_set(Evas_Font_Hinting_Flags hinting)
{
_evas_hinting = hinting;
}
EAPI Evas_Font_Hinting_Flags
evas_imaging_font_hinting_get(void)
{
return _evas_hinting;
}
EAPI Eina_Bool
evas_imaging_font_hinting_can_hint(Evas_Font_Hinting_Flags hinting)
{
return evas_common_hinting_available(hinting);
}
EAPI Evas_Imaging_Font *
evas_imaging_font_load(const char *file, const char *key, int size)
{
Evas_Imaging_Font *fn;
RGBA_Font *font = NULL;
evas_common_cpu_init();
evas_common_font_init();
if (!file) file = "";
if ((key) && (key[0] == 0)) key = NULL;
#ifdef BUILD_FONT_LOADER_EET
if (key)
{
char *tmp;
tmp = evas_file_path_join(file, key);
if (tmp)
{
font = evas_common_font_hinting_load(tmp, size, _evas_hinting);
if (!font)
{
Eet_File *ef;
ef = eet_open((char *)file, EET_FILE_MODE_READ);
if (ef)
{
void *fdata;
int fsize = 0;
fdata = eet_read(ef, (char *)key, &fsize);
if ((fdata) && (fsize > 0))
{
font = evas_common_font_memory_hinting_load(tmp, size, fdata, fsize, _evas_hinting);
free(fdata);
}
eet_close(ef);
}
}
free(tmp);
}
}
else
#endif
{
font = evas_common_font_hinting_load((char *)file, size, _evas_hinting);
}
if (!font) return NULL;
fn = calloc(1, sizeof(Evas_Imaging_Font));
if (!fn) return NULL;
fn->font = font;
return fn;
}
EAPI void
evas_imaging_font_free(Evas_Imaging_Font *fn)
{
if (!fn) return;
evas_common_font_free(fn->font);
free(fn);
}
EAPI int
evas_imaging_font_ascent_get(const Evas_Imaging_Font *fn)
{
if (!fn) return 0;
return evas_common_font_ascent_get(fn->font);
}
EAPI int
evas_imaging_font_descent_get(const Evas_Imaging_Font *fn)
{
if (!fn) return 0;
return evas_common_font_descent_get(fn->font);
}
EAPI int
evas_imaging_font_max_ascent_get(const Evas_Imaging_Font *fn)
{
if (!fn) return 0;
return evas_common_font_max_ascent_get(fn->font);
}
EAPI int
evas_imaging_font_max_descent_get(const Evas_Imaging_Font *fn)
{
if (!fn) return 0;
return evas_common_font_max_descent_get(fn->font);
}
EAPI int
evas_imaging_font_line_advance_get(const Evas_Imaging_Font *fn)
{
if (!fn) return 0;
return evas_common_font_get_line_advance(fn->font);
}
EAPI void
evas_imaging_font_string_advance_get(const Evas_Imaging_Font *fn, const char *str, int *x, int *y)
{
Evas_BiDi_Props bidi_props;
Evas_BiDi_Paragraph_Props bidi_par_props;
bidi_props.props = &bidi_par_props;
Eina_Unicode *ustr;
if (!fn) return;
ustr = evas_common_encoding_utf8_to_unicode(str, NULL);
#ifdef BIDI_SUPPORT
evas_bidi_update_props(ustr, &bidi_par_props);
#endif
evas_common_font_query_advance(fn->font, ustr, &bidi_props, x, y);
#ifdef BIDI_SUPPORT
evas_bidi_props_clean(&bidi_props);
#endif
if (ustr) free(ustr);
}
EAPI void
evas_imaging_font_string_size_query(const Evas_Imaging_Font *fn, const char *str, int *w, int *h)
{
Evas_BiDi_Props intl_props;
Evas_BiDi_Paragraph_Props bidi_paragraph_props;
intl_props.props = &bidi_paragraph_props;
Eina_Unicode *ustr;
if (!fn) return;
ustr = evas_common_encoding_utf8_to_unicode(str, NULL);
#ifdef BIDI_SUPPORT
evas_bidi_update_props(ustr, &bidi_paragraph_props);
#endif
evas_common_font_query_size(fn->font, ustr, &intl_props, w, h);
#ifdef BIDI_SUPPORT
evas_bidi_props_clean(&intl_props);
#endif
if (ustr) free(ustr);
}
EAPI int
evas_imaging_font_string_inset_get(const Evas_Imaging_Font *fn, const char *str)
{
Eina_Unicode *ustr;
int ret;
if (!fn) return 0;
ustr = evas_common_encoding_utf8_to_unicode(str, NULL);
ret = evas_common_font_query_inset(fn->font, ustr);
if (ustr) free(ustr);
return ret;
}
EAPI int
evas_imaging_font_string_char_coords_get(const Evas_Imaging_Font *fn, const char *str, int pos, int *cx, int *cy, int *cw, int *ch)
{
int ret;
Evas_BiDi_Props intl_props;
Evas_BiDi_Paragraph_Props bidi_paragraph_props;
intl_props.props = &bidi_paragraph_props;
Eina_Unicode *ustr;
if (!fn) return 0;
ustr = evas_common_encoding_utf8_to_unicode(str, NULL);
#ifdef BIDI_SUPPORT
evas_bidi_update_props(ustr, &bidi_paragraph_props);
#endif
ret = evas_common_font_query_char_coords(fn->font, ustr, &intl_props, pos, cx, cy, cw, ch);
#ifdef BIDI_SUPPORT
evas_bidi_props_clean(&intl_props);
#endif
if (ustr) free(ustr);
return ret;
}
EAPI int
evas_imaging_font_string_char_at_coords_get(const Evas_Imaging_Font *fn, const char *str, int x, int y, int *cx, int *cy, int *cw, int *ch)
{
int ret;
Evas_BiDi_Props intl_props;
Evas_BiDi_Paragraph_Props bidi_paragraph_props;
intl_props.props = &bidi_paragraph_props;
Eina_Unicode *ustr;
if (!fn) return -1;
ustr = evas_common_encoding_utf8_to_unicode(str, NULL);
#ifdef BIDI_SUPPORT
evas_bidi_update_props(ustr, &bidi_paragraph_props);
#endif
ret = evas_common_font_query_char_at_coords(fn->font, ustr, &intl_props, x, y, cx, cy, cw, ch);
#ifdef BIDI_SUPPORT
evas_bidi_props_clean(&intl_props);
#endif
if (ustr) free(ustr);
return ret;
}
EAPI void
evas_imaging_font_cache_set(int bytes)
{
evas_common_font_cache_set(bytes);
}
EAPI int
evas_imaging_font_cache_get(void)
{
return evas_common_font_cache_get();
}
/**
* @}
*/