-2011-01-29 Carsten Haitzler (The Rasterman)
+20YY-MM-2DD NAME OF RELEASER
- 1.0.0 release
-
-2011-01-29 Carsten Haitzler (The Rasterman)
-
- * Enabled mempool for object allocation
- * Allow shorter pre-render handler for rect objects if they are
- invisible
-
-2011-01-30 Tom Hacohen (TAsn)
-
- * It's actually a merge from my local branch upstream so this
- includes many changes.
- * Fixed cursor/selection handling with BiDi text.
- * Fixed many BiDi issues in both textblock and text objects.
- * Cleaned up textblock and font engine a lot.
- * Added auto-alignment to tetxblock and text objects.
- * Added mixedwrap (word wrap, and if a word is too big cut it) support
- to textblock.
- * Renamed a lot of stuff.
- * Made textblock faster, mostly by saving item sizes and caching
- layout items when text doesn't change.
- * Added harfbuzz (ot layouting/shaping and etc) support.
- * Currently you need to set the env var EVAS_USE_OT to '1' in order to
- use OT support (harfbuzz) that will change soon.
- * More code cleanups will be coming in the future. This shipment is
- mostly to get code review started (and also make sure I don't have a
- merging hell later on).
-
-2011-01-31 ChunEon Park
-
- * Fix lurking free bug in key grabs.
-
-
-2011-02-01 Carsten Haitzler (The Rasterman)
-
- * Added WBMP loader thanks to Samsung.
-
-2011-02-01 Tom Hacohen (TAsn)
-
- * Started using string objects instead of strings in most of the
- font engine (everywhere except draw). Haven't removed the
- paramteres yet, but did mark them as UNUSED. Removing them will be
- part of a future change.
- * Removed run-time OT toggling support, OT is now fast, no need for that.
- * Renamed all of the intl_props->text_props (because it really
- changed purpose
- * Fixed spliting/merging of text_props to be fast and good, not
- hacky and complex like before.
- * Added "mirrored mode" to table object.
-
-2011-02-07 Brett Nash (nash@nash.id.au)
-
- * Proxy Objects; Now you can set an image to have a 'source' of
- another object. The proxy will display the object as well. Proxy
- objects should be mostly complete.
- * Proxy objects should be complete; please report and bugs to me.
- * Partial support for arbitrary clipping. Final support coming soon
- (with some other changes). You can set most objects as a clip on
- other objects. This will use the alpha channel of the object as a
- clip on the object. This is still buggy.
- * Software support for arbitrary maps. So you can use any size map
- (not just 4 points) for maps. Once again this is a little buggy.
-
-2011-02-02 Carsten Haitzler (The Rasterman)
-
- * GL engine gets a speculative texture cache to shadow the
- normal image cache to avoid excess texture uploads when
- cycling images often. Should improve performance in some
- cases.
-
-2011-02-12 Carsten Haitzler (The Rasterman)
-
- * Fix "rediculous scaling size" bug, where scaling images to
- sizes like 1 billion pixels high or wide caused evas to try
- allocate scaletables on the stack and the stack just couldn't
- handle it. Now it only allocates a table for the visible
- region which will always be sane, and even has insanity
- checks now. At worst you'll get an unrendered image if the
- values are silly and some slowness. No crashes.
-
-2011-02-13 Brett Nash (nash@nash.id.au)
-
- * Fix crash when deleting proxies. This _technically_ breaks
- evas engines which realloc engine data when a border is set.
- Practically no engines do this. There is a comment there (and
- if the engine does that border set won't work), in which case
- a more complex work-around is possible.
-
-2011-02-14 Tom Hacohen (TAsn)
-
- * Added a newline character mode API to textblock. This lets us set
- the newline behavior to either normal (i.e only break a line, not
- a paragraph) to "behave as a PS" mode. Default is the latter.
- The former is the more correct approach but I guess everything else
- is in e is not yet ready to use it. These API should help with the
- transition.
- * A lot of textblock speed improvements and reduced memory footprint.
-
-2011-02-16 Jeonghyun Yun
-
- * Patch from Jeonghyun Yun <jh0506.yun@samsung.com> that
- improves BMP loader support to handle malformed RLE BMP's that
- encode more pixels per line than the image actuall has.
-
-2011-02-16 Tom Hacohen (TAsn)
-
- * Dropped Evas_Encoding and moved to use Eina_unicode_utf8 instead.
- * Started showing the unicode replacement character instead of missing
- glyphs.
-
-2011-02-20 Carsten Haitzler (The Rasterman)
-
- * Fix bug in font string parsing that can result in a crash if a
- font element is long enough.
- * Fix convert rgba8888 -> a8 bug so it wont crash.
-
-2011-02-21 Carsten Haitzler (The Rasterman)
-
- * Fixed bug with memory access of old utf8 string when
- comparing prev and cur state with text obj.
-
-2011-02-22 Tom Hacohen (TAsn)
-
- * Fixed a bug in textblock cursor position with empty textblocks.
-
-2011-02-22 Carsten Haitzler (The Rasterman)
-
- * Fixed bug smart calc array where it'd nuke the array when nested
- process calls hapen and leave some objects uncalculated, but
- removed from the array and marked as needing a calc thus never
- getting back into the array.
-
-2011-02-27 Vincent Torri
-
- * Fixed static linking of the bmp, wbmp and tga loaders
+ MAJOR.MINOR.MICRO release
+
#!/bin/sh
+rm -rf autom4te.cache
+rm -f aclocal.m4 ltmain.sh
+
touch README
echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1
echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
if [ -z "$NOCONFIGURE" ]; then
- ./configure -C "$@"
+ ./configure "$@"
fi
##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
m4_define([v_maj], [1])
m4_define([v_min], [0])
-m4_define([v_mic], [999])
+m4_define([v_mic], [0])
m4_define([v_rev], m4_esyscmd([(svnversion "${SVN_REPO_PATH:-.}" | grep -v export || echo 0) | awk -F : '{printf("%s\n", $1);}' | tr -d ' :MSP\n']))
m4_if(v_rev, [0], [m4_define([v_rev], m4_esyscmd([git log 2> /dev/null | (grep -m1 git-svn-id || echo 0) | sed -e 's/.*@\([0-9]*\).*/\1/' | tr -d '\n']))])
##-- When released, remove the dnl on the below line
-dnl m4_undefine([v_rev])
+m4_undefine([v_rev])
##-- When doing snapshots - change soname. remove dnl on below line
dnl m4_define([relname], [ver-pre-svn-07])
dnl m4_define([v_rel], [-release relname])
# rw_PROG_OBJC_WORKS
# Check whether the Objective C compiler works.
AC_DEFUN([rw_PROG_OBJC_WORKS],
-[m4_ifdef([AC_PROG_OBJC], [AC_REQUIRE([AC_PROG_OBJC])dnl
+[AC_REQUIRE([AC_PROG_OBJC])dnl
AC_CACHE_CHECK([whether the Objective C compiler works],
[rw_cv_prog_objc_works],
[AC_LANG_PUSH([Objective C])
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[rw_cv_prog_objc_works=yes],
[rw_cv_prog_objc_works=no])
- AC_LANG_POP([Objective C])])], [rw_cv_prog_objc_works=no])
+ AC_LANG_POP([Objective C])])
])
-AC_INIT([evas], [v_ver], [enlightenment-devel@lists.sourceforge.net])
+AC_INIT([evas], [v_ver.beta3], [enlightenment-devel@lists.sourceforge.net])
AC_PREREQ([2.52])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_MACRO_DIR([m4])
want_fontconfig="auto"
want_fribidi="auto"
-want_harfbuzz="auto"
want_evas_cserve="yes"
want_evas_engine_buffer="yes"
_AM_DEPENDENCIES(OBJC)
],
[
- dnl#AC_CHECK_TOOL([OBJC], [gcc])
- dnl#AC_SUBST([OBJC])
- dnl#AC_SUBST([OBJCFLAGS])
+ AC_CHECK_TOOL([OBJC], [gcc])
+ AC_SUBST([OBJC])
+ AC_SUBST([OBJCFLAGS])
])
rw_PROG_OBJC_WORKS
HAS_BIDI=0
fi
-# harfbuzz support
-have_harfbuzz="no"
-have_harfbuzz_glib="no"
-have_harfbuzz_ft="no"
-AC_ARG_ENABLE([harfbuzz],
- AC_HELP_STRING([--disable-harfbuzz],
- [disable complex text shaping and layouting support. @<:@default=enabled@:>@]),
- [
- if test "x${enableval}" = "xyes" ; then
- want_harfbuzz="yes"
- else
- want_harfbuzz="no"
- fi
- ])
-
-if test "x${want_harfbuzz}" = "xyes" -o "x${want_harfbuzz}" = "xauto" ; then
- PKG_CHECK_MODULES([HARFBUZZ],
- [harfbuzz >= 0.2],
- [
- have_harfbuzz="yes"
- requirement_evas="harfbuzz ${requirement_evas}"
- ],
- [
- if test "x$want_harfbuzz" = "xyes" -a "x$use_strict" = "xyes" ; then
- AC_MSG_ERROR([Harfbuzz not found (strict dependencies checking)])
- fi
- ])
- if test "x$have_harfbuzz" = "xyes" ; then
-
- CPPFLAGS_SAVE="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $HARFBUZZ_CFLAGS $FREETYPE_CFLAGS"
-# must have for usage with harfbuzz although harfbuzz may not have it.
-
- AC_CHECK_HEADER(hb-ft.h,
- [
- have_harfbuzz_ft="yes"
- #Depend on harfbuzz ft for harfbuzz support
- AC_DEFINE(HAVE_HARFBUZZ, 1, [have harfbuzz support])
- ],
- [
- if test "x$want_harfbuzz" = "xyes" -a "x$use_strict" = "xyes" ; then
- AC_MSG_ERROR([Harfbuzz-ft not found (strict dependencies checking)])
- fi
- have_harfbuzz="no"
- ])
-# nice to have if harfbuzz has it
- AC_CHECK_HEADER(hb-glib.h,
- [
- have_harfbuzz_glib="yes"
- AC_DEFINE(HAVE_HARFBUZZ_GLIB, 1, [have harfbuzz glib support])
- ],
- [
- have_harfbuzz_glib="no"
- ])
- CPPFLAGS="$CPPFLAGS_SAVE"
- fi
-fi
-
-if test "x${have_harfbuzz}" = "xno"; then
- HAS_HARFBUZZ=0
-fi
-
### Checks for header files
AC_HEADER_STDC
AC_CHECK_HEADERS([unistd.h stdint.h sys/param.h])
;;
*)
if test "x${have_evas_image_loader_jpeg}" = "xyes" ; then
- AC_DEFINE(EVAS_BUILD_SAVER_JPEG, [1], [Build JPEG saver])
have_evas_image_saver_jpeg="yes"
fi
;;
echo
echo "Font Searching Systems:"
echo " Fontconfig..............: $have_fontconfig"
-echo
-echo "Font Rendering Helpers:"
echo " Fribidi.................: $have_fribidi"
-echo " Harfbuzz................: $have_harfbuzz"
# FIXME: add non freetype2 font engine support
# FIXME: make freetype2 optional
echo
@author Mathieu Taillefumier <mathieu.taillefumier@@free.fr>
@author Iván Briano <ivan@@profusion.mobi>
@author Gustavo Lima Chaves <glima@@profusion.mobi>
-@author Samsung Electronics <tbd>
-@author Samsung SAIT <tbd>
-@date 2000-2011
+
+@date 2000-2010
@section toc Table of Contents
%bcond_with module_engine_software_xcb
%bcond_with module_engine_xrender_x11
%bcond_with module_engine_xrender_xcb
-%bcond_with module_loader_gif
%bcond_with module_loader_svg
## enabled features
%bcond_without module_saver_png
%bcond_without module_loader_jpeg
%bcond_without module_saver_jpeg
+%bcond_without module_loader_gif
%bcond_without module_loader_tiff
%bcond_without module_saver_tiff
%bcond_without module_loader_eet
%package module_engine_software_x11
Summary: Software X11 rendering engine module for Evas
Group: System Environment/Libraries
-BuildRequires: libX11-devel, libICE-devel, libXext-devel
Requires: evas-module_engine_software_generic
Requires: evas
%description module_engine_software_x11
%package module_engine_xrender_x11
Summary: XRender rendering engine module for Evas
Group: System Environment/Libraries
-#BuildSuggests: xorg-x11-devel, XFree86-devel, xrender-devel
-BuildRequires: libXrender-devel
+#BuildSuggests: xorg-x11-devel, XFree86-devel
+BuildRequires: xrender-devel
Requires: evas-module_engine_software_generic
Requires: evas
%description module_engine_xrender_x11
%package module_engine_xrender_xcb
Summary: Xrender XCB X11 rendering engine module for Evas
Group: System Environment/Libraries
-BuildRequires: libxcb-devel
+BuildRequires: xcb-devel
Requires: evas-module_engine_xrender_x11
Requires: evas
%description module_engine_xrender_xcb
%endif
%prep
-%setup -q
+%setup -q -n %{name}-%{version}
%build
%{configure} --prefix=%{_prefix} --x-libraries=%{_prefix}/X11R6/%{_lib} \
%{_libdir}/*.la
%{_libdir}/*.a
%{_libdir}/pkgconfig/*
-%{_includedir}/evas-1/*.h
+%{_includedir}/*.h
%{_datadir}/evas/examples/*.c
%files module_engine_software_generic
%defattr(-, root, root)
AS_IF([test "x${rw_cv_prog_objc_works}" = "xyes"],
[
- m4_ifdef([AC_PROG_OBJC], [AC_LANG_PUSH([Objective C])])
- AC_CHECK_HEADER([/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h], [
- have_dep="yes"
- evas_engine_[]$1[]_libs="-framework Cocoa"
- ],[
- have_dep="no"
- ])
- m4_ifdef([AC_PROG_OBJC], [AC_LANG_POP([Objective C])], [:])])
+ AC_LANG_PUSH([Objective C])
+ AC_CHECK_HEADER([/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h],
+ [
+ have_dep="yes"
+ evas_engine_[]$1[]_libs="-framework Cocoa"
+ ],
+ [have_dep="no"])
+ AC_LANG_POP([Objective C])
+
+])
AC_SUBST([evas_engine_$1_cflags])
AC_SUBST([evas_engine_$1_libs])
AC_DEFUN([EVAS_MAYBE_GET_OBJCPP],
[AS_IF([test "x${rw_cv_prog_objc_works}" = "xyes"],
- [m4_ifdef([AC_PROG_OBJC], [AC_PROG_OBJCPP], [:])])
+ [AC_PROG_OBJCPP])
])
dnl use: EVAS_CHECK_ENGINE_DEP_GL_GLEW(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
[jpeg_CreateDecompress],
[
evas_image_loader_[]$1[]_libs="-ljpeg"
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ AC_COMPILE_IFELSE([[
#include <stdio.h>
#include <jpeglib.h>
#include <setjmp.h>
struct jpeg_decompress_struct decomp;
decomp.region_x = 0;
}
- ])],
+ ]],
[have_jpeg_region="yes"],
[have_jpeg_region="no"])
],
EAPI void evas_object_image_content_hint_set (Evas_Object *obj, Evas_Image_Content_Hint hint) EINA_ARG_NONNULL(1);
EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
- EAPI void evas_object_image_alpha_mask_set (Evas_Object *obj, Eina_Bool ismask) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool evas_object_image_source_set (Evas_Object *obj, Evas_Object *src) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *evas_object_image_source_get (Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool evas_object_image_source_unset (Evas_Object *obj) EINA_ARG_NONNULL(1);
-
/**
* @defgroup Evas_Object_Text Text Object Functions
*
EAPI void evas_object_text_outline_color_set(Evas_Object *obj, int r, int g, int b, int a) EINA_ARG_NONNULL(1);
EAPI void evas_object_text_outline_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a) EINA_ARG_NONNULL(1);
EAPI void evas_object_text_style_pad_get (const Evas_Object *obj, int *l, int *r, int *t, int *b) EINA_ARG_NONNULL(1);
- EAPI Evas_BiDi_Direction evas_object_text_direction_get (const Evas_Object *obj) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
/**
* @defgroup Evas_Object_Textblock Textblock Object Functions
EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI void evas_object_textblock_replace_char_set(Evas_Object *obj, const char *ch) EINA_ARG_NONNULL(1);
EAPI const char *evas_object_textblock_replace_char_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
- EAPI void evas_object_textblock_newline_mode_set(Evas_Object *obj, Eina_Bool mode) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool evas_object_textblock_newline_mode_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI void evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
EAPI void evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char *text) EINA_ARG_NONNULL(1, 2);
EAPI int evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch, Evas_BiDi_Direction *dir, Evas_Textblock_Cursor_Type ctype) EINA_ARG_NONNULL(1);
EAPI int evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
- EAPI int evas_textblock_cursor_pen_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cpen_x, Evas_Coord *cy, Evas_Coord *cadv, Evas_Coord *ch) EINA_ARG_NONNULL(1);
EAPI int evas_textblock_cursor_line_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1);
EAPI Eina_Bool evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
EAPI int evas_textblock_cursor_line_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord y) EINA_ARG_NONNULL(1);
EAPI void evas_object_table_padding_get (const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
EAPI void evas_object_table_align_set (Evas_Object *o, double horizontal, double vertical) EINA_ARG_NONNULL(1);
EAPI void evas_object_table_align_get (const Evas_Object *o, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
- EAPI void evas_object_table_mirrored_set (Evas_Object *o, Eina_Bool mirrored) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool evas_object_table_mirrored_get (const Evas_Object *o) EINA_ARG_NONNULL(1);
EAPI Eina_Bool evas_object_table_pack (Evas_Object *o, Evas_Object *child, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan) EINA_ARG_NONNULL(1, 2);
EAPI Eina_Bool evas_object_table_unpack (Evas_Object *o, Evas_Object *child) EINA_ARG_NONNULL(1, 2);
EVAS_STATIC_MODULE += ../modules/engines/xrender_x11/libevas_engine_xrender_x11.la
EVAS_STATIC_LIBADD += @evas_engine_xrender_x11_libs@ @evas_engine_xrender_xcb_libs@
endif
-if EVAS_STATIC_BUILD_BMP
-SUBDIRS += ../modules/loaders/bmp
-EVAS_STATIC_MODULE += ../modules/loaders/bmp/libevas_loader_bmp.la
-EVAS_STATIC_LIBADD += @evas_image_loader_bmp_libs@
-endif
if EVAS_STATIC_BUILD_EDB
SUBDIRS += ../modules/savers/edb ../modules/loaders/edb
EVAS_STATIC_MODULE += ../modules/savers/edb/libevas_saver_edb.la ../modules/loaders/edb/libevas_loader_edb.la
EVAS_STATIC_LIBADD += @evas_image_loader_gif_libs@
endif
if EVAS_STATIC_BUILD_JPEG
-SUBDIRS += ../modules/loaders/jpeg
-EVAS_STATIC_MODULE += ../modules/loaders/jpeg/libevas_loader_jpeg.la
-if BUILD_SAVER_JPEG
-SUBDIRS += ../modules/savers/jpeg
-EVAS_STATIC_MODULE += ../modules/savers/jpeg/libevas_saver_jpeg.la
-endif
+SUBDIRS += ../modules/savers/jpeg ../modules/loaders/jpeg
+EVAS_STATIC_MODULE += ../modules/savers/jpeg/libevas_saver_jpeg.la ../modules/loaders/jpeg/libevas_loader_jpeg.la
EVAS_STATIC_LIBADD += @evas_image_loader_jpeg_libs@
endif
if EVAS_STATIC_BUILD_PMAPS
EVAS_STATIC_MODULE += ../modules/loaders/svg/libevas_loader_svg.la
EVAS_STATIC_LIBADD += @evas_image_loader_svg_libs@
endif
-if EVAS_STATIC_BUILD_TGA
-SUBDIRS += ../modules/loaders/tga
-EVAS_STATIC_MODULE += ../modules/loaders/tga/libevas_loader_tga.la
-EVAS_STATIC_LIBADD += @evas_image_loader_tga_libs@
-endif
if EVAS_STATIC_BUILD_TIFF
SUBDIRS += ../modules/savers/tiff ../modules/loaders/tiff
EVAS_STATIC_MODULE += ../modules/savers/tiff/libevas_saver_tiff.la ../modules/loaders/tiff/libevas_loader_tiff.la
EVAS_STATIC_LIBADD += @evas_image_loader_tiff_libs@
endif
-if EVAS_STATIC_BUILD_WBMP
-SUBDIRS += ../modules/loaders/wbmp
-EVAS_STATIC_MODULE += ../modules/loaders/wbmp/libevas_loader_wbmp.la
-EVAS_STATIC_LIBADD += @evas_image_loader_wbmp_libs@
-endif
if EVAS_STATIC_BUILD_XPM
SUBDIRS += ../modules/loaders/xpm
EVAS_STATIC_MODULE += ../modules/loaders/xpm/libevas_loader_xpm.la
@EINA_CFLAGS@ \
@FREETYPE_CFLAGS@ \
@FRIBIDI_CFLAGS@ \
-@HARFBUZZ_CFLAGS@ \
@EET_CFLAGS@ \
@FONTCONFIG_CFLAGS@ \
@pthread_cflags@
engines/common/libevas_engine_common.la \
@FREETYPE_LIBS@ \
@FRIBIDI_LIBS@ \
-@HARFBUZZ_LIBS@ \
@EET_LIBS@ \
@FONTCONFIG_LIBS@ \
@pthread_libs@ \
while (p[i])
{
dest[n][m] = p[i];
- if ((p[i] == '-') || (m == 255))
+ if ((p[i] == '-') || (m == 256))
{
dest[n][m] = 0;
n++;
if (eina_error_get())
{
MERR_FATAL();
- free(g->keyname);
free(g);
+ free(g->keyname);
return NULL;
}
}
{
MERR_FATAL();
g->object->grabs = eina_list_remove(g->object->grabs, g);
- free(g->keyname);
free(g);
+ free(g->keyname);
return NULL;
}
}
x = m->points[i].x;
y = m->points[i].y;
z = m->points[i].z;
-
+printf("Normal %d\n",i);
// calc normal
h = (i - 1 + 4) % 4 + (i & ~0x3); // prev point
j = (i + 1) % 4 + (i & ~0x3); // next point
+printf("\tNext/Prev: %2d/%2d\n",h,j);
x1 = m->points[h].x - x;
y1 = m->points[h].y - y;
x2 = m->points[j].x - x;
y2 = m->points[j].y - y;
z2 = m->points[j].z - z;
+printf("\tX: %3.2lf,%3.2lf,%3.2lf\n",x,y,z);
+printf("\tX1: %3.2lf,%3.2lf,%3.2lf\n",x1,y1,z1);
+printf("\tX2: %3.2lf,%3.2lf,%3.2lf\n",x2,y2,z2);
nx = (y1 * z2) - (z1 * y2);
ny = (z1 * x2) - (x1 * z2);
nz = (x1 * y2) - (y1 * x2);
ln = (nx * nx) + (ny * ny) + (nz * nz);
ln = sqrt(ln);
+printf("\tLength: %3.2lf\n",ln);
if (ln != 0.0)
{
ny /= ln;
nz /= ln;
}
+printf("\tpoint %2d: %3.2lf,%3.2lf,%3.2lf normal: %3.2lf %3.2lf %3.2lf\n",i,x,y,z,nx,ny,nz);
// calc point -> light vector
x = lx - x;
#include "evas_common.h"
-#ifdef _WIN32_WCE
-# undef remove
-#endif
-
typedef struct _Evas_Object_Box_Iterator Evas_Object_Box_Iterator;
typedef struct _Evas_Object_Box_Accessor Evas_Object_Box_Accessor;
/**
* Set the source object on a proxy object.
*
- * The source must be another object. The proxy will have the same base
- * appearance of the source object. Obviously other effects may be applied to
- * the proxy, such as a map to create a reflection of the original object.
- *
* Any existing source object will be removed. Setting the src to NULL clears
* the proxy object.
*
if (o->cur.source == src) return EINA_TRUE;
/* Kill the image if any */
- if (o->cur.file || o->cur.key)
- evas_object_image_file_set(obj, NULL, NULL);
+ evas_object_image_file_set(obj, NULL, NULL);
if (o->cur.source)
{
*
* @param obj The given canvas object.
* @param w The new width of the canvas image given.
- * @param h The new height of the canvas image given.
+ * @param h Th new height of the canvas image given.
*
* This function sets a new size for the given canvas image.
*
}
/**
- * Enable an image to be used as an alpha mask.
- *
- * This will set any flags, and discard any excess image data not used as an
- * alpha mask.
- *
- * Note there is little point in using a image as alpha mask unless it has an
- * alpha channel.
- *
- * @param obj Object to use as an alpha mask.
- * @param ismask Use image as alphamask, must be true.
- */
-EAPI void
-evas_object_image_alpha_mask_set(Evas_Object *obj, Eina_Bool ismask)
-{
- Evas_Object_Image *o;
-
- if (!ismask) return;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return;
- MAGIC_CHECK_END();
-
- /* Convert to A8 if not already */
-
- /* done */
-
-}
-
-/**
* Get the content hint of a given image of the canvas.
*
* @param obj The given canvas pointer.
obj->layer->evas->engine.func->context_render_op_set(output, context,
obj->cur.render_op);
- if (0)
- printf("Proxy: %p Source: %p Surface %p Redraw %s Type %s/%s %p %d %d\n",
- obj, o->cur.source,o->cur.source->proxy.surface,
- o->cur.source->proxy.redraw?"yep ":"nope",o->cur.source->type,
- o_type,obj->cur.map,obj->cur.map->count, obj->cur.usemap);
+ if (0)// o->cur.source)
+ printf("Proxy: %p Source: %p Surface %p Redraw %s Type %s\n",obj,
+ o->cur.source,o->cur.source->proxy.surface,
+ o->cur.source->proxy.redraw?"yep":"nope",o->cur.source->type);
if (!o->cur.source)
{
p = obj->cur.map->points;
p_end = p + obj->cur.map->count;
pt = pts;
-
+
pts[0].px = obj->cur.map->persp.px << FP;
pts[0].py = obj->cur.map->persp.py << FP;
pts[0].foc = obj->cur.map->persp.foc << FP;
pt->fz = p->z;
pt->u = p->u * FP1;
pt->v = p->v * FP1;
- if (pt->u < 0) pt->u = 0;
- else if (pt->u > (o->cur.image.w * FP1)) pt->u = (imagew * FP1);
- if (pt->v < 0) pt->v = 0;
- else if (pt->v > (o->cur.image.h * FP1)) pt->v = (imageh * FP1);
pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
}
if (obj->cur.map->count & 0x1)
obj->layer->evas->engine.func->image_scale_hint_set(output,
pixels,
o->scale_hint);
- /* This is technically a bug here: If the value is recreated
- * (which is returned)it may be a new object, however exactly 0
- * of all the evas engines do this. */
- obj->layer->evas->engine.func->image_border_set(output, pixels,
- o->cur.border.l, o->cur.border.r,
- o->cur.border.t, o->cur.border.b);
+ o->engine_data = obj->layer->evas->engine.func->image_border_set(output, pixels,
+ o->cur.border.l, o->cur.border.r,
+ o->cur.border.t, o->cur.border.b);
idx = evas_object_image_figure_x_fill(obj, o->cur.fill.x, o->cur.fill.w, &idw);
idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh);
if (idw < 1) idw = 1;
obj->mouse_in = 0;
evas_object_hide(obj);
evas_object_grabs_cleanup(obj);
- while (obj->clip.clipees)
- evas_object_clip_unset(obj->clip.clipees->data);
+ while (obj->clip.clipees) evas_object_clip_unset(obj->clip.clipees->data);
while (obj->proxy.proxies)
- evas_object_image_source_unset(obj->proxy.proxies->data);
+ evas_object_image_source_unset(obj->proxy.proxies->data);
if (obj->cur.clipper) evas_object_clip_unset(obj);
if (obj->smart.smart) evas_object_smart_del(obj);
evas_object_map_set(obj, NULL);
/* if it just became visible or invisible */
is_v = evas_object_is_visible(obj);
was_v = evas_object_was_visible(obj);
- if (!(is_v | was_v)) goto done;
if (is_v != was_v)
{
evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
return;
o->need_recalculate = value;
- if (!obj->smart.smart->smart_class->calculate) return;
+ if (!obj->smart.smart->smart_class->calculate)
+ return;
/* XXX: objects can be present multiple times in calculate_objects()
* XXX: after a set-unset-set cycle, but it's not a problem since
*/
if (o->need_recalculate)
{
- Evas *e = obj->layer->evas;
+ Evas *e;
+ e = obj->layer->evas;
eina_array_push(&e->calculate_objects, obj);
}
/* TODO: else, remove from array */
{
Eina_Array *calculate;
unsigned int i;
- static int in_smart_calc = 0;
- in_smart_calc++;
calculate = &e->calculate_objects;
- for (i = 0; i < calculate->count; i++)
+ for (i = 0; i < calculate->count; ++i)
{
Evas_Object *obj;
Evas_Object_Smart *o;
- int before;
obj = eina_array_data_get(calculate, i);
if (obj->delete_me)
continue;
- before = calculate->count;
o = obj->object_data;
if (o->need_recalculate)
{
obj->smart.smart->smart_class->calculate(obj);
}
}
- in_smart_calc--;
- if (in_smart_calc == 0) eina_array_flush(calculate);
+
+ eina_array_flush(calculate);
}
/**
Eina_Bool hints_changed : 1;
Eina_Bool expand_h : 1;
Eina_Bool expand_v : 1;
- Eina_Bool is_mirrored : 1;
};
struct _Evas_Object_Table_Iterator
_evas_object_table_calculate_cell(opt, &cx, &cy, &cw, &ch);
- if (priv->is_mirrored)
- {
- evas_object_move(opt->obj, x + w - (cx - x + cw), cy);
- }
- else
- {
- evas_object_move(child, cx, cy);
- }
+ evas_object_move(child, cx, cy);
evas_object_resize(child, cw, ch);
}
}
{
Evas_Object *child = opt->obj;
Evas_Coord cx, cy, cw, ch;
-
+
cx = x + opt->col * (priv->pad.h);
cx += _evas_object_table_sum_sizes(cols, 0, opt->col);
cw = _evas_object_table_sum_sizes(cols, opt->col, opt->end_col);
-
+
cy = y + opt->row * (priv->pad.v);
cy += _evas_object_table_sum_sizes(rows, 0, opt->row);
ch = _evas_object_table_sum_sizes(rows, opt->row, opt->end_row);
-
+
_evas_object_table_calculate_cell(opt, &cx, &cy, &cw, &ch);
-
- if (priv->is_mirrored)
- {
- evas_object_move(opt->obj, x + w - (cx - x + cw), cy);
- }
- else
- {
- evas_object_move(child, cx, cy);
- }
+
+ evas_object_move(child, cx, cy);
evas_object_resize(child, cw, ch);
}
}
/**
- * Gets the mirrored mode of the table. In mirrored mode the table items go
- * from right to left instead of left to right. That is, 1,1 is top right, not
- * to left.
- *
- * @param obj The table object.
- * @return EINA_TRUE if it's a mirrored table, EINA_FALSE otherwise.
- * @since 1.1.0
- */
-EAPI Eina_Bool
-evas_object_table_mirrored_get(const Evas_Object *obj)
-{
- EVAS_OBJECT_TABLE_DATA_GET_OR_RETURN_VAL(obj, priv, EINA_FALSE);
-
- return priv->is_mirrored;
-}
-
-/**
- * Sets the mirrored mode of the table. In mirrored mode the table items go
- * from right to left instead of left to right. That is, 1,1 is top right, not
- * to left.
- *
- * @param obj The table object.
- * @param mirrored the mirrored mode to set
- * @since 1.1.0
- */
-EAPI void
-evas_object_table_mirrored_set(Evas_Object *obj, Eina_Bool mirrored)
-{
- EVAS_OBJECT_TABLE_DATA_GET_OR_RETURN(obj, priv);
- if (priv->is_mirrored != mirrored)
- {
- priv->is_mirrored = mirrored;
- _evas_object_table_smart_calculate_regular(obj, priv);
- }
-}
-
-/**
* @}
*/
/* private struct for text object internal data */
typedef struct _Evas_Object_Text Evas_Object_Text;
-typedef struct _Evas_Object_Text_Item Evas_Object_Text_Item;
struct _Evas_Object_Text
{
DATA32 magic;
struct {
+ const Eina_Unicode *text; /*The shaped text */
const char *utf8_text; /* The text exposed to the API */
const char *font;
const char *source;
} outline, shadow, glow, glow2;
unsigned char style;
+ Evas_BiDi_Props intl_props;
} cur, prev;
- float ascent, descent;
- float max_ascent, max_descent;
- Evas_BiDi_Paragraph_Props *bidi_par_props;
- Evas_Object_Text_Item *items;
+ float ascent, descent;
+ float max_ascent, max_descent;
- void *engine_data;
+ void *engine_data;
- char changed : 1;
-};
-
-struct _Evas_Object_Text_Item
-{
- EINA_INLIST;
-
- Eina_Unicode *text; /*The shaped text */
- size_t text_pos;
- size_t visual_pos;
- Evas_Text_Props text_props;
- Evas_Coord x, w, h, adv;
+ char changed : 1;
};
/* private methods for text objects */
static int evas_object_text_was_opaque(Evas_Object *obj);
static void evas_object_text_scale_update(Evas_Object *obj);
-static void _evas_object_text_recalc(Evas_Object *obj);
static const Evas_Object_Func object_func =
{
EVAS_MEMPOOL(_mp_obj);
-/* FIXME: doc */
-static int
-_evas_object_text_char_coords_get(const Evas_Object *obj,
- const Evas_Object_Text *o,
- size_t pos, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
-{
- Evas_Object_Text_Item *it;
-
- EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it)
- {
- if ((it->text_pos <= pos) &&
- (pos < it->text_pos + eina_unicode_strlen(it->text)))
- {
- return ENFN->font_char_coords_get(ENDT, o->engine_data, it->text,
- &it->text_props, pos - it->text_pos, x, y, w, h);
- }
- }
- return 0;
-}
-
-/* FIXME: doc */
-static void
-_evas_object_text_item_clean(Evas_Object_Text_Item *it)
-{
- evas_common_text_props_content_unref(&it->text_props);
- if (it->text)
- {
- free(it->text);
- }
-}
-
-/* FIXME: doc */
-static void
-_evas_object_text_items_clear(Evas_Object_Text *o)
-{
- Evas_Object_Text_Item *it;
-
- while (o->items)
- {
- it = o->items;
- o->items = (Evas_Object_Text_Item *) eina_inlist_remove(
- EINA_INLIST_GET(o->items),
- EINA_INLIST_GET(it));
- _evas_object_text_item_clean(it);
- free(it);
- }
-}
-
-#ifdef BIDI_SUPPORT
-static int
-_evas_object_text_it_compare_logical(const void *_it1, const void *_it2)
-{
- const Evas_Object_Text_Item *it1 = _it1, *it2 = _it2;
- if (it1->text_pos < it2->text_pos)
- return -1;
- else if (it1->text_pos == it2->text_pos)
- return 0;
- else
- return 1;
-
-}
-#endif
-/* FIXME: doc */
-static int
-_evas_object_text_last_up_to_pos(const Evas_Object *obj,
- const Evas_Object_Text *o, Evas_Coord cx, Evas_Coord cy)
-{
- Evas_Object_Text_Item *it;
-
-#ifdef BIDI_SUPPORT
- /*FIXME: not very efficient, sort the items arrays. */
- /* Reorder if it's a bidi text */
- if (o->bidi_par_props)
- {
- Eina_List *logical_it = NULL;
- Evas_Object_Text_Item *i;
- Eina_List *itr;
- Evas_Coord x = 0;
- /* Insert all to the logical list */
- EINA_INLIST_FOREACH(o->items, i)
- {
- logical_it = eina_list_sorted_insert(logical_it,
- _evas_object_text_it_compare_logical, i);
- }
- EINA_LIST_FOREACH(logical_it, itr, it)
- {
- if ((x <= cx) && (cx < x + it->adv))
- {
- return it->text_pos + ENFN->font_last_up_to_pos(ENDT,
- o->engine_data,
- it->text, &it->text_props,
- cx - x,
- cy);
- }
- x += it->adv;
- }
- eina_list_free(logical_it);
- }
- else
-#endif
- {
- EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it)
- {
- if ((it->x <= cx) && (cx < it->x + it->adv))
- {
- return it->text_pos + ENFN->font_last_up_to_pos(ENDT,
- o->engine_data,
- it->text, &it->text_props,
- cx - it->x,
- cy);
- }
- }
- }
- return -1;
-}
-
-/* FIXME: doc */
-static int
-_evas_object_text_char_at_coords(const Evas_Object *obj,
- const Evas_Object_Text *o, Evas_Coord cx, Evas_Coord cy,
- Evas_Coord *rx, Evas_Coord *ry, Evas_Coord *rw, Evas_Coord *rh)
-{
- Evas_Object_Text_Item *it;
-
- EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it)
- {
- if ((it->x <= cx) && (cx < it->x + it->adv))
- {
- return it->text_pos + ENFN->font_char_at_coords_get(ENDT,
- o->engine_data,
- it->text, &it->text_props,
- cx,
- cy,
- rx, ry,
- rw, rh);
- }
- }
- return -1;
-}
-
-/* FIXME: doc */
-static Evas_Coord
-_evas_object_text_horiz_advance_get(const Evas_Object *obj,
- const Evas_Object_Text *o)
-{
- Evas_Object_Text_Item *it;
- Evas_Coord adv;
- (void) obj;
-
- adv = 0;
- EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it)
- {
- adv += it->adv;
- }
- return adv;
-}
-
-/* FIXME: doc */
-static Evas_Coord
-_evas_object_text_vert_advance_get(const Evas_Object *obj __UNUSED__,
- const Evas_Object_Text *o)
-{
- return o->max_ascent + o->max_descent;
-}
-
-/* FIXME: returns the advance instead of the width just because it's usuallly
- * bigger, major hack, should fix. */
-static void
-_evas_object_text_string_size_get(const Evas_Object *obj,
- const Evas_Object_Text *o,
- Evas_Coord *cw, Evas_Coord *ch)
-{
- Evas_Object_Text_Item *it, *last_it = NULL;
- Evas_Coord w, h;
- (void) obj;
-
- w = h = 0;
- EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it)
- {
- w += it->adv;
- if (it->h > h)
- {
- h = it->h;
- }
- last_it = it;
- }
- /* Take the width, not the advance of the last item */
- if (last_it)
- {
- w += last_it->w - last_it->adv;
- }
-
- if (cw) *cw = w;
- if (ch) *ch = h;
-}
-
/**
* Creates a new text @c Evas_Object on the provided @c Evas canvas.
*
evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size size)
{
Evas_Object_Text *o;
+ int l = 0, r = 0, t = 0, b = 0;
int is, was = 0, pass = 0;
int same_font = 0;
o->cur.size = size;
o->engine_data = evas_font_load(obj->layer->evas, o->cur.font, o->cur.source,
(int)(((double)o->cur.size) * obj->cur.scale));
- if (o->engine_data)
+ evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
+ if ((o->engine_data) && (o->cur.text))
{
- o->ascent = ENFN->font_ascent_get(ENDT, o->engine_data);
- o->descent = ENFN->font_descent_get(ENDT, o->engine_data);
- o->max_ascent = ENFN->font_max_ascent_get(ENDT, o->engine_data);
- o->max_descent = ENFN->font_max_descent_get(ENDT, o->engine_data);
+ int w, h;
+
+ o->ascent = ENFN->font_ascent_get(ENDT, o->engine_data);
+ ENFN->font_string_size_get(ENDT,
+ o->engine_data,
+ o->cur.text, &o->cur.intl_props,
+ &w, &h);
+ o->ascent = ENFN->font_ascent_get(ENDT, o->engine_data);
+ o->descent = ENFN->font_descent_get(ENDT, o->engine_data);
+ o->max_ascent = ENFN->font_max_ascent_get(ENDT, o->engine_data);
+ o->max_descent = ENFN->font_max_descent_get(ENDT, o->engine_data);
+ obj->cur.geometry.w = w + l + r;
+ obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
+//// obj->cur.cache.geometry.validity = 0;
}
else
{
- o->ascent = 0;
- o->descent = 0;
- o->max_ascent = 0;
- o->max_descent = 0;
+ if (o->engine_data)
+ {
+ o->ascent = ENFN->font_ascent_get(ENDT, o->engine_data);
+ o->descent = ENFN->font_descent_get(ENDT, o->engine_data);
+ o->max_ascent = ENFN->font_max_ascent_get(ENDT, o->engine_data);
+ o->max_descent = ENFN->font_max_descent_get(ENDT, o->engine_data);
+ }
+ else
+ {
+ o->ascent = 0;
+ o->descent = 0;
+ o->max_ascent = 0;
+ o->max_descent = 0;
+ }
+ obj->cur.geometry.w = 0;
+ obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
+//// obj->cur.cache.geometry.validity = 0;
}
- _evas_object_text_recalc(obj);
o->changed = 1;
evas_object_change(obj);
evas_object_clip_dirty(obj);
if (size) *size = o->cur.size;
}
-
-/**
- * @internal
- * Create a new text layout item from the string and the format.
- *
- * @param c the context to work on - Not NULL.
- * @param fmt the format to use.
- * @param str the string to use.
- */
-static Evas_Object_Text_Item *
-_evas_object_text_item_new(Evas_Object *obj, Evas_Object_Text *o,
- const Eina_Unicode *str,
- size_t pos, size_t visual_pos, size_t len)
-{
- Evas_Object_Text_Item *it;
-
- it = calloc(1, sizeof(Evas_Object_Text_Item));
- it->text = calloc(sizeof(Eina_Unicode), len + 1);
- it->text_pos = pos;
- it->visual_pos = visual_pos;
- eina_unicode_strncpy(it->text, str + pos, len);
- evas_common_text_props_bidi_set(&it->text_props, o->bidi_par_props,
- it->text_pos);
- evas_common_text_props_script_set(&it->text_props, it->text);
- if (o->engine_data)
- {
- ENFN->font_text_props_info_create(ENDT,
- o->engine_data, it->text, &it->text_props,
- o->bidi_par_props, it->text_pos, len);
- ENFN->font_string_size_get(ENDT,
- o->engine_data,
- it->text, &it->text_props,
- &it->w, &it->h);
- it->adv = ENFN->font_h_advance_get(ENDT, o->engine_data, it->text,
- &it->text_props);
- }
- o->items = (Evas_Object_Text_Item *)
- eina_inlist_append(EINA_INLIST_GET(o->items), EINA_INLIST_GET(it));
- return it;
-}
-
-/**
- * @internal
- * Orders o->items according to the visual position.
- *
- * @param obj the evas object
- * @param o the text object
- */
-static void
-_evas_object_text_item_order(Evas_Object *obj, Evas_Object_Text *o)
-{
- (void) obj;
-#ifdef BIDI_SUPPORT
- /*FIXME: not very efficient, sort the items arrays. */
- /* Reorder if it's a bidi text */
- if (o->bidi_par_props)
- {
- Evas_Object_Text_Item *i, *j, *min;
- i = o->items;
- while (i)
- {
- min = i;
- EINA_INLIST_FOREACH(i, j)
- {
- if (j->visual_pos < min->visual_pos)
- {
- min = j;
- }
- }
- if (min != i)
- {
- o->items = (Evas_Object_Text_Item *) eina_inlist_remove(EINA_INLIST_GET(o->items), EINA_INLIST_GET(min));
- o->items = (Evas_Object_Text_Item *) eina_inlist_prepend_relative(EINA_INLIST_GET(o->items), EINA_INLIST_GET(min), EINA_INLIST_GET(i));
- }
-
- i = (Evas_Object_Text_Item *) EINA_INLIST_GET(min)->next;
- }
- }
-#endif
-
- /* calculate the positions according to the order. */
- {
- Evas_Object_Text_Item *it = o->items;
- Evas_Coord x = 0;
-
- while (it)
- {
- it->x = x;
- x += it->adv;
- it = (Evas_Object_Text_Item *) EINA_INLIST_GET(it)->next;
- }
- }
-}
-
-/**
- * @internal
- * Populates o->items with the items of the text according to text
- *
- * @param obj the evas object
- * @param o the text object
- * @param text the text to layout
- */
-static void
-_evas_object_text_layout(Evas_Object *obj, Evas_Object_Text *o, const Eina_Unicode *text)
-{
- EvasBiDiStrIndex *v_to_l = NULL;
- size_t pos, visual_pos;
- int cutoff;
- int len = eina_unicode_strlen(text);
-#ifdef BIDI_SUPPORT
- evas_bidi_paragraph_props_unref(o->bidi_par_props);
- o->bidi_par_props = evas_bidi_paragraph_props_get(text);
- evas_bidi_props_reorder_line(NULL, 0, len, o->bidi_par_props, &v_to_l);
-#endif
- visual_pos = pos = 0;
-
- do
- {
- cutoff = evas_common_language_script_end_of_run_get(
- text + pos,
- o->bidi_par_props,
- pos, len - pos);
- if (cutoff > 0)
- {
-#ifdef BIDI_SUPPORT
- visual_pos = evas_bidi_position_logical_to_visual(
- v_to_l, len, pos);
-#else
- visual_pos = pos;
-#endif
- _evas_object_text_item_new(obj, o, text, pos, visual_pos, cutoff);
- pos += cutoff;
- }
- }
- while (cutoff > 0);
-#ifdef BIDI_SUPPORT
- visual_pos = evas_bidi_position_logical_to_visual(
- v_to_l, len, pos);
-#else
- visual_pos = pos;
-#endif
- _evas_object_text_item_new(obj, o, text, pos, visual_pos, len - pos);
-
- _evas_object_text_item_order(obj, o);
-
- if (v_to_l) free(v_to_l);
-}
-
-
/**
* Sets the text to be displayed by the given evas text object.
* @param obj Evas text object.
return;
MAGIC_CHECK_END();
- if ((o->cur.utf8_text) && (_text) && (!strcmp(o->cur.utf8_text, _text)))
- return;
- text = eina_unicode_utf8_to_unicode(_text, &len);
+ text = evas_common_encoding_utf8_to_unicode(_text, &len);
if (!text) text = eina_unicode_strdup(EINA_UNICODE_EMPTY_STRING);
+ if ((o->cur.text) && (text) && (!eina_unicode_strcmp(o->cur.text, text)))
+ {
+ free(text);
+ return;
+ }
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
/* DO II */
- /*Update bidi_props*/
-
- if (o->items) _evas_object_text_items_clear(o);
+ /*Update intl_props*/
+#ifdef BIDI_SUPPORT
+ evas_bidi_paragraph_props_unref(o->cur.intl_props.props);
+ o->cur.intl_props.props = evas_bidi_paragraph_props_get(text);
+ evas_bidi_shape_string(text, &o->cur.intl_props, len);
+#endif
+ if (o->cur.text) eina_ustringshare_del(o->cur.text);
+ if (o->cur.utf8_text) eina_stringshare_del(o->cur.utf8_text);
if ((text) && (*text))
{
- _evas_object_text_layout(obj, o, text);
- eina_stringshare_replace(&o->cur.utf8_text, _text);
- o->prev.utf8_text = NULL;
- }
+ o->cur.text = eina_ustringshare_add(text);
+ o->cur.utf8_text = eina_stringshare_add(_text);
+ }
else
{
- eina_stringshare_replace(&o->cur.utf8_text, NULL);
+ o->cur.text = NULL;
+ o->cur.utf8_text = NULL;
}
- if (text)
+
+ o->prev.text = NULL;
+
+ if ((o->engine_data) && (o->cur.text))
{
- free(text);
- text = NULL;
+ int w, h;
+ int l = 0, r = 0, t = 0, b = 0;
+
+ ENFN->font_string_size_get(ENDT,
+ o->engine_data,
+ o->cur.text, &o->cur.intl_props,
+ &w, &h);
+ evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
+ obj->cur.geometry.w = w + l + r;
+ obj->cur.geometry.h = h + t + b;
+//// obj->cur.cache.geometry.validity = 0;
+ }
+ else
+ {
+ int t = 0, b = 0;
+
+ evas_text_style_pad_get(o->cur.style, NULL, NULL, &t, &b);
+ obj->cur.geometry.w = 0;
+ obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
+//// obj->cur.cache.geometry.validity = 0;
}
- _evas_object_text_recalc(obj);
o->changed = 1;
evas_object_change(obj);
evas_object_clip_dirty(obj);
}
/**
- * Retrieves the direction of the text currently being displayed in the
- * text object.
- * @param obj The given evas text object.
- * @return the direction of the text
- */
-EAPI Evas_BiDi_Direction
-evas_object_text_direction_get(const Evas_Object *obj)
-{
- Evas_Object_Text *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EVAS_BIDI_DIRECTION_NATURAL;
- MAGIC_CHECK_END();
- o = (Evas_Object_Text *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
- return EVAS_BIDI_DIRECTION_NATURAL;
- MAGIC_CHECK_END();
- if (o->items)
- {
- return o->items->text_props.bidi.dir;
- }
- return EVAS_BIDI_DIRECTION_NATURAL;
-}
-
-/**
* To be documented.
*
* FIXME: To be fixed.
return 0;
MAGIC_CHECK_END();
if (!o->engine_data) return 0;
- if (!o->items) return 0;
- return ENFN->font_inset_get(ENDT, o->engine_data, &o->items->text_props);
+ if (!o->cur.text) return 0;
+ return ENFN->font_inset_get(ENDT, o->engine_data, o->cur.text);
}
/**
return 0;
MAGIC_CHECK_END();
if (!o->engine_data) return 0;
- if (!o->items) return 0;
- return _evas_object_text_horiz_advance_get(obj, o);
+ if (!o->cur.text) return 0;
+ return ENFN->font_h_advance_get(ENDT, o->engine_data, o->cur.text, &o->cur.intl_props);
}
/**
return 0;
MAGIC_CHECK_END();
if (!o->engine_data) return 0;
- if (!o->items) return o->ascent + o->descent;
- return _evas_object_text_vert_advance_get(obj, o);
+ if (!o->cur.text) return o->ascent + o->descent;
+ return ENFN->font_v_advance_get(ENDT, o->engine_data, o->cur.text, &o->cur.intl_props);
}
/**
return EINA_FALSE;
MAGIC_CHECK_END();
if (!o->engine_data) return EINA_FALSE;
- if (!o->items || (pos < 0)) return EINA_FALSE;
- ret = _evas_object_text_char_coords_get(obj, o, (size_t) pos,
- &x, &y, &w, &h);
+ if (!o->cur.text) return EINA_FALSE;
+ ret = ENFN->font_char_coords_get(ENDT, o->engine_data, o->cur.text, &o->cur.intl_props,
+ pos, &x, &y, &w, &h);
evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
y += o->max_ascent - t;
x -= l;
return -1;
MAGIC_CHECK_END();
if (!o->engine_data) return -1;
- if (!o->items) return -1;
- return _evas_object_text_last_up_to_pos(obj, o, x, y - o->max_ascent);
+ if (!o->cur.text) return -1;
+ return ENFN->font_last_up_to_pos(ENDT,
+ o->engine_data,
+ o->cur.text, &o->cur.intl_props,
+ x,
+ y - o->max_ascent);
}
/**
return -1;
MAGIC_CHECK_END();
if (!o->engine_data) return -1;
- if (!o->items) return -1;
- ret = _evas_object_text_char_at_coords(obj, o, x, y - o->max_ascent,
- &rx, &ry, &rw, &rh);
+ if (!o->cur.text) return -1;
+ ret = ENFN->font_char_at_coords_get(ENDT,
+ o->engine_data,
+ o->cur.text, &o->cur.intl_props,
+ x,
+ y - o->max_ascent,
+ &rx, &ry,
+ &rw, &rh);
evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
ry += o->max_ascent - t;
rx -= l;
evas_text_style_pad_get(o->cur.style, &pl, &pr, &pt, &pb);
o->cur.style = style;
evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
- if (o->items)
+ if (o->cur.text)
obj->cur.geometry.w += (l - pl) + (r - pr);
else
obj->cur.geometry.w = 0;
if (decoded) *decoded = 0;
if ((!str) || (pos < 0)) return 0;
p = pos;
- d = eina_unicode_utf8_get_next(str, &p);
+ d = evas_common_encoding_utf8_get_next(str, &p);
if (decoded) *decoded = d;
return p;
}
if (decoded) *decoded = 0;
if ((!str) || (pos < 1)) return 0;
p = pos;
- d = eina_unicode_utf8_get_prev(str, &p);
+ d = evas_common_encoding_utf8_get_prev(str, &p);
if (decoded) *decoded = d;
return p;
}
evas_string_char_len_get(const char *str)
{
if (!str) return 0;
- return eina_unicode_utf8_get_len(str);
+ return evas_common_encoding_utf8_get_len(str);
}
/**
o->magic = MAGIC_OBJ_TEXT;
o->prev = o->cur;
#ifdef BIDI_SUPPORT
- o->bidi_par_props = evas_bidi_paragraph_props_new();
+ o->cur.intl_props.props = evas_bidi_paragraph_props_new();
#endif
return o;
}
return;
MAGIC_CHECK_END();
/* free obj */
- if (o->items) _evas_object_text_items_clear(o);
+ if (o->cur.text) eina_ustringshare_del(o->cur.text);
if (o->cur.utf8_text) eina_stringshare_del(o->cur.utf8_text);
if (o->cur.font) eina_stringshare_del(o->cur.font);
if (o->cur.source) eina_stringshare_del(o->cur.source);
if (o->engine_data) evas_font_free(obj->layer->evas, o->engine_data);
#ifdef BIDI_SUPPORT
- evas_bidi_paragraph_props_unref(o->bidi_par_props);
+ evas_bidi_props_clean(&o->cur.intl_props);
#endif
o->magic = 0;
EVAS_MEMPOOL_FREE(_mp_obj, o);
{
int i, j;
Evas_Object_Text *o;
- Evas_Object_Text_Item *it;
const char vals[5][5] =
{
{0, 1, 2, 1, 0},
(((int)object->sub.col.a) * (amul)) / 255);
#define DRAW_TEXT(ox, oy) \
- if ((o->engine_data) && (it->text)) \
+ if ((o->engine_data) && (o->cur.text)) \
ENFN->font_draw(output, \
context, \
surface, \
o->engine_data, \
- obj->cur.geometry.x + x + sl + ox + it->x, \
+ obj->cur.geometry.x + x + sl + ox, \
obj->cur.geometry.y + y + st + oy + \
(int) \
(((o->max_ascent * obj->cur.geometry.h) / obj->cur.geometry.h) - 0.5), \
obj->cur.geometry.h, \
obj->cur.geometry.w, \
obj->cur.geometry.h, \
- it->text, &it->text_props);
- EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it)
+ o->cur.text, &o->cur.intl_props);
+#if 0
+#define DRAW_TEXT(ox, oy) \
+ if ((o->engine_data) && (o->cur.text)) \
+ ENFN->font_draw(output, \
+ context, \
+ surface, \
+ o->engine_data, \
+ obj->cur.cache.geometry.x + x + sl + ox, \
+ obj->cur.cache.geometry.y + y + st + oy + \
+ (int) \
+ (((o->max_ascent * obj->cur.cache.geometry.h) / obj->cur.geometry.h) - 0.5), \
+ obj->cur.cache.geometry.w, \
+ obj->cur.cache.geometry.h, \
+ obj->cur.geometry.w, \
+ obj->cur.geometry.h, \
+ o->cur.text, &o->cur.intl_props);
+#endif
+ /* shadows */
+ if (o->cur.style == EVAS_TEXT_STYLE_SHADOW)
{
- /* shadows */
- if (o->cur.style == EVAS_TEXT_STYLE_SHADOW)
- {
- COLOR_SET(o, cur, shadow);
- DRAW_TEXT(1, 1);
- }
- else if ((o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
- (o->cur.style == EVAS_TEXT_STYLE_FAR_SHADOW))
- {
- COLOR_SET(o, cur, shadow);
- DRAW_TEXT(2, 2);
- }
- else if ((o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW) ||
- (o->cur.style == EVAS_TEXT_STYLE_FAR_SOFT_SHADOW))
- {
- for (j = 0; j < 5; j++)
- {
- for (i = 0; i < 5; i++)
- {
- if (vals[i][j] != 0)
- {
- COLOR_SET_AMUL(o, cur, shadow, vals[i][j] * 50);
- DRAW_TEXT(i, j);
- }
- }
- }
- }
- else if (o->cur.style == EVAS_TEXT_STYLE_SOFT_SHADOW)
- {
- for (j = 0; j < 5; j++)
- {
- for (i = 0; i < 5; i++)
- {
- if (vals[i][j] != 0)
- {
- COLOR_SET_AMUL(o, cur, shadow, vals[i][j] * 50);
- DRAW_TEXT(i - 1, j - 1);
- }
- }
- }
- }
-
- /* glows */
- if (o->cur.style == EVAS_TEXT_STYLE_GLOW)
- {
- for (j = 0; j < 5; j++)
- {
- for (i = 0; i < 5; i++)
- {
- if (vals[i][j] != 0)
- {
- COLOR_SET_AMUL(o, cur, glow, vals[i][j] * 50);
- DRAW_TEXT(i - 2, j - 2);
- }
- }
- }
- COLOR_SET(o, cur, glow2);
- DRAW_TEXT(-1, 0);
- DRAW_TEXT(1, 0);
- DRAW_TEXT(0, -1);
- DRAW_TEXT(0, 1);
- }
-
- /* outlines */
- if ((o->cur.style == EVAS_TEXT_STYLE_OUTLINE) ||
- (o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
- (o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW))
- {
- COLOR_SET(o, cur, outline);
- DRAW_TEXT(-1, 0);
- DRAW_TEXT(1, 0);
- DRAW_TEXT(0, -1);
- DRAW_TEXT(0, 1);
- }
- else if (o->cur.style == EVAS_TEXT_STYLE_SOFT_OUTLINE)
- {
- for (j = 0; j < 5; j++)
- {
- for (i = 0; i < 5; i++)
- {
- if (((i != 2) || (j != 2)) && (vals[i][j] != 0))
- {
- COLOR_SET_AMUL(o, cur, outline, vals[i][j] * 50);
- DRAW_TEXT(i - 2, j - 2);
- }
- }
- }
- }
-
- /* normal text */
- COLOR_ONLY_SET(obj, cur.cache, clip);
- DRAW_TEXT(0, 0);
+ COLOR_SET(o, cur, shadow);
+ DRAW_TEXT(1, 1);
}
+ else if ((o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
+ (o->cur.style == EVAS_TEXT_STYLE_FAR_SHADOW))
+ {
+ COLOR_SET(o, cur, shadow);
+ DRAW_TEXT(2, 2);
+ }
+ else if ((o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW) ||
+ (o->cur.style == EVAS_TEXT_STYLE_FAR_SOFT_SHADOW))
+ {
+ for (j = 0; j < 5; j++)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (vals[i][j] != 0)
+ {
+ COLOR_SET_AMUL(o, cur, shadow, vals[i][j] * 50);
+ DRAW_TEXT(i, j);
+ }
+ }
+ }
+ }
+ else if (o->cur.style == EVAS_TEXT_STYLE_SOFT_SHADOW)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (vals[i][j] != 0)
+ {
+ COLOR_SET_AMUL(o, cur, shadow, vals[i][j] * 50);
+ DRAW_TEXT(i - 1, j - 1);
+ }
+ }
+ }
+ }
+
+ /* glows */
+ if (o->cur.style == EVAS_TEXT_STYLE_GLOW)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (vals[i][j] != 0)
+ {
+ COLOR_SET_AMUL(o, cur, glow, vals[i][j] * 50);
+ DRAW_TEXT(i - 2, j - 2);
+ }
+ }
+ }
+ COLOR_SET(o, cur, glow2);
+ DRAW_TEXT(-1, 0);
+ DRAW_TEXT(1, 0);
+ DRAW_TEXT(0, -1);
+ DRAW_TEXT(0, 1);
+ }
+
+ /* outlines */
+ if ((o->cur.style == EVAS_TEXT_STYLE_OUTLINE) ||
+ (o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
+ (o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW))
+ {
+ COLOR_SET(o, cur, outline);
+ DRAW_TEXT(-1, 0);
+ DRAW_TEXT(1, 0);
+ DRAW_TEXT(0, -1);
+ DRAW_TEXT(0, 1);
+ }
+ else if (o->cur.style == EVAS_TEXT_STYLE_SOFT_OUTLINE)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (((i != 2) || (j != 2)) && (vals[i][j] != 0))
+ {
+ COLOR_SET_AMUL(o, cur, outline, vals[i][j] * 50);
+ DRAW_TEXT(i - 2, j - 2);
+ }
+ }
+ }
+ }
+
+ /* normal text */
+ COLOR_ONLY_SET(obj, cur.cache, clip);
+ DRAW_TEXT(0, 0);
}
static void
if (o->changed)
{
if ((o->cur.size != o->prev.size) ||
- ((o->cur.font != o->prev.font)) ||
- ((o->cur.utf8_text != o->prev.utf8_text)) ||
+ ((o->cur.font) && (o->prev.font) &&
+ (strcmp(o->cur.font, o->prev.font))) ||
+ ((o->cur.font) && (!o->prev.font)) ||
+ ((!o->cur.font) && (o->prev.font)) ||
+ ((o->cur.text) && (o->prev.text) &&
+ (eina_unicode_strcmp(o->cur.text, o->prev.text))) ||
+ ((o->cur.text) && (!o->prev.text)) ||
+ ((!o->cur.text) && (o->prev.text)) ||
((o->cur.style != o->prev.style)) ||
((o->cur.shadow.r != o->prev.shadow.r)) ||
((o->cur.shadow.g != o->prev.shadow.g)) ||
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
/* DO II */
- _evas_object_text_recalc(obj);
- o->changed = 1;
- evas_object_change(obj);
- evas_object_clip_dirty(obj);
- evas_object_coords_recalc(obj);
- is = evas_object_is_in_output_rect(obj,
- obj->layer->evas->pointer.x,
- obj->layer->evas->pointer.y, 1, 1);
- if ((is || was) && obj->cur.visible)
- evas_event_feed_mouse_move(obj->layer->evas,
- obj->layer->evas->pointer.x,
- obj->layer->evas->pointer.y,
- obj->layer->evas->last_timestamp,
- NULL);
- evas_object_inform_call_resize(obj);
-}
-
-static void
-_evas_object_text_recalc(Evas_Object *obj)
-{
- Evas_Object_Text *o;
- Eina_Unicode *text = NULL;
- o = (Evas_Object_Text *)(obj->object_data);
-
- if (o->items) _evas_object_text_items_clear(o);
- if (o->cur.utf8_text)
- text = eina_unicode_utf8_to_unicode(o->cur.utf8_text,
- NULL);
-
- if (!text) text = eina_unicode_strdup(EINA_UNICODE_EMPTY_STRING);
-
- _evas_object_text_layout(obj, o, text);
-
- if (text) free(text);
-
- if ((o->engine_data) && (o->items))
+ o->prev.text = NULL;
+ if ((o->engine_data) && (o->cur.text))
{
int w, h;
int l = 0, r = 0, t = 0, b = 0;
- _evas_object_text_string_size_get(obj, o, &w, &h);
+ ENFN->font_string_size_get(ENDT,
+ o->engine_data,
+ o->cur.text, &o->cur.intl_props,
+ &w, &h);
evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
obj->cur.geometry.w = w + l + r;
- obj->cur.geometry.h = h + t + b;
-//// obj->cur.cache.geometry.validity = 0;
+ obj->cur.geometry.h = h + t + b;
+//// obj->cur.cache.geometry.validity = 0;
}
else
{
evas_text_style_pad_get(o->cur.style, NULL, NULL, &t, &b);
obj->cur.geometry.w = 0;
- obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
-//// obj->cur.cache.geometry.validity = 0;
+ obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
+//// obj->cur.cache.geometry.validity = 0;
}
+ o->changed = 1;
+ evas_object_change(obj);
+ evas_object_clip_dirty(obj);
+ evas_object_coords_recalc(obj);
+ is = evas_object_is_in_output_rect(obj,
+ obj->layer->evas->pointer.x,
+ obj->layer->evas->pointer.y, 1, 1);
+ if ((is || was) && obj->cur.visible)
+ evas_event_feed_mouse_move(obj->layer->evas,
+ obj->layer->evas->pointer.x,
+ obj->layer->evas->pointer.y,
+ obj->layer->evas->last_timestamp,
+ NULL);
+ evas_object_inform_call_resize(obj);
}
-
* @subsection textblock_layout The layout system
* @todo write @ref textblock_layout
*/
-#include <stdlib.h>
-
#include "evas_common.h"
#include "evas_private.h"
typedef struct _Evas_Object_Textblock_Item Evas_Object_Textblock_Item;
/**
* @internal
- * @typedef Evas_Object_Textblock_Item
- * A layouting text item.
- */
-typedef struct _Evas_Object_Textblock_Text_Item Evas_Object_Textblock_Text_Item;
-/**
- * @internal
* @typedef Evas_Object_Textblock_Format_Item
* A layouting format item.
*/
char *utf8;
Evas_Object_Textblock_Node_Format *format_node;
Evas_BiDi_Paragraph_Props *bidi_props;
- Eina_Bool dirty : 1;
};
struct _Evas_Object_Textblock_Node_Format
* A convinience macro for casting to a format node.
*/
#define _NODE_FORMAT(x) ((Evas_Object_Textblock_Node_Format *) (x))
-/**
- * @internal
- * @def _ITEM(x)
- * A convinience macro for casting to a generic item.
- */
-#define _ITEM(x) ((Evas_Object_Textblock_Item *) (x))
-/**
- * @internal
- * @def _ITEM_TEXT(x)
- * A convinience macro for casting to a text item.
- */
-#define _ITEM_TEXT(x) ((Evas_Object_Textblock_Text_Item *) (x))
-/**
- * @internal
- * @def _ITEM_FORMAT(x)
- * A convinience macro for casting to a format item.
- */
-#define _ITEM_FORMAT(x) ((Evas_Object_Textblock_Format_Item *) (x))
struct _Evas_Object_Textblock_Paragraph
{
EINA_INLIST;
Evas_Object_Textblock_Line *lines;
- Evas_Object_Textblock_Node_Text *text_node;
- Eina_List *logical_items;
int x, y, w, h;
- int line_no;
+ int par_no;
};
struct _Evas_Object_Textblock_Line
{
EINA_INLIST;
Evas_Object_Textblock_Item *items;
- Evas_Object_Textblock_Paragraph *par;
- Evas_Object_Textblock_Text_Item *ellip_ti;
+ Evas_Object_Textblock_Format_Item *format_items;
int x, y, w, h;
int baseline;
int line_no;
};
-typedef enum _Evas_Textblock_Item_Type
-{
- EVAS_TEXTBLOCK_ITEM_TEXT,
- EVAS_TEXTBLOCK_ITEM_FORMAT,
-} Evas_Textblock_Item_Type;
-
struct _Evas_Object_Textblock_Item
{
EINA_INLIST;
- Evas_Textblock_Item_Type type;
- Evas_Object_Textblock_Node_Text *text_node;
- Evas_Object_Textblock_Format *format;
- size_t text_pos;
-#ifdef BIDI_SUPPORT
- size_t visual_pos;
-#endif
- Evas_Coord adv, x, w, h;
- Eina_Bool merge : 1; /* Indicates whether this
- item should merge to the
- previous item or not */
- Eina_Bool visually_deleted : 1;
- /* Indicates whether this
- item is used in the visual
- layout or not. */
-};
-
-struct _Evas_Object_Textblock_Text_Item
-{
- Evas_Object_Textblock_Item parent;
Eina_Unicode *text;
- Evas_Text_Props text_props;
+ Evas_Object_Textblock_Format *format;
+ Evas_Object_Textblock_Node_Text *source_node;
+ int x, w, h;
int inset, baseline;
+ size_t source_pos;
+ Evas_BiDi_Props bidi_props;
};
struct _Evas_Object_Textblock_Format_Item
{
- Evas_Object_Textblock_Item parent;
- Evas_BiDi_Direction bidi_dir;
+ EINA_INLIST;
const char *item;
Evas_Object_Textblock_Node_Format *source_node;
- int y, ascent, descent;
+ int x, w, h, y, ascent, descent;
unsigned char vsize : 2;
unsigned char size : 2;
unsigned char formatme : 1;
+ unsigned char ___padding___ : 3;
};
struct _Evas_Object_Textblock_Format
int linegap;
double linerelgap;
double linefill;
- double ellipsis;
unsigned char style;
unsigned char wrap_word : 1;
unsigned char wrap_char : 1;
- unsigned char wrap_mixed : 1;
unsigned char underline : 1;
unsigned char underline2 : 1;
unsigned char strikethrough : 1;
struct _Evas_Textblock_Style
{
- const char *style_text;
+ char *style_text;
char *default_tag;
Evas_Object_Style_Tag *tags;
Eina_List *objects;
} formatted, native;
unsigned char redraw : 1;
unsigned char changed : 1;
- unsigned char content_changed : 1;
- Eina_Bool newline_is_ps : 1;
};
/* private methods for textblock objects */
static void _evas_textblock_node_format_remove(Evas_Object_Textblock *o, Evas_Object_Textblock_Node_Format *n, int visual_adjustment);
static void _evas_textblock_node_format_free(Evas_Object_Textblock_Node_Format *n);
static void _evas_textblock_node_text_free(Evas_Object_Textblock_Node_Text *n);
-static void _evas_textblock_text_node_changed(Evas_Object_Textblock *o, Evas_Object *obj, Evas_Object_Textblock_Node_Text *n);
+static void _evas_textblock_changed(Evas_Object_Textblock *o, Evas_Object *obj);
static void _evas_textblock_cursors_update_offset(const Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Text *n, size_t start, int offset);
static void _evas_textblock_cursors_set_node(Evas_Object_Textblock *o, const Evas_Object_Textblock_Node_Text *n, Evas_Object_Textblock_Node_Text *new_node);
/* styles */
/**
* @internal
- * Clears the textblock style passed except for the style_text which is replaced.
+ * Clears the textblock style passed.
* @param ts The ts to be cleared. Must not be NULL.
- * @param style_text the style's text.
*/
static void
-_style_replace(Evas_Textblock_Style *ts, const char *style_text)
+_style_clear(Evas_Textblock_Style *ts)
{
- eina_stringshare_replace(&ts->style_text, style_text);
+ if (ts->style_text) free(ts->style_text);
if (ts->default_tag) free(ts->default_tag);
while (ts->tags)
{
free(tag->replace);
free(tag);
}
+ ts->style_text = NULL;
ts->default_tag = NULL;
ts->tags = NULL;
}
/**
* @internal
- * Clears the textblock style passed.
- * @param ts The ts to be cleared. Must not be NULL.
- */
-static void
-_style_clear(Evas_Textblock_Style *ts)
-{
- _style_replace(ts, NULL);
-}
-
-/**
- * @internal
* Searches inside the tags stored in the style for the tag who's
* replacement is s of size replace_len;
* @param ts The ts to be cleared. Must not be NULL.
Evas_Object_Textblock_Node_Text *n;
n = o->text_nodes;
- o->text_nodes = _NODE_TEXT(eina_inlist_remove(
- EINA_INLIST_GET(o->text_nodes), EINA_INLIST_GET(n)));
- _evas_textblock_node_text_free(n);
+ _evas_textblock_node_text_remove(o, n);
}
while (o->format_nodes)
{
/**
* @internal
- * Free a layout item
+ * Free a layout line.
* @param obj The evas object, must not be NULL.
- * @param ln the layout line on which the item is in, must not be NULL.
- * @param it the layout item to be freed
+ * @param ln the layout line to be freed, must not be NULL.
*/
static void
-_item_free(const Evas_Object *obj, Evas_Object_Textblock_Line *ln, Evas_Object_Textblock_Item *it)
+_line_free(const Evas_Object *obj, Evas_Object_Textblock_Line *ln)
{
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
+ while (ln->items)
{
- Evas_Object_Textblock_Text_Item *ti = _ITEM_TEXT(it);
+ Evas_Object_Textblock_Item *it;
- evas_common_text_props_content_unref(&ti->text_props);
- if (ti->text) free(ti->text);
+ it = (Evas_Object_Textblock_Item *)ln->items;
+ ln->items = (Evas_Object_Textblock_Item *)eina_inlist_remove(EINA_INLIST_GET(ln->items), EINA_INLIST_GET(ln->items));
+ if (it->text) free(it->text);
+ _format_unref_free(obj, it->format);
+ free(it);
}
- else
+ while (ln->format_items)
{
- Evas_Object_Textblock_Format_Item *fi = _ITEM_FORMAT(it);
+ Evas_Object_Textblock_Format_Item *fi;
+ fi = (Evas_Object_Textblock_Format_Item *)ln->format_items;
+ ln->format_items = (Evas_Object_Textblock_Format_Item *)eina_inlist_remove(EINA_INLIST_GET(ln->format_items),
+ EINA_INLIST_GET(ln->format_items));
if (fi->item) eina_stringshare_del(fi->item);
+ free(fi);
}
- _format_unref_free(obj, it->format);
- if (ln)
- {
- ln->items = (Evas_Object_Textblock_Item *) eina_inlist_remove(
- EINA_INLIST_GET(ln->items), EINA_INLIST_GET(ln->items));
- }
- free(it);
-}
-
-/**
- * @internal
- * Free a layout line.
- * @param obj The evas object, must not be NULL.
- * @param ln the layout line to be freed, must not be NULL.
- */
-static void
-_line_free(const Evas_Object *obj, Evas_Object_Textblock_Line *ln)
-{
- /* Items are freed from the logical list, except for the ellip item */
- if (ln->ellip_ti) _item_free(obj, NULL, _ITEM(ln->ellip_ti));
if (ln) free(ln);
}
static const char *linerelgapstr = NULL;
static const char *itemstr = NULL;
static const char *linefillstr = NULL;
-static const char *ellipsisstr = NULL;
static const char *passwordstr = NULL;
/**
linerelgapstr = eina_stringshare_add("linerelgap");
itemstr = eina_stringshare_add("item");
linefillstr = eina_stringshare_add("linefill");
- ellipsisstr = eina_stringshare_add("ellipsis");
passwordstr = eina_stringshare_add("password");
}
format_refcount++;
eina_stringshare_del(linerelgapstr);
eina_stringshare_del(itemstr);
eina_stringshare_del(linefillstr);
- eina_stringshare_del(ellipsisstr);
eina_stringshare_del(passwordstr);
}
if (!strcmp(tmp_param, "word"))
{
fmt->wrap_word = 1;
- fmt->wrap_char = fmt->wrap_mixed = 0;
+ fmt->wrap_char = 0;
}
else if (!strcmp(tmp_param, "char"))
{
- fmt->wrap_word = fmt->wrap_mixed = 0;
+ fmt->wrap_word = 0;
fmt->wrap_char = 1;
}
- else if (!strcmp(tmp_param, "mixed"))
- {
- fmt->wrap_word = fmt->wrap_char = 0;
- fmt->wrap_mixed = 1;
- }
else
{
- fmt->wrap_word = fmt->wrap_mixed = fmt->wrap_char = 0;
+ fmt->wrap_word = 0;
+ fmt->wrap_char = 0;
}
}
else if (cmd == left_marginstr)
}
}
}
- else if (cmd == ellipsisstr)
- {
- char *endptr = NULL;
- fmt->ellipsis = strtod(tmp_param, &endptr);
- if ((fmt->ellipsis < 0.0) || (fmt->ellipsis > 1.0))
- fmt->ellipsis = -1.0;
- }
else if (cmd == passwordstr)
{
if (!strcmp(tmp_param, "off"))
Eina_Bool align_auto;
};
-static void _layout_text_add_logical_item(Ctxt *c, Evas_Object_Textblock_Text_Item *ti, Eina_List *rel);
-static void _text_item_update_sizes(Ctxt *c, Evas_Object_Textblock_Text_Item *ti);
/**
* @internal
* Adjust the ascent/descent of the format and context.
c->x = 0;
c->maxascent = c->maxdescent = 0;
c->ln->line_no = -1;
- c->ln->par = c->par;
_layout_format_ascent_descent_adjust(c, fmt);
}
* @param c The context to work on - Not NULL.
*/
static void
-_layout_paragraph_new(Ctxt *c, Evas_Object_Textblock_Node_Text *n)
+_layout_paragraph_new(Ctxt *c)
{
c->par = calloc(1, sizeof(Evas_Object_Textblock_Paragraph));
c->paragraphs = (Evas_Object_Textblock_Paragraph *)eina_inlist_append(EINA_INLIST_GET(c->paragraphs), EINA_INLIST_GET(c->par));
- c->ln = NULL;
- c->par->text_node = n;
- c->par->line_no = -1;
+ c->x = 0;
+ c->par->par_no= -1;
}
/**
* @internal
- * Free the visual lines in the paragraph (logical items are kept)
+ * Free the layout paragraph and all of it's lines.
*/
static void
-_paragraph_clear(const Evas_Object *obj, Evas_Object_Textblock_Paragraph *par)
+_paragraph_free(const Evas_Object *obj, Evas_Object_Textblock_Paragraph *par)
{
while (par->lines)
{
par->lines = (Evas_Object_Textblock_Line *)eina_inlist_remove(EINA_INLIST_GET(par->lines), EINA_INLIST_GET(par->lines));
_line_free(obj, ln);
}
- par->line_no = -1;
-}
-
-/**
- * @internal
- * Free the layout paragraph and all of it's lines and logical items.
- */
-static void
-_paragraph_free(const Evas_Object *obj, Evas_Object_Textblock_Paragraph *par)
-{
- _paragraph_clear(obj, par);
-
- {
- Eina_List *i, *i_prev;
- Evas_Object_Textblock_Item *it;
- EINA_LIST_FOREACH_SAFE(par->logical_items, i, i_prev, it)
- {
- _item_free(obj, NULL, it);
- }
- eina_list_free(par->logical_items);
- }
free(par);
}
_paragraphs_clear(const Evas_Object *obj, Evas_Object_Textblock_Paragraph *pars)
{
Evas_Object_Textblock *o;
- Evas_Object_Textblock_Paragraph *par;
- o = (Evas_Object_Textblock *)(obj->object_data);
-
- EINA_INLIST_FOREACH(EINA_INLIST_GET(pars), par)
- {
- _paragraph_clear(obj, par);
- }
-}
-
-/**
- * @internal
- * Free the paragraphs from the inlist pars, the difference between this and
- * _paragraphs_clear is that the latter keeps the logical items and the par
- * items, while the former frees them as well.
- *
- * @param obj the evas object - Not NULL.
- * @param pars the paragraphs to clean - Not NULL.
- */
-static void
-_paragraphs_free(const Evas_Object *obj, Evas_Object_Textblock_Paragraph *pars)
-{
- Evas_Object_Textblock *o;
o = (Evas_Object_Textblock *)(obj->object_data);
while (pars)
{
_layout_line_align_get(Ctxt *c)
{
#ifdef BIDI_SUPPORT
- if (c->align_auto && c->ln)
+ if (c->align_auto && c->ln && c->ln->items)
{
- if (c->ln->items && c->ln->items->text_node &&
+ if (c->ln->items->source_node &&
+
EVAS_BIDI_PARAGRAPH_DIRECTION_IS_RTL(
- c->ln->items->text_node->bidi_props))
+ c->ln->items->source_node->bidi_props))
{
/* Align right*/
return 1.0;
/**
* @internal
- * Reorder the items in visual order
- *
- * @param line the line to reorder
- */
-static void
-_layout_line_order(Ctxt *c __UNUSED__, Evas_Object_Textblock_Line *line)
-{
- /*FIXME: do it a bit more efficient - not very efficient ATM. */
-#ifdef BIDI_SUPPORT
- Evas_Object_Textblock_Item *it;
- EvasBiDiStrIndex *v_to_l = NULL;
- size_t start, end;
- size_t len;
-
- if (line->items && line->items->text_node &&
- line->items->text_node->bidi_props)
- {
- Evas_BiDi_Paragraph_Props *props;
- props = line->items->text_node->bidi_props;
- start = end = line->items->text_pos;
-
- /* Find the first and last positions in the line */
-
- EINA_INLIST_FOREACH(line->items, it)
- {
- if (it->text_pos < start)
- {
- start = it->text_pos;
- }
- else
- {
- int tlen;
- tlen = (it->type == EVAS_TEXTBLOCK_ITEM_TEXT) ?
- _ITEM_TEXT(it)->text_props.text_len : 1;
- if (it->text_pos + tlen > end)
- {
- end = it->text_pos + tlen;
- }
- }
- }
-
- len = end - start;
- evas_bidi_props_reorder_line(NULL, start, len, props, &v_to_l);
-
- /* Update visual pos */
- {
- Evas_Object_Textblock_Item *i;
- i = line->items;
- while (i)
- {
- i->visual_pos = evas_bidi_position_logical_to_visual(
- v_to_l, len, i->text_pos - start);
- i = (Evas_Object_Textblock_Item *) EINA_INLIST_GET(i)->next;
- }
- }
-
- /*FIXME: not very efficient, sort the items arrays. Anyhow, should only
- * reorder if it's a bidi paragraph */
- {
- Evas_Object_Textblock_Item *i, *j, *min;
- i = line->items;
- while (i)
- {
- min = i;
- EINA_INLIST_FOREACH(i, j)
- {
- if (j->visual_pos < min->visual_pos)
- {
- min = j;
- }
- }
- if (min != i)
- {
- line->items = (Evas_Object_Textblock_Item *) eina_inlist_remove(EINA_INLIST_GET(line->items), EINA_INLIST_GET(min));
- line->items = (Evas_Object_Textblock_Item *) eina_inlist_prepend_relative(EINA_INLIST_GET(line->items), EINA_INLIST_GET(min), EINA_INLIST_GET(i));
- }
-
- i = (Evas_Object_Textblock_Item *) EINA_INLIST_GET(min)->next;
- }
- }
- }
-
- if (v_to_l) free(v_to_l);
-#endif
-}
-
-/**
- * @internal
- * Order the items in the line, update it's properties and update it's
- * corresponding paragraph.
+ * Create a new line and append it to the lines in the context.
*
* @param c the context to work on - Not NULL.
* @param fmt the format to use.
- * @param add_line true if we should create a line, false otherwise.
*/
static void
-_layout_line_finalize(Ctxt *c, Evas_Object_Textblock_Format *fmt)
+_layout_line_advance(Ctxt *c, Evas_Object_Textblock_Format *fmt)
{
Evas_Object_Textblock_Item *it;
- Eina_Bool no_text = EINA_TRUE;
- Evas_Coord x = 0;
-
- _layout_line_order(c, c->ln);
+ Evas_Object_Textblock_Format_Item *fi;
c->maxascent = c->maxdescent = 0;
- EINA_INLIST_FOREACH(c->ln->items, it)
- {
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- no_text = EINA_FALSE;
- break;
- }
- }
-
- if (no_text)
+ if (!c->ln->items)
_layout_format_ascent_descent_adjust(c, fmt);
-
EINA_INLIST_FOREACH(c->ln->items, it)
{
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- Evas_Object_Textblock_Text_Item *ti = _ITEM_TEXT(it);
- if (ti->parent.format->font.font)
- ti->baseline = c->ENFN->font_max_ascent_get(c->ENDT, ti->parent.format->font.font);
- _layout_format_ascent_descent_adjust(c, ti->parent.format);
- }
- else
- {
- Evas_Object_Textblock_Format_Item *fi = _ITEM_FORMAT(it);
- if (!fi->formatme) goto loop_advance;
- fi->ascent = c->maxascent;
- fi->descent = c->maxdescent;
- /* Adjust sizes according to current line height/scale */
- {
- Evas_Coord w, h;
- const char *p, *s;
-
- s = eina_strbuf_string_get(fi->source_node->format);
- w = fi->parent.w;
- h = fi->parent.h;
- switch (fi->size)
- {
- case SIZE:
- if (!strncmp(s, "item", 4))
- {
- p = strstr(s, " size=");
- if (p)
- {
- p += 6;
- if (sscanf(p, "%ix%i", &w, &h) == 2)
- {
- w = w * c->obj->cur.scale;
- h = h * c->obj->cur.scale;
- }
- }
- }
- break;
- case SIZE_REL:
- p = strstr((char *) s, " relsize=");
- p += 9;
- if (sscanf(p, "%ix%i", &w, &h) == 2)
- {
- int sz = 1;
- if (fi->vsize == VSIZE_FULL)
- {
- sz = c->maxdescent + c->maxascent;
- }
- else if (fi->vsize == VSIZE_ASCENT)
- {
- sz = c->maxascent;
- }
- w = (w * sz) / h;
- h = sz;
- }
- break;
- case SIZE_ABS:
- /* Nothing to do */
- default:
- break;
- }
- fi->parent.w = fi->parent.adv = w;
- fi->parent.h = h;
- }
-
- switch (fi->size)
- {
- case SIZE:
- case SIZE_ABS:
- switch (fi->vsize)
- {
- case VSIZE_FULL:
- if (fi->parent.h > (c->maxdescent + c->maxascent))
- {
- c->maxascent += fi->parent.h - (c->maxdescent + c->maxascent);
- fi->y = -c->maxascent;
- }
- else
- fi->y = -(fi->parent.h - c->maxdescent);
- break;
- case VSIZE_ASCENT:
- if (fi->parent.h > c->maxascent)
- {
- c->maxascent = fi->parent.h;
- fi->y = -fi->parent.h;
- }
- else
- fi->y = -fi->parent.h;
- break;
- default:
- break;
- }
- break;
- case SIZE_REL:
- switch (fi->vsize)
- {
- case VSIZE_FULL:
- case VSIZE_ASCENT:
- fi->y = -fi->ascent;
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
+ int endx;
+
+ if (it->format->font.font)
+ it->baseline = c->ENFN->font_max_ascent_get(c->ENDT, it->format->font.font);
+ _layout_format_ascent_descent_adjust(c, it->format);
+ endx = it->x + it->w;
+ if (endx > c->ln->w) c->ln->w = endx;
+ }
+ EINA_INLIST_FOREACH(c->ln->format_items, fi)
+ {
+ int endx;
+
+ if (!fi->formatme) continue;
+ endx = fi->x + fi->w;
+ if (endx > c->ln->w) c->ln->w = endx;
+ switch (fi->size)
+ {
+ case SIZE:
+ case SIZE_ABS:
+ switch (fi->vsize)
+ {
+ case VSIZE_FULL:
+ if (fi->h > (c->maxdescent + c->maxascent))
+ {
+ c->maxascent += fi->h - (c->maxdescent + c->maxascent);
+ fi->y = -c->maxascent;
+ }
+ else
+ fi->y = -(fi->h - c->maxdescent);
+ break;
+ case VSIZE_ASCENT:
+ if (fi->h > c->maxascent)
+ {
+ c->maxascent = fi->h;
+ fi->y = -fi->h;
+ }
+ else
+ fi->y = -fi->h;
+ break;
+ default:
+ break;
+ }
+ break;
+ case SIZE_REL:
+ switch (fi->vsize)
+ {
+ case VSIZE_FULL:
+ case VSIZE_ASCENT:
+ fi->y = -fi->ascent;
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
}
-
-loop_advance:
- it->x = x;
- x += it->adv;
-
- if (x > c->ln->w) c->ln->w = x;
}
-
- c->ln->y = (c->y - c->par->y) + c->o->style_pad.t;
+ c->ln->y = c->y + c->o->style_pad.t;
c->ln->h = c->maxascent + c->maxdescent;
c->ln->baseline = c->maxascent;
if (c->have_underline2)
{
if (c->maxdescent < 2) c->underline_extend = 2 - c->maxdescent;
}
- /* Update the paragraphs line number. */
- if (c->par->line_no == -1)
- {
- c->par->line_no = c->line_no;
- }
- c->ln->line_no = c->line_no - c->ln->par->line_no;
+ c->ln->line_no = c->line_no;
c->line_no++;
c->y += c->maxascent + c->maxdescent;
if (c->w >= 0)
((c->w - c->ln->w -
c->o->style_pad.l - c->o->style_pad.r -
c->marginl - c->marginr) * _layout_line_align_get(c));
- if ((c->par->x + c->ln->x + c->ln->w + c->marginr - c->o->style_pad.l) > c->wmax)
- c->wmax = c->par->x + c->ln->x + c->ln->w + c->marginl + c->marginr - c->o->style_pad.l;
+ if ((c->ln->x + c->ln->w + c->marginr - c->o->style_pad.l) > c->wmax)
+ c->wmax = c->ln->x + c->ln->w + c->marginl + c->marginr - c->o->style_pad.l;
}
else
{
c->ln->x = c->marginl + c->o->style_pad.l;
- if ((c->par->x + c->ln->x + c->ln->w + c->marginr - c->o->style_pad.l) > c->wmax)
- c->wmax = c->par->x + c->ln->x + c->ln->w + c->marginl + c->marginr - c->o->style_pad.l;
+ if ((c->ln->x + c->ln->w + c->marginr - c->o->style_pad.l) > c->wmax)
+ c->wmax = c->ln->x + c->ln->w + c->marginl + c->marginr - c->o->style_pad.l;
}
- c->par->h = c->ln->y + c->ln->h;
- if (c->ln->w + c->ln->x > c->par->w)
- c->par->w = c->ln->x + c->ln->w;
-}
-
-/**
- * @internal
- * Create a new line and append it to the lines in the context.
- *
- * @param c the context to work on - Not NULL.
- * @param fmt the format to use.
- * @param add_line true if we should create a line, false otherwise.
- */
-static void
-_layout_line_advance(Ctxt *c, Evas_Object_Textblock_Format *fmt)
-{
- _layout_line_finalize(c, fmt);
_layout_line_new(c, fmt);
}
/**
* @internal
- * Create a new text layout item from the string and the format.
+ * Create a new layout item from the string and the format.
*
* @param c the context to work on - Not NULL.
* @param fmt the format to use.
* @param str the string to use.
- * @param len the length of the string.
*/
-static Evas_Object_Textblock_Text_Item *
-_layout_text_item_new(Ctxt *c __UNUSED__, Evas_Object_Textblock_Format *fmt, const Eina_Unicode *str, size_t len)
+static Evas_Object_Textblock_Item *
+_layout_item_new(Ctxt *c __UNUSED__, Evas_Object_Textblock_Format *fmt, const Eina_Unicode *str)
{
- Evas_Object_Textblock_Text_Item *ti;
+ Evas_Object_Textblock_Item *it;
- ti = calloc(1, sizeof(Evas_Object_Textblock_Text_Item));
- ti->parent.format = fmt;
- ti->parent.format->ref++;
- ti->text = eina_unicode_strndup(str, len);
- ti->parent.type = EVAS_TEXTBLOCK_ITEM_TEXT;
- return ti;
+ it = calloc(1, sizeof(Evas_Object_Textblock_Item));
+ it->format = fmt;
+ it->format->ref++;
+ it->text = eina_unicode_strdup(str);
+ return it;
}
/**
* @param c the context to work on - Not NULL.
* @param fmt the format to use. - Not NULL.
* @param it the item to check - Not null.
- * @return -1 if there is no cutoff (either because there is really none,
- * or because of an error), cutoff index on success.
+ * @return -1 on error, cutoff index on success.
*/
static int
-_layout_text_cutoff_get(Ctxt *c, Evas_Object_Textblock_Format *fmt,
- const Evas_Object_Textblock_Text_Item *ti)
+_layout_text_cutoff_get(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Textblock_Item *it)
{
if (fmt->font.font)
- {
- Evas_Coord x;
- x = c->w - c->o->style_pad.l - c->o->style_pad.r - c->marginl -
- c->marginr - c->x;
- if (x < 0)
- x = 0;
- return c->ENFN->font_last_up_to_pos(c->ENDT, fmt->font.font, ti->text,
- &ti->text_props, x, 0);
- }
+ return c->ENFN->font_last_up_to_pos(c->ENDT, fmt->font.font, it->text, &it->bidi_props,
+ c->w -
+ c->o->style_pad.l -
+ c->o->style_pad.r -
+ c->marginl -
+ c->marginr -
+ c->x,
+ 0);
return -1;
}
/**
* @internal
- * Cut the text up until cut and split
+ * Cut the text in the item up until cut.
*
* @param c the context to work on - Not NULL.
- * @param ti the item to cut - not null.
- * @param lti the logical list item of the item.
+ * @param it the item to cut - not null.
* @param cut the cut index.
- * @return the second (newly created) item.
- */
-static Evas_Object_Textblock_Text_Item *
-_layout_item_text_split_strip_white(Ctxt *c,
- Evas_Object_Textblock_Text_Item *ti, Eina_List *lti, int cut)
-{
- Eina_Unicode *ts;
- Evas_Object_Textblock_Text_Item *new_ti = NULL, *white_ti = NULL;
- int cut2;
-
- ts = ti->text;
- if (_is_white(ts[cut]))
- cut2 = cut + 1;
- else
- cut2 = cut;
-
- if (ts[cut2] && (ti->text_props.text_len > 0))
- {
- new_ti = _layout_text_item_new(c, ti->parent.format, &ts[cut2],
- ti->text_props.text_len - cut2);
- new_ti->parent.text_node = ti->parent.text_node;
- new_ti->parent.text_pos = ti->parent.text_pos + cut2;
- new_ti->parent.merge = EINA_TRUE;
- ts[cut2] = 0;
-
- evas_common_text_props_split(&ti->text_props,
- &new_ti->text_props, cut2);
- _layout_text_add_logical_item(c, new_ti, lti);
- }
-
- if ((cut2 > cut) && (ti->text_props.text_len > 0))
- {
- white_ti = _layout_text_item_new(c, ti->parent.format, &ts[cut],
- ti->text_props.text_len - cut);
- white_ti->parent.text_node = ti->parent.text_node;
- white_ti->parent.text_pos = ti->parent.text_pos + cut;
- white_ti->parent.merge = EINA_TRUE;
- white_ti->parent.visually_deleted = EINA_TRUE;
- ts[cut] = 0;
-
- evas_common_text_props_split(&ti->text_props,
- &white_ti->text_props, cut);
- _layout_text_add_logical_item(c, white_ti, lti);
- }
-
- if (new_ti || white_ti)
- {
-#if 0
- /* FIXME: This is more correct, but wayy slower, so until I make this
- * fast I'll just take the less correct approach. At least until
- * someone notices a glitch */
- _text_item_update_sizes(c, ti);
-#else
- if (new_ti)
- {
- ti->parent.w -= new_ti->parent.w;
- ti->parent.adv -= new_ti->parent.adv;
- }
- if (white_ti)
- {
- ti->parent.w -= white_ti->parent.w;
- ti->parent.adv -= white_ti->parent.adv;
- }
-#endif
-
- ti->text = eina_unicode_strndup(ts, cut);
- free(ts);
- }
- return new_ti;
-}
-
-/**
- * @internal
- * Merge item2 into item1 and free item2.
- *
- * @param c the context to work on - Not NULL.
- * @param item1 the item to copy to
- * @param item2 the item to copy from
*/
static void
-_layout_item_merge_and_free(Ctxt *c,
- Evas_Object_Textblock_Text_Item *item1,
- Evas_Object_Textblock_Text_Item *item2)
+_layout_item_text_cutoff(Ctxt *c __UNUSED__, Evas_Object_Textblock_Item *it, int cut)
{
- Eina_Unicode *tmp;
- size_t len1, len2;
- len1 = item1->text_props.text_len;
- len2 = item2->text_props.text_len;
- evas_common_text_props_merge(&item1->text_props,
- &item2->text_props);
-
-#if 0
- /* FIXME: This is more correct, but wayy slower, so until I make this fast
- * I'll just take the less correct approach. At least until someone
- * notices a glitch */
- _text_item_update_sizes(c, item1);
-#else
- item1->parent.w += item2->parent.w;
- item1->parent.adv += item2->parent.adv;
-#endif
-
- tmp = realloc(item1->text, (len1 + len2 + 1) * sizeof(Eina_Unicode));
- eina_unicode_strncpy(tmp + len1, item2->text, len2);
- item1->text = tmp;
- item1->text[len1 + len2] = 0;
-
- item1->parent.merge = EINA_FALSE;
- item1->parent.visually_deleted = EINA_FALSE;
+ Eina_Unicode *ts;
- _item_free(c->obj, NULL, _ITEM(item2));
+ ts = it->text;
+ ts[cut] = 0;
+ it->text = eina_unicode_strdup(ts);
+ free(ts);
}
/**
/**
* @internal
+ * Strips trailing whitespace from the item's text.
+ *
+ * @param c the context to work with - NOT NULL.
+ * @param fmt does nothing.
+ * @param it the item to strip.
+ *
+ * @return #EINA_TRUE if it stripped, #EINA_FALSE otherwise.
+ */
+static Eina_Bool
+_layout_strip_trailing_whitespace(Ctxt *c, Evas_Object_Textblock_Format *fmt __UNUSED__, Evas_Object_Textblock_Item *it)
+{
+ int p, tp, chr, adv, tw, th;
+
+ p = eina_unicode_strlen(it->text) - 1;
+ tp = p;
+ if (p >= 0)
+ {
+ chr = GET_PREV(it->text, p);
+ if (_is_white(chr))
+ {
+ _layout_item_text_cutoff(c, it, tp);
+ adv = 0;
+ if (it->format->font.font)
+ adv = c->ENFN->font_h_advance_get(c->ENDT, it->format->font.font, it->text, &it->bidi_props);
+ tw = th = 0;
+ if (it->format->font.font)
+ c->ENFN->font_string_size_get(c->ENDT, it->format->font.font, it->text, &it->bidi_props, &tw, &th);
+ it->w = tw;
+ it->h = th;
+ c->x = it->x + adv;
+ return EINA_TRUE;
+ }
+ }
+ return EINA_FALSE;
+}
+
+/**
+ * FIXME: document
+ */
+static int
+_layout_item_abort(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Textblock_Item *it)
+{
+ if (it->text) free(it->text);
+ _format_unref_free(c->obj, it->format);
+#ifdef BIDI_SUPPORT
+ /* FIXME: this also unrefs the paragraph props, we should either
+ * really count the usage of the paragraph props in the items, or just
+ * not use clean here. I prefer the latter but that might break if we'll
+ * start doing fancy stuff in clean in the future. */
+ /* evas_bidi_props_clean(&it->bidi_props); */
+#endif
+ free(it);
+ if (c->ln->items)
+ {
+ it = (Evas_Object_Textblock_Item *)(EINA_INLIST_GET(c->ln->items))->last;
+ return _layout_strip_trailing_whitespace(c, fmt, it);
+ }
+ return 0;
+}
+
+/**
+ * @internal
* returns the index of the words end starting from p
*
* @param str the str to work on - NOT NULL.
/**
* @internal
- * Calculates an item's size.
- *
- * @param c the context
- * @param it the item itself.
- */
-static void
-_text_item_update_sizes(Ctxt *c, Evas_Object_Textblock_Text_Item *ti)
-{
- int tw, th, adv, inset;
- const Evas_Object_Textblock_Format *fmt = ti->parent.format;
-
- tw = th = 0;
- if (fmt->font.font)
- c->ENFN->font_string_size_get(c->ENDT, fmt->font.font, ti->text,
- &ti->text_props, &tw, &th);
- ti->parent.w = tw;
- ti->parent.h = th;
- inset = 0;
- if (fmt->font.font)
- inset = c->ENFN->font_inset_get(c->ENDT, fmt->font.font,
- &ti->text_props);
- ti->inset = inset;
- adv = 0;
- if (fmt->font.font)
- adv = c->ENFN->font_h_advance_get(c->ENDT, fmt->font.font,
- ti->text, &ti->text_props);
- ti->parent.adv = adv;
- ti->parent.x = 0;
-}
-
-/**
- * @internal
- * Adds the item to the list, updates the item's properties (e.g, x,w,h)
- *
- * @param c the context
- * @param it the item itself.
- * @param rel item ti will be appened after, NULL = last.
- */
-static void
-_layout_text_add_logical_item(Ctxt *c, Evas_Object_Textblock_Text_Item *ti,
- Eina_List *rel)
-{
- _text_item_update_sizes(c, ti);
-
- c->par->logical_items = eina_list_append_relative_list(
- c->par->logical_items, ti, rel);
-}
-
-/**
- * @internal
- * Appends the text from node n starting at start ending at off to the layout.
- * It uses the fmt for the formatting.
+ * Appends the text from node n starting at start ending at off to the layout.
+ * It uses the fmt for the formatting.
*
* @param c the current context- NOT NULL.
* @param fmt the format to use.
static void
_layout_text_append(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Textblock_Node_Text *n, int start, int off, const char *repch)
{
- int new_line, empty_item;
+ int adv, inset, tw, th, new_line, empty_item;
+ int wrap, twrap, ch, index, white_stripped;
Eina_Unicode *alloc_str = NULL;
const Eina_Unicode *str = EINA_UNICODE_EMPTY_STRING;
const Eina_Unicode *tbase;
- Evas_Object_Textblock_Text_Item *ti;
- size_t cur_len = 0;
+ Evas_Object_Textblock_Item *it;
/* prepare a working copy of the string, either filled by the repch or
* filled with the true values */
str = alloca((off + 1) * sizeof(Eina_Unicode));
tbase = str;
ind = 0;
- urepch = eina_unicode_utf8_get_next(repch, &ind);
+ urepch = evas_common_encoding_utf8_get_next(repch, &ind);
for (i = 0, ptr = (Eina_Unicode *)tbase; i < off; ptr++, i++)
*ptr = urepch;
*ptr = 0;
alloc_str = eina_unicode_strndup(str + start, off);
str = alloc_str;
}
-
- cur_len = off;
}
-
skip:
tbase = str;
+ // printf("add: wrap: %i|%i, width: %i '%s'\n", fmt->wrap_word, fmt->wrap_char, c->w, str);
new_line = 0;
empty_item = 0;
-
while (str)
{
- int tmp_len;
-
- ti = _layout_text_item_new(c, fmt, str, cur_len);
- ti->parent.text_node = n;
- ti->parent.text_pos = start + str - tbase;
- tmp_len = off - (str - tbase);
- if (ti->parent.text_node)
+ /* if this is the first line item and it starts with spaces - remove them */
+ wrap = 0;
+ white_stripped = 0;
+
+ it = _layout_item_new(c, fmt, str);
+ it->source_node = n;
+ it->source_pos = start + str - tbase;
+ if (it->source_node)
+ {
+ it->bidi_props.start = it->source_pos;
+ it->bidi_props.props = it->source_node->bidi_props;
+# ifdef BIDI_SUPPORT
+ evas_bidi_shape_string(it->text, &it->bidi_props,
+ eina_unicode_strlen(it->text));
+# endif
+ }
+ tw = th = 0;
+ if (fmt->font.font)
+ c->ENFN->font_string_size_get(c->ENDT, fmt->font.font, it->text, &it->bidi_props, &tw, &th);
+ if ((c->w >= 0) &&
+ ((fmt->wrap_word) || (fmt->wrap_char)) &&
+ ((c->x + tw) >
+ (c->w - c->o->style_pad.l - c->o->style_pad.r -
+ c->marginl - c->marginr)))
{
- int tmp_cut;
- tmp_cut = evas_common_language_script_end_of_run_get(
- ti->text,
- ti->parent.text_node->bidi_props,
- ti->parent.text_pos, tmp_len);
- if (tmp_cut > 0)
+ int orig_wrap;
+ wrap = _layout_text_cutoff_get(c, fmt, it);
+ if (wrap == 0)
+ GET_NEXT(str, wrap);
+ orig_wrap = wrap;
+ if (wrap > 0)
{
- Eina_Unicode *ts;
+ if (fmt->wrap_word)
+ {
+ index = wrap;
+ ch = GET_NEXT(str, index);
+ if (!_is_white(ch))
+ wrap = _layout_word_start(str, wrap);
+ if (wrap > 0)
+ {
+ twrap = wrap;
+ ch = GET_PREV(str, twrap);
+ /* the text intersects the wrap point on a whitespace char */
+ if (_is_white(ch))
+ {
+ _layout_item_text_cutoff(c, it, wrap);
+ twrap = wrap;
+ /*we don't want to move next, that's why it's
+ * commented out.
+ * ch = evas_common_font_utf8_get_next((unsigned char *)str, &twrap);
+ */
+ str += twrap;
+ }
+ /* intersects a word */
+ else
+ {
+ /* walk back to start of word */
+ twrap = _layout_word_start(str, wrap);
+ if (twrap != 0)
+ {
+ wrap = twrap;
+ ch = GET_PREV(str, twrap);
+ _layout_item_text_cutoff(c, it, twrap);
+ str += wrap;
+ }
+ else
+ {
+ empty_item = 1;
+ if (it->text) free(it->text);
+ _format_unref_free(c->obj, it->format);
+ free(it);
+ if (c->ln->items)
+ {
+ it = (Evas_Object_Textblock_Item *)(EINA_INLIST_GET(c->ln->items))->last;
+ _layout_strip_trailing_whitespace(c, fmt, it);
+ twrap = _layout_word_end(str, wrap);
+ if (twrap >= 0)
+ {
+ ch = GET_NEXT(str, twrap);
+ str += twrap;
+ }
+ else
+ str = NULL;
+ }
+ }
+ }
+ }
+ else
+ {
+ /* wrap now is the index of the word START */
+ index = wrap;
+ ch = GET_NEXT(str, index);
- ts = ti->text;
- ts[tmp_cut] = 0;
- ti->text = eina_unicode_strndup(ts, tmp_cut);
- free(ts);
- tmp_len = tmp_cut;
+ if (c->ln->items)
+ {
+ white_stripped = _layout_item_abort(c, fmt, it);
+ empty_item = 1;
+ }
+ else
+ {
+/*
+ wrap = 0;
+ twrap = _layout_word_end(it->text, wrap);
+ wrap = twrap;
+ if (twrap >= 0)
+ {
+ ch = GET_NEXT(str, wrap);
+ _layout_item_text_cutoff(c, it, twrap);
+ }
+ if (wrap > 0)
+ str += wrap;
+ else
+ str = NULL;
+*/
+ wrap = twrap = orig_wrap;
+ _layout_item_text_cutoff(c, it, wrap);
+ str += wrap;
+ }
+ }
+ }
+ else if (fmt->wrap_char)
+ {
+ _layout_item_text_cutoff(c, it, wrap);
+ str += wrap;
+ }
+ new_line = 1;
}
- evas_common_text_props_bidi_set(&ti->text_props,
- ti->parent.text_node->bidi_props, ti->parent.text_pos);
- evas_common_text_props_script_set (&ti->text_props,
- ti->text);
- c->ENFN->font_text_props_info_create(c->ENDT,
- ti->parent.format->font.font,
- ti->text, &ti->text_props,
- ti->parent.text_node->bidi_props,
- ti->parent.text_pos, tmp_len);
- }
- str += tmp_len;
- cur_len -= tmp_len;
-
- _layout_text_add_logical_item(c, ti, NULL);
+ else
+ {
+ /* wrap now is the index of the word START */
+ if (wrap < 0) wrap = 0;
+ index = wrap;
+ ch = GET_NEXT(str, index);
- /* Break if we reached the end. */
- if (!*str)
- break;
+ if (c->ln->items)
+ {
+ white_stripped = _layout_item_abort(c, fmt, it);
+ empty_item = 1;
+ new_line = 1;
+ }
+ else
+ {
+ if (wrap <= 0)
+ {
+ wrap = 0;
+ twrap = _layout_word_end(it->text, wrap);
+ wrap = _layout_word_next(it->text, wrap);
+ if (twrap >= 0)
+ _layout_item_text_cutoff(c, it, twrap);
+ if (wrap >= 0)
+ str += wrap;
+ else
+ str = NULL;
+ }
+ else
+ str = NULL;
+ new_line = 1;
+ }
+ }
+ if (!empty_item)
+ {
+ tw = th = 0;
+ if (fmt->font.font)
+ c->ENFN->font_string_size_get(c->ENDT, fmt->font.font, it->text, &it->bidi_props, &tw, &th);
+ }
+ }
+ else
+ str = NULL;
+ if (empty_item) empty_item = 0;
+ else
+ {
+ it->w = tw;
+ it->h = th;
+ inset = 0;
+ if (fmt->font.font)
+ inset = c->ENFN->font_inset_get(c->ENDT, fmt->font.font, it->text);
+ it->inset = inset;
+ it->x = c->x;
+ adv = 0;
+ if (fmt->font.font)
+ adv = c->ENFN->font_h_advance_get(c->ENDT, fmt->font.font, it->text, &it->bidi_props);
+ c->x += adv;
+ c->ln->items = (Evas_Object_Textblock_Item *)eina_inlist_append(EINA_INLIST_GET(c->ln->items), EINA_INLIST_GET(it));
+ }
+ if (new_line)
+ {
+ if (str)
+ {
+ if (!white_stripped)
+ {
+ index = 0;
+ ch = GET_NEXT(str, index);
+ if (_is_white(ch)) str += index;
+ }
+ }
+ new_line = 0;
+ _layout_line_advance(c, fmt);
+ }
}
-
if (alloc_str) free(alloc_str);
}
*
* @param c the current context- NOT NULL.
* @param n the source format node - not null.
- * @param item the format text.
+ * @param item the format text - not null.
*
* @return the new format item.
*/
static Evas_Object_Textblock_Format_Item *
-_layout_format_item_add(Ctxt *c, Evas_Object_Textblock_Node_Format *n, const char *item, Evas_Object_Textblock_Format *fmt)
+_layout_format_item_add(Ctxt *c, Evas_Object_Textblock_Node_Format *n, const char *item)
{
Evas_Object_Textblock_Format_Item *fi;
fi = calloc(1, sizeof(Evas_Object_Textblock_Format_Item));
fi->item = eina_stringshare_add(item);
fi->source_node = n;
- fi->parent.type = EVAS_TEXTBLOCK_ITEM_FORMAT;
- fi->parent.format = fmt;
- fi->parent.format->ref++;
- c->par->logical_items = eina_list_append(c->par->logical_items, fi);
- if (n)
- {
- fi->parent.text_node = n->text_node;
- /* FIXME: make it more efficient */
- fi->parent.text_pos = _evas_textblock_node_format_pos_get(n);
-#ifdef BIDI_SUPPORT
- fi->bidi_dir = (evas_bidi_is_rtl_char(
- fi->parent.text_node->bidi_props,
- 0,
- fi->parent.text_pos)) ?
- EVAS_BIDI_DIRECTION_RTL : EVAS_BIDI_DIRECTION_LTR;
-#else
- fi->bidi_dir = EVAS_BIDI_DIRECTION_LTR;
-#endif
- }
+ c->ln->format_items = (Evas_Object_Textblock_Format_Item *)eina_inlist_append(EINA_INLIST_GET(c->ln->format_items),
+ EINA_INLIST_GET(fi));
return fi;
}
* Returns true if the item is a paragraph separator, false otherwise
* @def _IS_PARAGRAPH_SEPARATOR(item)
*/
-#define _IS_PARAGRAPH_SEPARATOR(o, item) \
- (!strcmp(item, "ps") || \
- (o->newline_is_ps && _IS_LINE_SEPARATOR(item))) /* Paragraph separator */
+#define _IS_PARAGRAPH_SEPARATOR(item) \
+ (!strcmp(item, "ps")) /* Paragraph separator */
/**
* @internal
* @param style_pad_b the pad to update.
*/
static void
-_layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c,
+_layout_do_format(const Evas_Object *obj, Ctxt *c,
Evas_Object_Textblock_Format **_fmt, Evas_Object_Textblock_Node_Format *n,
int *style_pad_l, int *style_pad_r, int *style_pad_t, int *style_pad_b)
{
// href == name of item - to be found and matched later and used for
// positioning
Evas_Object_Textblock_Format_Item *fi;
- int w = 1, h = 1;
+ int x2, w = 1, h = 1;
int vsize = 0, size = 0;
char *p;
p += 6;
if (sscanf(p, "%ix%i", &w, &h) == 2)
{
- /* this is handled somewhere else because it depends
- * on the current scaling factor of the object which
- * may change and break because the results of this
- * function are cached */
+ w = w * obj->cur.scale;
+ h = h * obj->cur.scale;
size = SIZE;
}
}
p = strstr(s, " relsize=");
if (p)
{
- /* this is handled somewhere else because it depends
- * on the line it resides in, which is not defined
- * at this point and will change anyway, which will
- * break because the results of this function are
- * cached */
- size = SIZE_REL;
+ p += 9;
+ if (sscanf(p, "%ix%i", &w, &h) == 2)
+ {
+ int sz = 1;
+ size = SIZE_REL;
+ if (vsize == VSIZE_FULL)
+ {
+ sz = c->maxdescent + c->maxascent;
+ }
+ else if (vsize == VSIZE_ASCENT)
+ {
+ sz = c->maxascent;
+ }
+ w = (w * sz) / h;
+ h = sz;
+ }
}
}
}
- fi = _layout_format_item_add(c, n, NULL, fmt);
+ x2 = c->x + w;
+
+ if (x2 >
+ (c->w - c->o->style_pad.l -
+ c->o->style_pad.r -
+ c->marginl - c->marginr))
+ {
+ _layout_line_advance(c, fmt);
+ x2 = w;
+ }
+ fi = _layout_format_item_add(c, n, NULL);
+ fi->x = c->x;
fi->vsize = vsize;
fi->size = size;
fi->formatme = 1;
- fi->parent.w = fi->parent.adv = w; /* For formats items it's usually
- the same, we don't handle the
- special cases yet. */
- fi->parent.h = h;
+ fi->w = w;
+ fi->h = h;
+ fi->ascent = c->maxascent;
+ fi->descent = c->maxdescent;
+ c->x = x2;
handled = 1;
}
if (!handled)
}
else
{
- if ((_IS_PARAGRAPH_SEPARATOR(c->o, item)) ||
- (_IS_LINE_SEPARATOR(item)))
+ if (_IS_PARAGRAPH_SEPARATOR(item))
{
Evas_Object_Textblock_Format_Item *fi;
- fi = _layout_format_item_add(c, n, item, fmt);
- fi->parent.w = fi->parent.adv = 0;
+ fi = _layout_format_item_add(c, n, item);
+ fi->x = c->x;
+ fi->w = 0;
+ _layout_line_advance(c, fmt);
+
+ }
+ else if (_IS_LINE_SEPARATOR(item))
+ {
+ Evas_Object_Textblock_Format_Item *fi;
+
+ fi = _layout_format_item_add(c, n, item);
+ fi->x = c->x;
+ fi->w = 0;
+ _layout_line_advance(c, fmt);
}
else if ((!strcmp(item, "\t")) || (!strcmp(item, "\\t")))
{
Evas_Object_Textblock_Format_Item *fi;
+ int x2;
+
+ x2 = c->x + fmt->tabstops;
+ /* Wrap lines if there's a size */
+ if ((c->w > 0) && (x2 >
+ (c->w - c->o->style_pad.l -
+ c->o->style_pad.r -
+ c->marginl - c->marginr)))
+ {
+ _layout_line_advance(c, fmt);
+ x2 = c->x + fmt->tabstops;
+ }
+ if (c->ln->items)
+ {
+ Evas_Object_Textblock_Item *it;
- fi = _layout_format_item_add(c, n, item, fmt);
- fi->parent.w = fi->parent.adv = fmt->tabstops;
+ it = (Evas_Object_Textblock_Item *)(EINA_INLIST_GET(c->ln->items))->last;
+ _layout_strip_trailing_whitespace(c, fmt, it);
+ }
+ fi = _layout_format_item_add(c, n, item);
+ fi->x = c->x;
+ fi->w = x2 - c->x;
fi->formatme = 1;
+ c->x = x2;
}
}
}
*_fmt = fmt;
}
-static void
-_layout_update_par(Ctxt *c)
-{
- Evas_Object_Textblock_Paragraph *last_par;
- last_par = (Evas_Object_Textblock_Paragraph *)
- EINA_INLIST_GET(c->par)->prev;
- if (last_par)
- {
- c->par->y = last_par->y + last_par->h;
- }
-}
-
-/* -1 means no wrap */
-static int
-_layout_get_charwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt,
- const Evas_Object_Textblock_Text_Item *ti)
-{
- int wrap;
-
- wrap = _layout_text_cutoff_get(c, fmt, ti);
- if (wrap == 0)
- GET_NEXT(ti->text, wrap);
- if (!ti->text[wrap])
- wrap = -1;
-
- return wrap;
-}
-
-/* -1 means no wrap */
-static int
-_layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt,
- const Evas_Object_Textblock_Text_Item *ti, Eina_Bool mixed_wrap)
-{
- int wrap = -1, twrap;
- int orig_wrap;
- Eina_Unicode ch;
- const Eina_Unicode *str = ti->text;
-
- wrap = _layout_text_cutoff_get(c, fmt, ti);
- /* Avoiding too small textblocks to even contain one char */
- if (wrap == 0)
- GET_NEXT(str, wrap);
- orig_wrap = wrap;
- /* We need to wrap and found the position that overflows */
- if (wrap > 0)
- {
- int index = wrap;
- ch = GET_NEXT(str, index);
- if (!_is_white(ch))
- wrap = _layout_word_start(str, wrap);
- /* If we found where to cut the text at, i.e the start
- * of the word we were pointing at */
- if (wrap > 0)
- {
- twrap = wrap;
- ch = GET_PREV(str, twrap);
- /* the text intersects the wrap point on a whitespace char */
- if (_is_white(ch))
- {
- return wrap;
- }
- /* intersects a word */
- else
- {
- /* walk back to start of word */
- twrap = _layout_word_start(str, wrap);
- if (twrap != 0)
- {
- wrap = twrap;
- ch = GET_PREV(str, wrap);
- return (str[wrap]) ? wrap : -1;
- }
- }
- }
- /* If we weren't able to find the start of the word we
- * are currently pointing at, or we were able but it's
- * the first word - the end of this word is the wrap point, o */
- else
- {
- /* wrap now is the index of the word START */
- index = wrap;
- ch = GET_NEXT(str, index);
-
- /* If there are already items in this line, we
- * should just try creating a new line for it */
- if (c->ln->items)
- {
- return 0;
- }
- /* If there were no items in this line, try to do
- * our best wrapping possible since it's the middle
- * of the word */
- else
- {
- if (mixed_wrap)
- {
- return (str[orig_wrap]) ? orig_wrap : -1;
- }
- else
- {
- wrap = 0;
- twrap = _layout_word_end(ti->text, wrap);
- wrap = twrap;
- if (twrap >= 0)
- {
- ch = GET_NEXT(str, wrap);
- return (str[wrap]) ? wrap : -1;
- }
- else
- {
- return -1;
- }
- }
- }
- }
- }
- /* We need to wrap, but for some reason we failed obatining the
- * overflow position. */
- else
- {
- /*FIXME: sanitize this error handling - should probably
- * never get here anyway unless something really bad
- * has happend */
- /* wrap now is the index of the word START */
- if (wrap < 0) wrap = 0;
-
- /* If there are already items in the line, break before. */
- if (c->ln->items)
- {
- return 0;
- }
- else
- {
- twrap = _layout_word_end(ti->text, wrap);
- wrap = _layout_word_next(ti->text, wrap);
- if (wrap >= 0)
- {
- ch = GET_NEXT(str, wrap);
- return (str[wrap]) ? wrap : -1;
- }
- else if (twrap >= 0)
- {
- ch = GET_NEXT(str, twrap);
- return (str[twrap]) ? twrap : -1;
- }
- }
- }
- return -1;
-}
-
-/* -1 means no wrap */
-static int
-_layout_get_wordwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt,
- const Evas_Object_Textblock_Text_Item *ti)
-{
- return _layout_get_word_mixwrap_common(c, fmt, ti, EINA_FALSE);
-}
-
-/* -1 means no wrap */
-static int
-_layout_get_mixedwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt,
- const Evas_Object_Textblock_Text_Item *ti)
-{
- return _layout_get_word_mixwrap_common(c, fmt, ti, EINA_TRUE);
-}
-
-static Evas_Object_Textblock_Text_Item *
-_layout_ellipsis_item_new(Ctxt *c, const Evas_Object_Textblock_Item *cur_it)
-{
- Evas_Object_Textblock_Text_Item *ellip_ti;
- const Eina_Unicode _ellip_str[2] = { 0x2026, '\0' }; /* Ellipsis char */
- size_t len = 1; /* The length of _ellip_str */
- /* We assume that the format stack has at least one time,
- * the only reason it may not have, is more </> than <>, other
- * than that, we're safe. The last item is the base format. */
- ellip_ti = _layout_text_item_new(c,
- eina_list_data_get(eina_list_last(c->format_stack)),
- _ellip_str, len);
- ellip_ti->parent.text_node = cur_it->text_node;
- ellip_ti->parent.text_pos = cur_it->text_pos;
- if (cur_it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- ellip_ti->parent.text_pos += _ITEM_TEXT(cur_it)->text_props.text_len;
- }
- else
- {
- ellip_ti->parent.text_pos++;
- }
-
- evas_common_text_props_bidi_set(&ellip_ti->text_props,
- ellip_ti->parent.text_node->bidi_props, ellip_ti->parent.text_pos);
- evas_common_text_props_script_set (&ellip_ti->text_props,
- ellip_ti->text);
- c->ENFN->font_text_props_info_create(c->ENDT,
- ellip_ti->parent.format->font.font,
- ellip_ti->text, &ellip_ti->text_props,
- ellip_ti->parent.text_node->bidi_props,
- ellip_ti->parent.text_pos, len);
- _text_item_update_sizes(c, ellip_ti);
-
- return ellip_ti;
-}
-
-/* 0 means go ahead, 1 means break without an error, 2 means
- * break with an error, should probably clean this a bit (enum/macro)
- * FIXME ^ */
-static int
-_layout_visualize_par(Ctxt *c)
-{
- Evas_Object_Textblock_Item *it;
- Eina_List *i;
- if (!c->par->logical_items)
- return 2;
-
- it = _ITEM(eina_list_data_get(c->par->logical_items));
- _layout_line_new(c, it->format);
- /* We walk on our own because we want to be able to add items from
- * inside the list and then walk them on the next iteration. */
- for (i = c->par->logical_items ; i ; )
- {
- int adv_line = 0;
- int redo_item = 0;
- it = _ITEM(eina_list_data_get(i));
- /* Skip visually deleted items */
- if (it->visually_deleted)
- {
- i = eina_list_next(i);
- continue;
- }
-
- /* Check if we need to wrap, i.e the text is bigger than the width */
- if ((c->w >= 0) &&
- ((c->x + it->adv) >
- (c->w - c->o->style_pad.l - c->o->style_pad.r -
- c->marginl - c->marginr)))
- {
- /* Handle ellipsis here */
- if ((it->format->ellipsis == 1.0) && (c->h >= 0) &&
- (2 * it->h + c->y >
- c->h - c->o->style_pad.t - c->o->style_pad.b))
- {
- Evas_Object_Textblock_Text_Item *ellip_ti, *last_ti;
- Evas_Object_Textblock_Item *last_it;
- Evas_Coord save_cx;
- int wrap;
- ellip_ti = _layout_ellipsis_item_new(c, it);
- last_it = it;
- last_ti = _ITEM_TEXT(it);
-
- save_cx = c->x;
- c->w -= ellip_ti->parent.w;
- do
- {
- wrap = _layout_text_cutoff_get(c, last_it->format,
- last_ti);
- if ((wrap > 0) && last_ti->text[wrap])
- {
- _layout_item_text_split_strip_white(c, last_ti, i,
- wrap);
- }
- else if (wrap == 0)
- {
- if (!c->ln->items)
- break;
- /* We haven't added it yet at this point */
- if (_ITEM(last_ti) != it)
- {
- last_it =
- _ITEM(EINA_INLIST_GET(last_it)->prev);
- c->ln->items = _ITEM(eina_inlist_remove(
- EINA_INLIST_GET(c->ln->items),
- EINA_INLIST_GET(_ITEM(last_ti))));
- }
- else
- {
- last_it =
- _ITEM(EINA_INLIST_GET(c->ln->items)->last);
- }
- last_ti = _ITEM_TEXT(last_it);
- if (last_it)
- {
- c->x -= last_it->adv;
- }
- }
- }
- while (last_it && (wrap == 0));
- c->x = save_cx;
- c->w += ellip_ti->parent.w;
- /* If we should add this item, do it */
- if (last_it == it)
- {
- c->ln->items = (Evas_Object_Textblock_Item *)
- eina_inlist_append(EINA_INLIST_GET(c->ln->items),
- EINA_INLIST_GET(it));
- if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT)
- {
- Evas_Object_Textblock_Format_Item *fi;
- fi = _ITEM_FORMAT(it);
- fi->y = c->y;
- }
- }
- c->ln->items = (Evas_Object_Textblock_Item *)
- eina_inlist_append(EINA_INLIST_GET(c->ln->items),
- EINA_INLIST_GET(_ITEM(ellip_ti)));
- c->ln->ellip_ti = ellip_ti;
- _layout_line_finalize(c, ellip_ti->parent.format);
-
- return 1;
- }
- else if (it->format->wrap_word || it->format->wrap_char ||
- it->format->wrap_mixed)
- {
- if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT)
- {
- /* Don't wrap if it's the only item */
- if (c->ln->items)
- {
- /*FIXME: I should handle tabs correctly, i.e like
- * spaces */
- _layout_line_advance(c, it->format);
- }
- }
- else
- {
- Evas_Object_Textblock_Text_Item *ti = _ITEM_TEXT(it);
- int wrap;
-
- adv_line = 1;
- if (it->format->wrap_word)
- wrap = _layout_get_wordwrap(c, it->format, ti);
- else if (it->format->wrap_char)
- wrap = _layout_get_charwrap(c, it->format, ti);
- else if (it->format->wrap_mixed)
- wrap = _layout_get_mixedwrap(c, it->format, ti);
- else
- wrap = -1;
-
- if (wrap > 0)
- {
- _layout_item_text_split_strip_white(c, ti, i, wrap);
- }
- else if (wrap == 0)
- {
- /* Should wrap before the item */
- adv_line = 0;
- redo_item = 1;
- _layout_line_advance(c, it->format);
- }
- }
- }
- }
-
- if (!redo_item)
- {
- c->ln->items = (Evas_Object_Textblock_Item *)
- eina_inlist_append(EINA_INLIST_GET(c->ln->items),
- EINA_INLIST_GET(it));
- if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT)
- {
- Evas_Object_Textblock_Format_Item *fi;
- fi = _ITEM_FORMAT(it);
- fi->y = c->y;
- if (fi->item && _IS_LINE_SEPARATOR(fi->item))
- {
- adv_line = 1;
- }
- }
- c->x += it->adv;
- i = eina_list_next(i);
- }
- if (adv_line)
- {
- /* Each line is according to the first item in it, and here
- * i is already the next item (or the current if we redo it) */
- if (i)
- {
- it = _ITEM(eina_list_data_get(i));
- }
- _layout_line_advance(c, it->format);
- }
- }
- if (c->ln->items)
- {
- /* Here 'it' is the last format used */
- _layout_line_finalize(c, it->format);
- }
- return 0;
-}
-
/**
* @internal
* Create the layout from the nodes.
{
Evas_Object_Textblock *o;
Ctxt ctxt, *c;
+ Evas_Object_Textblock_Line *ln;
Evas_Object_Textblock_Node_Text *n;
+ Eina_List *removes = NULL;
Evas_Object_Textblock_Format *fmt = NULL;
int style_pad_l = 0, style_pad_r = 0, style_pad_t = 0, style_pad_b = 0;
c->align_auto = EINA_TRUE;
c->ln = NULL;
-
- /* Start of logical layout creation */
-
/* setup default base style */
if ((c->o->style) && (c->o->style->default_tag))
{
if (h_ret) *h_ret = 0;
return;
}
-
- if (o->content_changed)
- {
- _paragraphs_free(obj, o->paragraphs);
- /* Go through all the text nodes to create the logical layout */
- EINA_INLIST_FOREACH(c->o->text_nodes, n)
- {
- Evas_Object_Textblock_Node_Format *fnode;
- size_t start;
- int off;
-
- n->dirty = 0; /* Mark as if we cleaned the paragraph, although
- we should really use it to fine tune the
- changes here, and not just blindly mark */
- _layout_paragraph_new(c, n); /* Each node is a paragraph */
-
- /* For each text node to thorugh all of it's format nodes
- * append text from the start to the offset of the next format
- * using the last format got. if needed it also creates format items
- * this is the core algorithm of the layout mechanism.
- * Skip the unicode replacement chars when there are because
- * we don't want to print them. */
- fnode = n->format_node;
- start = off = 0;
- while (fnode && (fnode->text_node == n))
- {
- off += fnode->offset;
- /* No need to skip on the first run, or a non-visible one */
- _layout_text_append(c, fmt, n, start, off, o->repch);
- _layout_do_format(obj, c, &fmt, fnode, &style_pad_l,
- &style_pad_r, &style_pad_t, &style_pad_b);
- if ((c->have_underline2) || (c->have_underline))
- {
- if (style_pad_b < c->underline_extend)
- style_pad_b = c->underline_extend;
- c->have_underline = 0;
- c->have_underline2 = 0;
- c->underline_extend = 0;
- }
- start += off;
- if (fnode->visible)
- {
- off = -1;
- start++;
- }
- else
- {
- off = 0;
- }
- fnode = _NODE_FORMAT(EINA_INLIST_GET(fnode)->next);
- }
- _layout_text_append(c, fmt, n, start, -1, o->repch);
- }
- o->paragraphs = c->paragraphs;
- }
- else if (!calc_only)
+ /* run through all text and format nodes generating lines */
+ if (!c->o->text_nodes && !c->o->format_nodes)
{
- _paragraphs_clear(obj, o->paragraphs);
- c->paragraphs = o->paragraphs;
- /* Merge the ones that need merging. */
- /* Go through all the paragraphs, lines, items and merge if should be
- * merged we merge backwards!!! */
- Evas_Object_Textblock_Paragraph *par;
- EINA_INLIST_FOREACH(EINA_INLIST_GET(c->paragraphs), par)
+ /* If there are no nodes and lines, do the initial creation. */
+ if (!c->par && !c->ln)
{
- Eina_List *itr, *itr_next;
- Evas_Object_Textblock_Item *it, *prev_it = NULL;
- EINA_LIST_FOREACH_SAFE(par->logical_items, itr, itr_next, it)
- {
- if (it->merge && prev_it &&
- (prev_it->type == EVAS_TEXTBLOCK_ITEM_TEXT) &&
- (it->type == EVAS_TEXTBLOCK_ITEM_TEXT))
- {
- _layout_item_merge_and_free(c, _ITEM_TEXT(prev_it),
- _ITEM_TEXT(it));
- par->logical_items =
- eina_list_remove_list(par->logical_items, itr);
- }
- else
- {
- prev_it = it;
- }
- }
+ _layout_paragraph_new(c);
+ _layout_line_new(c, fmt);
+ _layout_text_append(c, fmt, NULL, 0, 0, NULL);
+ _layout_line_advance(c, fmt);
}
}
- else /* Calc only and content hasn't changed */
- {
- c->paragraphs = o->paragraphs;
- }
- /* If there are no paragraphs, create the minimum needed,
- * if the last paragraph has no lines/text, create that as well */
- if (!c->paragraphs)
- {
- _layout_paragraph_new(c, NULL);
- o->paragraphs = c->paragraphs;
- }
- c->par = (Evas_Object_Textblock_Paragraph *)
- EINA_INLIST_GET(c->paragraphs)->last;
- if (!c->par->logical_items)
+ /* Go through all the text nodes to create the layout from */
+ EINA_INLIST_FOREACH(c->o->text_nodes, n)
{
- _layout_text_append(c, fmt, NULL, 0, 0, NULL);
- }
+ Evas_Object_Textblock_Node_Format *fnode;
+ size_t start;
+ int off;
- /* In the case of calc only, we copy the items and the paragraphs,
- * but because we don't change OT_DATA we can use it, just copy the item
- * and ref */
- if (calc_only)
- {
- Evas_Object_Textblock_Paragraph *orig_pars, *par;
- Eina_List *itr;
- orig_pars = c->paragraphs;
- c->paragraphs = NULL;
- EINA_INLIST_FOREACH(EINA_INLIST_GET(orig_pars), par)
+ /*FIXME-tom: A hack, so we'll only have one paragraph
+ * until full support is implemented */
+ if (!c->par)
{
- Evas_Object_Textblock_Item *it;
- c->par = malloc(sizeof(Evas_Object_Textblock_Paragraph));
- memcpy(c->par, par, sizeof(Evas_Object_Textblock_Paragraph));
- /* Both of these should not be copied */
- c->par->lines = NULL;
- c->par->logical_items = NULL;
- c->paragraphs = (Evas_Object_Textblock_Paragraph *)
- eina_inlist_append(EINA_INLIST_GET(c->paragraphs),
- EINA_INLIST_GET(c->par));
+ _layout_paragraph_new(c); /* Each node is a paragraph */
+ }
+ if (!c->ln) _layout_line_new(c, fmt);
- /* Copy all the items */
- EINA_LIST_FOREACH(par->logical_items, itr, it)
+ /* For each text node to thorugh all of it's format nodes
+ * append text from the start to the offset of the next format
+ * using the last format got. if needed it also creates format items
+ * this is the core algorithm of the layout mechanism.
+ * Skip the unicode replacement chars when there are because
+ * we don't want to print them. */
+ fnode = n->format_node;
+ start = off = 0;
+ while (fnode && (fnode->text_node == n))
+ {
+ off += fnode->offset;
+ /* No need to skip on the first run, or a non-visible one */
+ _layout_text_append(c, fmt, n, start, off, o->repch);
+ _layout_do_format(obj, c, &fmt, fnode, &style_pad_l, &style_pad_r, &style_pad_t, &style_pad_b);
+ if ((c->have_underline2) || (c->have_underline))
{
- Evas_Object_Textblock_Item *new_it;
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- new_it = malloc(sizeof(Evas_Object_Textblock_Text_Item));
- memcpy(new_it, it,
- sizeof(Evas_Object_Textblock_Text_Item));
- }
- else
- {
- new_it = malloc(
- sizeof(Evas_Object_Textblock_Format_Item));
- memcpy(new_it, it,
- sizeof(Evas_Object_Textblock_Format_Item));
- }
- c->par->logical_items =
- eina_list_append(c->par->logical_items, new_it);
+ if (style_pad_b < c->underline_extend)
+ style_pad_b = c->underline_extend;
+ c->have_underline = 0;
+ c->have_underline2 = 0;
+ c->underline_extend = 0;
+ }
+ start += off;
+ if (fnode->visible)
+ {
+ off = -1;
+ start++;
+ }
+ else
+ {
+ off = 0;
}
+ fnode = _NODE_FORMAT(EINA_INLIST_GET(fnode)->next);
}
+ _layout_text_append(c, fmt, n, start, -1, o->repch);
}
-
-
- /* End of logical layout creation */
-
- /* Start of visual layout creation */
- /* FIXME: move away? */
- {
- Evas_Object_Textblock_Paragraph *par;
- EINA_INLIST_FOREACH(c->paragraphs, par)
- {
- c->par = par;
- _layout_update_par(c);
- /* Break if we should stop here. */
- if (_layout_visualize_par(c))
- break;
- }
- }
- /* End of visual layout creation */
+ /* Advance the line so it'll calculate the size */
+ if ((c->ln) && (c->ln->items || c->ln->format_items) && (fmt))
+ _layout_line_advance(c, fmt);
/* Clean the rest of the format stack */
while (c->format_stack)
c->format_stack = eina_list_remove_list(c->format_stack, c->format_stack);
_format_unref_free(c->obj, fmt);
}
-
- if (c->paragraphs)
+ EINA_INLIST_FOREACH(c->par->lines, ln)
+ {
+ if (ln->line_no == -1)
+ {
+ removes = eina_list_append(removes, ln);
+ }
+ else
+ {
+ if ((ln->y + ln->h) > c->hmax) c->hmax = ln->y + ln->h;
+ }
+ }
+ /* Remove the lines we marked for removal, mostly lines added after
+ * just to force calculation of line sizes */
+ while (removes)
{
- Evas_Object_Textblock_Paragraph *last_par;
- last_par = (Evas_Object_Textblock_Paragraph *)
- EINA_INLIST_GET(c->paragraphs)->last;
- c->hmax = last_par->y + last_par->h;
+ ln = removes->data;
+ c->par->lines = (Evas_Object_Textblock_Line *)eina_inlist_remove(EINA_INLIST_GET(c->par->lines), EINA_INLIST_GET(ln));
+ removes = eina_list_remove_list(removes, removes);
+ _line_free(obj, ln);
}
if (w_ret) *w_ret = c->wmax;
if (h_ret) *h_ret = c->hmax;
-
if ((o->style_pad.l != style_pad_l) || (o->style_pad.r != style_pad_r) ||
(o->style_pad.t != style_pad_t) || (o->style_pad.b != style_pad_b))
{
+ c->par->lines = NULL;
o->style_pad.l = style_pad_l;
o->style_pad.r = style_pad_r;
o->style_pad.t = style_pad_t;
o->style_pad.b = style_pad_b;
- if (!calc_only)
- {
- _paragraphs_clear(obj, c->paragraphs);
- }
_layout(obj, calc_only, w, h, w_ret, h_ret);
+ _paragraphs_clear(obj, c->paragraphs);
return;
}
-
- if (calc_only)
+ if (!calc_only)
{
- Evas_Object_Textblock_Paragraph *par;
- while (c->paragraphs)
- {
- Eina_List *itr, *itrn;
- Evas_Object_Textblock_Item *it;
- par = c->paragraphs;
- /* free all the items */
- EINA_LIST_FOREACH_SAFE(par->logical_items, itr, itrn, it)
- {
- par->logical_items =
- eina_list_remove_list(par->logical_items, itr);
- free(it);
- }
- c->paragraphs = (Evas_Object_Textblock_Paragraph *)
- eina_inlist_remove(EINA_INLIST_GET(c->paragraphs),
- EINA_INLIST_GET(c->paragraphs));
- _paragraph_clear(obj, par);
- free(par);
- }
+ o->paragraphs = c->paragraphs;
+ return;
}
+ if (c->paragraphs) _paragraphs_clear(obj, c->paragraphs);
}
/*
_relayout(const Evas_Object *obj)
{
Evas_Object_Textblock *o;
+ Evas_Object_Textblock_Paragraph *paragraphs;
o = (Evas_Object_Textblock *)(obj->object_data);
+ paragraphs = o->paragraphs;
+ o->paragraphs = NULL;
+ o->formatted.valid = 0;
+ o->native.valid = 0;
_layout(obj,
0,
obj->cur.geometry.w, obj->cur.geometry.h,
&o->formatted.w, &o->formatted.h);
o->formatted.valid = 1;
+ if (paragraphs) _paragraphs_clear(obj, paragraphs);
o->last_w = obj->cur.geometry.w;
o->changed = 0;
- o->content_changed = 0;
o->redraw = 1;
}
* @param n the text node - Not null.
* @param pos the position to look for - valid.
* @param[out] lnr the line found - not null.
- * @param[out] tir the item found - not null.
+ * @param[out] itr the item found - not null.
* @see _find_layout_format_item_line_match()
*/
static void
_find_layout_item_line_match(Evas_Object *obj, Evas_Object_Textblock_Node_Text *n, int pos, Evas_Object_Textblock_Line **lnr, Evas_Object_Textblock_Item **itr)
{
- Evas_Object_Textblock_Paragraph *par, *found_par = NULL;
Evas_Object_Textblock_Line *ln;
Evas_Object_Textblock *o;
o = (Evas_Object_Textblock *)(obj->object_data);
if (!o->formatted.valid) _relayout(obj);
- EINA_INLIST_FOREACH(o->paragraphs, par)
- {
- if (par->text_node == n)
- {
- found_par = par;
- break;
- }
- }
- if (found_par)
+ EINA_INLIST_FOREACH(o->paragraphs->lines, ln)
{
- EINA_INLIST_FOREACH(found_par->lines, ln)
- {
- Evas_Object_Textblock_Item *it;
- Evas_Object_Textblock_Line *lnn;
+ Evas_Object_Textblock_Item *it;
- lnn = (Evas_Object_Textblock_Line *)(((Eina_Inlist *)ln)->next);
- EINA_INLIST_FOREACH(ln->items, it)
+ EINA_INLIST_FOREACH(ln->items, it)
+ {
+ if (it->source_node == n)
{
- /* FIXME: p should be size_t, same goes for pos */
- int p = (int) it->text_pos;
-
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- Evas_Object_Textblock_Text_Item *ti =
- _ITEM_TEXT(it);
-
- p += (int) ti->text_props.text_len;
- }
- else
- {
- p++;
- }
+ int p;
- if (((pos >= (int) it->text_pos) && (pos < p)))
+ p = (int)(it->source_pos + eina_unicode_strlen(it->text));
+ if (((pos >= (int) it->source_pos) && (pos < p)))
{
*lnr = ln;
*itr = it;
/**
* @internal
+ * Find the layout format item and line that match the format node passed.
+ *
+ * @param obj the evas object - NOT NULL.
+ * @param n the text node - Not null.
+ * @param[out] lnr the line found - not null.
+ * @param[out] fir the item found - not null.
+ * @see _find_layout_item_line_match()
+ */
+static void
+_find_layout_format_item_line_match(Evas_Object *obj, Evas_Object_Textblock_Node_Format *n, Evas_Object_Textblock_Line **lnr, Evas_Object_Textblock_Format_Item **fir)
+{
+ Evas_Object_Textblock_Line *ln;
+ Evas_Object_Textblock *o;
+
+ o = (Evas_Object_Textblock *)(obj->object_data);
+ if (!o->formatted.valid) _relayout(obj);
+ EINA_INLIST_FOREACH(o->paragraphs->lines, ln)
+ {
+ Evas_Object_Textblock_Format_Item *fi;
+
+ EINA_INLIST_FOREACH(ln->format_items, fi)
+ {
+ if (fi->source_node == n)
+ {
+ *lnr = ln;
+ *fir = fi;
+ return;
+ }
+ }
+ }
+}
+
+/**
+ * @internal
* Return the line number 'line'.
*
* @param obj the evas object - NOT NULL.
static Evas_Object_Textblock_Line *
_find_layout_line_num(const Evas_Object *obj, int line)
{
- Evas_Object_Textblock_Paragraph *par, *prev_par = NULL;
Evas_Object_Textblock_Line *ln;
Evas_Object_Textblock *o;
o = (Evas_Object_Textblock *)(obj->object_data);
- EINA_INLIST_FOREACH(o->paragraphs, par)
- {
- if (prev_par && (prev_par->line_no <= line) && (line < par->line_no))
- {
- break;
- }
- prev_par = par;
- }
- if (prev_par)
+ EINA_INLIST_FOREACH(o->paragraphs->lines, ln)
{
- EINA_INLIST_FOREACH(prev_par->lines, ln)
- {
- if (ln->par->line_no + ln->line_no == line) return ln;
- }
+ if (ln->line_no == line) return ln;
}
return NULL;
}
Evas_Object *obj;
if (!ts) return;
- /* If the style wasn't really changed, abort. */
- if ((!ts->style_text && !text) ||
- (ts->style_text && text && !strcmp(text, ts->style_text)))
- return;
EINA_LIST_FOREACH(ts->objects, l, obj)
{
Evas_Object_Textblock *o;
o = (Evas_Object_Textblock *)(obj->object_data);
- _evas_textblock_text_node_changed(o, obj, NULL);
+ if (o->markup_text)
+ {
+ free(o->markup_text);
+ o->markup_text = NULL;
+ evas_object_textblock_text_markup_get(obj);
+ }
}
- _style_replace(ts, text);
+ _style_clear(ts);
+ if (text) ts->style_text = strdup(text);
if (ts->style_text)
{
// format MUST be KEY='VALUE'[KEY='VALUE']...
- const char *p;
- const char *key_start, *key_stop, *val_start, *val_stop;
+ char *p;
+ char *key_start, *key_stop, *val_start, *val_stop;
key_start = key_stop = val_start = val_stop = NULL;
p = ts->style_text;
p++;
}
}
+
+ EINA_LIST_FOREACH(ts->objects, l, obj)
+ {
+ Evas_Object_Textblock *o;
+
+ o = (Evas_Object_Textblock *)(obj->object_data);
+ if (o->markup_text)
+ {
+ char *m;
+
+ m = strdup(o->markup_text);
+ if (m)
+ {
+ evas_object_textblock_text_markup_set(obj, m);
+ free(m);
+ }
+ }
+ }
}
/**
TB_HEAD();
if (ts == o->style) return;
if ((ts) && (ts->delete_me)) return;
- if (o->style)
+ if (o->markup_text)
{
- Evas_Textblock_Style *old_ts;
- if (o->markup_text)
+ if (o->style)
{
free(o->markup_text);
o->markup_text = NULL;
+ evas_object_textblock_text_markup_get(obj);
}
+ }
+ if (o->style)
+ {
+ Evas_Textblock_Style *old_ts;
old_ts = o->style;
old_ts->objects = eina_list_remove(old_ts->objects, obj);
if (ts)
{
ts->objects = eina_list_append(ts->objects, obj);
+ o->style = ts;
+ }
+ else
+ {
+ o->style = NULL;
}
- o->style = ts;
- _evas_textblock_text_node_changed(o, obj, NULL);
+ _evas_textblock_changed(o, obj);
}
/**
if (o->repch) eina_stringshare_del(o->repch);
if (ch) o->repch = eina_stringshare_add(ch);
else o->repch = NULL;
- _evas_textblock_text_node_changed(o, obj, NULL);
-}
-
-/**
- * @brief Sets newline mode. When true, newline character will behave
- * as a paragraph separator.
- *
- * @param obj The given textblock object.
- * @param mode EINA_TRUE for PS mode, EINA_FALSE otherwise.
- * @since 1.1.0
- */
-EAPI void
-evas_object_textblock_newline_mode_set(Evas_Object *obj, Eina_Bool mode)
-{
- TB_HEAD();
- if (o->newline_is_ps == mode)
- return;
-
- o->newline_is_ps = mode;
- _evas_textblock_text_node_changed(o, obj, NULL);
-}
-
-/**
- * @brief Gets newline mode. When true, newline character behaves
- * as a paragraph separator.
- *
- * @param obj The given textblock object.
- * @return EINA_TRUE if in PS mode, EINA_FALSE otherwise.
- * @since 1.1.0
- */
-EAPI Eina_Bool
-evas_object_textblock_newline_mode_get(const Evas_Object *obj)
-{
- TB_HEAD_RETURN(EINA_FALSE);
- return o->newline_is_ps;
+ _evas_textblock_changed(o, obj);
}
/**
p++;
}
}
- _evas_textblock_text_node_changed(o, obj, o->cursor->node);
+ _evas_textblock_changed(o, obj);
}
static void
_markup_get_text_append(Eina_Strbuf *txt, const Eina_Unicode *text)
{
- char *p = eina_unicode_unicode_to_utf8(text, NULL);
+ char *p = evas_common_encoding_unicode_to_utf8(text, NULL);
char *base = p;
while (*p)
{
* Skip the unicode replacement chars when there are because
* we don't want to print them. */
text_base = text =
- eina_unicode_strndup(eina_ustrbuf_string_get(n->unicode),
- eina_ustrbuf_length_get(n->unicode));
+ eina_unicode_strdup(eina_ustrbuf_string_get(n->unicode));
fnode = n->format_node;
off = 0;
while (fnode && (fnode->text_node == n))
/**
* @internal
- * Find the layout item and line that match the cursor.
+ * Return the last format that applies to a specific cursor or at the specific
+ * position the cursor points to. This means the format node before the
+ * position of the cursor in the text node is returned or the previous's text
+ * node's format node.
*
- * @param cur the cursor we are currently at. - NOT NULL.
- * @param[out] lnr the line found - not null.
- * @param[out] itr the item found - not null.
- * @return EINA_TRUE if we matched the previous format, EINA_FALSE otherwise.
+ * @param cur the position to look at.
+ * @return the format node found.
*/
-static Eina_Bool
-_find_layout_item_match(const Evas_Textblock_Cursor *cur, Evas_Object_Textblock_Line **lnr, Evas_Object_Textblock_Item **itr)
+#if 0 // not used anymore?
+static Evas_Object_Textblock_Node_Format *
+_evas_textblock_cursor_node_format_before_pos_get(const Evas_Textblock_Cursor *cur)
{
- Evas_Textblock_Cursor cur2;
- Eina_Bool previous_format = EINA_FALSE;
+ Evas_Object_Textblock_Node_Format *node, *pitr = NULL;
+ Evas_Object_Textblock_Node_Format *itr;
+ size_t position = 0;
- cur2.obj = cur->obj;
- evas_textblock_cursor_copy(cur, &cur2);
- if (cur2.pos > 0)
+ if (!cur->node) return NULL;
+
+ node = cur->node->format_node;
+ if (!node) return NULL;
+ /* If there is no exclusive format node to this paragraph return the
+ * previous's node */
+ if (node->text_node != cur->node)
{
- cur2.pos--;
+ return node;
}
-
- if (_evas_textblock_cursor_is_at_the_end(cur) &&
- evas_textblock_cursor_format_is_visible_get(&cur2))
+ else if (node->offset > cur->pos)
{
- _find_layout_item_line_match(cur2.obj, cur2.node, cur2.pos, lnr, itr);
- previous_format = EINA_TRUE;
+ return _NODE_FORMAT(EINA_INLIST_GET(node)->prev);
}
- else
+ /* Find the main format node */
+ pitr = _NODE_FORMAT(EINA_INLIST_GET(node)->prev);
+ EINA_INLIST_FOREACH(node, itr)
{
- _find_layout_item_line_match(cur->obj, cur->node, cur->pos, lnr, itr);
+ position += itr->offset;
+ if ((itr->text_node != cur->node) ||
+ (position >= cur->pos))
+ {
+ return pitr;
+ }
+ pitr = itr;
}
- return previous_format;
+ return pitr;
}
+#endif
/**
* Return the object's main cursor.
cur.obj = obj;
eina_ustrbuf_remove(n->text_node->unicode, index, index + 1);
- if (format && _IS_PARAGRAPH_SEPARATOR(o, format))
+ if (format && _IS_PARAGRAPH_SEPARATOR(format))
{
evas_textblock_cursor_set_at_format(&cur, n);
_evas_textblock_cursor_nodes_merge(&cur);
/* pnode can never be visible! (it's the closing format) */
_evas_textblock_node_format_remove(o, pnode, 0);
}
- _evas_textblock_text_node_changed(o, obj, tnode);
+ _evas_textblock_changed(o, obj);
}
/**
{
if (!evas_textblock_cursor_paragraph_next(cur))
{
- /* If we already were at the end, that means we don't have
- * where to go next we should return FALSE */
- if (cur->pos == (size_t) index)
- return EINA_FALSE;
-
cur->pos = index;
return EINA_TRUE;
}
else
{
- return EINA_TRUE;
+ return EINA_FALSE;
}
}
}
if (!cur) return;
if (!cur->node) return;
index = eina_ustrbuf_length_get(cur->node->unicode) - 1;
- if (index >= 0)
- cur->pos = index;
- else
- cur->pos = 0;
+ cur->pos = index;
}
Evas_Object_Textblock *o;
Evas_Object_Textblock_Line *ln = NULL;
Evas_Object_Textblock_Item *it = NULL;
+ Evas_Object_Textblock_Format_Item *fi = NULL;
+ Evas_Textblock_Cursor cur2;
if (!cur) return;
if (!cur->node) return;
o = (Evas_Object_Textblock *)(cur->obj->object_data);
if (!o->formatted.valid) _relayout(cur->obj);
- _find_layout_item_match(cur, &ln, &it);
+ /* Cur 2 is pointing to the previous char */
+ cur2.obj = cur->obj;
+ evas_textblock_cursor_copy(cur, &cur2);
+ if (cur2.pos > 0)
+ {
+ cur2.pos--;
+ }
+
+ if (evas_textblock_cursor_format_is_visible_get(cur))
+ {
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
+ &ln, &fi);
+ }
+ else if (_evas_textblock_cursor_is_at_the_end(cur) &&
+ evas_textblock_cursor_format_is_visible_get(&cur2))
+ {
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(&cur2)),
+ &ln, &fi);
+ }
+ else
+ {
+ _find_layout_item_line_match(cur->obj, cur->node, cur->pos, &ln, &it);
+ }
if (!ln) return;
- if (ln->items)
+
+ it = (Evas_Object_Textblock_Item *)ln->items;
+ fi = (Evas_Object_Textblock_Format_Item *)ln->format_items;
+ if ((it) && (fi))
{
- Evas_Object_Textblock_Item *i;
- it = ln->items;
- EINA_INLIST_FOREACH(ln->items, i)
- {
- if (it->text_pos > i->text_pos)
- {
- it = i;
- }
- }
+ if (it->x < fi->x) fi = NULL;
+ else it = NULL;
}
if (it)
{
- cur->pos = it->text_pos;
- cur->node = it->text_node;
+ cur->pos = it->source_pos;
+ cur->node = it->source_node;
+ }
+ else if (fi)
+ {
+ cur->node = fi->source_node->text_node;
+ cur->pos = _evas_textblock_node_format_pos_get(fi->source_node);
}
}
Evas_Object_Textblock *o;
Evas_Object_Textblock_Line *ln = NULL;
Evas_Object_Textblock_Item *it = NULL;
+ Evas_Object_Textblock_Format_Item *fi = NULL;
+ Evas_Textblock_Cursor cur2;
if (!cur) return;
if (!cur->node) return;
o = (Evas_Object_Textblock *)(cur->obj->object_data);
if (!o->formatted.valid) _relayout(cur->obj);
+// kills "click below text" and up/downm arrow. disable
+
+ /* Cur 2 is pointing to the previous char */
+ cur2.obj = cur->obj;
+ evas_textblock_cursor_copy(cur, &cur2);
+ if (cur2.pos > 0)
+ {
+ cur2.pos--;
+ }
- _find_layout_item_match(cur, &ln, &it);
+ if (evas_textblock_cursor_format_is_visible_get(cur))
+ {
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
+ &ln, &fi);
+ }
+ else if (_evas_textblock_cursor_is_at_the_end(cur) &&
+ evas_textblock_cursor_format_is_visible_get(&cur2))
+ {
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(&cur2)),
+ &ln, &fi);
+ }
+ else
+ {
+ _find_layout_item_line_match(cur->obj, cur->node, cur->pos, &ln, &it);
+ }
if (!ln) return;
if (ln->items)
+ it = (Evas_Object_Textblock_Item *)((EINA_INLIST_GET(ln->items))->last);
+ else
+ it = NULL;
+
+ if (ln->format_items)
+ fi = (Evas_Object_Textblock_Format_Item *)((EINA_INLIST_GET(ln->format_items))->last);
+ else
+ fi = NULL;
+ if ((it) && (fi))
{
- Evas_Object_Textblock_Item *i;
- it = ln->items;
- EINA_INLIST_FOREACH(ln->items, i)
- {
- if (it->text_pos < i->text_pos)
- {
- it = i;
- }
- }
+ if ((it->x + it->w) > (fi->x + fi->w)) fi = NULL;
+ else it = NULL;
}
if (it)
{
- size_t index;
+ int index;
- cur->node = it->text_node;
- cur->pos = it->text_pos;
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- index = _ITEM_TEXT(it)->text_props.text_len - 1;
- GET_NEXT(_ITEM_TEXT(it)->text, index);
- cur->pos += index;
- }
- else if (!EINA_INLIST_GET(ln)->next && !EINA_INLIST_GET(ln->par)->next)
+ cur->pos = it->source_pos;
+ cur->node = it->source_node;
+ index = eina_unicode_strlen(it->text) - 1;
+ GET_NEXT(it->text, index);
+ cur->pos += index;
+ }
+ else if (fi)
+ {
+ cur->node = fi->source_node->text_node;
+ cur->pos = _evas_textblock_node_format_pos_get(fi->source_node);
+ /* If it's the last line, advance to the null */
+ if (!EINA_INLIST_GET(ln)->next)
{
cur->pos++;
}
if (!itr || (itr && (itr->text_node != n)))
{
/* Remove the PS, and return since it's the end of the node */
- if (_IS_PARAGRAPH_SEPARATOR(o,
+ if (_IS_PARAGRAPH_SEPARATOR(
eina_strbuf_string_get(last_node->format)))
{
_evas_textblock_node_format_remove(o, last_node, 0);
Evas_Object_Textblock *o;
Evas_Object_Textblock_Line *ln;
Evas_Object_Textblock_Item *it;
+ Evas_Object_Textblock_Format_Item *fi;
if (!cur) return EINA_FALSE;
o = (Evas_Object_Textblock *)(cur->obj->object_data);
ln = _find_layout_line_num(cur->obj, line);
if (!ln) return EINA_FALSE;
it = (Evas_Object_Textblock_Item *)ln->items;
+ fi = (Evas_Object_Textblock_Format_Item *)ln->format_items;
+ if ((it) && (fi))
+ {
+ if (it->x < fi->x) fi = NULL;
+ else it = NULL;
+ }
if (it)
{
- cur->pos = it->text_pos;
- cur->node = it->text_node;
+ cur->pos = it->source_pos;
+
+ cur->node = it->source_node;
+ }
+ else if (fi)
+ {
+ cur->node = fi->source_node->text_node;
+ cur->pos = _evas_textblock_node_format_pos_get(fi->source_node);
}
else
{
n = calloc(1, sizeof(Evas_Object_Textblock_Node_Text));
n->unicode = eina_ustrbuf_new();
- /* We want to layout each paragraph at least once. */
- n->dirty = EINA_TRUE;
#ifdef BIDI_SUPPORT
n->bidi_props = evas_bidi_paragraph_props_new();
n->bidi_props->direction = EVAS_BIDI_PARAGRAPH_NATURAL;
/**
* @internal
- * Mark and notifiy that the textblock, and specifically a node has changed.
+ * Mark and notifiy that the textblock has changed.
*
* @param o the textblock object.
* @param obj the evas object.
- * @param n the paragraph that changed - NULL means all.
*/
static void
-_evas_textblock_text_node_changed(Evas_Object_Textblock *o, Evas_Object *obj,
- Evas_Object_Textblock_Node_Text *n)
+_evas_textblock_changed(Evas_Object_Textblock *o, Evas_Object *obj)
{
- if (!n)
- {
- Evas_Object_Textblock_Node_Text *itr;
- EINA_INLIST_FOREACH(EINA_INLIST_GET(o->text_nodes), itr)
- {
- itr->dirty = EINA_TRUE;
- }
- }
- else
- {
- n->dirty = EINA_TRUE;
- }
o->formatted.valid = 0;
o->native.valid = 0;
- o->content_changed = 1;
+ o->changed = 1;
if (o->markup_text)
{
free(o->markup_text);
int len = 0;
if (!cur) return 0;
- text = eina_unicode_utf8_to_unicode(_text, &len);
+ text = evas_common_encoding_utf8_to_unicode(_text, &len);
o = (Evas_Object_Textblock *)(cur->obj->object_data);
/* Update all the cursors after our position. */
_evas_textblock_cursors_update_offset(cur, cur->node, cur->pos, len);
evas_bidi_paragraph_props_unref(n->bidi_props);
n->bidi_props = evas_bidi_paragraph_props_get(eina_ustrbuf_string_get(n->unicode));
#endif
- _evas_textblock_text_node_changed(o, cur->obj, n);
+ _evas_textblock_changed(o, cur->obj);
free(text);
return len;
}
/* Advance all the cursors after our cursor */
_evas_textblock_cursors_update_offset(cur, cur->node, cur->pos, 1);
- if (_IS_PARAGRAPH_SEPARATOR(o, format))
+
+ if (_IS_PARAGRAPH_SEPARATOR(format))
{
_evas_textblock_cursor_break_paragraph(cur, n);
}
eina_ustrbuf_string_get(cur->node->unicode));
#endif
}
+
}
- _evas_textblock_text_node_changed(o, cur->obj, cur->node);
+ _evas_textblock_changed(o, cur->obj);
return is_visible;
}
/* If there's a PS it must be the last become it delimits paragraphs */
last_fmt = _evas_textblock_node_format_last_at_off(fmt);
format = eina_strbuf_string_get(last_fmt->format);
- if (format && _IS_PARAGRAPH_SEPARATOR(o, format))
+ if (format && _IS_PARAGRAPH_SEPARATOR(format))
{
merge_nodes = 1;
}
}
_evas_textblock_cursors_update_offset(cur, n, ppos, -(index - ppos));
- _evas_textblock_text_node_changed(o, cur->obj, cur->node);
+ _evas_textblock_changed(o, cur->obj);
}
/**
if (reset_cursor)
evas_textblock_cursor_copy(cur1, o->cursor);
- _evas_textblock_text_node_changed(o, cur1->obj, cur1->node);
+ _evas_textblock_changed(o, cur1->obj);
}
ustr = eina_ustrbuf_string_get(cur->node->unicode);
buf[0] = ustr[cur->pos];
buf[1] = 0;
- s = eina_unicode_unicode_to_utf8(buf, NULL);
+ s = evas_common_encoding_unicode_to_utf8(buf, NULL);
return s;
}
int off = 0;
text_base = text =
- eina_unicode_strndup(eina_ustrbuf_string_get(tnode->unicode),
- eina_ustrbuf_length_get(tnode->unicode));
+ eina_unicode_strdup(eina_ustrbuf_string_get(tnode->unicode));
if (tnode == cur2->node)
{
fnode = _evas_textblock_node_text_get_first_format_between(tnode,
dir_cur = cur;
if (ctype == EVAS_TEXTBLOCK_CURSOR_UNDER)
{
- ret = evas_textblock_cursor_pen_geometry_get(cur, cx, cy, cw, ch);
+ ret = evas_textblock_cursor_char_geometry_get(cur, cx, cy, cw, ch);
}
else if (ctype == EVAS_TEXTBLOCK_CURSOR_BEFORE)
{
+ /*FIXME: Rough sketch, not yet implemented - VERY buggy. */
/* In the case of a "before cursor", we should get the coordinates
* of just after the previous char (which in bidi text may not be
* just before the current char). */
Evas_Coord x, y, h, w;
- Evas_Object_Textblock_Node_Format *fmt;
/* If it's at the end of the line, we want to get the position, not
* the position of the previous */
if ((cur->pos > 0) && !_evas_textblock_cursor_is_at_the_end(cur))
{
- Eina_Bool before_char = EINA_FALSE;
+ dir_cur = &cur2;
cur2.obj = cur->obj;
evas_textblock_cursor_copy(cur, &cur2);
- evas_textblock_cursor_char_prev(&cur2);
-
- fmt = _evas_textblock_cursor_node_format_at_pos_get(&cur2);
-
- if (!fmt ||
- !_IS_LINE_SEPARATOR(eina_strbuf_string_get(fmt->format)))
- {
- dir_cur = &cur2;
- before_char = EINA_FALSE;
- }
- else
- {
- before_char = EINA_TRUE;
- }
- ret = evas_textblock_cursor_pen_geometry_get(
- dir_cur, &x, &y, &w, &h);
+ cur2.pos--;
+ ret = evas_textblock_cursor_char_geometry_get(&cur2, &x, &y, &w, &h);
#ifdef BIDI_SUPPORT
/* Adjust if the char is an rtl char */
if (ret >= 0)
{
- if ((!before_char &&
- evas_bidi_is_rtl_char(dir_cur->node->bidi_props, 0,
- dir_cur->pos)) ||
- (before_char &&
- !evas_bidi_is_rtl_char(dir_cur->node->bidi_props, 0,
- dir_cur->pos)))
+ Evas_BiDi_Props props;
+ props.props = cur2.node->bidi_props;
+ props.start = 0;
+ if (evas_bidi_is_rtl_char(&props, cur2.pos))
{
/* Just don't advance the width */
w = 0;
}
}
#endif
- }
- else if (cur->pos == 0)
- {
- ret = evas_textblock_cursor_pen_geometry_get(
- dir_cur, &x, &y, &w, &h);
-#ifdef BIDI_SUPPORT
- /* Adjust if the char is an rtl char */
- if ((ret >= 0) && (!evas_bidi_is_rtl_char(
- dir_cur->node->bidi_props, 0, dir_cur->pos)))
- {
- /* Just don't advance the width */
- w = 0;
- }
-#endif
+
}
else
{
- ret = evas_textblock_cursor_pen_geometry_get(
- dir_cur, &x, &y, &w, &h);
+ ret = evas_textblock_cursor_char_geometry_get(cur, &x, &y, &w, &h);
+ w = 0;
}
if (ret >= 0)
{
if (dir && dir_cur && dir_cur->node)
{
#ifdef BIDI_SUPPORT
- if (_evas_textblock_cursor_is_at_the_end(dir_cur) && (dir_cur->pos > 0))
- {
- *dir = (evas_bidi_is_rtl_char(dir_cur->node->bidi_props, 0,
- dir_cur->pos - 1)) ?
- EVAS_BIDI_DIRECTION_RTL : EVAS_BIDI_DIRECTION_LTR;
- }
- else if (dir_cur->pos > 0)
- {
- *dir = (evas_bidi_is_rtl_char(dir_cur->node->bidi_props, 0,
- dir_cur->pos)) ?
- EVAS_BIDI_DIRECTION_RTL : EVAS_BIDI_DIRECTION_LTR;
- }
- else
+ Evas_BiDi_Props props;
+ props.props = dir_cur->node->bidi_props;
+ props.start = 0;
+
+ *dir = (evas_bidi_is_rtl_char(&props, dir_cur->pos)) ?
+ EVAS_BIDI_DIRECTION_RTL : EVAS_BIDI_DIRECTION_LTR;
+#else
+ *dir = EVAS_BIDI_DIRECTION_LTR;
#endif
- {
- *dir = EVAS_BIDI_DIRECTION_LTR;
- }
}
return ret;
}
+
/**
- * @internal
- * Returns the geometry/pen position (depending on query_func) of the char
- * at pos.
+ * Returns the geometry of the char at cur.
*
* @param cur the position of the char.
- * @param query_func the query function to use.
- * @param cx the x of the char (or pen_x in the case of pen position).
+ * @param cx the x of the char.
* @param cy the y of the char.
- * @param cw the w of the char (or advance in the case pen position).
- * @param ch the h of the char.
+ * @param cw the width of the char.
+ * @param ch the height of the char.
* @return line number of the char on success, -1 on error.
*/
-static int
-_evas_textblock_cursor_char_pen_geometry_common_get(int (*query_func) (void *data, void *font, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch), const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
+EAPI int
+evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
{
Evas_Object_Textblock *o;
Evas_Object_Textblock_Line *ln = NULL;
Evas_Object_Textblock_Item *it = NULL;
- Evas_Object_Textblock_Text_Item *ti = NULL;
Evas_Object_Textblock_Format_Item *fi = NULL;
+ Evas_Textblock_Cursor cur2;
int x = 0, y = 0, w = 0, h = 0;
int pos, ret;
- Eina_Bool previous_format;
+ int previous_format = 0;
if (!cur) return -1;
o = (Evas_Object_Textblock *)(cur->obj->object_data);
if (!o->paragraphs) return -1;
ln = o->paragraphs->lines;
if (!ln) return -1;
- if (cx) *cx = ln->par->x + ln->x;
- if (cy) *cy = ln->par->y + ln->y;
+ if (cx) *cx = ln->x;
+ if (cy) *cy = ln->y;
if (cw) *cw = ln->w;
if (ch) *ch = ln->h;
- return ln->par->line_no + ln->line_no;
+ return ln->line_no;
}
else
return -1;
}
if (!o->formatted.valid) _relayout(cur->obj);
- previous_format = _find_layout_item_match(cur, &ln, &it);
- if (!it)
+ /* Cur 2 is pointing to the previous char */
+ cur2.obj = cur->obj;
+ evas_textblock_cursor_copy(cur, &cur2);
+ if (cur2.pos > 0)
+ {
+ cur2.pos--;
+ }
+
+ if (evas_textblock_cursor_format_is_visible_get(cur))
{
- return -1;
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
+ &ln, &fi);
}
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
+ else if (_evas_textblock_cursor_is_at_the_end(cur) &&
+ evas_textblock_cursor_format_is_visible_get(&cur2))
{
- ti = _ITEM_TEXT(it);
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(&cur2)),
+ &ln, &fi);
+ previous_format = 1;
}
else
{
- fi = _ITEM_FORMAT(it);
+ _find_layout_item_line_match(cur->obj, cur->node, cur->pos, &ln, &it);
}
-
- if (ln && ti)
+ if (ln && it)
{
- pos = cur->pos - ti->parent.text_pos;
+ pos = cur->pos - it->source_pos;
ret = -1;
if (pos < 0) pos = 0;
- if (ti->parent.format->font.font)
+ if (it->format->font.font)
{
- ret = query_func(cur->ENDT,
- ti->parent.format->font.font,
- ti->text, &ti->text_props,
+ ret = cur->ENFN->font_char_coords_get(cur->ENDT, it->format->font.font,
+ it->text, &it->bidi_props,
pos,
&x, &y, &w, &h);
}
-
- x += ln->par->x + ln->x + _ITEM(ti)->x;
-
- if (x < ln->par->x + ln->x)
- {
- x = ln->par->x + ln->x;
- }
- y = ln->par->y + ln->y;
+ x += ln->x + it->x;
+ if (x < ln->x)
+ {
+ x = ln->x;
+ }
+ y = ln->y;
h = ln->h;
}
else if (ln && fi)
eina_strbuf_string_get(fi->source_node->format)))
{
x = 0;
- y = ln->par->y + ln->y + ln->h;
+ y = ln->y + ln->h;
}
else
{
-#ifdef BIDI_SUPPORT
- if (EVAS_BIDI_PARAGRAPH_DIRECTION_IS_RTL(
- fi->parent.text_node->bidi_props))
- {
- x = ln->par->x + ln->x;
- }
- else
-#endif
- {
- x = ln->par->x + ln->x + ln->w;
- }
- y = ln->par->y + ln->y;
+ x = ln->x + fi->x + fi->w;
+ y = ln->y;
}
w = 0;
h = ln->h;
}
else
{
- x = ln->par->x + ln->x + _ITEM(fi)->x;
- y = ln->par->y + ln->y;
- w = _ITEM(fi)->w;
+ x = ln->x + fi->x;
+ y = ln->y;
+ w = fi->w;
h = ln->h;
}
}
if (cy) *cy = y;
if (cw) *cw = w;
if (ch) *ch = h;
- return ln->par->line_no + ln->line_no;
-}
-
-/**
- * Returns the geometry of the char at cur.
- *
- * @param cur the position of the char.
- * @param cx the x of the char.
- * @param cy the y of the char.
- * @param cw the w of the char.
- * @param ch the h of the char.
- * @return line number of the char on success, -1 on error.
- */
-EAPI int
-evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
-{
- return _evas_textblock_cursor_char_pen_geometry_common_get(
- cur->ENFN->font_char_coords_get, cur, cx, cy, cw, ch);
-}
-
-/**
- * Returns the geometry of the pen at cur.
- *
- * @param cur the position of the char.
- * @param cpen_x the pen_x of the char.
- * @param cy the y of the char.
- * @param cadv the adv of the char.
- * @param ch the h of the char.
- * @return line number of the char on success, -1 on error.
- */
-EAPI int
-evas_textblock_cursor_pen_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
-{
- return _evas_textblock_cursor_char_pen_geometry_common_get(
- cur->ENFN->font_pen_coords_get, cur, cx, cy, cw, ch);
+ return ln->line_no;
}
/**
Evas_Object_Textblock *o;
Evas_Object_Textblock_Line *ln = NULL;
Evas_Object_Textblock_Item *it = NULL;
+ Evas_Object_Textblock_Format_Item *fi = NULL;
+ Evas_Textblock_Cursor cur2;
int x, y, w, h;
if (!cur) return -1;
}
else
{
- _find_layout_item_match(cur, &ln, &it);
- }
- if (!ln) return -1;
- x = ln->par->x + ln->x;
- y = ln->par->y + ln->y;
- w = ln->w;
- h = ln->h;
- if (cx) *cx = x;
- if (cy) *cy = y;
- if (cw) *cw = w;
- if (ch) *ch = h;
- return ln->par->line_no + ln->line_no;
-}
-
-/**
- * Set the position of the cursor according to the X and Y coordinates.
- *
- * @param cur the cursor to set.
- * @param x coord to set by.
- * @param y coord to set by.
- * @return #EINA_TRUE on success, #EINA_FALSE otherwise.
- */
-EAPI Eina_Bool
-evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y)
-{
- Evas_Object_Textblock *o;
- Evas_Object_Textblock_Paragraph *par, *found_par = NULL;
- Evas_Object_Textblock_Line *ln;
- Evas_Object_Textblock_Item *it = NULL, *it_break = NULL;
-
- if (!cur) return EINA_FALSE;
- o = (Evas_Object_Textblock *)(cur->obj->object_data);
- if (!o->formatted.valid) _relayout(cur->obj);
- x += o->style_pad.l;
- y += o->style_pad.t;
- EINA_INLIST_FOREACH(o->paragraphs, par)
- {
- if ((par->x <= x) && (par->x + par->w > x) &&
- (par->y <= y) && (par->y + par->h > y))
- {
- found_par = par;
- break;
- }
- }
- if (found_par)
- {
- EINA_INLIST_FOREACH(found_par->lines, ln)
- {
- if (ln->par->y + ln->y > y) break;
- if ((ln->par->y + ln->y <= y) && ((ln->par->y + ln->y + ln->h) > y))
- {
- EINA_INLIST_FOREACH(ln->items, it)
- {
- if ((it->x + ln->par->x + ln->x) > x)
- {
- it_break = it;
- break;
- }
- if (((it->x + ln->par->x + ln->x) <= x) && (((it->x + ln->par->x + ln->x) + it->adv) > x))
- {
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- int pos;
- int cx, cy, cw, ch;
- Evas_Object_Textblock_Text_Item *ti;
- ti = _ITEM_TEXT(it);
-
- pos = -1;
- if (ti->parent.format->font.font)
- pos = cur->ENFN->font_char_at_coords_get(
- cur->ENDT,
- ti->parent.format->font.font,
- ti->text, &ti->text_props,
- x - it->x - ln->par->x - ln->x, 0,
- &cx, &cy, &cw, &ch);
- if (pos < 0)
- return EINA_FALSE;
- cur->pos = pos + it->text_pos;
- cur->node = it->text_node;
- return EINA_TRUE;
- }
- else
- {
- Evas_Object_Textblock_Format_Item *fi;
- fi = _ITEM_FORMAT(it);
- cur->pos = fi->parent.text_pos;
- cur->node = fi->source_node->text_node;
- return EINA_TRUE;
- }
- }
- }
- if (it_break)
- {
- it = it_break;
- cur->node = it->text_node;
- cur->pos = it->text_pos;
-
- /*FIXME: needs smarter handling, ATM just check, if it's
- * the first item, then go to the end of the line, helps
- * with rtl langs, doesn't affect ltr langs that much. */
- if (!EINA_INLIST_GET(it)->prev)
- {
- evas_textblock_cursor_line_char_last(cur);
- }
-
- return EINA_TRUE;
- }
- }
- }
- }
- return EINA_FALSE;
-}
-
-/**
- * Set the cursor position according to the y coord.
- *
- * @param cur the cur to be set.
- * @param y the coord to set by.
- * @return the line number found, -1 on error.
- */
-EAPI int
-evas_textblock_cursor_line_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord y)
-{
- Evas_Object_Textblock *o;
- Evas_Object_Textblock_Paragraph *par, *found_par = NULL;
- Evas_Object_Textblock_Line *ln;
-
- if (!cur) return -1;
- o = (Evas_Object_Textblock *)(cur->obj->object_data);
- if (!o->formatted.valid) _relayout(cur->obj);
- y += o->style_pad.t;
-
- EINA_INLIST_FOREACH(o->paragraphs, par)
- {
- if ((par->y <= y) && (par->y + par->h > y))
- {
- found_par = par;
- break;
- }
- }
-
- if (found_par)
- {
- EINA_INLIST_FOREACH(found_par->lines, ln)
- {
- if (ln->par->y + ln->y > y) break;
- if ((ln->par->y + ln->y <= y) && ((ln->par->y + ln->y + ln->h) > y))
- {
- evas_textblock_cursor_line_set(cur, ln->par->line_no +
- ln->line_no);
- return ln->par->line_no + ln->line_no;
- }
- }
- }
- return -1;
-}
-
-/**
- * @internal
- * Updates x and w according to the text direction, position in text and
- * if it's a special case switch
- *
- * @param ti the text item we are working on
- * @param x the current x (we get) and the x we return
- * @param w the current w (we get) and the w we return
- * @param start if this is the first item or not
- * @param switch_items toogles item switching (rtl cases)
- */
-static void
-_evas_textblock_range_calc_x_w(const Evas_Object_Textblock_Item *it,
- Evas_Coord *x, Evas_Coord *w, Eina_Bool start, Eina_Bool switch_items)
-{
- if ((start && !switch_items) || (!start && switch_items))
- {
-#ifdef BIDI_SUPPORT
- if (((it->type == EVAS_TEXTBLOCK_ITEM_TEXT) &&
- _ITEM_TEXT(it)->text_props.bidi.dir == EVAS_BIDI_DIRECTION_RTL)
- ||
- ((it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) &&
- _ITEM_FORMAT(it)->bidi_dir == EVAS_BIDI_DIRECTION_RTL))
- {
- *w = *x + *w;
- *x = 0;
- }
- else
-#endif
- {
- *w = it->adv - *x;
- }
- }
- else
- {
-#ifdef BIDI_SUPPORT
- if (((it->type == EVAS_TEXTBLOCK_ITEM_TEXT) &&
- _ITEM_TEXT(it)->text_props.bidi.dir == EVAS_BIDI_DIRECTION_RTL)
- ||
- ((it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) &&
- _ITEM_FORMAT(it)->bidi_dir == EVAS_BIDI_DIRECTION_RTL))
- {
- *x = *x + *w;
- *w = it->adv - *x;
- }
- else
-#endif
- {
- *w = *x;
- *x = 0;
- }
- }
-
-}
-
-/**
- * @internal
- * Returns the geometry of the range in line ln. Cur1 is the start cursor,
- * cur2 is the end cursor, NULL means from the start or to the end accordingly.
- * Assumes that ln is valid, and that at least one of cur1 and cur2 is not NULL.
- *
- * @param ln the line to work on.
- * @param cur1 the start cursor
- * @param cur2 the end cursor
- * @return Returns the geometry of the range
- */
-static Eina_List *
-_evas_textblock_cursor_range_in_line_geometry_get(
- const Evas_Object_Textblock_Line *ln, const Evas_Textblock_Cursor *cur1,
- const Evas_Textblock_Cursor *cur2)
-{
- Evas_Object_Textblock_Item *it;
- Evas_Object_Textblock_Item *it1, *it2;
- Eina_List *rects = NULL;
- Evas_Textblock_Rectangle *tr;
- size_t start, end;
- Eina_Bool switch_items;
- const Evas_Textblock_Cursor *cur;
-
- cur = (cur1) ? cur1 : cur2;
-
- /* Find the first and last items */
- it1 = it2 = NULL;
- start = end = 0;
- EINA_INLIST_FOREACH(ln->items, it)
- {
- size_t item_len;
- item_len = (it->type == EVAS_TEXTBLOCK_ITEM_TEXT) ?
- _ITEM_TEXT(it)->text_props.text_len
- : 1;
- if ((!cur1 || (cur1->pos < it->text_pos + item_len)) &&
- (!cur2 || (cur2->pos >= it->text_pos)))
- {
- if (!it1)
- {
- it1 = it;
- start = item_len; /* start stores the first item_len */
- }
- it2 = it;
- end = item_len; /* end stores the last item_len */
- }
- }
-
- /* If we couldn't find even one item, return */
- if (!it1) return NULL;
-
- /* If the first item is logically before or equal the second item
- * we have to set start and end differently than in the other case */
- if (it1->text_pos <= it2->text_pos)
- {
- start = (cur1) ? (cur1->pos - it1->text_pos) : 0;
- end = (cur2) ? (cur2->pos - it2->text_pos) : end;
- switch_items = EINA_FALSE;
- }
- else
- {
- start = (cur2) ? (cur2->pos - it1->text_pos) : start;
- end = (cur1) ? (cur1->pos - it2->text_pos) : 0;
- switch_items = EINA_TRUE;
- }
-
- /* IMPORTANT: Don't use cur1/cur2 past this point (because they probably
- * don't make sense anymore. That's why there are start and end),
- * unless you know what you are doing */
-
- /* Special case when they share the same item and it's a text item */
- if ((it1 == it2) && (it1->type == EVAS_TEXTBLOCK_ITEM_TEXT))
- {
- Evas_Coord x1, w1, x2, w2;
- Evas_Coord x, w, y, h;
- Evas_Object_Textblock_Text_Item *ti;
- int ret;
-
- ti = _ITEM_TEXT(it1);
- ret = cur->ENFN->font_pen_coords_get(cur->ENDT,
- ti->parent.format->font.font,
- ti->text, &ti->text_props,
- start,
- &x1, &y, &w1, &h);
- if (!ret)
- {
- return NULL;
- }
- ret = cur->ENFN->font_pen_coords_get(cur->ENDT,
- ti->parent.format->font.font,
- ti->text, &ti->text_props,
- end,
- &x2, &y, &w2, &h);
- if (!ret)
- {
- return NULL;
- }
-
- /* Make x2 the one on the right */
- if (x2 < x1)
- {
- Evas_Coord tmp;
- tmp = x1;
- x1 = x2;
- x2 = tmp;
-
- tmp = w1;
- w1 = w2;
- w2 = tmp;
- }
-
-#ifdef BIDI_SUPPORT
- if (ti->text_props.bidi.dir == EVAS_BIDI_DIRECTION_RTL)
- {
- x = x1 + w1;
- w = x2 + w2 - x;
- }
- else
-#endif
- {
- x = x1;
- w = x2 - x1;
- }
- if (w > 0)
- {
- tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
- rects = eina_list_append(rects, tr);
- tr->x = ln->par->x + ln->x + it1->x + x;
- tr->y = ln->par->y + ln->y;
- tr->h = ln->h;
- tr->w = w;
- }
- }
- else if (it1 != it2)
- {
- /* Get the middle items */
- Evas_Coord min_x, max_x;
- Evas_Coord x, w;
- it = _ITEM(EINA_INLIST_GET(it1)->next);
- min_x = max_x = it->x;
-
- if (it1->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- Evas_Coord y, h;
- Evas_Object_Textblock_Text_Item *ti;
- int ret;
- ti = _ITEM_TEXT(it1);
-
- ret = cur->ENFN->font_pen_coords_get(cur->ENDT,
- ti->parent.format->font.font,
- ti->text, &ti->text_props,
- start,
- &x, &y, &w, &h);
- if (!ret)
- {
- /* BUG! Skip the first item */
- x = w = 0;
- }
- else
- {
- _evas_textblock_range_calc_x_w(it1, &x, &w, EINA_TRUE,
- switch_items);
- }
- }
- else
- {
- x = 0;
- w = it1->w;
- _evas_textblock_range_calc_x_w(it1, &x, &w, EINA_TRUE,
- switch_items);
- }
- if (w > 0)
+ /* Cur 2 is pointing to the previous char */
+ cur2.obj = cur->obj;
+ evas_textblock_cursor_copy(cur, &cur2);
+ if (cur2.pos > 0)
{
- tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
- rects = eina_list_append(rects, tr);
- tr->x = ln->par->x + ln->x + it1->x + x;
- tr->y = ln->par->y + ln->y;
- tr->h = ln->h;
- tr->w = w;
+ cur2.pos--;
}
- while (it && (it != it2))
- {
- max_x = it->x + it->adv;
- it = (Evas_Object_Textblock_Item *) EINA_INLIST_GET(it)->next;
- }
- if (min_x != max_x)
+ if (evas_textblock_cursor_format_is_visible_get(cur))
{
- tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
- rects = eina_list_append(rects, tr);
- tr->x = ln->par->x + ln->x + min_x;
- tr->y = ln->par->y + ln->y;
- tr->h = ln->h;
- tr->w = max_x - min_x;
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
+ &ln, &fi);
}
- if (it2->type == EVAS_TEXTBLOCK_ITEM_TEXT)
+ else if (_evas_textblock_cursor_is_at_the_end(cur) &&
+ evas_textblock_cursor_format_is_visible_get(&cur2))
{
- Evas_Coord y, h;
- Evas_Object_Textblock_Text_Item *ti;
- int ret;
- ti = _ITEM_TEXT(it2);
-
- ret = cur->ENFN->font_pen_coords_get(cur->ENDT,
- ti->parent.format->font.font,
- ti->text, &ti->text_props,
- end,
- &x, &y, &w, &h);
- if (!ret)
- {
- /* BUG! skip the last item */
- x = w = 0;
- }
- else
- {
- _evas_textblock_range_calc_x_w(it2, &x, &w, EINA_FALSE,
- switch_items);
- }
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(&cur2)),
+ &ln, &fi);
}
else
{
- x = 0;
- w = it2->w;
- _evas_textblock_range_calc_x_w(it2, &x, &w, EINA_FALSE,
- switch_items);
- }
- if (w > 0)
- {
- tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
- rects = eina_list_append(rects, tr);
- tr->x = ln->par->x + ln->x + it2->x + x;
- tr->y = ln->par->y + ln->y;
- tr->h = ln->h;
- tr->w = w;
+ _find_layout_item_line_match(cur->obj, cur->node, cur->pos, &ln, &it);
}
}
- return rects;
+ if (!ln) return -1;
+ x = ln->x;
+ y = ln->y;
+ w = ln->w;
+ h = ln->h;
+ if (cx) *cx = x;
+ if (cy) *cy = y;
+ if (cw) *cw = w;
+ if (ch) *ch = h;
+ return ln->line_no;
+}
+
+/**
+ * Set the position of the cursor according to the X and Y coordinates.
+ *
+ * @param cur the cursor to set.
+ * @param x coord to set by.
+ * @param y coord to set by.
+ * @return #EINA_TRUE on success, #EINA_FALSE otherwise.
+ */
+EAPI Eina_Bool
+evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y)
+{
+ Evas_Object_Textblock *o;
+ Evas_Object_Textblock_Line *ln;
+ Evas_Object_Textblock_Item *it = NULL, *it_break = NULL;
+ Evas_Object_Textblock_Format_Item *fi = NULL;
+
+ if (!cur) return EINA_FALSE;
+ o = (Evas_Object_Textblock *)(cur->obj->object_data);
+ if (!o->formatted.valid) _relayout(cur->obj);
+ x += o->style_pad.l;
+ y += o->style_pad.t;
+ EINA_INLIST_FOREACH(o->paragraphs->lines, ln)
+ {
+ if (ln->y > y) break;
+ if ((ln->y <= y) && ((ln->y + ln->h) > y))
+ {
+ EINA_INLIST_FOREACH(ln->items, it)
+ {
+ if ((it->x + ln->x) > x)
+ {
+ it_break = it;
+ break;
+ }
+ if (((it->x + ln->x) <= x) && (((it->x + ln->x) + it->w) > x))
+ {
+ int pos;
+ int cx, cy, cw, ch;
+
+ pos = -1;
+ if (it->format->font.font)
+ pos = cur->ENFN->font_char_at_coords_get(cur->ENDT,
+ it->format->font.font,
+ it->text, &it->bidi_props,
+ x - it->x - ln->x, 0,
+ &cx, &cy, &cw, &ch);
+ if (pos < 0)
+ return EINA_FALSE;
+ cur->pos = pos + it->source_pos;
+ cur->node = it->source_node;
+ return 1;
+ }
+ }
+ EINA_INLIST_FOREACH(ln->format_items, fi)
+ {
+ if ((fi->x + ln->x) > x) break;
+ if (((fi->x + ln->x) <= x) && (((fi->x + ln->x) + fi->w) > x))
+ {
+ cur->pos =
+ _evas_textblock_node_format_pos_get(fi->source_node);
+
+ cur->node = fi->source_node->text_node;
+ return EINA_TRUE;
+ }
+ }
+ if (it_break)
+ {
+ it = it_break;
+ cur->node = it->source_node;
+ cur->pos = it->source_pos;
+
+ /*FIXME: needs smarter handling, ATM just check, if it's
+ * the first item, then go to the end of the line, helps
+ * with rtl langs, doesn't affect ltr langs that much. */
+ if (!EINA_INLIST_GET(it)->prev)
+ {
+ evas_textblock_cursor_line_char_last(cur);
+ }
+
+ return EINA_TRUE;
+ }
+ }
+ }
+ return EINA_FALSE;
+}
+
+/**
+ * Set the cursor position according to the y coord.
+ *
+ * @param cur the cur to be set.
+ * @param y the coord to set by.
+ * @return the line number found, -1 on error.
+ */
+EAPI int
+evas_textblock_cursor_line_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord y)
+{
+ Evas_Object_Textblock *o;
+ Evas_Object_Textblock_Line *ln;
+
+ if (!cur) return -1;
+ o = (Evas_Object_Textblock *)(cur->obj->object_data);
+ if (!o->formatted.valid) _relayout(cur->obj);
+ y += o->style_pad.t;
+ EINA_INLIST_FOREACH(o->paragraphs->lines, ln)
+ {
+ if (ln->y > y) break;
+ if ((ln->y <= y) && ((ln->y + ln->h) > y))
+ {
+ evas_textblock_cursor_line_set(cur, ln->line_no);
+ return ln->line_no;
+ }
+ }
+ return -1;
}
+
/**
* Get the geometry of a range.
*
EAPI Eina_List *
evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2)
{
- Evas_Object_Textblock *o;
- Evas_Object_Textblock_Line *ln1, *ln2;
- Evas_Object_Textblock_Item *it1, *it2;
Eina_List *rects = NULL;
+ Evas_Coord cx, cy, cw, ch, lx, ly, lw, lh;
Evas_Textblock_Rectangle *tr;
+ int i, line, line2;
- if (!cur1 || !cur1->node) return NULL;
- if (!cur2 || !cur2->node) return NULL;
+ if (!cur1) return NULL;
+ if (!cur2) return NULL;
if (cur1->obj != cur2->obj) return NULL;
- o = (Evas_Object_Textblock *)(cur1->obj->object_data);
- if (!o->formatted.valid) _relayout(cur1->obj);
if (evas_textblock_cursor_compare(cur1, cur2) > 0)
{
const Evas_Textblock_Cursor *tc;
cur2 = tc;
}
- ln1 = ln2 = NULL;
- it1 = it2 = NULL;
- _find_layout_item_match(cur1, &ln1, &it1);
- if (!ln1 || !it1) return NULL;
- _find_layout_item_match(cur2, &ln2, &it2);
- if (!ln2 || !it2) return NULL;
+ line = evas_textblock_cursor_char_geometry_get(cur1, &cx, &cy, &cw, &ch);
+ if (line < 0) return NULL;
+ line = evas_textblock_cursor_line_geometry_get(cur1, &lx, &ly, &lw, &lh);
+ if (line < 0) return NULL;
+ line2 = evas_textblock_cursor_line_geometry_get(cur2, NULL, NULL, NULL, NULL);
+ if (line2 < 0) return NULL;
- if (ln1 == ln2)
+ if (line == line2)
{
- rects = _evas_textblock_cursor_range_in_line_geometry_get(ln1,
- cur1, cur2);
+ tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
+ rects = eina_list_append(rects, tr);
+ tr->x = cx;
+ tr->y = ly;
+ tr->h = lh;
+ line = evas_textblock_cursor_char_geometry_get(cur2, &cx, &cy, &cw, &ch);
+ if (line < 0)
+ {
+ while (rects)
+ {
+ free(rects->data);
+ rects = eina_list_remove_list(rects, rects);
+ }
+ return NULL;
+ }
+ tr->w = cx - tr->x;
}
else
{
- Evas_Object_Textblock_Line *plni, *lni;
- Eina_List *rects2 = NULL;
- /* Handle the first line */
- rects = _evas_textblock_cursor_range_in_line_geometry_get(ln1,
- cur1, NULL);
-
- /* Handle the lines between the first and the last line */
- lni = (Evas_Object_Textblock_Line *) EINA_INLIST_GET(ln1)->next;
- if (!lni && (ln1->par != ln2->par))
- {
- lni = ((Evas_Object_Textblock_Paragraph *)
- EINA_INLIST_GET(ln1->par)->next)->lines;
- }
- while (lni && (lni != ln2))
- {
+ tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
+ rects = eina_list_append(rects, tr);
+ tr->x = cx;
+ tr->y = ly;
+ tr->h = lh;
+ tr->w = lx + lw - cx;
+ for (i = line +1; i < line2; i++)
+ {
+ evas_object_textblock_line_number_geometry_get(cur1->obj, i, &lx, &ly, &lw, &lh);
tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
rects = eina_list_append(rects, tr);
- tr->x = lni->par->x + lni->x;
- tr->y = lni->par->y + lni->y;
- tr->h = lni->h;
- tr->w = lni->w;
- plni = lni;
- lni = (Evas_Object_Textblock_Line *) EINA_INLIST_GET(lni)->next;
- if (!lni && (plni->par != ln2->par))
- {
- lni = ((Evas_Object_Textblock_Paragraph *)
- EINA_INLIST_GET(plni->par)->next)->lines;
- }
- }
- rects2 = _evas_textblock_cursor_range_in_line_geometry_get(ln2,
- NULL, cur2);
- rects = eina_list_merge(rects, rects2);
+ tr->x = lx;
+ tr->y = ly;
+ tr->h = lh;
+ tr->w = lw;
+ }
+ line = evas_textblock_cursor_char_geometry_get(cur2, &cx, &cy, &cw, &ch);
+ if (line < 0)
+ {
+ while (rects)
+ {
+ free(rects->data);
+ rects = eina_list_remove_list(rects, rects);
+ }
+ return NULL;
+ }
+ line = evas_textblock_cursor_line_geometry_get(cur2, &lx, &ly, &lw, &lh);
+ if (line < 0)
+ {
+ while (rects)
+ {
+ free(rects->data);
+ rects = eina_list_remove_list(rects, rects);
+ }
+ return NULL;
+ }
+ tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
+ rects = eina_list_append(rects, tr);
+ tr->x = lx;
+ tr->y = ly;
+ tr->h = lh;
+ tr->w = cx - lx;
}
return rects;
}
{
Evas_Object_Textblock *o;
Evas_Object_Textblock_Line *ln = NULL;
- Evas_Object_Textblock_Format_Item *fi;
- Evas_Object_Textblock_Item *it = NULL;
+ Evas_Object_Textblock_Format_Item *fi = NULL;
Evas_Coord x, y, w, h;
- if (!cur || !evas_textblock_cursor_format_is_visible_get(cur)) return EINA_FALSE;
+ if (!cur || !evas_textblock_cursor_format_is_visible_get(cur)) return 0;
o = (Evas_Object_Textblock *)(cur->obj->object_data);
if (!o->formatted.valid) _relayout(cur->obj);
- if (!evas_textblock_cursor_format_is_visible_get(cur)) return EINA_FALSE;
- _find_layout_item_line_match(cur->obj, cur->node, cur->pos, &ln, &it);
- fi = _ITEM_FORMAT(it);
- if ((!ln) || (!fi)) return EINA_FALSE;
- x = ln->par->x + ln->x + fi->parent.x;
- y = ln->par->y + ln->y + ln->baseline + fi->y;
- w = fi->parent.w;
- h = fi->parent.h;
+ _find_layout_format_item_line_match(cur->obj,
+ _evas_textblock_node_visible_at_pos_get(
+ _evas_textblock_cursor_node_format_at_pos_get(cur)),
+ &ln, &fi);
+ if ((!ln) || (!fi)) return 0;
+ x = ln->x + fi->x;
+ y = ln->y + ln->baseline + fi->y;
+ w = fi->w;
+ h = fi->h;
if (cx) *cx = x;
if (cy) *cy = y;
if (cw) *cw = w;
if (ch) *ch = h;
- return EINA_TRUE;
+ return 1;
}
/**
TB_HEAD_RETURN(0);
ln = _find_layout_line_num(obj, line);
if (!ln) return EINA_FALSE;
- if (cx) *cx = ln->par->x + ln->x;
- if (cy) *cy = ln->par->y + ln->y;
+ if (cx) *cx = ln->x;
+ if (cy) *cy = ln->y;
if (cw) *cw = ln->w;
if (ch) *ch = ln->h;
return EINA_TRUE;
}
if (o->paragraphs)
{
- _paragraphs_free(obj, o->paragraphs);
+ _paragraphs_clear(obj, o->paragraphs);
o->paragraphs = NULL;
}
- _evas_textblock_text_node_changed(o, obj, NULL);
+ _evas_textblock_changed(o, obj);
}
/**
-1, -1,
&o->native.w, &o->native.h);
o->native.valid = 1;
- o->content_changed = 0;
}
if (w) *w = o->native.w;
if (h) *h = o->native.h;
o = (Evas_Object_Textblock *)(obj->object_data);
o->cursor->obj = obj;
- o->newline_is_ps = EINA_TRUE;
}
static void *
static void
evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
{
- Evas_Object_Textblock_Paragraph *par;
Evas_Object_Textblock_Line *ln;
Evas_Object_Textblock *o;
int i, j;
- int pbacking = 0, backingx = 0;
- int punderline = 0, underlinex = 0;
- int punderline2 = 0, underline2x = 0;
- int pstrikethrough = 0, strikethroughx = 0;
+ int pback = 0, backx = 0;
+ int pline = 0, linex = 0;
+ int pline2 = 0, line2x = 0;
+ int pstrike = 0, strikex = 0;
+ int x2;
unsigned char r = 0, g = 0, b = 0, a = 0;
unsigned char r2 = 0, g2 = 0, b2 = 0, a2 = 0;
unsigned char r3 = 0, g3 = 0, b3 = 0, a3 = 0;
if (!o->paragraphs) return;
#define ITEM_WALK() \
- EINA_INLIST_FOREACH(o->paragraphs, par) \
+ EINA_INLIST_FOREACH(o->paragraphs->lines, ln) \
{ \
- EINA_INLIST_FOREACH(par->lines, ln) \
+ Evas_Object_Textblock_Item *it; \
+ \
+ pback = 0; \
+ pline = 0; \
+ pline2 = 0; \
+ pstrike = 0; \
+ if (clip) \
{ \
- Evas_Object_Textblock_Item *itr; \
+ if ((obj->cur.geometry.y + y + ln->y + ln->h) < (cy - 20)) \
+ continue; \
+ if ((obj->cur.geometry.y + y + ln->y) > (cy + ch + 20)) \
+ break; \
+ } \
+ EINA_INLIST_FOREACH(ln->items, it) \
+ { \
+ int yoff; \
\
- backingx = underlinex = underline2x = strikethroughx = 0; \
- pbacking = punderline = punderline2 = pstrikethrough = 0; \
+ yoff = ln->baseline; \
+ if (it->format->valign != -1.0) \
+ yoff = (it->format->valign * (double)(ln->h - it->h)) + it->baseline; \
if (clip) \
{ \
- if ((obj->cur.geometry.y + y + ln->par->y + ln->y + ln->h) < (cy - 20)) \
+ if ((obj->cur.geometry.x + x + ln->x + it->x + it->w) < (cx - 20)) \
continue; \
- if ((obj->cur.geometry.y + y + ln->par->y + ln->y) > (cy + ch + 20)) \
+ if ((obj->cur.geometry.x + x + ln->x + it->x) > (cx + cw + 20)) \
break; \
- } \
- EINA_INLIST_FOREACH(ln->items, itr) \
- { \
- int yoff; \
- yoff = ln->baseline; \
- if (itr->format->valign != -1.0) \
- yoff = (itr->format->valign * (double)(ln->h - itr->h)) + \
- (itr->type == EVAS_TEXTBLOCK_ITEM_TEXT) ? \
- _ITEM_TEXT(itr)->baseline : ln->baseline; \
- if (clip) \
- { \
- if ((obj->cur.geometry.x + x + ln->par->x + ln->x + itr->x + itr->w) < (cx - 20)) \
- continue; \
- if ((obj->cur.geometry.x + x + ln->par->x + ln->x + itr->x) > (cx + cw + 20)) \
- break; \
- } \
- do
+ }
#define ITEM_WALK_END() \
- while (0); \
- } \
} \
- } \
- do {} while(0)
+ }
#define COLOR_SET(col) \
ENFN->context_color_set(output, context, \
- (obj->cur.cache.clip.r * ti->parent.format->color.col.r) / 255, \
- (obj->cur.cache.clip.g * ti->parent.format->color.col.g) / 255, \
- (obj->cur.cache.clip.b * ti->parent.format->color.col.b) / 255, \
- (obj->cur.cache.clip.a * ti->parent.format->color.col.a) / 255);
+ (obj->cur.cache.clip.r * it->format->color.col.r) / 255, \
+ (obj->cur.cache.clip.g * it->format->color.col.g) / 255, \
+ (obj->cur.cache.clip.b * it->format->color.col.b) / 255, \
+ (obj->cur.cache.clip.a * it->format->color.col.a) / 255);
#define COLOR_SET_AMUL(col, amul) \
ENFN->context_color_set(output, context, \
- (obj->cur.cache.clip.r * ti->parent.format->color.col.r * (amul)) / 65025, \
- (obj->cur.cache.clip.g * ti->parent.format->color.col.g * (amul)) / 65025, \
- (obj->cur.cache.clip.b * ti->parent.format->color.col.b * (amul)) / 65025, \
- (obj->cur.cache.clip.a * ti->parent.format->color.col.a * (amul)) / 65025);
+ (obj->cur.cache.clip.r * it->format->color.col.r * (amul)) / 65025, \
+ (obj->cur.cache.clip.g * it->format->color.col.g * (amul)) / 65025, \
+ (obj->cur.cache.clip.b * it->format->color.col.b * (amul)) / 65025, \
+ (obj->cur.cache.clip.a * it->format->color.col.a * (amul)) / 65025);
+# define DRAW_TEXT(ox, oy) \
+ if (it->format->font.font) ENFN->font_draw(output, context, surface, it->format->font.font, \
+ obj->cur.geometry.x + ln->x + it->x + x + (ox), \
+ obj->cur.geometry.y + ln->y + yoff + y + (oy), \
+ it->w, it->h, it->w, it->h, it->text, &it->bidi_props);
+# if 0
#define DRAW_TEXT(ox, oy) \
- if (ti->parent.format->font.font) ENFN->font_draw(output, context, surface, ti->parent.format->font.font, \
- obj->cur.geometry.x + ln->par->x + ln->x + ti->parent.x + x + (ox), \
- obj->cur.geometry.y + ln->par->y + ln->y + yoff + y + (oy), \
- ti->parent.w, ti->parent.h, ti->parent.w, ti->parent.h, ti->text, &ti->text_props);
+ if (it->format->font.font) ENFN->font_draw(output, context, surface, it->format->font.font, \
+ obj->cur.geometry.x + ln->x + it->x - it->inset + x + (ox), \
+ obj->cur.geometry.y + ln->y + yoff + y + (oy), \
+ obj->cur.cache.geometry.x + ln->x + it->x - it->inset + x + (ox), \
+ obj->cur.cache.geometry.y + ln->y + yoff + y + (oy), \
+ it->w, it->h, it->w, it->h, it->text, &it->bidi_props);
+#endif
#define ITEM_WALK_LINE_SKIP_DROP() \
- if ((ln->par->y + ln->y + ln->h) <= 0) continue; \
- if (ln->par->y + ln->y > obj->cur.geometry.h) break
-
+ if ((ln->y + ln->h) <= 0) continue; \
+ if (ln->y > obj->cur.geometry.h) break
+ pback = 0;
/* backing */
-#define DRAW_RECT(ox, oy, ow, oh, or, og, ob, oa) \
- do \
- { \
- ENFN->context_color_set(output, \
- context, \
- (obj->cur.cache.clip.r * or) / 255, \
- (obj->cur.cache.clip.g * og) / 255, \
- (obj->cur.cache.clip.b * ob) / 255, \
- (obj->cur.cache.clip.a * oa) / 255); \
- ENFN->rectangle_draw(output, \
- context, \
- surface, \
- obj->cur.geometry.x + ln->par->x + ln->x + x + (ox), \
- obj->cur.geometry.y + ln->par->y + ln->y + y + (oy), \
- (ow), \
- (oh)); \
- } \
- while (0)
-
-#define DRAW_FORMAT(oname, oy, oh, or, og, ob, oa) \
- do \
- { \
- if ((p ## oname) && (itr->x > oname ## x)) \
- { \
- DRAW_RECT(oname ## x, oy, itr->x - oname ## x, oh, or, og, ob, \
- oa); \
- } \
- \
- if (itr->format->oname) \
- { \
- p ## oname = 1; \
- or = itr->format->color.oname.r; \
- og = itr->format->color.oname.g; \
- ob = itr->format->color.oname.b; \
- oa = itr->format->color.oname.a; \
- } \
- else \
- { \
- p ## oname = 0; \
- } \
- \
- if (p ## oname && !EINA_INLIST_GET(itr)->next) \
- { \
- DRAW_RECT(itr->x, oy, itr->w, oh, or, og, ob, oa); \
- } \
- p ## oname = itr->format->oname; \
- oname ## x = itr->x; \
- } \
- while (0)
-
-
- pbacking = punderline = punderline2 = pstrikethrough = 0;
- ITEM_WALK()
- {
- ITEM_WALK_LINE_SKIP_DROP();
-
- DRAW_FORMAT(backing, 0, ln->h, r, g, b, a);
+ ITEM_WALK();
+ ITEM_WALK_LINE_SKIP_DROP();
+ if ((it->format->backing) && (!pback) && ((EINA_INLIST_GET(it))->next))
+ {
+ pback = 1;
+ backx = it->x;
+ r = it->format->color.backing.r;
+ g = it->format->color.backing.g;
+ b = it->format->color.backing.b;
+ a = it->format->color.backing.a;
+ }
+ else if (((pback) && (!it->format->backing)) ||
+ (!(EINA_INLIST_GET(it))->next) ||
+ (it->format->color.backing.r != r) ||
+ (it->format->color.backing.g != g) ||
+ (it->format->color.backing.b != b) ||
+ (it->format->color.backing.a != a))
+ {
+ if ((it->format->backing) && (!pback) && (!(EINA_INLIST_GET(it))->next))
+ {
+ r = it->format->color.backing.r;
+ g = it->format->color.backing.g;
+ b = it->format->color.backing.b;
+ a = it->format->color.backing.a;
+ pback = 1;
+ backx = it->x;
+ }
+ if (!it->format->backing) x2 = it->x;
+ else x2 = it->x + it->w;
+ if ((pback) && (x2 > backx))
+ {
+ ENFN->context_color_set(output,
+ context,
+ (obj->cur.cache.clip.r * r) / 255,
+ (obj->cur.cache.clip.g * g) / 255,
+ (obj->cur.cache.clip.b * b) / 255,
+ (obj->cur.cache.clip.a * a) / 255);
+ ENFN->rectangle_draw(output,
+ context,
+ surface,
+ obj->cur.geometry.x + ln->x + backx + x,
+ obj->cur.geometry.y + ln->y + y,
+//// obj->cur.cache.geometry.x + ln->x + backx + x,
+//// obj->cur.cache.geometry.y + ln->y + y,
+ x2 - backx,
+ ln->h);
+ }
+ pback = it->format->backing;
+ backx = it->x;
+ r = it->format->color.backing.r;
+ g = it->format->color.backing.g;
+ b = it->format->color.backing.b;
+ a = it->format->color.backing.a;
}
ITEM_WALK_END();
/* prepare everything for text draw */
/* shadows */
- ITEM_WALK()
+ ITEM_WALK();
+ ITEM_WALK_LINE_SKIP_DROP();
+ if (it->format->style == EVAS_TEXT_STYLE_SHADOW)
{
- Evas_Object_Textblock_Text_Item *ti;
- ITEM_WALK_LINE_SKIP_DROP();
- ti = (itr->type == EVAS_TEXTBLOCK_ITEM_TEXT) ? _ITEM_TEXT(itr) : NULL;
- if (!ti) continue;
-
- if (ti->parent.format->style == EVAS_TEXT_STYLE_SHADOW)
- {
- COLOR_SET(shadow);
- DRAW_TEXT(1, 1);
- }
- else if ((ti->parent.format->style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
- (ti->parent.format->style == EVAS_TEXT_STYLE_FAR_SHADOW))
- {
- COLOR_SET(shadow);
- DRAW_TEXT(2, 2);
- }
- else if ((ti->parent.format->style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW) ||
- (ti->parent.format->style == EVAS_TEXT_STYLE_FAR_SOFT_SHADOW))
- {
- for (j = 0; j < 5; j++)
- {
- for (i = 0; i < 5; i++)
- {
- if (vals[i][j] != 0)
- {
- COLOR_SET_AMUL(shadow, vals[i][j] * 50);
- DRAW_TEXT(i, j);
- }
- }
- }
- }
- else if (ti->parent.format->style == EVAS_TEXT_STYLE_SOFT_SHADOW)
- {
- for (j = 0; j < 5; j++)
- {
- for (i = 0; i < 5; i++)
- {
- if (vals[i][j] != 0)
- {
- COLOR_SET_AMUL(shadow, vals[i][j] * 50);
- DRAW_TEXT(i - 1, j - 1);
- }
- }
- }
- }
+ COLOR_SET(shadow);
+ DRAW_TEXT(1, 1);
+ }
+ else if ((it->format->style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
+ (it->format->style == EVAS_TEXT_STYLE_FAR_SHADOW))
+ {
+ COLOR_SET(shadow);
+ DRAW_TEXT(2, 2);
+ }
+ else if ((it->format->style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW) ||
+ (it->format->style == EVAS_TEXT_STYLE_FAR_SOFT_SHADOW))
+ {
+ for (j = 0; j < 5; j++)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (vals[i][j] != 0)
+ {
+ COLOR_SET_AMUL(shadow, vals[i][j] * 50);
+ DRAW_TEXT(i, j);
+ }
+ }
+ }
+ }
+ else if (it->format->style == EVAS_TEXT_STYLE_SOFT_SHADOW)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (vals[i][j] != 0)
+ {
+ COLOR_SET_AMUL(shadow, vals[i][j] * 50);
+ DRAW_TEXT(i - 1, j - 1);
+ }
+ }
+ }
}
ITEM_WALK_END();
/* glows */
- ITEM_WALK()
+ ITEM_WALK();
+ ITEM_WALK_LINE_SKIP_DROP();
+ if (it->format->style == EVAS_TEXT_STYLE_GLOW)
{
- Evas_Object_Textblock_Text_Item *ti;
- ITEM_WALK_LINE_SKIP_DROP();
- ti = (itr->type == EVAS_TEXTBLOCK_ITEM_TEXT) ? _ITEM_TEXT(itr) : NULL;
- if (!ti) continue;
-
- if (ti->parent.format->style == EVAS_TEXT_STYLE_GLOW)
- {
- for (j = 0; j < 5; j++)
- {
- for (i = 0; i < 5; i++)
- {
- if (vals[i][j] != 0)
- {
- COLOR_SET_AMUL(glow, vals[i][j] * 50);
- DRAW_TEXT(i - 2, j - 2);
- }
- }
- }
- COLOR_SET(glow2);
- DRAW_TEXT(-1, 0);
- DRAW_TEXT(1, 0);
- DRAW_TEXT(0, -1);
- DRAW_TEXT(0, 1);
- }
+ for (j = 0; j < 5; j++)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (vals[i][j] != 0)
+ {
+ COLOR_SET_AMUL(glow, vals[i][j] * 50);
+ DRAW_TEXT(i - 2, j - 2);
+ }
+ }
+ }
+ COLOR_SET(glow2);
+ DRAW_TEXT(-1, 0);
+ DRAW_TEXT(1, 0);
+ DRAW_TEXT(0, -1);
+ DRAW_TEXT(0, 1);
}
ITEM_WALK_END();
/* outlines */
- ITEM_WALK()
+ ITEM_WALK();
+ ITEM_WALK_LINE_SKIP_DROP();
+ if ((it->format->style == EVAS_TEXT_STYLE_OUTLINE) ||
+ (it->format->style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
+ (it->format->style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW))
{
- Evas_Object_Textblock_Text_Item *ti;
- ITEM_WALK_LINE_SKIP_DROP();
- ti = (itr->type == EVAS_TEXTBLOCK_ITEM_TEXT) ? _ITEM_TEXT(itr) : NULL;
- if (!ti) continue;
-
- if ((ti->parent.format->style == EVAS_TEXT_STYLE_OUTLINE) ||
- (ti->parent.format->style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
- (ti->parent.format->style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW))
- {
- COLOR_SET(outline);
- DRAW_TEXT(-1, 0);
- DRAW_TEXT(1, 0);
- DRAW_TEXT(0, -1);
- DRAW_TEXT(0, 1);
- }
- else if (ti->parent.format->style == EVAS_TEXT_STYLE_SOFT_OUTLINE)
- {
- for (j = 0; j < 5; j++)
- {
- for (i = 0; i < 5; i++)
- {
- if (((i != 2) || (j != 2)) && (vals[i][j] != 0))
- {
- COLOR_SET_AMUL(outline, vals[i][j] * 50);
- DRAW_TEXT(i - 2, j - 2);
- }
- }
- }
- }
+ COLOR_SET(outline);
+ DRAW_TEXT(-1, 0);
+ DRAW_TEXT(1, 0);
+ DRAW_TEXT(0, -1);
+ DRAW_TEXT(0, 1);
}
- ITEM_WALK_END();
-
- /* normal text and lines */
- ITEM_WALK()
+ else if (it->format->style == EVAS_TEXT_STYLE_SOFT_OUTLINE)
{
- Evas_Object_Textblock_Text_Item *ti;
- ITEM_WALK_LINE_SKIP_DROP();
- ti = (itr->type == EVAS_TEXTBLOCK_ITEM_TEXT) ? _ITEM_TEXT(itr) : NULL;
- /* NORMAL TEXT */
- if (ti)
- {
- COLOR_SET(normal);
- DRAW_TEXT(0, 0);
- }
-
- /* STRIKETHROUGH */
- DRAW_FORMAT(strikethrough, (ln->h / 2), 1, r, g, b, a);
-
- /* UNDERLINE */
- DRAW_FORMAT(underline, ln->baseline + 1, 1, r2, g2, b2, a2);
+ for (j = 0; j < 5; j++)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (((i != 2) || (j != 2)) && (vals[i][j] != 0))
+ {
+ COLOR_SET_AMUL(outline, vals[i][j] * 50);
+ DRAW_TEXT(i - 2, j - 2);
+ }
+ }
+ }
+ }
+ ITEM_WALK_END();
- /* UNDERLINE2 */
- DRAW_FORMAT(underline2, ln->baseline + 3, 1, r3, g3, b3, a3);
+ /* normal text */
+ ITEM_WALK();
+ ITEM_WALK_LINE_SKIP_DROP();
+ COLOR_SET(normal);
+ DRAW_TEXT(0, 0);
+ if ((it->format->strikethrough) && (!pstrike) && ((EINA_INLIST_GET(it))->next))
+ {
+ pstrike = 1;
+ strikex = it->x;
+ r3 = it->format->color.strikethrough.r;
+ g3 = it->format->color.strikethrough.g;
+ b3 = it->format->color.strikethrough.b;
+ a3 = it->format->color.strikethrough.a;
+ }
+ else if (((pstrike) && (!it->format->strikethrough)) ||
+ (!(EINA_INLIST_GET(it))->next) ||
+ (it->format->color.strikethrough.r != r3) ||
+ (it->format->color.strikethrough.g != g3) ||
+ (it->format->color.strikethrough.b != b3) ||
+ (it->format->color.strikethrough.a != a3))
+ {
+ if ((it->format->strikethrough) && (!pstrike))
+ {
+ strikex = it->x;
+ r3 = it->format->color.strikethrough.r;
+ g3 = it->format->color.strikethrough.g;
+ b3 = it->format->color.strikethrough.b;
+ a3 = it->format->color.strikethrough.a;
+ }
+ x2 = it->x + it->w;
+ if (!it->format->strikethrough)
+ {
+ x2 = it->x;
+ pstrike = 0;
+ }
+ if (x2 > strikex)
+ {
+ ENFN->context_color_set(output,
+ context,
+ (obj->cur.cache.clip.r * r3) / 255,
+ (obj->cur.cache.clip.g * g3) / 255,
+ (obj->cur.cache.clip.b * b3) / 255,
+ (obj->cur.cache.clip.a * a3) / 255);
+ ENFN->rectangle_draw(output,
+ context,
+ surface,
+ obj->cur.geometry.x + ln->x + strikex + x,
+ obj->cur.geometry.y + ln->y + y + (ln->h / 2),
+//// obj->cur.cache.geometry.x + ln->x + strikex + x,
+//// obj->cur.cache.geometry.y + ln->y + y + (ln->h / 2),
+ x2 - strikex,
+ 1);
+ }
+ if (it->format->strikethrough) pstrike = 1;
+ strikex = it->x;
+ r3 = it->format->color.strikethrough.r;
+ g3 = it->format->color.strikethrough.g;
+ b3 = it->format->color.strikethrough.b;
+ a3 = it->format->color.strikethrough.a;
+ }
+ if ((it->format->underline) && (!pline) && ((EINA_INLIST_GET(it))->next))
+ {
+ pline = 1;
+ linex = it->x;
+ r = it->format->color.underline.r;
+ g = it->format->color.underline.g;
+ b = it->format->color.underline.b;
+ a = it->format->color.underline.a;
+ }
+ else if (((pline) && (!it->format->underline)) ||
+ (!(EINA_INLIST_GET(it))->next) ||
+ (it->format->color.underline.r != r) ||
+ (it->format->color.underline.g != g) ||
+ (it->format->color.underline.b != b) ||
+ (it->format->color.underline.a != a))
+ {
+ if ((it->format->underline) && (!pline))
+ {
+ linex = it->x;
+ r = it->format->color.underline.r;
+ g = it->format->color.underline.g;
+ b = it->format->color.underline.b;
+ a = it->format->color.underline.a;
+ }
+ x2 = it->x + it->w;
+ if (!it->format->underline)
+ {
+ x2 = it->x;
+ pline = 0;
+ }
+ if (x2 > linex)
+ {
+ ENFN->context_color_set(output,
+ context,
+ (obj->cur.cache.clip.r * r) / 255,
+ (obj->cur.cache.clip.g * g) / 255,
+ (obj->cur.cache.clip.b * b) / 255,
+ (obj->cur.cache.clip.a * a) / 255);
+ ENFN->rectangle_draw(output,
+ context,
+ surface,
+ obj->cur.geometry.x + ln->x + linex + x,
+ obj->cur.geometry.y + ln->y + y + ln->baseline + 1,
+//// obj->cur.cache.geometry.x + ln->x + linex + x,
+//// obj->cur.cache.geometry.y + ln->y + y + ln->baseline + 1,
+ x2 - linex,
+ 1);
+ }
+ if (it->format->underline) pline = 1;
+ linex = it->x;
+ r = it->format->color.underline.r;
+ g = it->format->color.underline.g;
+ b = it->format->color.underline.b;
+ a = it->format->color.underline.a;
+ }
+ if ((it->format->underline2) && (!pline2) && ((EINA_INLIST_GET(it))->next))
+ {
+ pline2 = 1;
+ line2x = it->x;
+ r2 = it->format->color.underline2.r;
+ g2 = it->format->color.underline2.g;
+ b2 = it->format->color.underline2.b;
+ a2 = it->format->color.underline2.a;
+ }
+ else if (((pline2) && (!it->format->underline2)) ||
+ (!(EINA_INLIST_GET(it))->next) ||
+ (it->format->color.underline2.r != r2) ||
+ (it->format->color.underline2.g != g2) ||
+ (it->format->color.underline2.b != b2) ||
+ (it->format->color.underline2.a != a2))
+ {
+ if ((it->format->underline2) && (!pline2))
+ {
+ line2x = it->x;
+ r2 = it->format->color.underline2.r;
+ g2 = it->format->color.underline2.g;
+ b2 = it->format->color.underline2.b;
+ a2 = it->format->color.underline2.a;
+ }
+ x2 = it->x + it->w;
+ if (!it->format->underline2)
+ {
+ x2 = it->x;
+ pline2 = 0;
+ }
+ if (x2 > line2x)
+ {
+ ENFN->context_color_set(output,
+ context,
+ (obj->cur.cache.clip.r * r2) / 255,
+ (obj->cur.cache.clip.g * g2) / 255,
+ (obj->cur.cache.clip.b * b2) / 255,
+ (obj->cur.cache.clip.a * a2) / 255);
+ ENFN->rectangle_draw(output,
+ context,
+ surface,
+ obj->cur.geometry.x + ln->x + line2x + x,
+ obj->cur.geometry.y + ln->y + y + ln->baseline + 3,
+//// obj->cur.cache.geometry.x + ln->x + line2x + x,
+//// obj->cur.cache.geometry.y + ln->y + y + ln->baseline + 3,
+ x2 - line2x,
+ 1);
+ }
+ if (it->format->underline2) pline2 = 1;
+ line2x = it->x;
+ r2 = it->format->color.underline2.r;
+ g2 = it->format->color.underline2.g;
+ b2 = it->format->color.underline2.b;
+ a2 = it->format->color.underline2.a;
}
ITEM_WALK_END();
}
/* then when this is done the object needs to figure if it changed and */
/* if so what and where and add the appropriate redraw textblocks */
o = (Evas_Object_Textblock *)(obj->object_data);
- if ((o->changed) || (o->content_changed) ||
+ if ((o->changed) ||
(o->last_w != obj->cur.geometry.w))
{
+ Evas_Object_Textblock_Paragraph *paragraphs;
+
+ paragraphs = o->paragraphs;
+ o->paragraphs = NULL;
o->formatted.valid = 0;
+ o->native.valid = 0;
_layout(obj,
0,
obj->cur.geometry.w, obj->cur.geometry.h,
&o->formatted.w, &o->formatted.h);
o->formatted.valid = 1;
+ if (paragraphs)
+ {
+ _paragraphs_clear(obj, paragraphs);
+ }
o->last_w = obj->cur.geometry.w;
o->redraw = 0;
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
o->changed = 0;
- o->content_changed = 0;
is_v = evas_object_is_visible(obj);
was_v = evas_object_was_visible(obj);
goto done;
o->redraw = 0;
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
o->changed = 0;
- o->content_changed = 0;
is_v = evas_object_is_visible(obj);
was_v = evas_object_was_visible(obj);
goto done;
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
goto done;
}
- if (o->changed || o->content_changed)
+ if (o->changed)
{
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
o->changed = 0;
- o->content_changed = 0;
}
done:
evas_object_render_pre_effect_updates(&obj->layer->evas->clip_changes, obj, is_v, was_v);
if (obj->cur.geometry.w != o->last_w)
{
o->formatted.valid = 0;
+ o->native.valid = 0;
o->changed = 1;
}
}
_evas_object_textblock_rehint(Evas_Object *obj)
{
Evas_Object_Textblock *o;
- Evas_Object_Textblock_Paragraph *par;
Evas_Object_Textblock_Line *ln;
o = (Evas_Object_Textblock *)(obj->object_data);
- EINA_INLIST_FOREACH(o->paragraphs, par)
+ EINA_INLIST_FOREACH(o->paragraphs->lines, ln)
{
- EINA_INLIST_FOREACH(par->lines, ln)
- {
- Evas_Object_Textblock_Item *it;
+ Evas_Object_Textblock_Item *it;
- EINA_INLIST_FOREACH(ln->items, it)
- {
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- Evas_Object_Textblock_Text_Item *ti = _ITEM_TEXT(it);
- if (ti->parent.format->font.font)
- {
+ EINA_INLIST_FOREACH(ln->items, it)
+ {
+ if (it->format->font.font)
+ {
#ifdef EVAS_FRAME_QUEUING
- evas_common_pipe_op_text_flush(ti->parent.format->font.font);
+ evas_common_pipe_op_text_flush(it->format->font.font);
#endif
- evas_font_load_hinting_set(obj->layer->evas,
- ti->parent.format->font.font,
- obj->layer->evas->hinting);
- }
- }
- }
- }
+ evas_font_load_hinting_set(obj->layer->evas,
+ it->format->font.font,
+ obj->layer->evas->hinting);
+ }
+ }
}
- _evas_textblock_text_node_changed(o, obj, NULL);
+ o->formatted.valid = 0;
+ o->native.valid = 0;
+ o->changed = 1;
+ evas_object_change(obj);
}
/**
printf("Format Node: %p\n", n);
printf("next = %p, prev = %p, last = %p\n", EINA_INLIST_GET(n)->next, EINA_INLIST_GET(n)->prev, EINA_INLIST_GET(n)->last);
printf("text_node = %p, offset = %u, visible = %d\n", n->text_node, n->offset, n->visible);
- printf("'%s'\n", eina_strbuf_string_get(n->format));
+ printf("%s\n", eina_strbuf_string_get(n->format));
}
void
printf("Text Node: %p\n", n);
printf("next = %p, prev = %p, last = %p\n", EINA_INLIST_GET(n)->next, EINA_INLIST_GET(n)->prev, EINA_INLIST_GET(n)->last);
printf("format_node = %p\n", n->format_node);
- printf("'%ls'\n", eina_ustrbuf_string_get(n->unicode));
-}
-
-void
-pitem(Evas_Object_Textblock_Item *it)
-{
- Evas_Object_Textblock_Text_Item *ti;
- Evas_Object_Textblock_Format_Item *fi;
- printf("Item: %p\n", it);
- printf("Type: %s (%d)\n", (it->type == EVAS_TEXTBLOCK_ITEM_TEXT) ?
- "TEXT" : "FORMAT", it->type);
- printf("Text pos: %d Visual pos: %d\n", it->text_pos,
-#ifdef BIDI_SUPPORT
- it->visual_pos
-#else
- it->text_pos
-#endif
- );
- printf("Coords: x = %d w = %d adv = %d\n", (int) it->x, (int) it->w,
- (int) it->adv);
- if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)
- {
- ti = _ITEM_TEXT(it);
- printf("Text: '%ls'\n", ti->text);
- }
- else
- {
- fi = _ITEM_FORMAT(it);
- printf("Format: '%s'\n", fi->item);
- }
+ printf("%ls\n", eina_ustrbuf_string_get(n->unicode));
}
-
-void
-ppar(Evas_Object_Textblock_Paragraph *par)
-{
- Evas_Object_Textblock_Item *it;
- Eina_List *i;
- EINA_LIST_FOREACH(par->logical_items, i, it)
- {
- printf("***********************\n");
- pitem(it);
- }
-}
-
#endif
pt->fz = p->z;
pt->u = p->u * FP1;
pt->v = p->v * FP1;
- if (pt->u < 0) pt->u = 0;
- else if (pt->u > (sw * FP1)) pt->u = (sw * FP1);
- if (pt->v < 0) pt->v = 0;
- else if (pt->v > (sh * FP1)) pt->v = (sh * FP1);
pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
}
/* Copy last for software engine */
}
RDI(level);
- RD(" draw map\n");
+ RD(" draw map4\n");
if (rendered)
{
flen = strlen(file) + 1;
klen = strlen(key) + 1;
buf = malloc(sizeof(msg) + flen + klen);
- if (!buf) return 0;
memcpy(buf, &msg, sizeof(msg));
memcpy(buf + sizeof(msg), file, flen);
memcpy(buf + sizeof(msg) + flen, key, klen);
+ if (!buf) return 0;
if (!server_send(cserve, ie->channel, OP_LOAD,
sizeof(msg) + flen + klen,
buf))
@FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \
@EET_CFLAGS@ @pthread_cflags@ \
@WIN32_CFLAGS@ @EINA_CFLAGS@ \
- @FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@
+ @FRIBIDI_CFLAGS@
noinst_LTLIBRARIES = libevas_engine_common.la
libevas_engine_common_la_SOURCES = \
evas_convert_yuv.c \
evas_cpu.c \
evas_draw_main.c \
+evas_encoding.c \
evas_font_draw.c \
evas_font_load.c \
evas_font_main.c \
evas_tiler.c \
evas_regionbuf.c \
evas_pipe.c \
-language/evas_bidi_utils.c \
-language/evas_language_utils.c \
-evas_text_utils.c \
-evas_font_ot.c \
+evas_bidi_utils.c \
evas_map_image.c \
evas_map_image.h
evas_convert_rgb_8.h \
evas_convert_yuv.h \
evas_draw.h \
+evas_encoding.h \
evas_font.h \
evas_font_private.h \
evas_image.h \
evas_scale_smooth_scaler_up.c \
evas_scale_span.h \
evas_pipe.h \
-language/evas_bidi_utils.h \
-language/evas_language_utils.h \
-evas_text_utils.h \
-evas_font_ot.h \
+evas_bidi_utils.h \
evas_map_image_internal.c \
evas_map_image_core.c \
evas_map_image_loop.c
--- /dev/null
+#include <string.h>
+#include <stdlib.h>
+
+#include "evas_common.h"
+#include "evas_bidi_utils.h"
+#include "evas_encoding.h"
+
+#include "evas_font_private.h"
+
+#ifdef BIDI_SUPPORT
+#include <fribidi/fribidi.h>
+/**
+ * @internal
+ * @addtogroup Evas_Utils
+ *
+ * @{
+ */
+/**
+ * @internal
+ * @addtogroup Evas_BiDi
+ *
+ * @{
+ */
+
+/**
+ * @internal
+ * @def _SAFE_FREE(x)
+ * checks if x is not NULL, if it's not, it's freed and set to NULL.
+ */
+#define _SAFE_FREE(x) \
+ do { \
+ if (x) \
+ { \
+ free(x); \
+ x = NULL; \
+ } \
+ } while(0)
+
+/* Convert bidichar to eina_unicode assume both are valid pointers */
+static Eina_Unicode *
+_evas_bidi_fribidichar_to_unicode(Eina_Unicode *dest, const FriBidiChar *src)
+{
+ Eina_Unicode *ret = dest;
+
+ while (*src)
+ *dest++ = *src++;
+ *dest = 0;
+ return ret;
+}
+
+/* Convert eina_unicode to bidi_char assume both are valid pointers */
+static FriBidiChar *
+_evas_bidi_unicode_to_fribidichar(FriBidiChar *dest, const Eina_Unicode *src)
+{
+ FriBidiChar *ret = dest;
+
+ while (*src)
+ *dest++ = *src++;
+ *dest = 0;
+ return ret;
+}
+
+/**
+ * @internal
+ * Checks if the string has RTL characters.
+ *
+ * @param str The string to be checked
+ * @return #EINA_TRUE if true, #EINA_FALSE otherwise.
+ */
+Eina_Bool
+evas_bidi_is_rtl_str(const Eina_Unicode *str)
+{
+ EvasBiDiCharType type;
+
+ if (!str)
+ return EINA_FALSE;
+
+ for ( ; *str ; str++)
+ {
+ type = fribidi_get_bidi_type((FriBidiChar) *str);
+ if (FRIBIDI_IS_LETTER(type) && FRIBIDI_IS_RTL(type))
+ {
+ return EINA_TRUE;
+ }
+ }
+ return EINA_FALSE;
+}
+
+/**
+ * @internal
+ * Shapes the string ustr according to the bidi properties.
+ *
+ * @param str The string to shape
+ * @param bidi_props the bidi props to shaped according.
+ * @param len the length of th string.
+ * @return #EINA_TRUE on success, #EINA_FALSE otherwise.
+ */
+Eina_Bool
+evas_bidi_shape_string(Eina_Unicode *eina_ustr, const Evas_BiDi_Props *bidi_props, size_t len)
+{
+ FriBidiChar *ustr, *base_ustr = NULL;
+
+ if (!bidi_props->props)
+ return EINA_FALSE;
+
+ /* The size of fribidichar is different than eina_unicode, convert */
+ /*FIXME: Make this comparison at compile time and compile out
+ * unwanted code. - In all of this source file. (including the actual
+ * function declerations. */
+ if (sizeof(Eina_Unicode) != sizeof(FriBidiChar))
+ {
+ base_ustr = ustr = calloc(len + 1, sizeof(FriBidiChar));
+ ustr = _evas_bidi_unicode_to_fribidichar(ustr, eina_ustr);
+ }
+ else
+ {
+ ustr = (FriBidiChar *) eina_ustr;
+ }
+
+
+ EvasBiDiJoiningType *join_types = NULL;
+ join_types = (EvasBiDiJoiningType *) malloc(sizeof(EvasBiDiJoiningType) * len);
+ if (!join_types)
+ {
+ return EINA_FALSE;
+ }
+ fribidi_get_joining_types(ustr, len, join_types);
+
+ fribidi_join_arabic(bidi_props->props->char_types + bidi_props->start, len, bidi_props->props->embedding_levels + bidi_props->start, join_types);
+
+
+ /* Actually modify the string */
+ fribidi_shape(FRIBIDI_FLAGS_DEFAULT | FRIBIDI_FLAGS_ARABIC,
+ bidi_props->props->embedding_levels + bidi_props->start, len, join_types, ustr);
+
+ if (join_types) free(join_types);
+
+ /* Convert back */
+ if (sizeof(Eina_Unicode) != sizeof(FriBidiChar))
+ {
+ eina_ustr = _evas_bidi_fribidichar_to_unicode(eina_ustr, ustr);
+ if (base_ustr) free(base_ustr);
+ }
+ return EINA_TRUE;
+}
+
+/**
+ * @internal
+ * Allocates bidi properties according to ustr. First checks to see if the
+ * passed has rtl chars, if not, it returns NULL.
+ *
+ * @param ustr The string to update according to.
+ * @return returns allocated paragraph props on success, NULL otherwise.
+ */
+
+Evas_BiDi_Paragraph_Props *
+evas_bidi_paragraph_props_get(const Eina_Unicode *eina_ustr)
+{
+ Evas_BiDi_Paragraph_Props *bidi_props = NULL;
+ EvasBiDiCharType *char_types = NULL;
+ EvasBiDiLevel *embedding_levels = NULL;
+ const FriBidiChar *ustr;
+ FriBidiChar *base_ustr = NULL;
+ size_t len;
+
+ if (!eina_ustr)
+ return NULL;
+
+
+
+ len = eina_unicode_strlen(eina_ustr);
+ /* The size of fribidichar s different than eina_unicode, convert */
+ if (sizeof(Eina_Unicode) != sizeof(FriBidiChar))
+ {
+ base_ustr = calloc(len + 1, sizeof(FriBidiChar));
+ base_ustr = _evas_bidi_unicode_to_fribidichar(base_ustr, eina_ustr);
+ ustr = base_ustr;
+ }
+ else
+ {
+ ustr = (const FriBidiChar *) eina_ustr;
+ }
+
+
+ if (!evas_bidi_is_rtl_str(eina_ustr)) /* No need to handle bidi */
+ {
+ len = -1;
+ goto cleanup;
+ }
+
+ bidi_props = evas_bidi_paragraph_props_new();
+
+ /* Prep work for reordering */
+ char_types = (EvasBiDiCharType *) malloc(sizeof(EvasBiDiCharType) * len);
+ if (!char_types)
+ {
+ len = -2;
+ goto cleanup;
+ }
+ fribidi_get_bidi_types(ustr, len, char_types);
+
+ embedding_levels = (EvasBiDiLevel *)malloc(sizeof(EvasBiDiLevel) * len);
+ if (!embedding_levels)
+ {
+ len = -2;
+ goto cleanup;
+ }
+ if (!fribidi_get_par_embedding_levels(char_types, len, &bidi_props->direction, embedding_levels))
+ {
+ len = -2;
+ goto cleanup;
+ }
+
+
+ /* clean up */
+ if (bidi_props->embedding_levels)
+ {
+ free(bidi_props->embedding_levels);
+ }
+ bidi_props->embedding_levels = embedding_levels;
+
+ /* clean up */
+
+ if (bidi_props->char_types)
+ {
+ free(bidi_props->char_types);
+ }
+ bidi_props->char_types = char_types;
+
+ if (base_ustr) free(base_ustr);
+
+
+ return bidi_props;
+
+/* Cleanup */
+cleanup:
+ if (char_types) free(char_types);
+ if (embedding_levels) free(embedding_levels);
+ if (base_ustr) free(base_ustr);
+ if (bidi_props) evas_bidi_paragraph_props_unref(bidi_props); /* Clean up the bidi props */
+ return NULL;
+}
+
+/**
+ * @internal
+ * Copies dst to src and refs (doesn't copy) the paragraph props.
+ *
+ * @param src the props to copy
+ * @param dst the props to copy to.
+ */
+void
+evas_bidi_props_copy_and_ref(const Evas_BiDi_Props *src, Evas_BiDi_Props *dst)
+{
+ dst->start = src->start;
+ dst->props = evas_bidi_paragraph_props_ref(src->props);
+}
+
+/**
+ * @internal
+ * Reorders ustr according to the bidi props.
+ *
+ * @param ustr the string to reorder. - Null is ok, will just populate the map.
+ * @param intl_props the intl properties to rerorder according to.
+ * @param _v_to_l The visual to logical map to populate - if NULL it won't populate it.
+ * @return #EINA_FALSE on success, #EINA_TRUE on error.
+ */
+Eina_Bool
+evas_bidi_props_reorder_line(Eina_Unicode *eina_ustr, const Evas_BiDi_Props *intl_props, EvasBiDiStrIndex **_v_to_l)
+{
+ EvasBiDiStrIndex *v_to_l = NULL;
+ FriBidiChar *ustr, *base_ustr = NULL;
+ size_t len;
+
+ if (!intl_props->props)
+ return EINA_FALSE;
+
+ len = eina_unicode_strlen(eina_ustr);
+ /* The size of fribidichar is different than eina_unicode, convert */
+ if (sizeof(Eina_Unicode) != sizeof(FriBidiChar))
+ {
+ base_ustr = ustr = calloc(len + 1, sizeof(FriBidiChar));
+ ustr = _evas_bidi_unicode_to_fribidichar(ustr, eina_ustr);
+ }
+ else
+ {
+ ustr = (FriBidiChar *) eina_ustr;
+ }
+
+
+ if (_v_to_l) {
+ size_t i;
+ v_to_l = *_v_to_l = calloc(len, sizeof(EvasBiDiStrIndex));
+ if (!v_to_l)
+ {
+ goto error;
+ }
+ /* init the array for fribidi */
+ for (i = 0 ; i < len ; i++)
+ {
+ v_to_l[i] = i;
+ }
+ }
+
+ /* Shaping must be done *BEFORE* breaking to lines so there's no choice but
+ doing it in textblock. */
+ if (!fribidi_reorder_line (FRIBIDI_FLAGS_DEFAULT,
+ intl_props->props->char_types + intl_props->start,
+ len, 0, intl_props->props->direction,
+ intl_props->props->embedding_levels + intl_props->start,
+ ustr, v_to_l))
+ {
+ goto error;
+ }
+
+
+ /* The size of fribidichar is different than eina_unicode, convert */
+ if (sizeof(Eina_Unicode) != sizeof(FriBidiChar))
+ {
+ eina_ustr = _evas_bidi_fribidichar_to_unicode(eina_ustr, base_ustr);
+ free(base_ustr);
+ }
+ return EINA_FALSE;
+/* ERROR HANDLING */
+error:
+ if (base_ustr) free(base_ustr);
+ _SAFE_FREE(v_to_l);
+ return EINA_TRUE;
+}
+
+
+/**
+ * @internal
+ * Returns the visual string index from the logical string index.
+ *
+ * @param v_to_l the visual to logical map
+ * @param len the length of the map.
+ * @param position the position to convert.
+ * @return on success the visual position, on failure the same position.
+ */
+EvasBiDiStrIndex
+evas_bidi_position_logical_to_visual(EvasBiDiStrIndex *v_to_l, int len, EvasBiDiStrIndex position)
+{
+ int i;
+ EvasBiDiStrIndex *ind;
+ if (position >= len || !v_to_l)
+ return position;
+
+ for (i = 0, ind = v_to_l ; i < len ; i++, ind++)
+ {
+ if (*ind == position)
+ {
+ return i;
+ }
+ }
+ return position;
+}
+
+/**
+ * @internal
+ * Checks if the char is rtl oriented. I.e even a neutral char can become rtl
+ * if surrounded by rtl chars.
+ *
+ * @param bidi_props The bidi properties
+ * @param index the index of the string.
+ * @return #EINA_TRUE if true, #EINA_FALSE otherwise.
+ */
+Eina_Bool
+evas_bidi_is_rtl_char(const Evas_BiDi_Props *bidi_props, EvasBiDiStrIndex index)
+{
+ if(!bidi_props || !bidi_props->props || index < 0)
+ return EINA_FALSE;
+ return (FRIBIDI_IS_RTL(
+ bidi_props->props->embedding_levels[index + bidi_props->start]))
+ ? EINA_TRUE : EINA_FALSE;
+}
+
+Evas_BiDi_Paragraph_Props *
+evas_bidi_paragraph_props_new(void)
+{
+ Evas_BiDi_Paragraph_Props *ret;
+ ret = calloc(1, sizeof(Evas_BiDi_Paragraph_Props));
+ ret->direction = EVAS_BIDI_PARAGRAPH_NATURAL;
+ ret->refcount = 1;
+
+ return ret;
+}
+
+/**
+ * @internal
+ * Refs the bidi props.
+ *
+ * @param bidi_props the props to ref.
+ */
+Evas_BiDi_Paragraph_Props *
+evas_bidi_paragraph_props_ref(Evas_BiDi_Paragraph_Props *bidi_props)
+{
+ if (!bidi_props) return NULL;
+ BIDILOCK();
+
+ bidi_props->refcount++;
+ BIDIUNLOCK();
+ return bidi_props;
+}
+
+/**
+ * @internal
+ * Unrefs and potentially frees the props.
+ *
+ * @param bidi_props the properties to unref
+ */
+void
+evas_bidi_paragraph_props_unref(Evas_BiDi_Paragraph_Props *bidi_props)
+{
+ if (!bidi_props) return;
+ BIDILOCK();
+
+ if (--bidi_props->refcount == 0)
+ {
+ evas_bidi_paragraph_props_clean(bidi_props);
+ free(bidi_props);
+ }
+ BIDIUNLOCK();
+}
+
+
+/**
+ * @internal
+ * Cleans the paragraph properties.
+ *
+ * @param bidi_props the properties to clean.
+ */
+void
+evas_bidi_paragraph_props_clean(Evas_BiDi_Paragraph_Props *bidi_props)
+{
+ _SAFE_FREE(bidi_props->embedding_levels);
+ _SAFE_FREE(bidi_props->char_types);
+}
+
+/**
+ * @internal
+ * Cleans the bidi properties.
+ *
+ * @param bidi_props the properties to clean.
+ */
+void
+evas_bidi_props_clean(Evas_BiDi_Props *bidi_props)
+{
+ if (!bidi_props) return;
+ evas_bidi_paragraph_props_unref(bidi_props->props);
+ bidi_props->props = NULL;
+}
+/**
+ * @}
+ */
+/**
+ * @}
+ */
+#endif
+
--- /dev/null
+#ifndef _EVAS_BIDI_UTILS
+#define _EVAS_BIDI_UTILS
+
+/**
+ * @internal
+ * @addtogroup Evas_Utils
+ *
+ * @{
+ */
+/**
+ * @internal
+ * @defgroup Evas_BiDi Evas BiDi utility functions
+ *
+ * This set of functions and types helps evas handle BiDi strings correctly.
+ * @todo Document types, structures and macros.
+ *
+ * @{
+ */
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#ifdef HAVE_FRIBIDI
+# define USE_FRIBIDI
+# define BIDI_SUPPORT
+#endif
+
+#include <Eina.h>
+#include "evas_common.h"
+
+#ifdef USE_FRIBIDI
+# include <fribidi/fribidi.h>
+#endif
+
+/* abstract fribidi - we statically define sizes here because otherwise we would
+ * have to ifdef everywhere (because function decorations may change with/without
+ * bidi support)
+ * These types should only be passed as pointers! i.e do not directely use any of
+ * these types in function declarations. Defining as void should help ensuring that.
+ */
+
+#ifdef USE_FRIBIDI
+# define _EVAS_BIDI_TYPEDEF(type) \
+ typedef FriBidi ## type EvasBiDi ## type
+#else
+# define _EVAS_BIDI_TYPEDEF(type) \
+ typedef void EvasBiDi ## type
+#endif
+
+#if 0 /* We are using Eina_Unicode instead */
+_EVAS_BIDI_TYPEDEF(Char);
+#endif
+_EVAS_BIDI_TYPEDEF(CharType);
+_EVAS_BIDI_TYPEDEF(ParType);
+_EVAS_BIDI_TYPEDEF(StrIndex);
+_EVAS_BIDI_TYPEDEF(Level);
+_EVAS_BIDI_TYPEDEF(JoiningType);
+
+typedef struct _Evas_BiDi_Paragraph_Props Evas_BiDi_Paragraph_Props;
+typedef struct _Evas_BiDi_Props Evas_BiDi_Props;
+
+/* This structure defines a set of properties of a BiDi string. In case of a
+ * non-bidi string, all values should be NULL.
+ * To check if a structure describes a bidi string or not, use the macro
+ * EVAS_BIDI_IS_BIDI_PROP. RTL-only strings are also treated as bidi ATM.
+ */
+struct _Evas_BiDi_Paragraph_Props {
+ EvasBiDiCharType *char_types; /* BiDi char types */
+ EvasBiDiLevel *embedding_levels; /* BiDi embedding levels */
+ int refcount; /* The number of references to this object */
+#ifdef USE_FRIBIDI
+ EvasBiDiParType direction;
+#endif
+};
+
+struct _Evas_BiDi_Props {
+ Evas_BiDi_Paragraph_Props *props;
+ size_t start;
+};
+
+
+
+#ifdef USE_FRIBIDI
+
+
+#define EVAS_BIDI_PARAGRAPH_NATURAL FRIBIDI_PAR_ON
+#define EVAS_BIDI_PARAGRAPH_LTR FRIBIDI_PAR_LTR
+#define EVAS_BIDI_PARAGRAPH_RTL FRIBIDI_PAR_RTL
+#define EVAS_BIDI_PARAGRAPH_WLTR FRIBIDI_PAR_WLTR
+#define EVAS_BIDI_PARAGRAPH_WRTL FRIBIDI_PAR_WRTL
+
+#define EVAS_BIDI_PARAGRAPH_DIRECTION_IS_RTL(x) \
+ (((x) && \
+ ((x->direction == EVAS_BIDI_PARAGRAPH_RTL) || \
+ (x->direction == EVAS_BIDI_PARAGRAPH_WRTL))) ? \
+ EINA_TRUE : EINA_FALSE)
+
+
+# define evas_bidi_position_visual_to_logical(list, position) \
+ (list) ? list[position] : position;
+
+EvasBiDiStrIndex
+evas_bidi_position_logical_to_visual(EvasBiDiStrIndex *v_to_l, int len, EvasBiDiStrIndex position);
+
+Eina_Bool
+evas_bidi_is_rtl_str(const Eina_Unicode *str);
+
+Eina_Bool
+evas_bidi_is_rtl_char(const Evas_BiDi_Props *bidi_props, EvasBiDiStrIndex index);
+
+Eina_Bool
+evas_bidi_props_reorder_line(Eina_Unicode *text, const Evas_BiDi_Props *intl_props, EvasBiDiStrIndex **_v_to_l);
+
+Evas_BiDi_Paragraph_Props *
+evas_bidi_paragraph_props_get(const Eina_Unicode *eina_ustr) EINA_ARG_NONNULL(1) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
+
+void
+evas_bidi_props_copy_and_ref(const Evas_BiDi_Props *src, Evas_BiDi_Props *dst);
+
+Eina_Bool
+evas_bidi_shape_string(Eina_Unicode *ustr, const Evas_BiDi_Props *intl_props, size_t len);
+
+void
+evas_bidi_props_clean(Evas_BiDi_Props *intl_props) EINA_ARG_NONNULL(1);
+
+void
+evas_bidi_paragraph_props_clean(Evas_BiDi_Paragraph_Props *bidi_props) EINA_ARG_NONNULL(1);
+
+Evas_BiDi_Paragraph_Props *
+evas_bidi_paragraph_props_ref(Evas_BiDi_Paragraph_Props *bidi_props) EINA_ARG_NONNULL(1);
+
+void
+evas_bidi_paragraph_props_unref(Evas_BiDi_Paragraph_Props *bidi_props) EINA_ARG_NONNULL(1);
+
+Evas_BiDi_Paragraph_Props *
+evas_bidi_paragraph_props_new(void) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
+
+#endif
+/**
+ * @}
+ */
+/**
+ * @}
+ */
+
+#endif
+
src = data;
end = src + (stride * h);
ret = malloc(w * h);
- if (!ret) return NULL;
if (!has_alpha)
{
- return memset(ret, 0xff, w * h);
+ return memset(ret,0xff, w * h);
}
- dst = ret;
- for ( ; src < end ; src++, dst++)
+ for ( ; src < end ; src ++, dst ++)
*dst = CONVERT_ARGB_8888_TO_A_8(*src);
return ret;
}
--- /dev/null
+#include "evas_common.h"
+#include "evas_encoding.h"
+
+EAPI Eina_Unicode
+evas_common_encoding_utf8_get_next(const char *buf, int *iindex)
+{
+ /* Reads UTF8 bytes from @buf, starting at *@index and returns
+ * the decoded code point at iindex offset, and advances iindex
+ * to the next code point after this.
+ *
+ * Returns 0 to indicate there is no next char
+ */
+#if 1
+ int index = *iindex;
+ Eina_Unicode r;
+ unsigned char d;
+
+ /* if this char is the null terminator, exit */
+ if ((d = buf[index++]) == 0) return 0;
+
+ if ((d & 0x80) == 0)
+ { // 1 byte (7bit) - 0xxxxxxx
+ *iindex = index;
+ return d;
+ }
+ if ((d & 0xe0) == 0xc0)
+ { // 2 byte (11bit) - 110xxxxx 10xxxxxx
+ r = (d & 0x1f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ if ((d & 0xf0) == 0xe0)
+ { // 3 byte (16bit) - 1110xxxx 10xxxxxx 10xxxxxx
+ r = (d & 0x0f) << 12;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ if ((d & 0xf8) == 0xf0)
+ { // 4 byte (21bit) - 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ r = (d & 0x07) << 18;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 12;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ if ((d & 0xfc) == 0xf8)
+ { // 5 byte (26bit) - 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ r = (d & 0x03) << 24;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 18;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 12;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ if ((d & 0xfe) == 0xfc)
+ { // 6 byte (31bit) - 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ r = (d & 0x01) << 30;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 24;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 18;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 12;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ return 0;
+#else
+ int index = *iindex, r, len;
+ unsigned char d, d2, d3, d4;
+
+ /* if this char is the null terminator, exit */
+ if (!buf[index]) return 0;
+
+ d = buf[index++];
+
+ while (buf[index] && ((buf[index] & 0xc0) == 0x80))
+ index++;
+ len = index - *iindex;
+
+ if (len == 1)
+ r = d;
+ else if (len == 2)
+ {
+ /* 2 bytes */
+ d2 = buf[*iindex + 1];
+ if (d2 == 0)
+ {
+ *iindex = *iindex + 1;
+ return 0;
+ }
+ r = d & 0x1f; /* copy lower 5 */
+ r <<= 6;
+ r |= (d2 & 0x3f); /* copy lower 6 */
+ }
+ else if (len == 3)
+ {
+ /* 3 bytes */
+ d2 = buf[*iindex + 1];
+ if (d2 == 0)
+ {
+ *iindex = *iindex + 1;
+ return 0;
+ }
+ d3 = buf[*iindex + 2];
+ if (d3 == 0)
+ {
+ *iindex = *iindex + 2;
+ return 0;
+ }
+ r = d & 0x0f; /* copy lower 4 */
+ r <<= 6;
+ r |= (d2 & 0x3f);
+ r <<= 6;
+ r |= (d3 & 0x3f);
+ }
+ else
+ {
+ /* 4 bytes */
+ d2 = buf[*iindex + 1];
+ if (d2 == 0)
+ {
+ *iindex = *iindex + 1;
+ return 0;
+ }
+ d3 = buf[*iindex + 2];
+ if (d3 == 0)
+ {
+ *iindex = *iindex + 2;
+ return 0;
+ }
+ d4 = buf[*iindex + 3];
+ if (d4 == 0)
+ {
+ *iindex = *iindex + 3;
+ return 0;
+ }
+ r = d & 0x0f; /* copy lower 4 */
+ r <<= 6;
+ r |= (d2 & 0x3f);
+ r <<= 6;
+ r |= (d3 & 0x3f);
+ r <<= 6;
+ r |= (d4 & 0x3f);
+ }
+ *iindex = index;
+ return r;
+#endif
+}
+
+EAPI Eina_Unicode
+evas_common_encoding_utf8_get_prev(const char *buf, int *iindex)
+{
+ /* Reads UTF8 bytes from @buf, starting at *@index and returns
+ * the decoded code point at iindex offset, and advances iindex
+ * to the prev code point after this.
+ *
+ * Returns 0 to indicate there is no prev char
+ */
+
+ int r;
+ int index = *iindex;
+ /* although when index == 0 there's no previous char, we still want to get
+ * the current char */
+ if (index < 0)
+ return 0;
+
+ /* First obtain the codepoint at iindex */
+ r = evas_common_encoding_utf8_get_next(buf, &index);
+
+ /* Next advance iindex to previous codepoint */
+ index = *iindex;
+ index--;
+ while ((index > 0) && ((buf[index] & 0xc0) == 0x80))
+ index--;
+
+ *iindex = index;
+ return r;
+}
+
+EAPI Eina_Unicode
+evas_common_encoding_utf8_get_last(const char *buf, int buflen)
+{
+ /* jumps to the nul byte at the buffer end and decodes backwards and
+ * returns the offset index byte in the buffer where the last character
+ * in the buffer begins.
+ *
+ * Returns -1 to indicate an error
+ */
+ int index;
+ unsigned char d;
+
+ if (buflen < 1) return 0;
+ index = buflen - 1;
+ d = buf[index];
+ if (!(d & 0x80))
+ return index;
+ else
+ {
+ while (index > 0)
+ {
+ index--;
+ d = buf[index];
+ if ((d & 0xc0) != 0x80)
+ return index;
+ }
+ }
+ return 0;
+}
+
+EAPI int
+evas_common_encoding_utf8_get_len(const char *buf)
+{
+ /* returns the number of utf8 characters (not bytes) in the string */
+ int i = 0, len = 0;
+
+ while (evas_common_encoding_utf8_get_next(buf, &i))
+ len++;
+
+ return len;
+}
+
+/* FIXME: Should optimize! */
+EAPI Eina_Unicode *
+evas_common_encoding_utf8_to_unicode(const char *utf, int *_len)
+{
+ int len, i;
+ int index;
+ Eina_Unicode *buf, *ind;
+
+ len = evas_common_encoding_utf8_get_len(utf);
+ if (_len)
+ *_len = len;
+ buf = (Eina_Unicode *) calloc(sizeof(Eina_Unicode), (len + 1));
+ if (!buf) return buf;
+
+ for (i = 0, index = 0, ind = buf ; i < len ; i++, ind++)
+ {
+ *ind = evas_common_encoding_utf8_get_next(utf, &index);
+ }
+
+ return buf;
+}
+
+EAPI char *
+evas_common_encoding_unicode_to_utf8(const Eina_Unicode *uni, int *_len)
+{
+ char *buf;
+ const Eina_Unicode *uind;
+ char *ind;
+ int ulen, len;
+
+ ulen = eina_unicode_strlen(uni);
+ buf = (char *) calloc(ulen + 1, EVAS_ENCODING_UTF8_BYTES_PER_CHAR);
+
+ len = 0;
+ for (uind = uni, ind = buf ; *uind ; uind++)
+ {
+ if (*uind <= 0x7F) /* 1 byte char */
+ {
+ *ind++ = *uind;
+ len += 1;
+ }
+ else if (*uind <= 0x7FF) /* 2 byte char */
+ {
+ *ind++ = 0xC0 | (unsigned char) (*uind >> 6);
+ *ind++ = 0x80 | (unsigned char) (*uind & 0x3F);
+ len += 2;
+ }
+ else if (*uind <= 0xFFFF) /* 3 byte char */
+ {
+ *ind++ = 0xE0 | (unsigned char) (*uind >> 12);
+ *ind++ = 0x80 | (unsigned char) ((*uind >> 6) & 0x3F);
+ *ind++ = 0x80 | (unsigned char) (*uind & 0x3F);
+ len += 3;
+ }
+ else /* 4 byte char */
+ {
+ *ind++ = 0xF0 | (unsigned char) ((*uind >> 18) & 0x07);
+ *ind++ = 0x80 | (unsigned char) ((*uind >> 12) & 0x3F);
+ *ind++ = 0x80 | (unsigned char) ((*uind >> 6) & 0x3F);
+ *ind++ = 0x80 | (unsigned char) (*uind & 0x3F);
+ len += 4;
+ }
+ }
+ buf = realloc(buf, len + 1);
+ buf[len] = '\0';
+ if (_len)
+ *_len = len;
+ return buf;
+}
+
+
--- /dev/null
+#ifndef EVAS_ENCODING_H
+#define EVAS_ENCODING_H
+#include <Eina.h>
+
+/* FIXME: An assumption that will probably break in the future */
+#define EVAS_ENCODING_UTF8_BYTES_PER_CHAR 4
+
+EAPI Eina_Unicode
+evas_common_encoding_utf8_get_next(const char *buf, int *iindex);
+
+EAPI Eina_Unicode
+evas_common_encoding_utf8_get_prev(const char *buf, int *iindex);
+
+EAPI Eina_Unicode
+evas_common_encoding_utf8_get_last(const char *buf, int buflen);
+
+EAPI int
+evas_common_encoding_utf8_get_len(const char *buf);
+
+EAPI Eina_Unicode *
+evas_common_encoding_utf8_to_unicode(const char *utf, int *_len) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
+
+EAPI char *
+evas_common_encoding_unicode_to_utf8(const Eina_Unicode *uni, int *_len) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
+
+#endif
#ifndef _EVAS_FONT_H
#define _EVAS_FONT_H
-#include "evas_text_utils.h"
+#include "evas_bidi_utils.h"
/* main */
/* draw */
-EAPI void evas_common_font_draw (RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const Eina_Unicode *text, const Evas_Text_Props *intl_props);
+EAPI void evas_common_font_draw (RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props);
EAPI int evas_common_font_glyph_search (RGBA_Font *fn, RGBA_Font_Int **fi_ret, int gl);
EAPI RGBA_Font_Glyph *evas_common_font_int_cache_glyph_get (RGBA_Font_Int *fi, FT_UInt index);
EAPI void evas_common_font_draw_init (void);
/* query */
EAPI int evas_common_font_query_kerning (RGBA_Font_Int* fi, FT_UInt left, FT_UInt right, int* kerning);
-EAPI void evas_common_font_query_size (RGBA_Font *fn, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int *w, int *h);
-EAPI int evas_common_font_query_inset (RGBA_Font *fn __UNUSED__, const Evas_Text_Props *text_props);
-EAPI void evas_common_font_query_advance (RGBA_Font *fn, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int *h_adv, int *v_adv);
-EAPI int evas_common_font_query_char_coords (RGBA_Font *fn, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch);
-EAPI int evas_common_font_query_pen_coords (RGBA_Font *fn, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int pos, int *cpen_x, int *cy, int *cadv, int *ch);
-EAPI int evas_common_font_query_char_at_coords (RGBA_Font *fn, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch);
-EAPI int evas_common_font_query_last_up_to_pos (RGBA_Font *fn, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int x, int y);
+EAPI void evas_common_font_query_size (RGBA_Font *fn, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int *w, int *h);
+EAPI int evas_common_font_query_inset (RGBA_Font *fn, const Eina_Unicode *text);
+EAPI void evas_common_font_query_advance (RGBA_Font *fn, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int *h_adv, int *v_adv);
+EAPI int evas_common_font_query_char_coords (RGBA_Font *fn, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch);
+EAPI int evas_common_font_query_char_at_coords (RGBA_Font *fn, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch);
+EAPI int evas_common_font_query_last_up_to_pos (RGBA_Font *fn, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y);
#ifdef EVAS_FRAME_QUEUING
EAPI void evas_common_font_draw_finish(void);
#include "evas_private.h"
#include "evas_blend_private.h"
-#include "language/evas_bidi_utils.h" /*defines BIDI_SUPPORT if possible */
+#include "evas_bidi_utils.h" /*defines BIDI_SUPPORT if possible */
#include "evas_font_private.h" /* for Frame-Queuing support */
-#include "evas_font_ot.h"
-
-#define WORD_CACHE_MAXLEN 50
+#define WORD_CACHE_MAXLEN 50
/* How many to cache */
#define WORD_CACHE_NWORDS 40
static int max_cached_words = WORD_CACHE_NWORDS;
struct cinfo
{
+ int gl;
FT_UInt index;
struct
{
#if defined(METRIC_CACHE) || defined(WORD_CACHE)
LK(lock_words); // for word cache call
static Eina_Inlist *words = NULL;
-static struct prword *evas_font_word_prerender(RGBA_Draw_Context *dc, const Eina_Unicode *text, const Evas_Text_Props *text_props, int len, RGBA_Font *fn, RGBA_Font_Int *fi,int use_kerning);
+static struct prword *evas_font_word_prerender(RGBA_Draw_Context *dc, const Eina_Unicode *text, Evas_BiDi_Props *intl_props, int len, RGBA_Font *fn, RGBA_Font_Int *fi,int use_kerning);
#endif
EAPI void
}
/*
- * BiDi handling: We receive the shaped string + other props from text_props,
+ * BiDi handling: We receive the shaped string + other props from intl_props,
* we need to reorder it so we'll have the visual string (the way we draw)
* and then for kerning we have to switch the order of the kerning query (as the prev
* is on the right, and not on the left).
*/
static void
evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const Eina_Unicode *in_text,
- const Evas_Text_Props *text_props, RGBA_Gfx_Func func, int ext_x, int ext_y, int ext_w,
+ const Evas_BiDi_Props *intl_props, RGBA_Gfx_Func func, int ext_x, int ext_y, int ext_w,
int ext_h, RGBA_Font_Int *fi, int im_w, int im_h __UNUSED__, int use_kerning
)
{
+ int pen_x, pen_y;
+ int last_adv;
const Eina_Unicode *text = in_text;
- DATA32 *im;
FT_Face pface = NULL;
- EVAS_FONT_WALK_TEXT_INIT();
+ FT_UInt prev_index;
+ DATA32 *im;
+ int c;
+ int char_index = 0; /* the index of the current char */
#if defined(METRIC_CACHE) || defined(WORD_CACHE)
unsigned int len;
/* A fast strNlen would be nice (there is a wcsnlen strangely) */
len = eina_unicode_strnlen(text,WORD_CACHE_MAXLEN);
- if (len > 2 && (len < WORD_CACHE_MAXLEN))
+ if (len > 2 && len < WORD_CACHE_MAXLEN)
{
struct prword *word;
- word =
- evas_font_word_prerender(dc, text, text_props,
+ word =
+ evas_font_word_prerender(dc, text, (Evas_BiDi_Props *)intl_props,
len, fn, fi, use_kerning);
if (word)
{
# endif
}
}
-#else
- (void) use_kerning;
#endif
- if (fi->src->current_size != fi->size)
- {
- FTLOCK();
- FT_Activate_Size(fi->ft.size);
- FTUNLOCK();
- fi->src->current_size = fi->size;
- }
+#ifdef BIDI_SUPPORT
+ Eina_Unicode *visual_text;
+ visual_text = eina_unicode_strdup(in_text);
- im = dst->image.data;
- /* Load the glyph according to the first letter of the script, preety
- * bad, but will have to do */
+ if (visual_text)
{
- /* Skip common chars */
- const Eina_Unicode *tmp;
- for (tmp = text ;
- *tmp &&
- evas_common_language_char_script_get(*tmp) ==
- EVAS_SCRIPT_COMMON ;
- tmp++)
- ;
- if (!*tmp && (tmp > text)) tmp--;
- evas_common_font_glyph_search(fn, &fi, *tmp);
+ evas_bidi_props_reorder_line(visual_text, intl_props, NULL);
+ text = visual_text;
}
- EVAS_FONT_WALK_TEXT_VISUAL_START()
+ else
{
- FT_UInt index;
- RGBA_Font_Glyph *fg;
- int chr_x, chr_y, chr_w;
- if (!EVAS_FONT_WALK_IS_VISIBLE) continue;
-
-#ifdef OT_SUPPORT
- index = EVAS_FONT_WALK_INDEX;
+ text = in_text;
+ }
#else
- /* FIXME: Should be removed once we split according to script without
- * the use of harfbuzz */
- index =
- evas_common_font_glyph_search(fn, &fi, text[EVAS_FONT_WALK_POS]);
+ intl_props = NULL;
#endif
- LKL(fi->ft_mutex);
- fg = evas_common_font_int_cache_glyph_get(fi, index);
- if (!fg)
+
+ pen_x = x;
+ pen_y = y;
+ last_adv = 0;
+ prev_index = 0;
+ im = dst->image.data;
+ for (char_index = 0, c = 0; *text; text++, char_index++)
+ {
+ FT_UInt index;
+ RGBA_Font_Glyph *fg;
+ int chr_x, chr_y;
+ int gl, kern;
+
+ gl = *text;
+
+ index = evas_common_font_glyph_search(fn, &fi, gl);
+ LKL(fi->ft_mutex);
+ if (fi->src->current_size != fi->size)
+ {
+ FTLOCK();
+ FT_Activate_Size(fi->ft.size);
+ FTUNLOCK();
+ fi->src->current_size = fi->size;
+ }
+ fg = evas_common_font_int_cache_glyph_get(fi, index);
+ if (!fg)
{
LKU(fi->ft_mutex);
continue;
}
-
+ /* hmmm kerning means i can't sanely do my own cached metric tables! */
+ /* grrr - this means font face sharing is kinda... not an option if */
+ /* you want performance */
+ if ((use_kerning) && (prev_index) && (index) &&
+ (pface == fi->src->ft.face))
+ {
+ if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+ pen_x += kern;
+ }
pface = fi->src->ft.face;
LKU(fi->ft_mutex);
fg->ext_dat = dc->font_ext.func.gl_new(dc->font_ext.data, fg);
fg->ext_dat_free = dc->font_ext.func.gl_free;
}
-
- chr_x = x + EVAS_FONT_WALK_PEN_X + EVAS_FONT_WALK_X_OFF + EVAS_FONT_WALK_X_BEAR;
- chr_y = y + EVAS_FONT_WALK_PEN_Y + EVAS_FONT_WALK_Y_OFF + EVAS_FONT_WALK_Y_BEAR;
- chr_w = EVAS_FONT_WALK_WIDTH;
+ /* If the current one is not a compositing char, do the previous advance
+ * and set the current advance as the next advance to do */
+ if (fg->glyph->advance.x >> 16 > 0)
+ {
+ pen_x += last_adv;
+ last_adv = fg->glyph->advance.x >> 16;
+ }
+ chr_x = (pen_x + (fg->glyph_out->left));
+ chr_y = (pen_y + (fg->glyph_out->top));
if (chr_x < (ext_x + ext_w))
{
if (j < w) j = w;
h = fg->glyph_out->bitmap.rows;
/*
- if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays)
- && (fg->glyph_out->bitmap.num_grays == 256)
- )
- */
+ if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays)
+ && (fg->glyph_out->bitmap.num_grays == 256)
+ )
+ */
{
if ((j > 0) && (chr_x + w > ext_x))
{
{
/* ext glyph draw */
dc->font_ext.func.gl_draw(dc->font_ext.data,
- (void *)dst,
- dc, fg, chr_x,
- y - (chr_y - y));
+ (void *)dst,
+ dc, fg, chr_x,
+ y - (chr_y - y));
}
else
{
if ((fg->glyph_out->bitmap.num_grays == 256) &&
- (fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays))
+ (fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays))
{
for (i = 0; i < h; i++)
{
#endif
{
if ((dx < (ext_x + ext_w)) &&
- (dy >= (ext_y)) &&
- (dy < (ext_y + ext_h)))
+ (dy >= (ext_y)) &&
+ (dy < (ext_y + ext_h)))
{
if (dx + w > (ext_x + ext_w))
in_w += (dx + w) - (ext_x + ext_w);
if (in_w < w)
{
func(NULL, data + (i * j) + in_x, dc->col.col,
- im + (dy * im_w) + dx, w - in_w);
+ im + (dy * im_w) + dx, w - in_w);
}
}
}
dp++;
}
if ((dx < (ext_x + ext_w)) &&
- (dy >= (ext_y)) &&
- (dy < (ext_y + ext_h)))
+ (dy >= (ext_y)) &&
+ (dy < (ext_y + ext_h)))
{
if (dx + w > (ext_x + ext_w))
in_w += (dx + w) - (ext_x + ext_w);
if (in_w < w)
{
func(NULL, tmpbuf + in_x, dc->col.col,
- im + (dy * im_w) + dx, w - in_w);
+ im + (dy * im_w) + dx, w - in_w);
}
}
}
}
}
}
+ c++;
}
}
}
else
break;
+
+ prev_index = index;
}
- EVAS_FONT_WALK_TEXT_END();
+#ifdef BIDI_SUPPORT
+ if (visual_text) free(visual_text);
+#endif
evas_common_font_int_use_trim();
}
EAPI void
evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const Eina_Unicode *text,
- const Evas_Text_Props *text_props)
+ const Evas_BiDi_Props *intl_props)
{
int ext_x, ext_y, ext_w, ext_h;
int im_w, im_h;
if (!dc->cutout.rects)
{
- evas_common_font_draw_internal(dst, dc, fn, x, y, text, text_props,
+ evas_common_font_draw_internal(dst, dc, fn, x, y, text, intl_props,
func, ext_x, ext_y, ext_w, ext_h, fi,
im_w, im_h, use_kerning);
}
{
r = rects->rects + i;
evas_common_draw_context_set_clip(dc, r->x, r->y, r->w, r->h);
- evas_common_font_draw_internal(dst, dc, fn, x, y, text, text_props,
+ evas_common_font_draw_internal(dst, dc, fn, x, y, text, intl_props,
func, r->x, r->y, r->w, r->h, fi,
im_w, im_h, use_kerning);
}
/* Only used if cache is on */
#if defined(METRIC_CACHE) || defined(WORD_CACHE)
struct prword *
-evas_font_word_prerender(RGBA_Draw_Context *dc, const Eina_Unicode *in_text, const Evas_Text_Props *text_props, int len, RGBA_Font *fn, RGBA_Font_Int *fi,int use_kerning __UNUSED__)
+evas_font_word_prerender(RGBA_Draw_Context *dc, const Eina_Unicode *in_text, Evas_BiDi_Props *intl_props, int len, RGBA_Font *fn, RGBA_Font_Int *fi,int use_kerning)
{
+ int pen_x, pen_y;
struct cinfo *metrics;
const Eina_Unicode *text = in_text;
+ int chr;
+ FT_Face pface = NULL;
+ FT_UInt prev_index;
unsigned char *im;
int width;
int height, above, below, baseline, descent;
+ int c;
int i,j;
+ int char_index = 0; /* the index of the current char */
struct prword *w;
- int last_delta = 0;
int gl;
- struct cinfo *ci;
- EVAS_FONT_WALK_TEXT_INIT();
# ifndef METRIC_CACHE
gl = dc->font_ext.func.gl_new ? 1: 0;
gl = dc->font_ext.func.gl_new ? 1: 0;
+ pen_x = pen_y = 0;
above = 0; below = 0; baseline = 0; height = 0; descent = 0;
- /* Load the glyph according to the first letter of the script, preety
- * bad, but will have to do */
- {
- /* Skip common chars */
- const Eina_Unicode *tmp;
- for (tmp = text ;
- *tmp &&
- evas_common_language_char_script_get(*tmp) ==
- EVAS_SCRIPT_COMMON ;
- tmp++)
- ;
- if (!*tmp && (tmp > text)) tmp--;
- evas_common_font_glyph_search(fn, &fi, *tmp);
- }
-
- /* First pass: Work out how big and populate */
- /* It's a bit hackish to use index and fg here as they are internal,
- * but that'll have to be good enough ATM */
- len = text_props->len;
metrics = malloc(sizeof(struct cinfo) * len);
- ci = metrics;
- EVAS_FONT_WALK_TEXT_VISUAL_START()
+
+ /* First pass: Work out how big */
+ for (char_index = 0, c = 0, chr = 0 ; *text ; text++, char_index ++)
{
- FT_UInt index;
- RGBA_Font_Glyph *fg;
-#ifdef OT_SUPPORT
- index = EVAS_FONT_WALK_INDEX;
-#else
- /* FIXME: Should be removed once we split according to script without
- * the use of harfbuzz */
- index =
- evas_common_font_glyph_search(fn, &fi, text[EVAS_FONT_WALK_POS]);
-#endif
- LKL(fi->ft_mutex);
- fg = evas_common_font_int_cache_glyph_get(fi, index);
- if (!fg)
+ struct cinfo *ci = metrics + char_index;
+ ci->gl = *text;
+ ci->index = evas_common_font_glyph_search(fn, &fi, ci->gl);
+ LKL(fi->ft_mutex);
+ if (fi->src->current_size != fi->size)
+ {
+ FTLOCK();
+ FT_Activate_Size(fi->ft.size);
+ FTUNLOCK();
+ fi->src->current_size = fi->size;
+ }
+ ci->fg = evas_common_font_int_cache_glyph_get(fi, ci->index);
+ if (!ci->fg)
+ {
+ LKU(fi->ft_mutex);
+ continue;
+ }
+
+ if ((use_kerning) && (prev_index) && (ci->index) &&
+ (pface == fi->src->ft.face))
{
- LKU(fi->ft_mutex);
- continue;
+ int kern = 0;
+# ifdef BIDI_SUPPORT
+ /* if it's rtl, the kerning matching should be reversed, i.e prev
+ * index is now the index and the other way around.
+ * There is a slight exception when there are compositing chars
+ * involved.*/
+ if (intl_props && intl_props->props &&
+ evas_bidi_is_rtl_char(intl_props, char_index) &&
+ ci->fg->glyph->advance.x >> 16 > 0)
+ {
+ if (evas_common_font_query_kerning(fi, ci->index, prev_index, &kern))
+ pen_x += kern;
+ }
+ else
+ {
+ if (evas_common_font_query_kerning(fi, prev_index, ci->index, &kern))
+ pen_x += kern;
+ }
+# else
+ if (evas_common_font_query_kerning(fi, prev_index, ci->index, &kern))
+ pen_x += kern;
+# endif
}
- LKU(fi->ft_mutex);
- EVAS_FONT_WALK_TEXT_WORK();
- /* Currently broken with invisible chars if (!EVAS_FONT_WALK_IS_VISIBLE) continue; */
- ci->index = index;
- ci->fg = fg;
+ pface = fi->src->ft.face;
+ LKU(fi->ft_mutex);
if (gl)
{
ci->fg->ext_dat =dc->font_ext.func.gl_new(dc->font_ext.data,ci->fg);
below = ci->bm.rows - ci->bm.h;
if (below > descent) descent = below;
if (above > baseline) baseline = above;
- ci->pos.x = EVAS_FONT_WALK_PEN_X + EVAS_FONT_WALK_X_OFF + EVAS_FONT_WALK_X_BEAR;
- ci->pos.y = EVAS_FONT_WALK_PEN_Y + EVAS_FONT_WALK_Y_OFF + EVAS_FONT_WALK_Y_BEAR;
- last_delta = EVAS_FONT_WALK_X_ADV -
- (ci->bm.w + ci->fg->glyph_out->left);
- ci++;
+ ci->pos.x = pen_x + ci->fg->glyph_out->left;
+ ci->pos.y = pen_y + ci->fg->glyph_out->top;
+ pen_x += ci->fg->glyph->advance.x >> 16;
+ prev_index = ci->index;
}
- EVAS_FONT_WALK_TEXT_END();
/* First loop done */
- width = EVAS_FONT_WALK_PEN_X;
- if (last_delta < 0)
- width -= last_delta;
+ width = pen_x;
width = (width & 0x7) ? width + (8 - (width & 0x7)) : width;
height = baseline + descent;
if (!gl)
{
im = calloc(height, width);
- for (i = 0 ; i < len ; i ++)
+ for (i = 0 ; i < char_index ; i ++)
{
struct cinfo *ci = metrics + i;
for (j = 0 ; j < ci->bm.rows ; j ++)
- {
- int correction; /* Used to remove negative inset and such */
- if (ci->pos.x < 0)
- correction = -ci->pos.x;
- else
- correction = 0;
-
- memcpy(im + ci->pos.x + (j + baseline - ci->bm.h) * width +
- correction,
- ci->bm.data + j * ci->bm.w + correction,
- ci->bm.w - correction);
- }
+ memcpy(im + ci->pos.x + (j + baseline - ci->bm.h) * width, ci->bm.data + j * ci->bm.w, ci->bm.w);
}
}
else
save->size = fi->size;
save->len = len;
save->im = im;
- save->width = EVAS_FONT_WALK_PEN_X;
- if (last_delta < 0)
- save->width += last_delta;
+ save->width = pen_x;
save->roww = width;
save->height = height;
save->baseline = baseline;
#include <assert.h>
#include "evas_font_private.h" /* for Frame-Queuing support */
-#include "evas_font_ot.h"
extern FT_Library evas_ft_lib;
FTLOCK();
FT_Done_Face(fs->ft.face);
FTUNLOCK();
-#ifdef OT_SUPPORT
- evas_common_font_ot_unload_face(fs);
-#endif
if (fs->name) eina_stringshare_del(fs->name);
- if (fs->file) eina_stringshare_del(fs->file);
free(fs);
}
free(fs);
return NULL;
}
-#ifdef OT_SUPPORT
- evas_common_font_ot_load_face(fs);
-#endif
FTUNLOCK();
fs->ft.orig_upem = fs->ft.face->units_per_EM;
fs->references = 1;
fs->current_size = 0;
fs->ft.face = NULL;
fs->name = eina_stringshare_add(name);
- fs->file = eina_stringshare_ref(fs->name);
+ fs->file = fs->name;
fs->ft.orig_upem = 0;
fs->references = 1;
eina_hash_direct_add(fonts_src, fs->name, fs);
FTLOCK();
FT_Done_Face(fs->ft.face);
fs->ft.face = NULL;
-#ifdef OT_SUPPORT
- evas_common_font_ot_unload_face(fs);
-#endif
FTUNLOCK();
}
fs->ft.face = NULL;
return error;
}
-#ifdef OT_SUPPORT
- evas_common_font_ot_load_face(fs);
-#endif
FTUNLOCK();
fs->ft.orig_upem = fs->ft.face->units_per_EM;
return error;
#include "evas_common.h"
#include "evas_private.h"
+#include "evas_encoding.h"
#include "evas_font_private.h"
LK(lock_font_draw); // for freetype2 API calls
LK(lock_bidi); // for evas bidi internal usage.
-LK(lock_ot); // for evas bidi internal usage.
EAPI void
evas_common_font_init(void)
evas_common_font_draw_init();
LKI(lock_font_draw);
LKI(lock_bidi);
- LKI(lock_ot);
}
EAPI void
LKD(lock_font_draw);
LKD(lock_bidi);
- LKD(lock_ot);
evas_common_font_load_shutdown();
evas_common_font_cache_set(0);
#ifndef _EVAS_FONT_PRIVATE_H
# define _EVAS_FONT_PRIVATE_H
-#include "evas_font_ot.h"
#ifdef BUILD_PTHREAD
extern LK(lock_font_draw); // for freetype2 API calls
extern LK(lock_bidi); // for fribidi API calls
-extern LK(lock_ot); // for harfbuzz calls
#endif
# if defined(EVAS_FRAME_QUEUING) || defined(BUILD_PIPE_RENDER)
# define BIDILOCK() LKL(lock_bidi)
# define BIDIUNLOCK() LKU(lock_bidi)
-
-# define OTLOCK() LKL(lock_ot)
-# define OTUNLOCK() LKU(lock_ot)
# else
-# define FTLOCK(x)
-# define FTUNLOCK(x)
+# define FTLOCK(x)
+# define FTUNLOCK(x)
-# define BIDILOCK()
-# define BIDIUNLOCK()
+# define BIDILOCK()
+# define BIDIUNLOCK()
+# endif
void evas_common_font_source_unload(RGBA_Font_Source *fs);
void evas_common_font_source_reload(RGBA_Font_Source *fs);
void evas_common_font_int_use_trim(void);
void evas_common_font_int_unload(RGBA_Font_Int *fi);
void evas_common_font_int_reload(RGBA_Font_Int *fi);
-/* Macros for text walking */
-# define OTLOCK()
-# define OTUNLOCK()
-# endif
-
-/* 6th bit is on is the same as frac part >= 0.5 */
-# define EVAS_FONT_ROUND_26_6_TO_INT(x) \
- (((x + 0x20) & -0x40) >> 6)
-
-# define EVAS_FONT_CHARACTER_IS_INVISIBLE(x) ( \
- ((0x200C <= (x)) && ((x) <= 0x200D)) || /* ZWNJ..ZWH */ \
- ((0x200E <= (x)) && ((x) <= 0x200F)) || /* BIDI stuff */ \
- ((0x202A <= (x)) && ((x) <= 0x202E)) /* BIDI stuff */ \
- )
-# include "evas_font_default_walk.x"
#endif /* !_EVAS_FONT_PRIVATE_H */
#include "evas_common.h"
-#include "language/evas_bidi_utils.h" /*defines BIDI_SUPPORT if possible */
+#include "evas_bidi_utils.h" /*defines BIDI_SUPPORT if possible */
#include "evas_font_private.h" /* for Frame-Queuing support */
-#include "evas_font_ot.h"
EAPI int
evas_common_font_query_kerning(RGBA_Font_Int* fi,
int *push;
FTUNLOCK();
- *kerning = delta.x;
+ *kerning = delta.x >> 6;
push = malloc(sizeof (int) * 3);
if (!push) return 1;
return error;
}
-/* text x inset */
-EAPI int
-evas_common_font_query_inset(RGBA_Font *fn __UNUSED__, const Evas_Text_Props *text_props)
-{
- if (!text_props->len) return 0;
- return text_props->info->glyph[text_props->start].x_bear;
-}
-
/* size of the string (width and height) in pixels
- * BiDi handling: We receive the shaped string + other props from text_props,
+ * BiDi handling: We receive the shaped string + other props from intl_props,
* We only care about the size, and the size does not depend on the visual order.
* As long as we follow the logical string and get kerning data like we should,
* we are fine.
*/
EAPI void
-evas_common_font_query_size(RGBA_Font *fn, const Eina_Unicode *text __UNUSED__, const Evas_Text_Props *text_props, int *w, int *h)
+evas_common_font_query_size(RGBA_Font *fn, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props __UNUSED__, int *w, int *h)
{
- int keep_width = 0;
- int prev_pen_x = 0;
- EVAS_FONT_WALK_TEXT_INIT();
-
- EVAS_FONT_WALK_TEXT_VISUAL_START()
+ int use_kerning;
+ int pen_x, pen_y;
+ int start_x, end_x;
+ int chr;
+ int char_index;
+ FT_UInt prev_index;
+ RGBA_Font_Int *fi;
+ FT_Face pface = NULL;
+
+ fi = fn->fonts->data;
+
+ start_x = 0;
+ end_x = 0;
+
+ pen_x = 0;
+ pen_y = 0;
+// evas_common_font_size_use(fn);
+ evas_common_font_int_reload(fi);
+ use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+ prev_index = 0;
+ for (chr = 0, char_index = 0; *text; text++, char_index ++)
{
- EVAS_FONT_WALK_TEXT_WORK();
- if (!EVAS_FONT_WALK_IS_VISIBLE) continue;
- /* Keep the width because we'll need it for the last char */
- keep_width = EVAS_FONT_WALK_WIDTH +
- EVAS_FONT_WALK_X_OFF +
- EVAS_FONT_WALK_X_BEAR;
- /* Keep the previous EVAS_FONT_WALK_PEN_X, before it's advanced in TEXT_END */
- prev_pen_x = EVAS_FONT_WALK_PEN_X;
- }
- EVAS_FONT_WALK_TEXT_END();
+ FT_UInt index;
+ RGBA_Font_Glyph *fg = NULL;
+ int chr_x, chr_y, advw;
+ int gl, kern;
+
+ gl = *text;
+ if (gl == 0) break;
+ index = evas_common_font_glyph_search(fn, &fi, gl);
+ LKL(fi->ft_mutex);
+ if (fi->src->current_size != fi->size)
+ {
+ FTLOCK();
+ FT_Activate_Size(fi->ft.size);
+ FTUNLOCK();
+ fi->src->current_size = fi->size;
+ }
+ kern = 0;
+ /* hmmm kerning means i can't sanely do my own cached metric tables! */
+ /* grrr - this means font face sharing is kinda... not an option if */
+ /* you want performance */
+ if ((use_kerning) && (prev_index) && (index) && (fg) &&
+ (pface == fi->src->ft.face))
+ {
+#ifdef BIDI_SUPPORT
+ /* if it's rtl, the kerning matching should be reversed, i.e prev
+ * index is now the index and the other way around.
+ * There is a slight exception when there are compositing chars
+ * involved.*/
+ if (intl_props &&
+ evas_bidi_is_rtl_char(intl_props, char_index) &&
+ ((fg->glyph->advance.x >> 16) > 0))
+ {
+ if (evas_common_font_query_kerning(fi, index, prev_index, &kern))
+ pen_x += kern;
+ }
+ else
+ {
+ if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+ pen_x += kern;
+ }
+#else
+ if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+ pen_x += kern;
+#endif
+ }
+
+ pface = fi->src->ft.face;
+ fg = evas_common_font_int_cache_glyph_get(fi, index);
+ LKU(fi->ft_mutex);
+ if (!fg || !fg->glyph) continue;
+
+ if (kern < 0) kern = 0;
+
+ /* We care about advancing the whole string size, and not the actual
+ * paint size of each string, so we only care about advancing correctly
+ * and not the actual glyph width */
+ advw = ((fg->glyph->advance.x + (kern << 16)) >> 16);
+ chr_x = pen_x - kern;
+ chr_y = pen_y;
+ /* If it's not a compositing char, i.e it advances, we should also add
+ * the left/top padding of the glyph. As we don't care about the padding
+ * as the drawing location remains the same.
+ */
+ if (advw > 0)
+ {
+ chr_x += fg->glyph_out->left;
+ chr_y += fg->glyph_out->top;
+ }
+
- if (w) *w = prev_pen_x + keep_width;
+ if ((!prev_index) && (chr_x < 0))
+ start_x = chr_x;
+ if ((chr_x + advw) > end_x)
+ end_x = chr_x + advw;
+
+ pen_x += fg->glyph->advance.x >> 16;
+ prev_index = index;
+ }
+ if (w) *w = end_x - start_x;
if (h) *h = evas_common_font_max_ascent_get(fn) + evas_common_font_max_descent_get(fn);
+ evas_common_font_int_use_trim();
+}
+
+/* text x inset */
+EAPI int
+evas_common_font_query_inset(RGBA_Font *fn, const Eina_Unicode *text)
+{
+ FT_UInt index;
+ RGBA_Font_Glyph *fg;
+ int gl;
+ RGBA_Font_Int *fi;
+
+ fi = fn->fonts->data;
+
+ if (!*text) return 0;
+ gl = *text;
+ if (gl == 0) return 0;
+// evas_common_font_size_use(fn);
+ index = evas_common_font_glyph_search(fn, &fi, gl);
+ LKL(fi->ft_mutex);
+ evas_common_font_int_reload(fi);
+ if (fi->src->current_size != fi->size)
+ {
+ FTLOCK();
+ FT_Activate_Size(fi->ft.size);
+ FTUNLOCK();
+ fi->src->current_size = fi->size;
+ }
+ fg = evas_common_font_int_cache_glyph_get(fi, index);
+ LKU(fi->ft_mutex);
+ if (!fg) return 0;
+/*
+ INF("fg->glyph_out->left = %i, "
+ "fi->src->ft.face->glyph->bitmap_left = %i, "
+ "fi->src->ft.face->glyph->metrics.horiBearingX = %i, "
+ "fi->src->ft.face->glyph->metrics.horiBearingY = %i, "
+ "fi->src->ft.face->glyph->metrics.horiAdvance = %i"
+ ,
+ (int)fg->glyph_out->left,
+ (int)fi->src->ft.face->glyph->bitmap_left,
+ (int)fi->src->ft.face->glyph->metrics.horiBearingX >> 6,
+ (int)fi->src->ft.face->glyph->metrics.horiBearingY >> 6,
+ (int)fi->src->ft.face->glyph->metrics.horiAdvance >> 6
+ );
+ */
+ evas_common_font_int_use_trim();
+ return fg->glyph_out->left;
}
/* h & v advance
- * BiDi handling: We receive the shaped string + other props from text_props,
+ * BiDi handling: We receive the shaped string + other props from intl_props,
* We don't care about the order, as heights will remain the same (we already did
* shaping) and as long as we go through the logical string and match the kerning
* this way, we are safe.
*/
+
EAPI void
-evas_common_font_query_advance(RGBA_Font *fn, const Eina_Unicode *text __UNUSED__, const Evas_Text_Props *text_props, int *h_adv, int *v_adv)
+evas_common_font_query_advance(RGBA_Font *fn, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int *h_adv, int *v_adv)
{
- EVAS_FONT_WALK_TEXT_INIT();
-
- EVAS_FONT_WALK_TEXT_LOGICAL_START()
+ int use_kerning;
+ int pen_x, pen_y;
+ int start_x;
+ int char_index;
+ FT_UInt prev_index;
+ RGBA_Font_Int *fi;
+ FT_Face pface = NULL;
+
+ fi = fn->fonts->data;
+
+ start_x = 0;
+ pen_x = 0;
+ pen_y = 0;
+// evas_common_font_size_use(fn);
+ evas_common_font_int_reload(fi);
+ FTLOCK();
+ use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+ FTUNLOCK();
+ prev_index = 0;
+ for (char_index = 0 ; *text ; text++, char_index++)
{
- EVAS_FONT_WALK_TEXT_WORK();
- if (!EVAS_FONT_WALK_IS_VISIBLE) continue;
- }
- EVAS_FONT_WALK_TEXT_END();
+ FT_UInt index;
+ RGBA_Font_Glyph *fg;
+ int gl, kern;
+
+ gl = *text;
+ if (gl == 0) break;
+ index = evas_common_font_glyph_search(fn, &fi, gl);
+ LKL(fi->ft_mutex);
+ if (fi->src->current_size != fi->size)
+ {
+ FTLOCK();
+ FT_Activate_Size(fi->ft.size);
+ FTUNLOCK();
+ fi->src->current_size = fi->size;
+ }
+ fg = evas_common_font_int_cache_glyph_get(fi, index);
+ if (!fg)
+ {
+ LKU(fi->ft_mutex);
+ continue;
+ }
+ // FIXME: Why no FT_Activate_Size here ?
+ kern = 0;
+ /* hmmm kerning means i can't sanely do my own cached metric tables! */
+ /* grrr - this means font face sharing is kinda... not an option if */
+ /* you want performance */
+ if ((use_kerning) && (prev_index) && (index) && (fg) &&
+ (pface == fi->src->ft.face))
+ {
+#ifdef BIDI_SUPPORT
+ /* if it's rtl, the kerning matching should be reversed, i.e prev
+ * index is now the index and the other way around.
+ * There is a slight exception when there are compositing chars
+ * involved.*/
+ if (intl_props &&
+ evas_bidi_is_rtl_char(intl_props, char_index) &&
+ fg->glyph->advance.x >> 16 > 0)
+ {
+ if (evas_common_font_query_kerning(fi, index, prev_index, &kern))
+ pen_x += kern;
+ }
+ else
+ {
+ if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+ pen_x += kern;
+ }
+#else
+ if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+ pen_x += kern;
+#endif
+ }
+
+ pface = fi->src->ft.face;
+ LKU(fi->ft_mutex);
+ pen_x += fg->glyph->advance.x >> 16;
+ prev_index = index;
+ }
if (v_adv) *v_adv = evas_common_font_get_line_advance(fn);
- if (h_adv) *h_adv = EVAS_FONT_WALK_PEN_X;
+ if (h_adv) *h_adv = pen_x - start_x;
+#ifndef BIDI_SUPPORT
+ intl_props = NULL;
+#endif
+ evas_common_font_int_use_trim();
}
/* x y w h for char at char pos for null it returns the position right after
* the last char with 0 as width and height.
- * BiDi handling: We receive the shaped string + other props from text_props,
+ * BiDi handling: We receive the shaped string + other props from intl_props,
* We care about the actual drawing location of the string, this is why we need
* the visual string. We need to know how it's printed. After that we need to calculate
* the reverse kerning in case of rtl parts. "pos" passed to this function is an
*/
EAPI int
-evas_common_font_query_char_coords(RGBA_Font *fn, const Eina_Unicode *text __UNUSED__, const Evas_Text_Props *text_props, int pos, int *cx, int *cy, int *cw, int *ch)
+evas_common_font_query_char_coords(RGBA_Font *fn, const Eina_Unicode *in_text, const Evas_BiDi_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch)
{
+ int use_kerning;
+ int pen_x, pen_y;
+ int prev_chr_end;
int asc, desc;
- size_t position = 0;
+ int char_index = 0; /* the index of the current char */
+ int position = 0;
+ const Eina_Unicode *text = in_text;
int ret_val = 0;
- EVAS_FONT_WALK_TEXT_INIT();
+ int last_adv;
+ FT_UInt prev_index;
+ RGBA_Font_Int *fi;
+ FT_Face pface = NULL;
- asc = evas_common_font_max_ascent_get(fn);
- desc = evas_common_font_max_descent_get(fn);
-
- position = pos;
- /* If it's the null, choose location according to the direction. */
- if (position == text_props->text_len)
- {
- /* if it's rtl then the location is the left of the string,
- * otherwise, the right. */
#ifdef BIDI_SUPPORT
- if (text_props->bidi.dir == EVAS_BIDI_DIRECTION_RTL)
- {
- if (cx) *cx = 0;
- if (ch) *ch = asc + desc;
- }
- else
-#endif
- {
- evas_common_font_query_advance(fn, text, text_props, cx, ch);
- }
- if (cy) *cy = 0;
- if (cw) *cw = 0;
- ret_val = 1;
- goto end;
- }
+ int len = 0;
+ EvasBiDiStrIndex *visual_to_logical = NULL;
+ Eina_Unicode *visual_text;
- Evas_Coord cluster_start = 0, last_end = 0;
- int prev_cluster = -1;
- int found = 0, items = 1, item_pos = 1;
- int last_is_visible = 0;
- EVAS_FONT_WALK_TEXT_VISUAL_START()
+ visual_text = eina_unicode_strdup(in_text);
+ if (visual_text)
{
- EVAS_FONT_WALK_TEXT_WORK();
-
- if (prev_cluster != (int) EVAS_FONT_WALK_POS)
- {
- if (found)
- {
- break;
- }
- else
- {
- cluster_start = EVAS_FONT_WALK_PEN_X +
- EVAS_FONT_WALK_X_OFF +
- EVAS_FONT_WALK_X_BEAR;
- }
- }
- last_is_visible = EVAS_FONT_WALK_IS_VISIBLE;
- last_end = EVAS_FONT_WALK_PEN_X + EVAS_FONT_WALK_X_OFF +
- EVAS_FONT_WALK_X_BEAR + EVAS_FONT_WALK_WIDTH;
- /* we need to see if the char at the visual position is the char wanted */
- if ((text_props->bidi.dir == EVAS_BIDI_DIRECTION_LTR) &&
- (EVAS_FONT_WALK_POS <= (size_t) position) &&
- ((((size_t) position) < EVAS_FONT_WALK_POS_NEXT) ||
- (EVAS_FONT_WALK_IS_LAST)))
- {
- found = 1;
-#ifdef OT_SUPPORT
- items = evas_common_font_ot_cluster_size_get(text_props,
- char_index);
-#endif
- item_pos = position - EVAS_FONT_WALK_POS + 1;
- }
- else if ((text_props->bidi.dir == EVAS_BIDI_DIRECTION_RTL) &&
- ((EVAS_FONT_WALK_POS_PREV > (size_t) position) ||
- (EVAS_FONT_WALK_IS_FIRST)) &&
- (((size_t) position) >= EVAS_FONT_WALK_POS))
- {
- found = 1;
-#ifdef OT_SUPPORT
- items = evas_common_font_ot_cluster_size_get(text_props,
- char_index);
-#endif
- item_pos = items - (position - EVAS_FONT_WALK_POS);
- }
-
- prev_cluster = EVAS_FONT_WALK_POS;
+ evas_bidi_props_reorder_line(visual_text, intl_props, &visual_to_logical);
+ text = visual_text;
}
- EVAS_FONT_WALK_TEXT_END();
- if (found)
+ else
{
- Evas_Coord cluster_w;
- cluster_w = last_end - cluster_start;
- if (cy) *cy = -asc;
- if (ch) *ch = asc + desc;
- if (last_is_visible)
- {
- if (cx) *cx = cluster_start +
- (cluster_w / items) *
- (item_pos - 1);
- if (cw) *cw = (cluster_w / items);
- }
- else
- {
- if (cx) *cx = cluster_start;
- if (cw) *cw = 0;
- }
- ret_val = 1;
- goto end;
+ text = in_text;
}
-end:
-
- return ret_val;
-}
-
-/* x y w h for pen at char pos for null it returns the position right after
- * the last char with 0 as width and height. This is the same as char_coords
- * but it returns the pen_x and adv instead of x and w.
- * BiDi handling: We receive the shaped string + other props from text_props,
- * We care about the actual drawing location of the string, this is why we need
- * the visual string. We need to know how it's printed. After that we need to calculate
- * the reverse kerning in case of rtl parts. "pos" passed to this function is an
- * index in bytes, that is the actual byte location of the string, we need to find
- * the index in order to find it in the visual string.
- */
+ len = eina_unicode_strlen(text);
+#endif
-EAPI int
-evas_common_font_query_pen_coords(RGBA_Font *fn, const Eina_Unicode *text __UNUSED__, const Evas_Text_Props *text_props, int pos, int *cpen_x, int *cy, int *cadv, int *ch)
-{
- int asc, desc;
- size_t position;
- int ret_val = 0;
- EVAS_FONT_WALK_TEXT_INIT();
+ fi = fn->fonts->data;
+ pen_x = 0;
+ pen_y = 0;
+ evas_common_font_int_reload(fi);
+// evas_common_font_size_use(fn);
+ if (fi->src->current_size != fi->size)
+ {
+ FTLOCK();
+ FT_Activate_Size(fi->ft.size);
+ FTUNLOCK();
+ fi->src->current_size = fi->size;
+ }
+ use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+ prev_index = 0;
+ prev_chr_end = 0;
asc = evas_common_font_max_ascent_get(fn);
desc = evas_common_font_max_descent_get(fn);
+#ifdef BIDI_SUPPORT
+ /* Get the position in the visual string because those are the coords we care about */
+ position = evas_bidi_position_logical_to_visual(visual_to_logical, len, pos);
+#else
position = pos;
+#endif
/* If it's the null, choose location according to the direction. */
- if (position == text_props->text_len)
+ if (!text[position])
{
/* if it's rtl then the location is the left of the string,
* otherwise, the right. */
#ifdef BIDI_SUPPORT
- if (text_props->bidi.dir == EVAS_BIDI_DIRECTION_RTL)
+ if (evas_bidi_is_rtl_char(intl_props, 0))
{
- if (cpen_x) *cpen_x = 0;
+ if (cx) *cx = 0;
if (ch) *ch = asc + desc;
}
else
#endif
{
- evas_common_font_query_advance(fn, text, text_props, cpen_x, ch);
+ evas_common_font_query_size(fn, text, intl_props, cx, ch);
}
if (cy) *cy = 0;
- if (cadv) *cadv = 0;
+ if (cw) *cw = 0;
ret_val = 1;
goto end;
}
- Evas_Coord cluster_start = 0;
- int prev_cluster = -1;
- int found = 0, items = 1, item_pos = 1;
- int last_is_visible = 0;
- EVAS_FONT_WALK_TEXT_VISUAL_START()
- {
- EVAS_FONT_WALK_TEXT_WORK();
-
- if (prev_cluster != (int) EVAS_FONT_WALK_POS)
- {
- if (found)
- {
- break;
- }
- else
- {
- cluster_start = EVAS_FONT_WALK_PEN_X;
- }
- }
- last_is_visible = EVAS_FONT_WALK_IS_VISIBLE;
-
- if ((text_props->bidi.dir == EVAS_BIDI_DIRECTION_LTR) &&
- (EVAS_FONT_WALK_POS <= (size_t) position) &&
- ((((size_t) position) < EVAS_FONT_WALK_POS_NEXT) ||
- (EVAS_FONT_WALK_IS_LAST)))
- {
- found = 1;
-#ifdef OT_SUPPORT
- items = evas_common_font_ot_cluster_size_get(text_props,
- char_index);
-#endif
- item_pos = position - EVAS_FONT_WALK_POS + 1;
- }
- else if ((text_props->bidi.dir == EVAS_BIDI_DIRECTION_RTL) &&
- ((EVAS_FONT_WALK_POS_PREV > (size_t) position) ||
- (EVAS_FONT_WALK_IS_FIRST)) &&
- (((size_t) position) >= EVAS_FONT_WALK_POS))
- {
- found = 1;
-#ifdef OT_SUPPORT
- items = evas_common_font_ot_cluster_size_get(text_props,
- char_index);
-#endif
- item_pos = items - (position - EVAS_FONT_WALK_POS);
- }
-
- prev_cluster = EVAS_FONT_WALK_POS;
- }
- EVAS_FONT_WALK_TEXT_END();
- if (found)
+ last_adv = 0;
+ for (char_index = 0; *text ; text++, char_index++)
{
- Evas_Coord cluster_adv;
- cluster_adv = EVAS_FONT_WALK_PEN_X - cluster_start;
- if (cy) *cy = -asc;
- if (ch) *ch = asc + desc;
- if (last_is_visible)
- {
- if (cpen_x) *cpen_x = cluster_start +
- (cluster_adv / items) *
- (item_pos - 1);
- if (cadv) *cadv = (cluster_adv / items);
- }
- else
+ FT_UInt index;
+ RGBA_Font_Glyph *fg;
+ int chr_x, chr_y, chr_w;
+ int gl, kern;
+
+ gl = *text;
+ if (gl == 0) break;
+ index = evas_common_font_glyph_search(fn, &fi, gl);
+ LKL(fi->ft_mutex);
+ fg = evas_common_font_int_cache_glyph_get(fi, index);
+ if (!fg)
{
- if (cpen_x) *cpen_x = EVAS_FONT_WALK_PEN_X;
- if (cadv) *cadv = 0;
+ LKU(fi->ft_mutex);
+ continue;
}
- ret_val = 1;
- goto end;
+ // FIXME: Why no FT_Activate_Size here ?
+ kern = 0;
+ /* hmmm kerning means i can't sanely do my own cached metric tables! */
+ /* grrr - this means font face sharing is kinda... not an option if */
+ /* you want performance */
+ if ((use_kerning) && (prev_index) && (index) &&
+ (pface == fi->src->ft.face))
+ {
+ if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+ pen_x += kern;
+ }
+
+ pface = fi->src->ft.face;
+ LKU(fi->ft_mutex);
+ /* If the current one is not a compositing char, do the previous advance
+ * and set the current advance as the next advance to do */
+ if (fg->glyph->advance.x >> 16 > 0)
+ {
+ pen_x += last_adv;
+ last_adv = fg->glyph->advance.x >> 16;
+ }
+ if (kern < 0) kern = 0;
+ chr_x = (pen_x - kern) + (fg->glyph_out->left);
+ chr_y = (pen_y) + (fg->glyph_out->top);
+ chr_w = fg->glyph_out->bitmap.width + (kern);
+/* if (text[chr]) */
+ {
+ int advw;
+ advw = ((fg->glyph->advance.x + (kern << 16)) >> 16);
+ if (chr_w < advw) chr_w = advw;
+ }
+#if 0 /* This looks like a hack, we don't want it. - leaving it here in case
+ * I'm wrong */
+ if (chr_x > prev_chr_end)
+ {
+ chr_w += (chr_x - prev_chr_end);
+ chr_x = prev_chr_end;
+ }
+#endif
+ /* we need to see if the char at the visual position is the char wanted */
+ if (char_index == position)
+ {
+ if (cx) *cx = chr_x;
+ if (cy) *cy = -asc;
+ if (cw) *cw = chr_w;
+ if (ch) *ch = asc + desc;
+ ret_val = 1;
+ goto end;
+ }
+ prev_chr_end = chr_x + chr_w;
+ prev_index = index;
}
end:
+#ifdef BIDI_SUPPORT
+ if (visual_to_logical) free(visual_to_logical);
+ if (visual_text) free(visual_text);
+#endif
+
+ evas_common_font_int_use_trim();
return ret_val;
}
*/
EAPI int
-evas_common_font_query_char_at_coords(RGBA_Font *fn, const Eina_Unicode *text __UNUSED__, const Evas_Text_Props *text_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
+evas_common_font_query_char_at_coords(RGBA_Font *fn, const Eina_Unicode *in_text, const Evas_BiDi_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
{
+ int use_kerning;
+ int pen_x, pen_y;
+ int prev_chr_end;
int asc, desc;
+ int char_index = 0; /* the index of the current char */
+ const Eina_Unicode *text = in_text;
+ int last_adv;
int ret_val = -1;
- EVAS_FONT_WALK_TEXT_INIT();
+ FT_UInt prev_index;
+ RGBA_Font_Int *fi;
+ FT_Face pface = NULL;
- asc = evas_common_font_max_ascent_get(fn);
- desc = evas_common_font_max_descent_get(fn);
- Evas_Coord cluster_start = 0;
- int prev_cluster = -1;
- int found = 0, items = 1;
- EVAS_FONT_WALK_TEXT_VISUAL_START()
- {
- EVAS_FONT_WALK_TEXT_WORK();
- if (prev_cluster != (int) EVAS_FONT_WALK_POS)
- {
- if (found)
- {
- break;
- }
- else
- {
- cluster_start = EVAS_FONT_WALK_PEN_X;
- }
- }
+#ifdef BIDI_SUPPORT
+ int len = 0;
+ EvasBiDiStrIndex *visual_to_logical = NULL;
+ Eina_Unicode *visual_text;
- if (!EVAS_FONT_WALK_IS_VISIBLE) continue;
+ visual_text = eina_unicode_strdup(in_text);
- /* we need to see if the char at the visual position is the char,
- * we check that by checking if it's before the current pen
- * position and the next */
- if ((x >= EVAS_FONT_WALK_PEN_X) && (x <= (EVAS_FONT_WALK_PEN_X + EVAS_FONT_WALK_X_ADV)) &&
- (y >= -asc) && (y <= desc))
- {
-#ifdef OT_SUPPORT
- items = evas_common_font_ot_cluster_size_get(text_props,
- char_index);
+ if (visual_text)
+ {
+ evas_bidi_props_reorder_line(visual_text, intl_props, &visual_to_logical);
+ text = visual_text;
+ }
+ else
+ {
+ text = in_text;
+ }
+ len = eina_unicode_strlen(text);
#endif
- found = 1;
- }
- prev_cluster = EVAS_FONT_WALK_POS;
- }
- EVAS_FONT_WALK_TEXT_END();
- if (found)
+ fi = fn->fonts->data;
+
+ pen_x = 0;
+ pen_y = 0;
+ evas_common_font_int_reload(fi);
+// evas_common_font_size_use(fn);
+ if (fi->src->current_size != fi->size)
{
- int item_pos;
- Evas_Coord cluster_adv;
- cluster_adv = EVAS_FONT_WALK_PEN_X - cluster_start;
+ FTLOCK();
+ FT_Activate_Size(fi->ft.size);
+ FTUNLOCK();
+ fi->src->current_size = fi->size;
+ }
+ use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+ last_adv = 0;
+ prev_index = 0;
+ prev_chr_end = 0;
+ asc = evas_common_font_max_ascent_get(fn);
+ desc = evas_common_font_max_descent_get(fn);
- if (text_props->bidi.dir == EVAS_BIDI_DIRECTION_LTR)
- {
- double part;
- part = cluster_adv / items;
- item_pos = (int) ((x - cluster_start) / part);
- }
- else
+ for (char_index = 0; *text; text++, char_index++)
+ {
+ FT_UInt index;
+ RGBA_Font_Glyph *fg;
+ int chr_x, chr_y, chr_w;
+ int gl, kern;
+
+ gl = *text;
+ if (gl == 0) break;
+ index = evas_common_font_glyph_search(fn, &fi, gl);
+ LKL(fi->ft_mutex);
+ fg = evas_common_font_int_cache_glyph_get(fi, index);
+ if (!fg)
{
- double part;
- part = cluster_adv / items;
- item_pos = items - ((int) ((x - cluster_start) / part)) - 1;
+ LKU(fi->ft_mutex);
+ continue;
}
- if (cx) *cx = EVAS_FONT_WALK_PEN_X +
- ((cluster_adv / items) * (item_pos - 1));
- if (cy) *cy = -asc;
- if (cw) *cw = (cluster_adv / items);
- if (ch) *ch = asc + desc;
- ret_val = prev_cluster + item_pos;
- goto end;
+
+ // FIXME: Why not FT_Activate_Size here ?
+ kern = 0;
+ /* hmmm kerning means i can't sanely do my own cached metric tables! */
+ /* grrr - this means font face sharing is kinda... not an option if */
+ /* you want performance */
+ if ((use_kerning) && (prev_index) && (index) &&
+ (pface == fi->src->ft.face))
+ {
+ if (evas_common_font_query_kerning(fi, prev_index, index, &kern))
+ pen_x += kern;
+ }
+ pface = fi->src->ft.face;
+ LKU(fi->ft_mutex);
+ /* If the current one is not a compositing char, do the previous advance
+ * and set the current advance as the next advance to do */
+ if (fg->glyph->advance.x >> 16 > 0)
+ {
+ pen_x += last_adv;
+ last_adv = fg->glyph->advance.x >> 16;
+ }
+ if (kern < 0) kern = 0;
+
+ chr_x = ((pen_x - kern) + (fg->glyph_out->left));
+ chr_y = (pen_y + (fg->glyph_out->top));
+ chr_w = fg->glyph_out->bitmap.width + kern;
+
+/* if (text[chr]) */
+ {
+ int advw;
+
+ advw = ((fg->glyph->advance.x + (kern << 16)) >> 16);
+ if (chr_w < advw) chr_w = advw;
+ }
+#if 0 /* This looks like a hack, we don't want it. - leaving it here in case
+ * I'm wrong */
+ if (chr_x > prev_chr_end)
+ {
+ chr_w += (chr_x - prev_chr_end);
+ chr_x = prev_chr_end;
+ }
+#endif
+ if ((x >= chr_x) && (x <= (chr_x + chr_w)) &&
+ (y >= -asc) && (y <= desc))
+ {
+ int position = char_index;
+ if (cx) *cx = chr_x;
+ if (cy) *cy = -asc;
+ if (cw) *cw = chr_w;
+ if (ch) *ch = asc + desc;
+#ifdef BIDI_SUPPORT
+ /* we found the char position of the wanted char in the
+ * visual string, we now need to translate it to the
+ * position in the logical string */
+ position = evas_bidi_position_visual_to_logical(visual_to_logical, position);
+#endif
+ ret_val = position;
+ goto end;
+ }
+ prev_chr_end = chr_x + chr_w;
+ prev_index = index;
}
+
end:
+
+#ifdef BIDI_SUPPORT
+ if (visual_to_logical) free(visual_to_logical);
+ if (visual_text) free(visual_text);
+#else
+ intl_props = NULL;
+#endif
+ evas_common_font_int_use_trim();
return ret_val;
}
-/* position of the char after the last char in the text that will fit in xy.
- * BiDi handling: We receive the shaped string + other props from text_props,
+/* position of the last char in thext text that will fit in xy.
+ * BiDi handling: We receive the shaped string + other props from intl_props,
* All we care about is char sizes + kerning so we only really need to get the
* shaped string to utf8, and then just go through it like in english, as it's
* just the logical string, nothing special about that.
*/
EAPI int
-evas_common_font_query_last_up_to_pos(RGBA_Font *fn, const Eina_Unicode *text __UNUSED__, const Evas_Text_Props *text_props, int x, int y)
+evas_common_font_query_last_up_to_pos(RGBA_Font *fn, const Eina_Unicode *in_text, const Evas_BiDi_Props *intl_props __UNUSED__, int x, int y)
{
+ int use_kerning;
+ int pen_x, pen_y;
+ int prev_chr_end;
+ int char_index;
int asc, desc;
int ret=-1;
- EVAS_FONT_WALK_TEXT_INIT();
+ const Eina_Unicode *text = in_text;
+ FT_UInt prev_index;
+ RGBA_Font_Int *fi;
+ FT_Face pface = NULL;
+
+ fi = fn->fonts->data;
+ pen_x = 0;
+ pen_y = 0;
+ evas_common_font_int_reload(fi);
+// evas_common_font_size_use(fn);
+ use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+ prev_index = 0;
+ prev_chr_end = 0;
asc = evas_common_font_max_ascent_get(fn);
desc = evas_common_font_max_descent_get(fn);
-
- EVAS_FONT_WALK_TEXT_LOGICAL_START()
+ for (char_index = 0; *text; text++, char_index++)
{
- EVAS_FONT_WALK_TEXT_WORK();
- if (!EVAS_FONT_WALK_IS_VISIBLE) continue;
-
- if ((x >= EVAS_FONT_WALK_PEN_X) && (x <= (EVAS_FONT_WALK_PEN_X + EVAS_FONT_WALK_X_ADV)) &&
- (y >= -asc) && (y <= desc))
+ FT_UInt index;
+ RGBA_Font_Glyph *fg = NULL;
+ int chr_x, chr_y, chr_w;
+ int gl, kern;
+
+ gl = *text;
+ if (gl == 0) break;
+ index = evas_common_font_glyph_search(fn, &fi, gl);
+ LKL(fi->ft_mutex);
+ if (fi->src->current_size != fi->size)
{
- ret = EVAS_FONT_WALK_POS;
- goto end;
+ FTLOCK();
+ FT_Activate_Size(fi->ft.size);
+ FTUNLOCK();
+ fi->src->current_size = fi->size;
+ }
+ kern = 0;
+ /* hmmm kerning means i can't sanely do my own cached metric tables! */
+ /* grrr - this means font face sharing is kinda... not an option if */
+ /* you want performance */
+ if ((use_kerning) && (prev_index) && (index) && (fg) &&
+ (pface == fi->src->ft.face))
+ {
+#ifdef BIDI_SUPPORT
+ /* if it's rtl, the kerning matching should be reversed, i.e prev
+ * index is now the index and the other way around.
+ * There is a slight exception when there are compositing chars
+ * involved.*/
+ if (intl_props &&
+ evas_bidi_is_rtl_char(intl_props, char_index) &&
+ ((fg->glyph->advance.x >> 16) > 0))
+ {
+ if (evas_common_font_query_kerning(fi, index, prev_index,
+ &kern))
+ pen_x += kern;
+ }
+ else
+ {
+ if (evas_common_font_query_kerning(fi, prev_index, index,
+ &kern))
+ pen_x += kern;
+ }
+#else
+ if (evas_common_font_query_kerning(fi, prev_index, index,
+ &kern))
+ pen_x += kern;
+#endif
}
+ pface = fi->src->ft.face;
+ fg = evas_common_font_int_cache_glyph_get(fi, index);
+ LKU(fi->ft_mutex);
+
+ if (kern < 0) kern = 0;
+ chr_x = ((pen_x - kern) + (fg->glyph_out->left));
+ chr_y = (pen_y + (fg->glyph_out->top));
+ chr_w = fg->glyph_out->bitmap.width + kern;
+/* if (text[chr]) */
+ {
+ int advw;
+
+ advw = ((fg->glyph->advance.x + (kern << 16)) >> 16);
+ if (chr_w < advw) chr_w = advw;
+ }
+ if (chr_x > prev_chr_end)
+ {
+ chr_w += (chr_x - prev_chr_end);
+ chr_x = prev_chr_end;
+ }
+ if ((x >= chr_x) && (x <= (chr_x + chr_w)) &&
+ (y >= -asc) && (y <= desc))
+ {
+ ret = char_index;
+ goto end;
+ }
+ prev_chr_end = chr_x + chr_w;
+ pen_x += fg->glyph->advance.x >> 16;
+ prev_index = index;
}
- EVAS_FONT_WALK_TEXT_END();
-
end:
- return ret;
+ evas_common_font_int_use_trim();
+ return ret;
}
-
EAPI void
evas_common_map_rgba(RGBA_Image *src, RGBA_Image *dst,
RGBA_Draw_Context *dc,
- int npoints __UNUSED__, RGBA_Map_Point *p,
+ int npoints, RGBA_Map_Point *p,
int smooth, int level)
{
#ifdef BUILD_MMX
//** Oct loop
"vldm %[s]!, {d0,d1,d2,d3) \n\t"
"vldm %[d], {d4,d5,d6,d7} \n\t"
- "pld [%[s], #64] \n\t"
-
+
// Copy s.a into q2 (>> 24) & subtract from 255
"vmvn.u8 q4, q0 \n\t"
#ifdef BUILD_NEON
static void
_op_copy_p_dp_neon(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
-//#define USENEON 1
-#ifndef USENEON
- memcpy(d, s, l * sizeof(DATA32));
- return;
-#else
DATA32 *e;
+// if (((unsigned long)s & 0xf) || ((unsigned long)d & 0xf))
+// {
+ memcpy(d, s, l * sizeof(DATA32));
+// return;
+// }
+/*
e = d + l - 23;
if (e > d)
{
int dl;
-
- asm volatile
- (".fpu neon \n\t"
- "_op_copy_p_dp_neon_asmloop: \n\t"
- "pld [%[s], #192] \n\t" // preload 256 bytes ahead
- "pld [%[s], #320] \n\t" // preload 320 bytes ahead
- "vld1.32 {d0-d3}, [%[s]]! \n\t" // load 256bits (32 bytes 8 pix), 32bit aligned
- "vld1.32 {d4-d7} , [%[s]]! \n\t" // load 256bits (32 bytes 8 pix), 32bit aligned
- "vld1.32 {d8-d11}, [%[s]]! \n\t" // load 256bits (32 bytes 8 pix), 32bit aligned
- "vst1.32 {d0-d3}, [%[d]]! \n\t" // store 256bits (32 bytes 8 pix), 32bit aligned
- "vst1.32 {d4-d7}, [%[d]]! \n\t" // store 256bits (32 bytes 8 pix), 32bit aligned
- "vst1.32 {d8-d11}, [%[d]]! \n\t" // store 256bits (32 bytes 8 pix), 32bit aligned
- "cmp %[e], %[d] \n\t" // compare current and end ptr
- "bgt _op_copy_p_dp_neon_asmloop \n\t"
- : /*out*/
- : /*in */ [s] "r" (s), [e] "r" (e), [d] "r" (d)
- : /*clobber*/
- "q0", "q1", "q2","q3", "q4", "q5", "q6",
- "d0", "d1", "d2", "d3",
- "d4", "d5", "d6", "d7",
- "d8", "d9", "d10", "d11",
- "memory" // clobbered
- );
- dl = l % 24; // dl is how many pixels at end that is not a multiple of 24
- l = l - dl; // jump to there at the end of the run?
- s = s + l;
- d = d + l;
+ asm volatile (
+ ".fpu neon \n\t"
+ "asmloop2: \n\t"
+ "cmp %[e], %[d] \n\t" // compare current and end ptr
+ "pld [%[s], #64] \n\t" // preload 64 bytes ahead
+ "pld [%[s], #256] \n\t" // preload 256 bytes ahead
+ "pld [%[s], #320] \n\t" // preload 320 bytes ahead
+ "vld1.64 {d0-d3}, [%[s]]! \n\t" // load 256bits (32 bytes 8 pix)
+ "vld1.64 {d4-d7} , [%[s]]! \n\t" // load 256bits (32 bytes 8 pix)
+ "vld1.64 {d8-d11}, [%[s]]! \n\t" // load 256bits (32 bytes 8 pix)
+ "vst1.64 {d0-d3}, [%[d]]! \n\t" // store 256bits (32 bytes 8 pix)
+ "vst1.64 {d4-d7}, [%[d]]! \n\t" // store 256bits (32 bytes 8 pix)
+ "vst1.64 {d8-d11}, [%[d]]! \n\t" // store 256bits (32 bytes 8 pix)
+ "bhi asmloop2 \n\t"
+ : // output regs
+ : [s] "r" (s), [e] "r" (e), [d] "r" (d) // input
+ : "q0", "q1", "q2", "q3", "q4", "q5",
+ "d0", "d1", "d2", "d3", "d4", "d5",
+ "d6", "d7", "d8", "d9", "d10", "d11",
+ "memory" // clobbered
+ );
+ e = d + l;
+ dl = l - (l % 24);
+ s = s + dl;
+ d = d + dl;
}
- e += 23;
- for (;d < e; d++, s++) *d = *s;
-#endif
+ for (; d < e; d++, s++) {
+ *d = *s;
+ }
+ */
}
#define _op_copy_pan_dp_neon _op_copy_p_dp_neon
#else
evas_common_font_free(op->op.text.font);
#endif
- evas_common_text_props_content_unref(&(op->op.text.intl_props));
+#ifdef BIDI_SUPPORT
+ evas_bidi_props_clean(&(op->op.text.intl_props));
+#endif
free(op->op.text.text);
evas_common_pipe_op_free(op);
}
EAPI void
evas_common_pipe_text_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
- RGBA_Font *fn, int x, int y, const Eina_Unicode *text, const Evas_Text_Props *intl_props)
+ RGBA_Font *fn, int x, int y, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
RGBA_Pipe_Op *op;
op->op.text.x = x;
op->op.text.y = y;
op->op.text.text = eina_unicode_strdup(text);
- evas_common_text_props_content_copy_and_ref(&(op->op.text.intl_props),
- intl_props);
+#ifdef BIDI_SUPPORT
+ evas_bidi_props_copy_and_ref(intl_props, &(op->op.text.intl_props));
+#endif
#ifdef EVAS_FRAME_QUEUING
LKL(fn->ref_fq_add);
fn->ref_fq[0]++;
}
static void
-evas_common_pipe_op_map_free(RGBA_Pipe_Op *op)
+evas_common_pipe_op_map4_free(RGBA_Pipe_Op *op)
{
#ifdef EVAS_FRAME_QUEUING
LKL(op->op.image.src->cache_entry.ref_fq_del);
op->op.image.src->cache_entry.ref_fq[1]++;
LKU(op->op.image.src->cache_entry.ref_fq_del);
#else
- op->op.map.src->ref--;
- if (op->op.map.src->ref == 0)
- evas_cache_image_drop(&op->op.map.src->cache_entry);
+ op->op.map4.src->ref--;
+ if (op->op.map4.src->ref == 0)
+ evas_cache_image_drop(&op->op.map4.src->cache_entry);
#endif
- free(op->op.map.p);
+ free(op->op.map4.p);
evas_common_pipe_op_free(op);
}
static void
-evas_common_pipe_map_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
+evas_common_pipe_map4_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
{
if (info)
{
evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
#endif
- evas_common_map_rgba(op->op.map.src, dst,
- &context, op->op.map.npoints, op->op.map.p,
- op->op.map.smooth, op->op.map.level);
+ evas_common_map4_rgba(op->op.map4.src, dst,
+ &context, op->op.map4.p,
+ op->op.map4.smooth, op->op.map4.level);
}
else
{
- evas_common_map_rgba(op->op.map.src, dst,
- &(op->context), op->op.map.npoints, op->op.map.p,
- op->op.map.smooth, op->op.map.level);
+ evas_common_map4_rgba(op->op.map4.src, dst,
+ &(op->context), op->op.map4.p,
+ op->op.map4.smooth, op->op.map4.level);
}
}
EAPI void
-evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst,
- RGBA_Draw_Context *dc, int npoints, RGBA_Map_Point *p,
- int smooth, int level)
+evas_common_pipe_map4_draw(RGBA_Image *src, RGBA_Image *dst,
+ RGBA_Draw_Context *dc, RGBA_Map_Point *p,
+ int smooth, int level)
{
RGBA_Pipe_Op *op;
RGBA_Map_Point *pts_copy;
for (i = 0; i < 4; ++i)
pts_copy[i] = p[i];
- op->op.map.npoints = npoints;
- op->op.map.smooth = smooth;
- op->op.map.level = level;
+ op->op.map4.smooth = smooth;
+ op->op.map4.level = level;
#ifdef EVAS_FRAME_QUEUING
LKL(src->cache_entry.ref_fq_add);
src->cache_entry.ref_fq[0]++;
#else
src->ref++;
#endif
- op->op.map.src = src;
- op->op.map.p = pts_copy;
- op->op_func = evas_common_pipe_map_draw_do;
- op->free_func = evas_common_pipe_op_map_free;
+ op->op.map4.src = src;
+ op->op.map4.p = pts_copy;
+ op->op_func = evas_common_pipe_map4_draw_do;
+ op->free_func = evas_common_pipe_op_map4_free;
evas_common_pipe_draw_context_copy(dc, op);
#ifdef EVAS_FRAME_QUEUING
}
static void
-evas_common_pipe_map_render(RGBA_Image *root)
+evas_common_pipe_map4_render(RGBA_Image *root)
{
RGBA_Pipe *p;
int i;
{
for (i = 0; i < p->op_num; i++)
{
- if (p->op[i].op_func == evas_common_pipe_map_draw_do)
+ if (p->op[i].op_func == evas_common_pipe_map4_draw_do)
{
- if (p->op[i].op.map.src->cache_entry.pipe)
- evas_common_pipe_map_render(p->op[i].op.map.src);
+ if (p->op[i].op.map4.src->cache_entry.pipe)
+ evas_common_pipe_map4_render(p->op[i].op.map4.src);
}
else if (p->op[i].op_func == evas_common_pipe_image_draw_do)
{
if (p->op[i].op.image.src->cache_entry.pipe)
- evas_common_pipe_map_render(p->op[i].op.image.src);
+ evas_common_pipe_map4_render(p->op[i].op.image.src);
}
}
}
}
EAPI void
-evas_common_pipe_map_begin(RGBA_Image *root)
+evas_common_pipe_map4_begin(RGBA_Image *root)
{
if (!evas_common_pipe_init())
{
evas_common_pipe_image_load_do();
- evas_common_pipe_map_render(root);
+ evas_common_pipe_map4_render(root);
}
#endif
#ifndef _EVAS_PIPE_H
#define _EVAS_PIPE_H
-#include "language/evas_bidi_utils.h"
+#include "evas_bidi_utils.h"
#ifdef BUILD_PTHREAD
typedef struct _Thinfo
EAPI void evas_common_pipe_rectangle_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h);
EAPI void evas_common_pipe_line_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1);
EAPI void evas_common_pipe_poly_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points, int x, int y);
-EAPI void evas_common_pipe_text_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const Eina_Unicode *text, const Evas_Text_Props *intl_props);
+EAPI void evas_common_pipe_text_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props);
EAPI void evas_common_pipe_image_load(RGBA_Image *im);
EAPI void evas_common_pipe_image_draw(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int smooth, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
EAPI void evas_common_pipe_map_begin(RGBA_Image *root);
EAPI void evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst,
- RGBA_Draw_Context *dc, int npoints, RGBA_Map_Point *p,
+ RGBA_Draw_Context *dc, RGBA_Map_Point *p,
int smooth, int level);
EAPI void evas_common_pipe_flush(RGBA_Image *im);
#include "evas_scale_smooth.h"
#include "evas_blend_private.h"
-#define SCALE_CALC_X_POINTS(P, SW, DW, CX, CW) \
- P = alloca((CW + 1) * sizeof (int)); \
- scale_calc_x_points(P, SW, DW, CX, CW);
+#define SCALE_CALC_X_POINTS(P, SW, DW) \
+ P = alloca((DW + 1) * sizeof (int)); \
+ scale_calc_x_points(P, SW, DW);
-#define SCALE_CALC_Y_POINTS(P, SRC, SW, SH, DH, CY, CH) \
- P = alloca((CH + 1) * sizeof (DATA32 *)); \
- scale_calc_y_points(P, SRC, SW, SH, DH, CY, CH);
+#define SCALE_CALC_Y_POINTS(P, SRC, SW, SH, DH) \
+ P = alloca((DH + 1) * sizeof (DATA32 *)); \
+ scale_calc_y_points(P, SRC, SW, SH, DH);
-#define SCALE_CALC_A_POINTS(P, S, D, C, CC) \
- P = alloca(CC * sizeof (int)); \
- scale_calc_a_points(P, S, D, C, CC);
+#define SCALE_CALC_A_POINTS(P, S, D) \
+ P = alloca(D * sizeof (int)); \
+ scale_calc_a_points(P, S, D);
-static void scale_calc_y_points(DATA32 **p, DATA32 *src, int sw, int sh, int dh, int cy, int ch);
-static void scale_calc_x_points(int *p, int sw, int dw, int cx, int cw);
-static void scale_calc_a_points(int *p, int s, int d, int c, int cc);
+static void scale_calc_y_points(DATA32** p, DATA32 *src, int sw, int sh, int dh);
+static void scale_calc_x_points(int *p, int sw, int dw);
+static void scale_calc_a_points(int *p, int s, int d);
static void
-scale_calc_y_points(DATA32** p, DATA32 *src, int sw, int sh, int dh, int cy, int ch)
+scale_calc_y_points(DATA32** p, DATA32 *src, int sw, int sh, int dh)
{
int i, val, inc;
inc = (sh << 16) / dh;
for (i = 0; i < dh; i++)
{
- if ((i >= cy) && (i < (cy + ch)))
- p[i - cy] = src + ((val >> 16) * sw);
+ p[i] = src + ((val >> 16) * sw);
val += inc;
}
- if ((i >= cy) && (i < (cy + ch)))
- p[i - cy] = p[i - cy - 1];
+ p[i] = p[i - 1];
}
static void
-scale_calc_x_points(int *p, int sw, int dw, int cx, int cw)
+scale_calc_x_points(int *p, int sw, int dw)
{
int i, val, inc;
inc = (sw << 16) / dw;
for (i = 0; i < dw; i++)
{
- if ((i >= cx) && (i < (cx + cw)))
- p[i - cx] = val >> 16;
+ p[i] = val >> 16;
val += inc;
}
- if ((i >= cx) && (i < (cx + cw)))
- p[i - cx] = p[i - cx - 1];
+ p[i] = p[i - 1];
}
static void
-scale_calc_a_points(int *p, int s, int d, int c, int cc)
+scale_calc_a_points(int *p, int s, int d)
{
int i, val, inc;
inc = (s << 16) / d;
for (i = 0; i < d; i++)
{
- if ((i >= c) && (i < (c + cc)))
- {
- p[i - c] = (val >> 8) - ((val >> 8) & 0xffffff00);
- if ((val >> 16) >= (s - 1)) p[i - c] = 0;
- }
+ p[i] = (val >> 8) - ((val >> 8) & 0xffffff00);
+ if ((val >> 16) >= (s - 1)) p[i] = 0;
val += inc;
}
}
for (i = 0; i < d; i++)
{
ap = ((0x100 - ((val >> 8) & 0xff)) * Cp) >> 8;
- if ((i >= c) && (i < (c + cc)))
- p[i - c] = ap | (Cp << 16);
+ p[i] = ap | (Cp << 16);
val += inc;
}
}
+// sleep(1);
}
#ifdef BUILD_SCALE_SMOOTH
}
if (dst_clip_h <= 0) return;
- /* some maximum region sizes to avoid insane calc point tables */
- if (dst_clip_w > 65536) return;
- if (dst_clip_h > 65536) return;
- if (dst_region_w > (65536 * 1024)) return;
- if (dst_region_h > (65536 * 1024)) return;
-
/* figure out dst jump
* NB: Unused currently, so commented out */
// dst_jump = dst_w - dst_clip_w;
RGBA_Gfx_Func func;
src_data = src->image.data;
-
- /* some maximum region sizes to avoid insane calc point tables */
- SCALE_CALC_X_POINTS(xpoints, src_region_w, dst_region_w, dst_clip_x - dst_region_x, dst_clip_w);
- SCALE_CALC_Y_POINTS(ypoints, src_data, src_w, src_region_h, dst_region_h, dst_clip_y - dst_region_y, dst_clip_h);
- SCALE_CALC_A_POINTS(xapoints, src_region_w, dst_region_w, dst_clip_x - dst_region_x, dst_clip_w);
- SCALE_CALC_A_POINTS(yapoints, src_region_h, dst_region_h, dst_clip_y - dst_region_y, dst_clip_h);
-
+
+ SCALE_CALC_X_POINTS(xpoints, src_region_w, dst_region_w);
+ SCALE_CALC_Y_POINTS(ypoints, src_data, src_w, src_region_h, dst_region_h);
+ SCALE_CALC_A_POINTS(xapoints, src_region_w, dst_region_w);
+ SCALE_CALC_A_POINTS(yapoints, src_region_h, dst_region_h);
+
/* a scanline buffer */
buf = alloca(dst_clip_w * sizeof(DATA32));
-
+
if (dc->mul.use)
- func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, dst_clip_w, dc->render_op);
+ func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, dst_clip_w, dc->render_op);
else
- func = evas_common_gfx_func_composite_pixel_span_get(src, dst, dst_clip_w, dc->render_op);
- /* scaling down vertically */
+ func = evas_common_gfx_func_composite_pixel_span_get(src, dst, dst_clip_w, dc->render_op);
+ /* scaling down vertically */
if ((dst_region_w >= src_region_w) &&
(dst_region_h < src_region_h))
{
}
/* scaling down horizontally */
else if ((dst_region_w < src_region_w) &&
- (dst_region_h >= src_region_h))
+ (dst_region_h >= src_region_h))
{
#include "evas_scale_smooth_scaler_downx.c"
}
/* scaling down both vertically & horizontally */
else if ((dst_region_w < src_region_w) &&
- (dst_region_h < src_region_h))
+ (dst_region_h < src_region_h))
{
#include "evas_scale_smooth_scaler_downx_downy.c"
}
dyy = dst_clip_y - dst_region_y;
dxx = dst_clip_x - dst_region_x;
- xp = xpoints;// + dxx;
- yp = ypoints;// + dyy;
- xapp = xapoints;// + dxx;
- yapp = yapoints;// + dyy;
+ xp = xpoints + dxx;
+ yp = ypoints + dyy;
+ xapp = xapoints + dxx;
+ yapp = yapoints + dyy;
pbuf = buf;
if (src->cache_entry.flags.alpha)
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
- xp = xpoints;// + dxx;
- xapp = xapoints;// + dxx;
+ xp = xpoints + dxx;
+ xapp = xapoints + dxx;
}
}
else
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
- xp = xpoints;// + dxx;
- xapp = xapoints;// + dxx;
+ xp = xpoints + dxx;
+ xapp = xapoints + dxx;
}
}
else
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
- xp = xpoints;// + dxx;
- xapp = xapoints;// + dxx;
+ xp = xpoints + dxx;
+ xapp = xapoints + dxx;
}
}
}
dyy = dst_clip_y - dst_region_y;
dxx = dst_clip_x - dst_region_x;
- xp = xpoints;// + dxx;
- yp = ypoints;// + dyy;
- xapp = xapoints;// + dxx;
- yapp = yapoints;// + dyy;
+ xp = xpoints + dxx;
+ yp = ypoints + dyy;
+ xapp = xapoints + dxx;
+ yapp = yapoints + dyy;
pbuf = buf;
/*#ifndef SCALE_USING_MMX */
/* for now there's no mmx down scaling - so C only */
#endif
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
- xp = xpoints;// + dxx;
- xapp = xapoints;// + dxx;
+ xp = xpoints + dxx;
+ xapp = xapoints + dxx;
yp++; yapp++;
}
}
ysli++;
#endif
dptr += dst_w; dst_clip_w = w;
- xp = xpoints;// + dxx;
- xapp = xapoints;// + dxx;
+ xp = xpoints + dxx;
+ xapp = xapoints + dxx;
yp++; yapp++;
}
}
#endif
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
- xp = xpoints;// + dxx;
- xapp = xapoints;// + dxx;
+ xp = xpoints + dxx;
+ xapp = xapoints + dxx;
yp++; yapp++;
}
}
dyy = dst_clip_y - dst_region_y;
dxx = dst_clip_x - dst_region_x;
- xp = xpoints;// + dxx;
- yp = ypoints;// + dyy;
- xapp = xapoints;// + dxx;
- yapp = yapoints;// + dyy;
+ xp = xpoints + dxx;
+ yp = ypoints + dyy;
+ xapp = xapoints + dxx;
+ yapp = yapoints + dyy;
pbuf = buf;
if (src->cache_entry.flags.alpha)
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
- xp = xpoints;// + dxx;
- xapp = xapoints;// + dxx;
+ xp = xpoints + dxx;
+ xapp = xapoints + dxx;
}
}
else
#endif
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
- xp = xpoints;// + dxx;
- xapp = xapoints;// + dxx;
+ xp = xpoints + dxx;
+ xapp = xapoints + dxx;
}
}
else
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
- xp = xpoints;// + dxx;
- xapp = xapoints;// + dxx;
+ xp = xpoints + dxx;
+ xapp = xapoints + dxx;
}
}
}
#ifdef EVAS_STATIC_BUILD_EET
EVAS_EINA_STATIC_MODULE_USE(image_saver, eet),
#endif
-#if defined (EVAS_BUILD_SAVER_JPEG) && defined (EVAS_STATIC_BUILD_JPEG)
+#ifdef EVAS_STATIC_BUILD_JPEG
EVAS_EINA_STATIC_MODULE_USE(image_saver, jpeg),
#endif
#ifdef EVAS_STATIC_BUILD_PNG
#endif
#define CRIT(...) EINA_LOG_DOM_CRIT(_EVAS_DEFAULT_LOG_DOM, __VA_ARGS__)
+/************************ Unicode stuff **************************/
+#include "../engines/common/evas_encoding.h"
+/*****************************************************************/
+
#include "evas_options.h"
#if defined(__ARM_ARCH_3M__)
DATA32 col;
} col;
struct RGBA_Draw_Context_clip {
- DATA8 *mask;
int x, y, w, h;
Eina_Bool use : 1;
} clip;
#ifdef BUILD_PIPE_RENDER
#include "../engines/common/evas_map_image.h"
-#include "../engines/common/evas_text_utils.h"
+#include "../engines/common/evas_bidi_utils.h"
struct _RGBA_Pipe_Op
{
RGBA_Font *font;
int x, y;
Eina_Unicode *text;
- Evas_Text_Props intl_props;
+ Evas_BiDi_Props intl_props;
} text;
struct {
RGBA_Image *src;
struct {
RGBA_Image *src;
RGBA_Map_Point *p;
- int npoints;
int smooth;
int level;
- } map;
+ } map4;
} op;
};
unsigned char inuse : 1;
};
-#include "../engines/common/evas_font_ot.h"
-
struct _RGBA_Font_Source
{
const char *name;
int orig_upem;
FT_Face face;
} ft;
-#ifdef OT_SUPPORT
- struct {
- void *face;
- } hb;
-#endif
};
struct _RGBA_Font_Glyph
static inline int
evas_object_is_visible(Evas_Object *obj)
-{ /* post 1.0 -> enable? */
- if ((obj->cur.visible)/* && (obj->cur.color.a > 0)*/ &&
+{
+ if ((obj->cur.visible) &&
((obj->cur.cache.clip.visible) || (obj->smart.smart)) &&
((obj->cur.cache.clip.a > 0 && obj->cur.render_op == EVAS_RENDER_BLEND)
|| obj->cur.render_op != EVAS_RENDER_BLEND))
#include "../file/evas_module.h"
#include "../file/evas_path.h"
-#include "../engines/common/evas_text_utils.h"
-#include "../engines/common/language/evas_bidi_utils.h"
-#include "../engines/common/language/evas_language_utils.h"
+#include "../engines/common/evas_bidi_utils.h"
#ifdef EVAS_MAGIC_DEBUG
/* complain when peole pass in wrong object types etc. */
#define MAGIC_OBJ_TEXT 0x71777776
#define MAGIC_OBJ_SMART 0x71777777
#define MAGIC_OBJ_TEXTBLOCK 0x71777778
-#define MAGIC_OBJ_PROXY 0x71777779
#define MAGIC_SMART 0x72777770
#define MAGIC_OBJ_SHAPE 0x72777773
#define MAGIC_OBJ_CONTAINER 0x72777774
int (*font_descent_get) (void *data, void *font);
int (*font_max_ascent_get) (void *data, void *font);
int (*font_max_descent_get) (void *data, void *font);
- void (*font_string_size_get) (void *data, void *font, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int *w, int *h);
- int (*font_inset_get) (void *data, void *font, const Evas_Text_Props *text_props);
- int (*font_h_advance_get) (void *data, void *font, const Eina_Unicode *text, const Evas_Text_Props *intl_props);
- int (*font_v_advance_get) (void *data, void *font, const Eina_Unicode *text, const Evas_Text_Props *intl_props);
- int (*font_char_coords_get) (void *data, void *font, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch);
- int (*font_char_at_coords_get) (void *data, void *font, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch);
- void (*font_draw) (void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const Eina_Unicode *text, const Evas_Text_Props *intl_props);
+ void (*font_string_size_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int *w, int *h);
+ int (*font_inset_get) (void *data, void *font, const Eina_Unicode *text);
+ int (*font_h_advance_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props);
+ int (*font_v_advance_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props);
+ int (*font_char_coords_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch);
+ int (*font_char_at_coords_get) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch);
+ void (*font_draw) (void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props);
void (*font_cache_flush) (void *data);
void (*font_cache_set) (void *data, int bytes);
void (*image_scale_hint_set) (void *data, void *image, int hint);
int (*image_scale_hint_get) (void *data, void *image);
- int (*font_last_up_to_pos) (void *data, void *font, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int x, int y);
+ int (*font_last_up_to_pos) (void *data, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y);
void (*image_map_draw) (void *data, void *context, void *surface, void *image, int npoints, RGBA_Map_Point *p, int smooth, int level);
void *(*image_map_surface_new) (void *data, int w, int h, int alpha);
void (*image_content_hint_set) (void *data, void *surface, int hint);
int (*image_content_hint_get) (void *data, void *surface);
- int (*font_pen_coords_get) (void *data, void *font, const Eina_Unicode *text, const Evas_Text_Props *intl_props, int pos, int *cpen_x, int *cy, int *cadv, int *ch);
- Eina_Bool (*font_text_props_info_create) (void *data __UNUSED__, void *font, Eina_Unicode *text, Evas_Text_Props *intl_props, const Evas_BiDi_Paragraph_Props *par_props, size_t pos, size_t len);
};
struct _Evas_Image_Load_Func
/****************************************************************************/
/*****************************************/
/********************/
-#define MPOOL 1
+//#define MPOOL 1
#ifdef MPOOL
typedef struct _Evas_Mempool Evas_Mempool;
re = (Render_Engine *)data;
#ifdef BUILD_PIPE_RENDER
- evas_common_pipe_map_begin(surface);
+ evas_common_pipe_map4_begin(surface);
#endif
evas_buffer_outbuf_buf_push_updated_region(re->ob, surface, x, y, w, h);
evas_buffer_outbuf_buf_free_region_for_update(re->ob, surface);
static int eng_font_max_ascent_get(void *data, void *font);
static int eng_font_max_descent_get(void *data, void *font);
static void eng_font_string_size_get(void *data, void *font, char *text, int *w, int *h);
-static int eng_font_inset_get(void *data, void *font, const Evas_Text_Props *intl_props);
+static int eng_font_inset_get(void *data, void *font, char *text);
static int eng_font_h_advance_get(void *data, void *font, char *text);
static int eng_font_v_advance_get(void *data, void *font, char *text);
static int eng_font_char_coords_get(void *data, void *font, char *text, int pos, int *cx, int *cy, int *cw, int *ch);
-static int eng_font_pen_coords_get(void *data, void *font, char *text, int pos, int *cpen_x, int *cy, int *cadv, int *ch);
-static Eina_Bool eng_font_text_props_info_create(void *data __UNUSED__, void *font, Eina_Unicode *text, Evas_Text_Props *text_props, const Evas_BiDi_Paragraph_Props *par_props, size_t pos, size_t len);
static int eng_font_char_at_coords_get(void *data, void *font, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch);
static void eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, char *text);
static void eng_font_cache_flush(void *data);
eng_image_scale_hint_get,
/* more font draw functions */
eng_font_last_up_to_pos,
- NULL, // ORD(image_map_draw);
- NULL, // ORD(image_map_surface_new);
- NULL, // ORD(image_map_surface_free);
- NULL, // eng_image_content_hint_set - software doesn't use it
- NULL, // eng_image_content_hint_get - software doesn't use it
- eng_font_pen_coords_get,
- eng_font_text_props_info_create
- /* FUTURE software generic calls go here */
+ NULL, // image_map4_draw
+ NULL, // image_map_surface_new
+ NULL // image_map_surface_free
};
static void *
}
static int
-eng_font_inset_get(void *data, void *font, const Evas_Text_Props *intl_props)
+eng_font_inset_get(void *data, void *font, char *text)
{
Render_Engine *re;
}
static int
-eng_font_pen_coords_get(void *data, void *font, char *text, int pos, int *cpen_x, int *cy, int *cadv, int *ch)
-{
- Render_Engine *re;
-
- /* FIXME, use cairo font subsystem */
- re = (Render_Engine *)data;
- return 0;
-}
-
-
-static Eina_Bool
-eng_font_text_props_info_create(void *data __UNUSED__, void *font, Eina_Unicode *text, Evas_Text_Props *text_props, const Evas_BiDi_Paragraph_Props *par_props, size_t pos, size_t len)
-{
- Render_Engine *re;
-
- /* FIXME, use cairo font subsystem */
- re = (Render_Engine *)data;
- return EINA_TRUE;
-}
-
-static int
eng_font_char_at_coords_get(void *data, void *font, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch)
{
Render_Engine *re;
}
static void
-eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const Eina_Unicode *text, const Evas_Text_Props *intl_props)
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
Render_Engine *re = (Render_Engine *)data;
RGBA_Image im;
ORD(image_scale_hint_set);
ORD(image_scale_hint_get);
-// ORD(image_map_draw);
+// ORD(image_map4_draw);
// ORD(image_map_surface_new);
// ORD(image_map_surface_free);
* memory.
*/
static void
-evas_engine_dfb_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_Text_Props *intl_props)
+evas_engine_dfb_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
DirectFB_Engine_Image_Entry *eim = surface;
IDirectFBSurface *screen;
#endif
static void
-evas_engine_dfb_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *image, int npoints, RGBA_Map_Point *p, int smooth, int level)
+evas_engine_dfb_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
{
Render_Engine *re = (Render_Engine*) data;
DirectFB_Engine_Image_Entry *deie = image;
if (!_dfb_lock_and_sync_image(deie->surface, src, DSLF_READ))
goto error_src;
- evas_common_map_rgba(src, dst, context, 4, p, smooth, level);
+ evas_common_map4_rgba(src, dst, context, p, smooth, level);
evas_common_cpu_end_opt();
screen->Unlock(screen);
ORD(image_scale_hint_set);
ORD(image_scale_hint_get);
- ORD(image_map_draw);
+ ORD(image_map4_draw);
ORD(image_map_surface_new);
ORD(image_map_surface_free);
re = (Render_Engine *)data;
#ifdef BUILD_PIPE_RENDER
- evas_common_pipe_map_begin(surface);
+ evas_common_pipe_map4_begin(surface);
#endif
evas_fb_outbuf_fb_push_updated_region(re->ob, surface, x, y, w, h);
evas_fb_outbuf_fb_free_region_for_update(re->ob, surface);
{
Eina_List *images;
- int images_size;
-
struct {
GLint max_texture_units;
GLint max_texture_size;
} native;
int scale_hint, content_hint;
- int csize;
unsigned char dirty : 1;
unsigned char cached : 1;
int x, int y, int w, int h,
int r, int g, int b, int a,
Eina_Bool smooth);
-void evas_gl_common_context_image_map_push(Evas_GL_Context *gc,
- Evas_GL_Texture *tex,
- int npoints,
- RGBA_Map_Point *p,
- int clip, int cx, int cy, int cw, int ch,
- int r, int g, int b, int a,
- Eina_Bool smooth,
- Eina_Bool tex_only,
- Eina_Bool yuv);
+void evas_gl_common_context_image_map4_push(Evas_GL_Context *gc,
+ Evas_GL_Texture *tex,
+ RGBA_Map_Point *p,
+ int clip, int cx, int cy, int cw, int ch,
+ int r, int g, int b, int a,
+ Eina_Bool smooth,
+ Eina_Bool tex_only,
+ Eina_Bool yuv);
void evas_gl_common_context_flush(Evas_GL_Context *gc);
int evas_gl_common_shader_program_init(Evas_GL_Program *p,
void evas_gl_common_image_all_unload(Evas_GL_Context *gc);
-void evas_gl_common_image_ref(Evas_GL_Image *im);
-void evas_gl_common_image_unref(Evas_GL_Image *im);
Evas_GL_Image *evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key, Evas_Image_Load_Opts *lo, int *error);
Evas_GL_Image *evas_gl_common_image_new_from_data(Evas_GL_Context *gc, unsigned int w, unsigned int h, DATA32 *data, int alpha, int cspace);
Evas_GL_Image *evas_gl_common_image_new_from_copied_data(Evas_GL_Context *gc, unsigned int w, unsigned int h, DATA32 *data, int alpha, int cspace);
void evas_gl_common_image_native_disable(Evas_GL_Image *im);
void evas_gl_common_image_scale_hint_set(Evas_GL_Image *im, int hint);
void evas_gl_common_image_content_hint_set(Evas_GL_Image *im, int hint);
-void evas_gl_common_image_cache_flush(Evas_GL_Context *gc);
void evas_gl_common_image_free(Evas_GL_Image *im);
Evas_GL_Image *evas_gl_common_image_surface_new(Evas_GL_Context *gc, unsigned int w, unsigned int h, int alpha);
void evas_gl_common_image_dirty(Evas_GL_Image *im, unsigned int x, unsigned int y, unsigned int w, unsigned int h);
-void evas_gl_common_image_map_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int npoints, RGBA_Map_Point *p, int smooth, int level);
+void evas_gl_common_image_map4_draw(Evas_GL_Context *gc, Evas_GL_Image *im, RGBA_Map_Point *p, int smooth, int level);
void evas_gl_common_image_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth);
void *evas_gl_font_texture_new(void *gc, RGBA_Font_Glyph *fg);
}
void
-evas_gl_common_context_image_map_push(Evas_GL_Context *gc,
- Evas_GL_Texture *tex,
- int npoints,
- RGBA_Map_Point *p,
- int clip, int cx, int cy, int cw, int ch,
- int r, int g, int b, int a,
- Eina_Bool smooth, Eina_Bool tex_only,
- Eina_Bool yuv)
+evas_gl_common_context_image_map4_push(Evas_GL_Context *gc,
+ Evas_GL_Texture *tex,
+ RGBA_Map_Point *p,
+ int clip, int cx, int cy, int cw, int ch,
+ int r, int g, int b, int a,
+ Eina_Bool smooth, Eina_Bool tex_only,
+ Eina_Bool yuv)
{
int pnum, nv, nc, nu, nu2, nu3, nt, i;
const int points[6] = { 0, 1, 2, 0, 2, 3 };
if (!tex->alpha) blend = 0;
if (a < 255) blend = 1;
- if (npoints != 4)
- {
- // FIXME: nash - you didnt fix this for n points. its still all 4 point stuff!!! grrrr.
- abort();
- }
if ((A_VAL(&(p[0].col)) < 0xff) || (A_VAL(&(p[1].col)) < 0xff) ||
(A_VAL(&(p[2].col)) < 0xff) || (A_VAL(&(p[3].col)) < 0xff))
blend = 1;
if ((tex->im) && (tex->im->native.data) && (!tex->im->native.yinvert))
{
// FIXME: handle yinvert
- ERR("not handling inverted y case for map");
+ ERR("not handling inverted y case for map4");
}
cmul = ARGB_JOIN(a, r, g, b);
}
}
-static void
-_evas_gl_image_cache_trim(Evas_GL_Context *gc)
-{
- int size = evas_common_image_get_cache();
-
- while (gc->shared->images_size > size)
- {
- Evas_GL_Image *im2;
- Eina_List *l = NULL;
-
- EINA_LIST_REVERSE_FOREACH(gc->shared->images, l, im2)
- {
- if (im2->references == 0)
- {
- im2->cached = 0;
- im2->gc->shared->images =
- eina_list_remove_list(im2->gc->shared->images, l);
- im2->gc->shared->images_size -= (im2->csize);
- evas_gl_common_image_free(im2);
- l = NULL;
- break;
- }
- }
- if ((gc->shared->images_size > size) && (l))
- {
- printf("EEK %i > %i, no 0 ref imgs\n",
- gc->shared->images_size, size);
- break;
- }
- if (!gc->shared->images)
- {
- printf("EEK %i > %i, no imgs\n",
- gc->shared->images_size, size);
- break;
- }
- }
-}
-
-static Eina_Bool
-_evas_gl_image_cache_add(Evas_GL_Image *im)
-{
- if (im->references == 0)
- {
- im->csize = im->w * im->h * 4;
- im->gc->shared->images_size += im->csize;
- _evas_gl_image_cache_trim(im->gc);
- return EINA_TRUE;
- }
- else
- {
- im->gc->shared->images = eina_list_remove(im->gc->shared->images, im);
- im->cached = 0;
- }
- return EINA_FALSE;
-}
-
-void
-evas_gl_common_image_ref(Evas_GL_Image *im)
-{
- if (im->references == 0)
- {
- im->gc->shared->images_size -= (im->csize);
- }
- im->references++;
-}
-
-void
-evas_gl_common_image_unref(Evas_GL_Image *im)
-{
- im->references--;
- if (im->references == 0)
- {
- _evas_gl_image_cache_add(im);
- }
-}
-
Evas_GL_Image *
evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key, Evas_Image_Load_Opts *lo, int *error)
{
im_im = evas_common_load_image_from_file(file, key, lo, error);
if (!im_im) return NULL;
- // FIXME: keep unreffed shared images around
EINA_LIST_FOREACH(gc->shared->images, l, im)
{
if (im->im == im_im)
{
-// why did i put this here? i think to free the rgba pixel data once a texture
-// exists.
-// evas_cache_image_drop(&im_im->cache_entry);
+ evas_cache_image_drop(&im_im->cache_entry);
gc->shared->images = eina_list_remove_list(gc->shared->images, l);
gc->shared->images = eina_list_prepend(gc->shared->images, im);
- evas_gl_common_image_ref(im);
+ im->references++;
*error = EVAS_LOAD_ERROR_NONE;
return im;
}
im->references = 1;
im->im = im_im;
im->gc = gc;
+ im->references = 1;
im->cached = 1;
im->cs.space = EVAS_COLORSPACE_ARGB8888;
im->alpha = im->im->cache_entry.flags.alpha;
{
gc->shared->images = eina_list_remove_list(gc->shared->images, l);
gc->shared->images = eina_list_prepend(gc->shared->images, im);
- evas_gl_common_image_ref(im);
+ im->references++;
return im;
}
}
im->cs.no_free = 0;
if (im->cached)
{
- if (im->references == 0)
- im->gc->shared->images_size -= (im->csize);
im->gc->shared->images = eina_list_remove(im->gc->shared->images, im);
im->cached = 0;
}
im->cs.no_free = 0;
if (im->cached)
{
- if (im->references == 0)
- im->gc->shared->images_size -= im->csize;
im->gc->shared->images = eina_list_remove(im->gc->shared->images, im);
im->cached = 0;
}
}
void
-evas_gl_common_image_cache_flush(Evas_GL_Context *gc)
-{
- _evas_gl_image_cache_trim(gc);
-}
-
-void
evas_gl_common_image_free(Evas_GL_Image *im)
{
im->references--;
{
if (!im->cs.no_free) free(im->cs.data);
}
- if (im->cached)
- {
- if (_evas_gl_image_cache_add(im)) return;
- }
+ if (im->cached) im->gc->shared->images = eina_list_remove(im->gc->shared->images, im);
if (im->im) evas_cache_image_drop(&im->im->cache_entry);
if (im->tex) evas_gl_common_texture_free(im->tex);
free(im);
}
void
-evas_gl_common_image_map_draw(Evas_GL_Context *gc, Evas_GL_Image *im,
- int npoints, RGBA_Map_Point *p, int smooth, int level __UNUSED__)
+evas_gl_common_image_map4_draw(Evas_GL_Context *gc, Evas_GL_Image *im,
+ RGBA_Map_Point *p, int smooth, int level __UNUSED__)
{
RGBA_Draw_Context *dc;
int r, g, b, a;
if ((im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
(im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL))
yuv = 1;
- evas_gl_common_context_image_map_push(gc, im->tex, npoints, p,
- c, cx, cy, cw, ch,
- r, g, b, a, smooth, im->tex_only,
- yuv);
+ evas_gl_common_context_image_map4_push(gc, im->tex, p,
+ c, cx, cy, cw, ch,
+ r, g, b, a, smooth, im->tex_only,
+ yuv);
}
void
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
-// printf("tex upload %ix%i\n", im->cache_entry.w, im->cache_entry.h);
// +-+
// +-+
//
}
static void
-eng_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *image, int npoints, RGBA_Map_Point *p, int smooth, int level)
+eng_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
{
// XXX
}
}
static void
-eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const Eina_Unicode *text, const Evas_Text_Props *intl_props)
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
Render_Engine *re;
ORD(image_scale_hint_set);
ORD(image_scale_hint_get);
- ORD(image_map_draw);
+ ORD(image_map4_draw);
ORD(image_map_surface_new);
ORD(image_map_surface_free);
}
static void
-eng_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *image, int npoints, RGBA_Map_Point *p, int smooth, int level)
+eng_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
{
Render_Engine *re;
re = (Render_Engine *)data;
evas_gl_common_context_target_surface_set(re->gl_context, surface);
re->gl_context->dc = context;
- evas_gl_common_image_map_draw(re->gl_context, image, npoints, p, smooth, level);
+ evas_gl_common_image_map4_draw(re->gl_context, image, p, smooth, level);
}
static void *
}
static void
-eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_Text_Props *intl_props)
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
Render_Engine *re;
ORD(image_scale_hint_set);
ORD(image_scale_hint_get);
- ORD(image_map_draw);
+ ORD(image_map4_draw);
ORD(image_map_surface_new);
ORD(image_map_surface_free);
if (im2 == im) return im;
if (im2)
{
- n = im2->native.data;
- if (n)
- {
- evas_gl_common_image_ref(im2);
- evas_gl_common_image_free(im);
- return im2;
- }
+ n = im2->native.data;
+ if (n)
+ {
+ im2->references++;
+ evas_gl_common_image_free(im);
+ return im2;
+ }
}
}
else if (ns->type == EVAS_NATIVE_SURFACE_OPENGL)
eng_window_use(re->win);
evas_gl_common_context_target_surface_set(re->win->gl_context, surface);
re->win->gl_context->dc = context;
- if (npoints != 4)
- {
- // FIXME: nash - you didnt fix this
- abort();
- }
if ((p[0].x == p[3].x) &&
(p[1].x == p[2].x) &&
(p[0].y == p[1].y) &&
dy = p[0].y >> FP;
dw = (p[2].x >> FP) - dx;
dh = (p[2].y >> FP) - dy;
- eng_image_draw(data, context, surface, image,
- 0, 0, gim->w, gim->h, dx, dy, dw, dh, smooth);
+ eng_image_draw
+ (data, context, surface, image,
+ 0, 0, gim->w, gim->h,
+ dx, dy, dw, dh, smooth);
}
else
{
- evas_gl_common_image_map_draw(re->win->gl_context, image, npoints, p,
- smooth, level);
+ evas_gl_common_image_map4_draw(re->win->gl_context, image, p,
+ smooth, level);
}
}
}
static void
-eng_image_cache_flush(void *data __UNUSED__)
-{
- Render_Engine *re;
- int tmp_size;
-
- re = (Render_Engine *)data;
-
- tmp_size = evas_common_image_get_cache();
- evas_common_image_set_cache(0);
- evas_common_rgba_image_scalecache_flush();
- evas_gl_common_image_cache_flush(re->win->gl_context);
- evas_common_image_set_cache(tmp_size);
-}
-
-static void
-eng_image_cache_set(void *data __UNUSED__, int bytes)
-{
- Render_Engine *re;
-
- re = (Render_Engine *)data;
- evas_common_image_set_cache(bytes);
- evas_common_rgba_image_scalecache_size_set(bytes);
- evas_gl_common_image_cache_flush(re->win->gl_context);
-}
-
-static int
-eng_image_cache_get(void *data __UNUSED__)
-{
- Render_Engine *re;
-
- re = (Render_Engine *)data;
- return evas_common_image_get_cache();
-}
-
-
-static void
eng_image_stride_get(void *data __UNUSED__, void *image, int *stride)
{
Evas_GL_Image *im = image;
}
static void
-eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_Text_Props *intl_props)
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
Render_Engine *re;
ORD(image_content_hint_set);
ORD(image_content_hint_get);
-
- ORD(image_cache_flush);
- ORD(image_cache_set);
- ORD(image_cache_get);
/* now advertise out own api */
em->functions = (void *)(&func);
}
static void
-eng_font_string_size_get(void *data, void *font, const char *text, const Evas_Text_Props *text_props, int *w, int *h)
+eng_font_string_size_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props, int *w, int *h)
{
Render_Engine *re = (Render_Engine *)data;
Evas_Quartz_Font *loaded_font = (Evas_Quartz_Font *)font;
}
static int
-eng_font_inset_get(void *data, void *font, const Evas_Text_Props *intl_props)
+eng_font_inset_get(void *data, void *font, const char *text)
{
return 0;
}
static int
-eng_font_h_advance_get(void *data, void *font, const char *text, const Evas_Text_Props *text_props)
+eng_font_h_advance_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props)
{
int w;
- eng_font_string_size_get(data, font, text, text_props, &w, NULL);
+ eng_font_string_size_get(data, font, text, intl_props, &w, NULL);
return w + 2; // FIXME: shouldn't need a constant here. from where do we get word spacing?
// it seems we lose the space between differently-styled text in a text block. Why?
}
static int
-eng_font_v_advance_get(void *data, void *font, const char *text, const Evas_Text_Props *text_props)
+eng_font_v_advance_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props)
{
int h;
- eng_font_string_size_get(data, font, text, text_props, NULL, &h);
+ eng_font_string_size_get(data, font, text, intl_props, NULL, &h);
return h;
}
static int
-eng_font_char_coords_get(void *data, void *font, const char *text, const Evas_Text_Props *text_props, int pos, int *cx, int *cy, int *cw, int *ch)
+eng_font_char_coords_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch)
{
Evas_Quartz_Font *loaded_font = (Evas_Quartz_Font *)font;
return 1;
}
-/*FIXME: this is *NOT* implemennted correctly, look at the other engines to
- * see what needed to be done */
static int
-eng_font_pen_coords_get(void *data, void *font, const char *text, const Evas_Text_Props *text_props, int pos, int *cpen_x, int *cy, int *cadv, int *ch)
-{
- return eng_font_char_coords_get(data, font, text, text_props, pos, cpen_x,
- cy, cadv, ch);
-}
-
-static Eina_Bool
-eng_font_text_props_info_create(void *data __UNUSED__, void *font, Eina_Unicode *text, Evas_Text_Props *text_props, const Evas_BiDi_Paragraph_Props *par_props, size_t pos, size_t len)
-{
- (void) font;
- (void) text;
- (void) text_props;
- (void) par_props;
- (void) pos;
- (void) len;
-#if !defined(OT_SUPPORT) && defined(BIDI_SUPPORT)
- evas_bidi_shape_string(text, par_props, pos, len);
-#endif
- return evas_common_text_props_content_create(font, text, text_props, len);
-}
-
-static int
-eng_font_char_at_coords_get(void *data, void *font, const char *text, const Evas_Text_Props *text_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
+eng_font_char_at_coords_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
{
// Return the index of the character at the given point, also lookup it's origin x, y, w, and h.
Evas_Quartz_Font *loaded_font = (Evas_Quartz_Font *)font;
int stringIndex = (int) CTLineGetStringIndexForPosition(line, CGPointMake(x, y));
// In order to get the character's size and position, look up the position of this character and the next one
- eng_font_char_coords_get(data, font, text, text_props, stringIndex, cx, cy, NULL, NULL);
- eng_font_char_coords_get(data, font, text, text_props, stringIndex + 1, cw, NULL, NULL, NULL);
+ eng_font_char_coords_get(data, font, text, intl_props, stringIndex, cx, cy, NULL, NULL);
+ eng_font_char_coords_get(data, font, text, intl_props, stringIndex + 1, cw, NULL, NULL, NULL);
if (cw && cx) *cw -= *cx;
if (ch) *ch = loaded_font->size;
}
static void
-eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text, const Evas_Text_Props *text_props)
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text, const Evas_BiDi_Props *intl_props)
{
Render_Engine *re = (Render_Engine *)data;
Evas_Quartz_Context *ctxt = (Evas_Quartz_Context *)context;
ORD(image_scale_hint_set);
ORD(image_scale_hint_get);
-// ORD(image_map_draw);
+// ORD(image_map4_draw);
// ORD(image_map_surface_new);
// ORD(image_map_surface_free);
/* now advertise out our api */
static int eng_font_descent_get(void *data, void *font);
static int eng_font_max_ascent_get(void *data, void *font);
static int eng_font_max_descent_get(void *data, void *font);
-static void eng_font_string_size_get(void *data, void *font, const char *text, const Evas_Text_Props *intl_props, int *w, int *h);
-static int eng_font_inset_get(void *data, void *font, const Evas_Text_Props *intl_props);
-static int eng_font_h_advance_get(void *data, void *font, const char *text, const Evas_Text_Props *intl_props);
-static int eng_font_v_advance_get(void *data, void *font, const char *text, const Evas_Text_Props *intl_props);
-static int eng_font_char_coords_get(void *data, void *font, const char *text, const Evas_Text_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch);
-static int eng_font_pen_coords_get(void *data, void *font, const char *text, const Evas_Text_Props *intl_props, int pos, int *cpen_x, int *cy, int *cadv, int *ch);
-static Eina_Bool eng_font_text_props_info_create(void *data __UNUSED__, void *font, Eina_Unicode *text, Evas_Text_Props *intl_props, const Evas_BiDi_Paragraph_Props *par_props, size_t pos, size_t len);
-static int eng_font_char_at_coords_get(void *data, void *font, const char *text, const Evas_Text_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch);
-static void eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text, const Evas_Text_Props *intl_props);
+static void eng_font_string_size_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props, int *w, int *h);
+static int eng_font_inset_get(void *data, void *font, const char *text);
+static int eng_font_h_advance_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props);
+static int eng_font_v_advance_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props);
+static int eng_font_char_coords_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch);
+static int eng_font_char_at_coords_get(void *data, void *font, const char *text, const Evas_BiDi_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch);
+static void eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text, const Evas_BiDi_Props *intl_props);
static void eng_font_hinting_set(void *data, void *font, int hinting);
static int eng_font_hinting_can_hint(void *data, int hinting);
}
static void
-eng_font_string_size_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int *w, int *h)
+eng_font_string_size_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int *w, int *h)
{
- evas_common_font_query_size(font, text, text_props, w, h);
+ evas_common_font_query_size(font, text, intl_props, w, h);
}
static int
-eng_font_inset_get(void *data __UNUSED__, void *font, const Evas_Text_Props *text_props)
+eng_font_inset_get(void *data __UNUSED__, void *font, const Eina_Unicode *text)
{
- return evas_common_font_query_inset(font, text_props);
+ return evas_common_font_query_inset(font, text);
}
static int
-eng_font_h_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props)
+eng_font_h_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
int h, v;
- evas_common_font_query_advance(font, text, text_props, &h, &v);
+ evas_common_font_query_advance(font, text, intl_props, &h, &v);
return h;
}
static int
-eng_font_v_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props)
+eng_font_v_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
int h, v;
- evas_common_font_query_advance(font, text, text_props, &h, &v);
+ evas_common_font_query_advance(font, text, intl_props, &h, &v);
return v;
}
static int
-eng_font_pen_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int pos, int *cpen_x, int *cy, int *cadv, int *ch)
+eng_font_char_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch)
{
- return evas_common_font_query_pen_coords(font, text, text_props, pos, cpen_x, cy, cadv, ch);
-}
-
-static Eina_Bool
-eng_font_text_props_info_create(void *data __UNUSED__, void *font, Eina_Unicode *text, Evas_Text_Props *text_props, const Evas_BiDi_Paragraph_Props *par_props, size_t pos, size_t len)
-{
- (void) font;
- (void) text;
- (void) text_props;
- (void) par_props;
- (void) pos;
- (void) len;
-#if !defined(OT_SUPPORT) && defined(BIDI_SUPPORT)
- evas_bidi_shape_string(text, par_props, pos, len);
-#endif
- return evas_common_text_props_content_create(font, text, text_props, len);
-}
-
-static int
-eng_font_char_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int pos, int *cx, int *cy, int *cw, int *ch)
-{
- return evas_common_font_query_char_coords(font, text, text_props, pos, cx, cy, cw, ch);
+ return evas_common_font_query_char_coords(font, text, intl_props, pos, cx, cy, cw, ch);
}
static int
-eng_font_char_at_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
+eng_font_char_at_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
{
- return evas_common_font_query_char_at_coords(font, text, text_props, x, y, cx, cy, cw, ch);
+ return evas_common_font_query_char_at_coords(font, text, intl_props, x, y, cx, cy, cw, ch);
}
static int
-eng_font_last_up_to_pos(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int x, int y)
+eng_font_last_up_to_pos(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y)
{
- return evas_common_font_query_last_up_to_pos(font, text, text_props, x, y);
+ return evas_common_font_query_last_up_to_pos(font, text, intl_props, x, y);
}
static void
-eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_Text_Props *text_props)
+eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
static RGBA_Image *im = NULL;
Soft16_Image *dst = surface;
evas_common_soft16_font_glyph_new,
evas_common_soft16_font_glyph_free,
evas_common_soft16_font_glyph_draw);
- evas_common_font_draw(im, context, font, x, y, text, text_props);
+ evas_common_font_draw(im, context, font, x, y, text, intl_props);
evas_common_draw_context_font_ext_set(context,
NULL,
NULL,
eng_image_scale_hint_get,
/* more font draw functions */
eng_font_last_up_to_pos,
- NULL, // ORD(image_map_draw);
+ NULL, // ORD(image_map4_draw);
NULL, // ORD(image_map_surface_new);
NULL, // ORD(image_map_surface_free);
NULL, // eng_image_content_hint_set - software doesn't use it
- NULL, // eng_image_content_hint_get - software doesn't use it
- eng_font_pen_coords_get,
- eng_font_text_props_info_create
+ NULL // eng_image_content_hint_get - software doesn't use it
/* FUTURE software generic calls go here */
};
}
static void
-evas_engine_sdl16_image_map_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *image __UNUSED__, int npoints __UNUSED__, RGBA_Map_Point *p __UNUSED__, int smooth __UNUSED__, int level __UNUSED__)
+evas_engine_sdl16_image_map4_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *image __UNUSED__, RGBA_Map_Point *p __UNUSED__, int smooth __UNUSED__, int level __UNUSED__)
{
}
}
static void
-evas_engine_sdl16_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_Text_Props *intl_props)
+evas_engine_sdl16_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
static RGBA_Image *im = NULL;
SDL_Engine_Image_Entry *eim = surface;
ORD(image_border_set);
ORD(image_border_get);
ORD(image_draw);
- ORD(image_map_draw);
+ ORD(image_map4_draw);
ORD(image_cache_flush);
ORD(image_cache_set);
ORD(image_cache_get);
}
static void
-eng_font_string_size_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props,
+eng_font_string_size_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props,
int *w, int *h)
{
- evas_common_font_query_size(font, text, text_props, w, h);
+ evas_common_font_query_size(font, text, intl_props, w, h);
}
static int
-eng_font_inset_get(void *data __UNUSED__, void *font, const Evas_Text_Props *text_props)
+eng_font_inset_get(void *data __UNUSED__, void *font, const Eina_Unicode *text)
{
- return evas_common_font_query_inset(font, text_props);
+ return evas_common_font_query_inset(font, text);
}
static int
-eng_font_h_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props)
+eng_font_h_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
int h, v;
- evas_common_font_query_advance(font, text, text_props, &h, &v);
+ evas_common_font_query_advance(font, text, intl_props, &h, &v);
return h;
}
static int
-eng_font_v_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props)
+eng_font_v_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
int h, v;
- evas_common_font_query_advance(font, text, text_props, &h, &v);
+ evas_common_font_query_advance(font, text, intl_props, &h, &v);
return v;
}
static int
-eng_font_pen_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props,
- int pos, int *cpen, int *cy, int *cadv, int *ch)
-{
- return evas_common_font_query_pen_coords(font, text, text_props, pos, cpen, cy, cadv, ch);
-}
-
-static Eina_Bool
-eng_font_text_props_info_create(void *data __UNUSED__, void *font, Eina_Unicode *text, Evas_Text_Props *text_props, const Evas_BiDi_Paragraph_Props *par_props, size_t pos, size_t len)
-{
- (void) font;
- (void) text;
- (void) text_props;
- (void) par_props;
- (void) pos;
- (void) len;
-#if !defined(OT_SUPPORT) && defined(BIDI_SUPPORT)
- evas_bidi_shape_string(text, par_props, pos, len);
-#endif
- return evas_common_text_props_content_create(font, text, text_props, len);
-}
-
-static int
-eng_font_char_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props,
+eng_font_char_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props,
int pos, int *cx, int *cy, int *cw, int *ch)
{
- return evas_common_font_query_char_coords(font, text, text_props, pos, cx, cy, cw, ch);
+ return evas_common_font_query_char_coords(font, text, intl_props, pos, cx, cy, cw, ch);
}
static int
-eng_font_char_at_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props,
+eng_font_char_at_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props,
int x, int y, int *cx, int *cy, int *cw, int *ch)
{
- return evas_common_font_query_char_at_coords(font, text, text_props, x, y, cx, cy, cw, ch);
+ return evas_common_font_query_char_at_coords(font, text, intl_props, x, y, cx, cy, cw, ch);
}
static int
-eng_font_last_up_to_pos(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props,
+eng_font_last_up_to_pos(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props,
int x, int y)
{
- return evas_common_font_query_last_up_to_pos(font, text, text_props, x, y);
+ return evas_common_font_query_last_up_to_pos(font, text, intl_props, x, y);
}
static void
eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font,
- int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_Text_Props *text_props)
+ int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
- evas_common_font_draw(surface, context, font, x, y, text, text_props);
+ evas_common_font_draw(surface, context, font, x, y, text, intl_props);
evas_common_draw_context_font_ext_set(context, NULL, NULL, NULL, NULL);
}
eng_image_scale_hint_get,
/* more font draw functions */
eng_font_last_up_to_pos,
- NULL, // ORD(image_map_draw);
+ NULL, // ORD(image_map4_draw);
NULL, // ORD(image_map_surface_new);
NULL, // ORD(image_map_surface_free);
NULL, // eng_image_content_hint_set - software doesn't use it
- NULL, // eng_image_content_hint_get - software doesn't use it
- eng_font_pen_coords_get,
- eng_font_text_props_info_create
+ NULL // eng_image_content_hint_get - software doesn't use it
/* FUTURE software generic calls go here */
};
re = (Render_Engine *)data;
#ifdef BUILD_PIPE_RENDER
- evas_common_pipe_map_begin(surface);
+ evas_common_pipe_map4_begin(surface);
#endif
evas_software_ddraw_outbuf_push_updated_region(re->ob, surface, x, y, w, h);
evas_software_ddraw_outbuf_free_region_for_update(re->ob, surface);
re = (Render_Engine *)data;
#ifdef BUILD_PIPE_RENDER
- evas_common_pipe_map_begin(surface);
+ evas_common_pipe_map4_begin(surface);
#endif
evas_software_gdi_outbuf_push_updated_region(re->ob, surface, x, y, w, h);
evas_software_gdi_outbuf_free_region_for_update(re->ob, surface);
if (npoints > 4)
{
eng_image_map_draw(data, context, surface, image, npoints - 2, p + 2,
- smooth, level);
+ smooth, level);
}
}
}
static void
-eng_font_string_size_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int *w, int *h)
+eng_font_string_size_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int *w, int *h)
{
- evas_common_font_query_size(font, text, text_props, w, h);
+ evas_common_font_query_size(font, text, intl_props, w, h);
}
static int
-eng_font_inset_get(void *data __UNUSED__, void *font, const Evas_Text_Props *text_props)
+eng_font_inset_get(void *data __UNUSED__, void *font, const Eina_Unicode *text)
{
- return evas_common_font_query_inset(font, text_props);
+ return evas_common_font_query_inset(font, text);
}
static int
-eng_font_h_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props)
+eng_font_h_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
int h, v;
- evas_common_font_query_advance(font, text, text_props, &h, &v);
+ evas_common_font_query_advance(font, text, intl_props, &h, &v);
return h;
}
static int
-eng_font_v_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props)
+eng_font_v_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
int h, v;
- evas_common_font_query_advance(font, text, text_props, &h, &v);
+ evas_common_font_query_advance(font, text, intl_props, &h, &v);
return v;
}
static int
-eng_font_pen_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int pos, int *cpen_x, int *cy, int *cadv, int *ch)
+eng_font_char_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch)
{
- return evas_common_font_query_pen_coords(font, text, text_props, pos, cpen_x, cy, cadv, ch);
-}
-
-static Eina_Bool
-eng_font_text_props_info_create(void *data __UNUSED__, void *font, Eina_Unicode *text, Evas_Text_Props *text_props, const Evas_BiDi_Paragraph_Props *par_props, size_t pos, size_t len)
-{
- (void) font;
- (void) text;
- (void) text_props;
- (void) par_props;
- (void) pos;
- (void) len;
-#if !defined(OT_SUPPORT) && defined(BIDI_SUPPORT)
- evas_bidi_shape_string(text, par_props, pos, len);
-#endif
- return evas_common_text_props_content_create(font, text, text_props, len);
-}
-
-static int
-eng_font_char_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int pos, int *cx, int *cy, int *cw, int *ch)
-{
- return evas_common_font_query_char_coords(font, text, text_props, pos, cx, cy, cw, ch);
+ return evas_common_font_query_char_coords(font, text, intl_props, pos, cx, cy, cw, ch);
}
static int
-eng_font_char_at_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
+eng_font_char_at_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
{
- return evas_common_font_query_char_at_coords(font, text, text_props, x, y, cx, cy, cw, ch);
+ return evas_common_font_query_char_at_coords(font, text, intl_props, x, y, cx, cy, cw, ch);
}
static int
-eng_font_last_up_to_pos(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_Text_Props *text_props, int x, int y)
+eng_font_last_up_to_pos(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y)
{
- return evas_common_font_query_last_up_to_pos(font, text, text_props, x, y);
+ return evas_common_font_query_last_up_to_pos(font, text, intl_props, x, y);
}
static void
-eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_Text_Props *text_props)
+eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
#ifdef BUILD_PIPE_RENDER
if ((cpunum > 1)
&& evas_common_frameq_enabled()
#endif
)
- evas_common_pipe_text_draw(surface, context, font, x, y, text, text_props);
+ evas_common_pipe_text_draw(surface, context, font, x, y, text, intl_props);
else
#endif
{
- evas_common_font_draw(surface, context, font, x, y, text, text_props);
+ evas_common_font_draw(surface, context, font, x, y, text, intl_props);
evas_common_cpu_end_opt();
}
}
static void
eng_font_cache_flush(void *data __UNUSED__)
{
- int tmp_size;
-
- tmp_size = evas_common_font_cache_get();
- evas_common_font_cache_set(0);
evas_common_font_flush();
- evas_common_font_cache_set(tmp_size);
}
static void
eng_image_map_surface_new,
eng_image_map_surface_free,
NULL, // eng_image_content_hint_set - software doesn't use it
- NULL, // eng_image_content_hint_get - software doesn't use it
- eng_font_pen_coords_get,
- eng_font_text_props_info_create
+ NULL // eng_image_content_hint_get - software doesn't use it
/* FUTURE software generic calls go here */
};
re = (Render_Engine *)data;
#ifdef BUILD_PIPE_RENDER
- evas_common_pipe_map_begin(surface);
+ evas_common_pipe_map4_begin(surface);
#endif
evas_qtopia_outbuf_software_qtopia_push_updated_region(re->ob, surface, x, y, w, h);
evas_qtopia_outbuf_software_qtopia_free_region_for_update(re->ob, surface);
}
static void
-evas_engine_sdl_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *image, int npoints, RGBA_Map_Point *p, int smooth, int level)
+evas_engine_sdl_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
{
SDL_Engine_Image_Entry *eim = image;
SDL_Engine_Image_Entry *dst = surface;
_SDL_UPDATE_PIXELS(eim);
}
- evas_common_map_rgba((RGBA_Image*) eim->cache_entry.src,
- (RGBA_Image*) dst->cache_entry.src, context, npoints, p, smooth, level);
+ evas_common_map4_rgba((RGBA_Image*) eim->cache_entry.src,
+ (RGBA_Image*) dst->cache_entry.src, context, p, smooth, level);
evas_common_cpu_end_opt();
if (mustlock_im)
}
static void
-evas_engine_sdl_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_Text_Props *intl_props)
+evas_engine_sdl_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
SDL_Engine_Image_Entry *eim = surface;
int mustlock_im = 0;
ORD(image_border_set);
ORD(image_border_get);
ORD(image_draw);
- ORD(image_map_draw);
+ ORD(image_map4_draw);
ORD(image_map_surface_new);
ORD(image_map_surface_free);
ORD(image_comment_get);
re = (Render_Engine *)data;
#if defined(BUILD_PIPE_RENDER) && !defined(EVAS_FRAME_QUEUING)
- evas_common_pipe_map_begin(surface);
+ evas_common_pipe_map4_begin(surface);
#endif /* BUILD_PIPE_RENDER && !EVAS_FRAME_QUEUING*/
#ifdef EVAS_FRAME_QUEUING
}
static void
-eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_Text_Props *intl_props)
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
{
Render_Engine *re;
RGBA_Image *im;
ORD(image_scale_hint_set);
ORD(image_scale_hint_get);
-// ORD(image_map_draw);
+// ORD(image_map4_draw);
// ORD(image_map_surface_new);
// ORD(image_map_surface_free);
{
if (p[0])
{
- if ((x + p[0]) <= wpad)
- {
- unsigned int col1 = pal[p[1] >> 4];
- unsigned int col2 = pal[p[1] & 0xf];
+ unsigned int col1 = pal[p[1] >> 4];
+ unsigned int col2 = pal[p[1] & 0xf];
- count = p[0] / 2;
- while (count > 0)
+ if ((x + p[0]) > wpad) break;
+ count = p[0] / 2;
+ while (count > 0)
+ {
+ if (x < w)
{
- if (x < w)
- {
- pix[0] = col1;
- x++;
- }
- if (x < w)
- {
- pix[1] = col2;
- x++;
- }
- pix += 2;
- count--;
+ pix[0] = col1;
+ x++;
}
- if (p[0] & 0x1)
+ if (x < w)
{
- *pix = col1;
+ pix[1] = col2;
x++;
- pix++;
}
- }
+ pix += 2;
+ count--;
+ }
+ if (p[0] & 0x1)
+ {
+ *pix = col1;
+ x++;
+ pix++;
+ }
p += 2;
}
else
{
if (p[0])
{
- if ((x + p[0]) <= w)
- {
- unsigned int col = pal[p[1]];
+ unsigned int col = pal[p[1]];
- count = p[0];
- while (count > 0)
- {
- *pix = col;
- pix++;
- count--;
- }
- x += p[0];
- }
+ count = p[0];
+ if ((x + p[0]) > w) break;
+ while (count > 0)
+ {
+ *pix = col;
+ pix++;
+ count--;
+ }
+ x += p[0];
p += 2;
}
else
static Evas_Image_Load_Func evas_image_load_wbmp_func =
{
- EINA_TRUE,
- evas_image_load_file_head_wbmp,
- evas_image_load_file_data_wbmp
+ EINA_TRUE,
+ evas_image_load_file_head_wbmp,
+ evas_image_load_file_data_wbmp
};
static int
-read_mb(unsigned int *data, FILE *f)
+read_mb(unsigned int *data, FILE * f)
{
- int ac = 0, ct;
- unsigned char buf;
-
- for (ct = 0;;)
- {
- if ((ct++) == 5) return -1;
- if ((fread(&buf, 1, 1, f)) < 1)
- return -1;
- ac = (ac << 7) | (buf & 0x7f);
- if ((buf & 0x80) == 0) break;
- }
- *data = ac;
- return 0;
+ int ac = 0, ct;
+ unsigned char buf;
+
+ for (ct = 0;;)
+ {
+ if ((ct++) == 5) return -1;
+ if ((fread(&buf, 1, 1, f)) < 1)
+ return -1;
+ ac = (ac << 7) | (buf & 0x7f);
+ if ((buf & 0x80) == 0) break;
+ }
+ *data = ac;
+ return 0;
}
static Eina_Bool
evas_image_load_file_head_wbmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error)
{
- FILE *f;
- unsigned int type, w, h;
- unsigned char fixed_header;
- struct stat statbuf;
-
- *error = EVAS_LOAD_ERROR_GENERIC;
- f = fopen(file, "rb");
- if (!f)
- {
- *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST;
- return EINA_FALSE;
- }
-
- if (stat(file, &statbuf) == -1) goto bail;
- if (read_mb(&type, f) < 0) goto bail;
-
- if (type != 0)
- {
- *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT;
- goto bail;
- }
-
- if (fread(&fixed_header, 1, 1, f) != 1) goto bail;
- if (read_mb(&w, f) < 0) goto bail;
- if (read_mb(&h, f) < 0) goto bail;
- if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE) ||
- IMG_TOO_BIG(w, h))
- {
- *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
- goto bail;
- }
-
- fclose(f);
- ie->w = w;
- ie->h = h;
-
- *error = EVAS_LOAD_ERROR_NONE;
- return EINA_TRUE;
+ FILE *f;
+ unsigned int type, w, h;
+ unsigned char fixed_header;
+ struct stat statbuf;
+
+ *error = EVAS_LOAD_ERROR_GENERIC;
+ f = fopen(file, "rb");
+ if (!f)
+ {
+ *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST;
+ return EINA_FALSE;
+ }
+
+ if (stat(file, &statbuf) == -1) goto bail;
+ if (read_mb(&type, f) < 0) goto bail;
+
+ if (type != 0)
+ {
+ *error = EVAS_LOAD_ERROR_UNKNOWN_FORMAT;
+ goto bail;
+ }
+
+ if (fread(&fixed_header, 1, 1, f) != 1) goto bail;
+ if (read_mb(&w, f) < 0) goto bail;
+ if (read_mb(&h, f) < 0) goto bail;
+ fclose(f);
+ ie->w = w;
+ ie->h = h;
+
+ *error = EVAS_LOAD_ERROR_NONE;
+ return EINA_TRUE;
bail:
- fclose(f);
- return EINA_FALSE;
+ fclose(f);
+ return EINA_FALSE;
}
static Eina_Bool
evas_image_load_file_data_wbmp(Image_Entry *ie, const char *file, const char *key __UNUSED__, int *error)
{
- FILE *f;
- unsigned int dummy, line_length;
- unsigned char *line = NULL;
- int cur = 0, x, y;
- DATA32 *dst_data;
-
- *error = EVAS_LOAD_ERROR_GENERIC;
- f = fopen(file, "rb");
- if (!f)
- {
- *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST;
- return EINA_FALSE;
- }
- if (read_mb(&dummy, f) < 0) goto bail;
- if (fread(&dummy, 1, 1, f) != 1) goto bail;
- if (read_mb(&dummy, f) < 0) goto bail;
- if (read_mb(&dummy, f) < 0) goto bail;
-
- evas_cache_image_surface_alloc(ie, ie->w, ie->h);
- dst_data = evas_cache_image_pixels(ie);
- if (!dst_data)
- {
- *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
- goto bail;
- }
-
- line_length = (ie->w + 7) >> 3;
- line = alloca(line_length);
-
- for (y = 0; y < (int)ie->h; y++)
- {
- if (fread(line, 1, line_length, f) != line_length) goto bail;
- for (x = 0; x < (int)ie->w; x++)
- {
- int idx = x >> 3;
- int offset = 1 << (0x07 - (x & 0x07));
- if (line[idx] & offset) dst_data[cur] = 0xffffffff;
- else dst_data[cur] = 0xff000000;
- cur++;
- }
- }
- fclose(f);
- *error = EVAS_LOAD_ERROR_NONE;
- return EINA_TRUE;
+ FILE *f;
+ unsigned int dummy, line_length;
+ unsigned char *line = NULL;
+ int cur = 0, x, y;
+ DATA32 *dst_data;
+
+ *error = EVAS_LOAD_ERROR_GENERIC;
+ f = fopen(file, "rb");
+ if (!f)
+ {
+ *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST;
+ return EINA_FALSE;
+ }
+ if (read_mb(&dummy, f) < 0) goto bail;
+ if (fread(&dummy, 1, 1, f) != 1) goto bail;
+ if (read_mb(&dummy, f) < 0) goto bail;
+ if (read_mb(&dummy, f) < 0) goto bail;
+
+ evas_cache_image_surface_alloc(ie, ie->w, ie->h);
+ dst_data = evas_cache_image_pixels(ie);
+ if (!dst_data)
+ {
+ *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
+ goto bail;
+ }
+
+ line_length = (ie->w + 7) >> 3;
+ line = alloca(line_length);
+
+ for (y = 0; y < (int)ie->h; y++)
+ {
+ if (fread(line, 1, line_length, f) != line_length) goto bail;
+ for (x = 0; x < (int)ie->w; x++)
+ {
+ int idx = x >> 3;
+ int offset = 1 << (0x07 - (x & 0x07));
+ if (line[idx] & offset) dst_data[cur] = 0xffffffff;
+ else dst_data[cur] = 0xff000000;
+ cur++;
+ }
+ }
+ fclose(f);
+ *error = EVAS_LOAD_ERROR_NONE;
+ return EINA_TRUE;
bail:
- fclose(f);
- return EINA_FALSE;
+ fclose(f);
+ return EINA_FALSE;
}
static int
AM_CFLAGS = @WIN32_CFLAGS@
-if BUILD_SAVER_JPEG
+if BUILD_LOADER_JPEG
if !EVAS_STATIC_BUILD_JPEG
pkgdir = $(libdir)/evas/modules/savers/jpeg/$(MODULE_ARCH)
_JPEGFatalErrorHandler(j_common_ptr cinfo)
{
emptr errmgr;
-
+
errmgr = (emptr) cinfo->err;
longjmp(errmgr->setjmp_buffer, 1);
return;
_JPEGErrorHandler(j_common_ptr cinfo __UNUSED__)
{
/* emptr errmgr; */
-
+
/* errmgr = (emptr) cinfo->err; */
return;
}
_JPEGErrorHandler2(j_common_ptr cinfo __UNUSED__, int msg_level __UNUSED__)
{
/* emptr errmgr; */
-
+
/* errmgr = (emptr) cinfo->err; */
return;
}
if (!im || !im->image.data || !file)
return 0;
-
+
buf = alloca(im->cache_entry.w * 3 * sizeof(DATA8));
f = fopen(file, "wb");
if (!f)
ptr = im->image.data;
while (cinfo.next_scanline < cinfo.image_height)
{
- unsigned int i, j;
+ unsigned int i, j;
for (j = 0, i = 0; i < im->cache_entry.w; i++)
{
buf[j++] = ((*ptr) >> 16) & 0xff;
#ifndef EVAS_STATIC_BUILD_JPEG
EVAS_EINA_MODULE_DEFINE(image_saver, jpeg);
#endif
+
if (interlace)
{
#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- interlace = PNG_INTERLACE_ADAM7;
-#else
- interlace = PNG_INTERLACE_NONE;
+ png_ptr->interlaced = PNG_INTERLACE_ADAM7;
+ num_passes = png_set_interlace_handling(png_ptr);
#endif
}
- else
- interlace = PNG_INTERLACE_NONE;
if (im->cache_entry.flags.alpha)
{
evas_common_convert_argb_unpremul(data, im->cache_entry.w * im->cache_entry.h);
png_init_io(png_ptr, f);
png_set_IHDR(png_ptr, info_ptr, im->cache_entry.w, im->cache_entry.h, 8,
- PNG_COLOR_TYPE_RGB_ALPHA, interlace,
+ PNG_COLOR_TYPE_RGB_ALPHA, png_ptr->interlaced,
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
#ifdef WORDS_BIGENDIAN
png_set_swap_alpha(png_ptr);
data = im->image.data;
png_init_io(png_ptr, f);
png_set_IHDR(png_ptr, info_ptr, im->cache_entry.w, im->cache_entry.h, 8,
- PNG_COLOR_TYPE_RGB, interlace,
+ PNG_COLOR_TYPE_RGB, png_ptr->interlaced,
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
png_data = alloca(im->cache_entry.w * 3 * sizeof(char));
}
png_set_shift(png_ptr, &sig_bit);
png_set_packing(png_ptr);
-#ifdef PNG_WRITE_INTERLACING_SUPPORTED
- num_passes = png_set_interlace_handling(png_ptr);
-#endif
-
for (pass = 0; pass < num_passes; pass++)
{
ptr = data;
--- /dev/null
+/* config.h. Generated from config.h.in by configure. */\r
+/* config.h.in. Generated from configure.in by autoheader. */\r
+\r
+/* Build Altivec Code */\r
+/* #undef BUILD_ALTIVEC */\r
+\r
+/* Build plain C code */\r
+#define BUILD_C 1\r
+\r
+/* 16bpp BGR 565 Converter Support */\r
+#define BUILD_CONVERT_16_BGR_565 1\r
+\r
+/* 16bpp RGB 444 Converter Support */\r
+#define BUILD_CONVERT_16_RGB_444 1\r
+\r
+/* 16bpp 565 (444 ipaq) Converter Support */\r
+#define BUILD_CONVERT_16_RGB_454645 1\r
+\r
+/* 16bpp RGB 555 Converter Support */\r
+#define BUILD_CONVERT_16_RGB_555 1\r
+\r
+/* 16bpp RGB 565 Converter Support */\r
+#define BUILD_CONVERT_16_RGB_565 1\r
+\r
+/* 16bpp RGB Rotation 0 Converter Support */\r
+#define BUILD_CONVERT_16_RGB_ROT0 1\r
+\r
+/* 16bpp RGB Rotation 180 Converter Support */\r
+#define BUILD_CONVERT_16_RGB_ROT180 1\r
+\r
+/* 16bpp RGB Rotation 270 Converter Support */\r
+#define BUILD_CONVERT_16_RGB_ROT270 1\r
+\r
+/* 16bpp RGB Rotation 90 Converter Support */\r
+#define BUILD_CONVERT_16_RGB_ROT90 1\r
+\r
+/* 24bpp BGR 888 Converter Support */\r
+#define BUILD_CONVERT_24_BGR_888 1\r
+\r
+/* 24bpp RGB 888 Converter Support */\r
+#define BUILD_CONVERT_24_RGB_888 1\r
+\r
+/* 32bpp BGRX 8888 Converter Support */\r
+#define BUILD_CONVERT_32_BGRX_8888 1\r
+\r
+/* 32bpp BGR 8888 Converter Support */\r
+#define BUILD_CONVERT_32_BGR_8888 1\r
+\r
+/* 32bpp RGBX 8888 Converter Support */\r
+#define BUILD_CONVERT_32_RGBX_8888 1\r
+\r
+/* 32bpp RGB 8888 Converter Support */\r
+#define BUILD_CONVERT_32_RGB_8888 1\r
+\r
+/* 32bpp RGB Rotation 0 Converter Support */\r
+#define BUILD_CONVERT_32_RGB_ROT0 1\r
+\r
+/* 32bpp RGB Rotation 180 Converter Support */\r
+#define BUILD_CONVERT_32_RGB_ROT180 1\r
+\r
+/* 32bpp RGB Rotation 270 Converter Support */\r
+#define BUILD_CONVERT_32_RGB_ROT270 1\r
+\r
+/* 32bpp RGB Rotation 90 Converter Support */\r
+#define BUILD_CONVERT_32_RGB_ROT90 1\r
+\r
+/* 8bpp RGB 111 Converter Support */\r
+#define BUILD_CONVERT_8_RGB_111 1\r
+\r
+/* 8bpp RGB 121 Converter Support */\r
+#define BUILD_CONVERT_8_RGB_121 1\r
+\r
+/* 8bpp RGB 221 Converter Support */\r
+#define BUILD_CONVERT_8_RGB_221 1\r
+\r
+/* 8bpp RGB 222 Converter Support */\r
+#define BUILD_CONVERT_8_RGB_222 1\r
+\r
+/* 8bpp RGB 232 Converter Support */\r
+#define BUILD_CONVERT_8_RGB_232 1\r
+\r
+/* 8bpp RGB 332 Converter Support */\r
+#define BUILD_CONVERT_8_RGB_332 1\r
+\r
+/* 8bpp RGB 666 Converter Support */\r
+#define BUILD_CONVERT_8_RGB_666 1\r
+\r
+/* YUV Converter Support */\r
+#define BUILD_CONVERT_YUV 1\r
+\r
+/* Buffer Rendering Backend */\r
+#define BUILD_ENGINE_BUFFER 1\r
+\r
+/* Generic Cairo Rendering Support */\r
+/* #undef BUILD_ENGINE_CAIRO_COMMON */\r
+\r
+/* Cairo X11 Rendering Backend */\r
+/* #undef BUILD_ENGINE_CAIRO_X11 */\r
+\r
+/* Direct3D Rendering Backend */\r
+#define BUILD_ENGINE_DIRECT3D 1\r
+\r
+/* DirectFB Rendering Backend */\r
+/* #undef BUILD_ENGINE_DIRECTFB */\r
+\r
+/* Linux FB Rendering Backend */\r
+/* #undef BUILD_ENGINE_FB */\r
+\r
+/* Glitz X11 Rendering Backend */\r
+/* #undef BUILD_ENGINE_GLITZ_X11 */\r
+\r
+/* Generic OpenGL Rendering Support */\r
+#define BUILD_ENGINE_GL_COMMON 1\r
+\r
+/* OpenGL Glew Rendering Backend */\r
+#define BUILD_ENGINE_GL_GLEW 1\r
+\r
+/* OpenGL X11 Rendering Backend */\r
+/* #undef BUILD_ENGINE_GL_X11 */\r
+\r
+/* SDL Rendering Backend */\r
+#define BUILD_ENGINE_SDL 1\r
+\r
+/* 16bit Software DirectDraw Rendering Backend */\r
+/* #undef BUILD_ENGINE_SOFTWARE_16_DDRAW */\r
+\r
+/* Software 16bit X11 Rendering Backend */\r
+/* #undef BUILD_ENGINE_SOFTWARE_16_X11 */\r
+\r
+/* Software DirectDraw Rendering Backend */\r
+/* #undef BUILD_ENGINE_SOFTWARE_DDRAW */\r
+\r
+/* Qtopia Rendering Backend */\r
+/* #undef BUILD_ENGINE_SOFTWARE_QTOPIA */\r
+\r
+/* Software X11 Rendering Backend */\r
+/* #undef BUILD_ENGINE_SOFTWARE_X11 */\r
+\r
+/* Software XCB Rendering Backend */\r
+/* #undef BUILD_ENGINE_SOFTWARE_XCB */\r
+\r
+/* XRender X11 Rendering Backend */\r
+/* #undef BUILD_ENGINE_XRENDER_X11 */\r
+\r
+/* Xrender XCB Rendering Backend */\r
+/* #undef BUILD_ENGINE_XRENDER_XCB */\r
+\r
+/* EET Font Loader Support */\r
+#define BUILD_FONT_LOADER_EET 1\r
+\r
+/* EDB Image Loader Support */\r
+/* #undef BUILD_LOADER_EDB */\r
+\r
+/* EET Image Loader Support */\r
+#define BUILD_LOADER_EET 1\r
+\r
+/* GIF Image Loader Support */\r
+#define BUILD_LOADER_GIF 1\r
+\r
+/* JPEG Image Loader Support */\r
+#define BUILD_LOADER_JPEG 1\r
+\r
+/* TIFF Image Loader Support */\r
+#define BUILD_LOADER_TIFF 1\r
+\r
+/* Build MMX Code */\r
+/* #define BUILD_MMX 1 */\r
+\r
+/* No Dither Mask Support */\r
+/* #undef BUILD_NO_DITHER_MASK */\r
+\r
+/* Build Threaded Rendering */\r
+/* #undef BUILD_PTHREAD */\r
+\r
+/* Sampling Scaler Support */\r
+#define BUILD_SCALE_SAMPLE 1\r
+\r
+/* Smooth Scaler Support */\r
+#define BUILD_SCALE_SMOOTH 1\r
+\r
+/* Small Dither Mask Support */\r
+/* #undef BUILD_SMALL_DITHER_MASK */\r
+\r
+/* Build SSE Code */\r
+/* #define BUILD_SSE 1 */\r
+\r
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP\r
+ systems. This function is required for `alloca.c' support on those systems.\r
+ */\r
+/* #undef CRAY_STACKSEG_END */\r
+\r
+/* Define to 1 if using `alloca.c'. */\r
+/* #undef C_ALLOCA */\r
+\r
+/* Define to mention that evas is built */\r
+#define EFL_EVAS_BUILD 1\r
+\r
+/* Define to 1 if you have `alloca', as a function or macro. */\r
+#define HAVE_ALLOCA 1\r
+\r
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).\r
+ */\r
+/* #undef HAVE_ALLOCA_H */\r
+\r
+/* Have altivec.h header file */\r
+/* #undef HAVE_ALTIVEC_H */\r
+\r
+/* Define to 1 if you have the <d3d9.h> header file. */\r
+#define HAVE_D3D9_H 1\r
+\r
+/* Define to 1 if you have the <d3dx9.h> header file. */\r
+/* #undef HAVE_D3DX9_H */\r
+\r
+/* Define to 1 if you have the `dladdr' function. */\r
+#define HAVE_DLADDR 1\r
+\r
+/* Define to 1 if you have the <dlfcn.h> header file. */\r
+#define HAVE_DLFCN_H 1\r
+\r
+/* Define to 1 if you have the `dlopen' function. */\r
+/* #undef HAVE_DLOPEN */\r
+\r
+/* Set to 1 if evil package is installed */\r
+#define HAVE_EVIL 1\r
+\r
+/* Define to 1 if you have the `fnmatch' function. */\r
+/* #undef HAVE_FNMATCH */\r
+\r
+/* have fontconfig searching capabilities */\r
+#define HAVE_FONTCONFIG 1\r
+\r
+/* Define to 1 if you have the <GL/glew.h> header file. */\r
+#define HAVE_GL_GLEW_H 1\r
+\r
+/* Define to 1 if you have the <GL/glu.h> header file. */\r
+#define HAVE_GL_GLU_H 1\r
+\r
+/* Define to 1 if you have the <GL/gl.h> header file. */\r
+#define HAVE_GL_GL_H 1\r
+\r
+/* Define to 1 if you have the <inttypes.h> header file. */\r
+#define HAVE_INTTYPES_H 1\r
+\r
+/* Define to 1 if you have the <memory.h> header file. */\r
+#define HAVE_MEMORY_H 1\r
+\r
+/* Define to 1 if you have the <pthread.h> header file. */\r
+/* #undef HAVE_PTHREAD_H */\r
+\r
+/* Define to 1 if you have the <sched.h> header file. */\r
+/* #undef HAVE_SCHED_H */\r
+\r
+/* Define to 1 if you have the <stdint.h> header file. */\r
+/* #define HAVE_STDINT_H 1 */\r
+\r
+/* Define to 1 if you have the <stdlib.h> header file. */\r
+#define HAVE_STDLIB_H 1\r
+\r
+/* Define to 1 if you have the <strings.h> header file. */\r
+#define HAVE_STRINGS_H 1\r
+\r
+/* Define to 1 if you have the <string.h> header file. */\r
+#define HAVE_STRING_H 1\r
+\r
+/* Define to 1 if you have the <sys/stat.h> header file. */\r
+#define HAVE_SYS_STAT_H 1\r
+\r
+/* Define to 1 if you have the <sys/types.h> header file. */\r
+#define HAVE_SYS_TYPES_H 1\r
+\r
+/* Define to 1 if you have the <unistd.h> header file. */\r
+/* #define HAVE_UNISTD_H 1 */\r
+\r
+/* Valgrind support */\r
+/* #undef HAVE_VALGRIND */\r
+\r
+/* Define to 1 if you have the <X11/extensions/Xrender.h> header file. */\r
+/* #undef HAVE_X11_EXTENSIONS_XRENDER_H */\r
+\r
+/* Define to 1 if you have the <X11/X.h> header file. */\r
+/* #undef HAVE_X11_X_H */\r
+\r
+/* Name of package */\r
+#define PACKAGE "evas"\r
+\r
+/* Define to the address where bug reports for this package should be sent. */\r
+#define PACKAGE_BUGREPORT "enlightenment-devel@lists.sourceforge.net"\r
+\r
+/* Define to the full name of this package. */\r
+#define PACKAGE_NAME "evas"\r
+\r
+/* Define to the full name and version of this package. */\r
+#define PACKAGE_STRING "evas 1.0.0"\r
+\r
+/* Define to the one symbol short name of this package. */\r
+#define PACKAGE_TARNAME "evas"\r
+\r
+/* Define to the version of this package. */\r
+#define PACKAGE_VERSION "1.0.0"\r
+\r
+/* If using the C implementation of alloca, define if you know the\r
+ direction of stack growth for your system; otherwise it will be\r
+ automatically deduced at runtime.\r
+ STACK_DIRECTION > 0 => grows toward higher addresses\r
+ STACK_DIRECTION < 0 => grows toward lower addresses\r
+ STACK_DIRECTION = 0 => direction of growth unknown */\r
+/* #undef STACK_DIRECTION */\r
+\r
+/* Define to 1 if you have the ANSI C header files. */\r
+#define STDC_HEADERS 1\r
+\r
+/* Version number of package */\r
+#define VERSION "1.0.0"\r
+\r
+/* Define to 1 if your processor stores words with the most significant byte\r
+ first (like Motorola and SPARC, unlike Intel and VAX). */\r
+/* #undef WORDS_BIGENDIAN */\r
+\r
+/* Define to 1 if the X Window System is missing or not being used. */\r
+#define X_DISPLAY_MISSING 1\r
+\r
+/* Define to empty if `const' does not conform to ANSI C. */\r
+/* #undef const */\r
+\r
+#define VMAJ 1\r
+#define VMIN 0\r
+#define VMIC 0\r
+#define VREV 0\r
--- /dev/null
+--- ../../src/lib/include/evas_common.h 2010-04-15 17:50:07 +0000
++++ ../../src/lib/include/evas_common_new.h 2010-04-15 17:49:51 +0000
+@@ -312,10 +312,10 @@
+ \r
+ /*****************************************************************************/\r
+ \r
+-#define UNROLL2(op...) op op\r
+-#define UNROLL4(op...) UNROLL2(op) UNROLL2(op)\r
+-#define UNROLL8(op...) UNROLL4(op) UNROLL4(op)\r
+-#define UNROLL16(op...) UNROLL8(op) UNROLL8(op)\r
++#define UNROLL2(op) op op\r
++#define UNROLL4(op) UNROLL2(op) UNROLL2(op)\r
++#define UNROLL8(op) UNROLL4(op) UNROLL4(op)\r
++#define UNROLL16(op) UNROLL8(op) UNROLL8(op)\r
+ \r
+ #define UNROLL8_PLD_WHILE(start, size, end, op) \\r
+ pld(start, 0); \\r
+@@ -726,7 +726,9 @@
+ } image;\r
+ \r
+ struct {\r
++#ifdef BUILD_PTHREAD\r
+ LK(lock);\r
++#endif\r
+ Eina_List *list;\r
+ unsigned long long orig_usage;\r
+ unsigned long long usage_count;\r
+@@ -921,7 +923,9 @@
+ int references;\r
+ Fash_Int *fash;\r
+ unsigned char sizeok : 1;\r
++#ifdef BUILD_PTHREAD\r
+ LK(lock);\r
++#endif\r
+ };\r
+ \r
+ struct _RGBA_Font_Int\r
+@@ -938,7 +942,9 @@
+ \r
+ // Eina_Hash *glyphs;\r
+ \r
++#ifdef BUILD_PTHREAD\r
+ LK(ft_mutex);\r
++#endif\r
+ \r
+ Eina_Hash *kerning;\r
+ // Eina_Hash *indexes;\r
+--- ../../src/lib/file/evas_module.h 2010-04-15 17:40:42 +0000
++++ ../../src/lib/file/evas_module_new.h 2010-04-15 17:40:21 +0000
+@@ -47,7 +47,9 @@
+ int ref; /* how many refs */\r
+ int last_used; /* the cycle count when it was last used */\r
+ \r
++#ifdef BUILD_PTHREAD\r
+ LK(lock);\r
++#endif\r
+ \r
+ unsigned char loaded : 1;\r
+ };\r
+--- ../../src/lib/canvas/evas_render.c 2010-04-15 17:42:18 +0000
++++ ../../src/lib/canvas/evas_render_new.c 2010-04-15 17:41:46 +0000
+@@ -34,7 +34,7 @@
+ rend_dbg(__tmpbuf); \\r
+ }\r
+ #else\r
+-#define RD(args...)\r
++#define RD(args,...)\r
+ #define RDI(x)\r
+ #endif\r
+ \r
--- /dev/null
+@echo off\r
+\r
+rem Set external libraries directory.\r
+set EXT_DIR=%cd%\..\..\..\extern\r
+\r
+if not exist %EXT_DIR% (\r
+ set EXT_DIR=\r
+ echo ERROR: External libs dir is not set.\r
+ pause\r
+ goto END\r
+)\r
+\r
+if "%DXSDK_DIR%" == "" (\r
+ echo ERROR: Microsoft DirectX SDK is not installed.\r
+ pause\r
+ goto END\r
+)\r
+\r
+rem Check for basic requirements for Visual Studio 2008\r
+if "%VS90COMNTOOLS%" == "" (\r
+ echo ERROR: Microsoft Visual Studio 2008 is not installed.\r
+ echo ERROR: Try to launch Microsoft Visual Studio 2005.\r
+ pause\r
+ goto NOVS9\r
+)\r
+\r
+set PROJECT_TYPE=vs9\r
+set VSCOMMONTOOLS=%VS90COMNTOOLS%vsvars32.bat\r
+\r
+goto STARTVS\r
+\r
+:NOVS9\r
+\r
+rem Check for basic requirements for Visual Studio 2005\r
+if "%VS80COMNTOOLS%" == "" (\r
+ echo ERROR: Microsoft Visual Studio 2005 is not installed.\r
+ pause\r
+ goto END\r
+)\r
+\r
+set PROJECT_TYPE=vs8\r
+set VSCOMMONTOOLS=%VS80COMNTOOLS%vsvars32.bat\r
+\r
+rem Patching Eina\r
+patch.exe --binary -p1 < %cd%\patch\eina.diff\r
+echo INFO: Eina patched.\r
+\r
+pause\r
+\r
+:STARTVS\r
+\r
+rem Setup common Win32 environment variables\r
+\r
+rem Add DirectX includes and libraries dirs.\r
+set INCLUDE=%DXSDK_DIR%Include;%INCLUDE%\r
+set LIB=%DXSDK_DIR%Lib\x86;%LIB%\r
+\r
+rem Add Evil lib path\r
+set EvilInclude=%cd%\..\..\evil\src\lib\r
+set EvilCommon=%cd%\..\..\evil\win32\common\r
+set EvilOut=%cd%\..\..\evil\win32\%PROJECT_TYPE%\out\r
+\r
+set INCLUDE=%EvilCommon%;%EvilInclude%;%EvilInclude%\dlfcn;%INCLUDE%\r
+set LIB=%EvilOut%;%LIB%\r
+\r
+rem Add Eina lib path\r
+set EinaInclude=%cd%\..\..\eina\src\include\r
+set EinaCommon=%cd%\..\..\eina\win32\common\r
+set EinaOut=%cd%\..\..\eina\win32\%PROJECT_TYPE%\out\r
+\r
+set INCLUDE=%EinaInclude%;%EinaCommon%;%INCLUDE%\r
+set LIB=%EinaOut%;%LIB%\r
+\r
+rem Add Eet lib path\r
+set EetInclude=%cd%\..\..\eet\src\lib\r
+set EetOut=%cd%\..\..\eet\win32\%PROJECT_TYPE%\out\r
+\r
+set INCLUDE=%EetInclude%;%INCLUDE%\r
+set LIB=%EetOut%;%LIB%\r
+\r
+rem Add installation directory pathes.\r
+set INCLUDE=%EXT_DIR%\include;%EXT_DIR%\include\freetype2;%INCLUDE%\r
+set LIB=%EXT_DIR%\lib;%LIB%\r
+\r
+set INCLUDE=%cd%\common;%cd%\..\src\lib;%cd%\..\src\lib\include;%cd%\..\src\lib\file;%cd%\..\src\lib\cserve;%INCLUDE%\r
+\r
+set SolutionDirectory=%cd%\%PROJECT_TYPE%\r
+set DebugOutputDirectory=%SolutionDirectory%\out\r
+set ReleaseOutputDirectory=%SolutionDirectory%\out\r
+set DebugLibraryDirectory=%SolutionDirectory%\out\r
+set ReleaseLibraryDirectory=%SolutionDirectory%\out\r
+set TemporaryDirectory=%SolutionDirectory%\temp\r
+\r
+rem Setting environment for using Microsoft Visual Studio x86 tools.\r
+call "%VSCOMMONTOOLS%"\r
+\r
+%PROJECT_TYPE%\evas.sln\r
+\r
+:END\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="engine_buffer"\r
+ ProjectGUID="{FF8981EF-618E-45B9-9F03-738D7E2914AF}"\r
+ RootNamespace="engine_buffer"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\engines\buffer\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\engines\buffer\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\buffer\evas_engine.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\buffer\Evas_Engine_Buffer.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\buffer\evas_engine.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\buffer\evas_outbuf.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="engine_direct3d"\r
+ ProjectGUID="{689B4F2B-666D-439F-9BF3-1203D813DE3F}"\r
+ RootNamespace="engine_direct3d"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILD_C;__CRT_INLINE=__inline;inline=__inline;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib d3d9.lib d3dx9.lib"\r
+ OutputFile="$(OutDir)\engines\direct3d\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILD_C;__CRT_INLINE=__inline;inline=__inline;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib d3d9.lib d3dx9.lib"\r
+ OutputFile="$(OutDir)\engines\direct3d\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\array.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_context.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_device.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_image_cache.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object_font.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object_image.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object_line.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object_rect.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_scene.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_shader_pack.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_vertex_buffer_cache.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_engine.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\Evas_Engine_Direct3D.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\ref.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_context.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_device.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_image_cache.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_main.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object_font.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object_image.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object_line.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_object_rect.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_scene.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_shader_pack.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_direct3d_vertex_buffer_cache.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\direct3d\evas_engine.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="engine_gl_glew"\r
+ ProjectGUID="{38C9AD78-8461-4A33-A31B-7DA62AB3BBE9}"\r
+ RootNamespace="engine_gl_glew"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib glew32.lib opengl32.lib"\r
+ OutputFile="$(OutDir)\engines\gl_glew\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib glew32.lib opengl32.lib"\r
+ OutputFile="$(OutDir)\engines\gl_glew\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_glew\evas_engine.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_glew\Evas_Engine_GL_Glew.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_glew\evas_engine.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_glew\evas_glew_main.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Common"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_common.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_context.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_font.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_gradient.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_image.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_line.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_misc.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_polygon.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_private.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_rectangle.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\gl_common\evas_gl_texture.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="engine_software_ddraw"\r
+ ProjectGUID="{C71D20DF-3BAB-4BFF-80D4-508E7548358B}"\r
+ RootNamespace="engine_software_ddraw"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib ddraw.lib"\r
+ OutputFile="$(OutDir)\engines\software_ddraw\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib ddraw.lib"\r
+ OutputFile="$(OutDir)\engines\software_ddraw\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_ddraw\evas_engine.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_ddraw\Evas_Engine_Software_DDraw.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_ddraw\evas_ddraw_buffer.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_ddraw\evas_ddraw_main.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_ddraw\evas_engine.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_ddraw\evas_outbuf.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="engine_software_gdi"\r
+ ProjectGUID="{3367A64F-A08E-4F27-8303-54A3BBB01D5A}"\r
+ RootNamespace="engine_software_gdi"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib gdi32.lib user32.lib"\r
+ OutputFile="$(OutDir)\engines\software_gdi\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib gdi32.lib user32.lib"\r
+ OutputFile="$(OutDir)\engines\software_gdi\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_engine.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\Evas_Engine_Software_GDI.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_engine.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_outbuf.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_gdi_buffer.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_gdi_main.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="engine_software_generic"\r
+ ProjectGUID="{1E24C1AF-62F2-4EC0-AD94-7363C0534E36}"\r
+ RootNamespace="engine_software_generic"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\engines\software_generic\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\engines\software_generic\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_generic\evas_engine.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+\r
+Microsoft Visual Studio Solution File, Format Version 9.00\r
+# Visual Studio 2005\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libevas", "libevas.vcproj", "{689B4F2B-666D-439F-9BF3-1203D813DE3F}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_buffer", "engine_buffer.vcproj", "{FF8981EF-618E-45B9-9F03-738D7E2914AF}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_software_gdi", "engine_software_gdi.vcproj", "{3367A64F-A08E-4F27-8303-54A3BBB01D5A}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36} = {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_software_generic", "engine_software_generic.vcproj", "{1E24C1AF-62F2-4EC0-AD94-7363C0534E36}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Win32 = Debug|Win32\r
+ Release|Win32 = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Debug|Win32.Build.0 = Debug|Win32\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Release|Win32.ActiveCfg = Release|Win32\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Release|Win32.Build.0 = Release|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Debug|Win32.Build.0 = Debug|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Release|Win32.ActiveCfg = Release|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Release|Win32.Build.0 = Release|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Debug|Win32.Build.0 = Debug|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Release|Win32.ActiveCfg = Release|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Release|Win32.Build.0 = Release|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Debug|Win32.Build.0 = Debug|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Release|Win32.ActiveCfg = Release|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Release|Win32.Build.0 = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="libevas"\r
+ ProjectGUID="{689B4F2B-666D-439F-9BF3-1203D813DE3F}"\r
+ RootNamespace="libevas"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;_USE_MATH_DEFINES;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libeet.lib libevil.lib libdl.lib freetype.lib libeina.lib"\r
+ OutputFile="$(OutDir)\libevas.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;_USE_MATH_DEFINES;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libeet.lib libevil.lib libdl.lib freetype.lib libeina.lib"\r
+ OutputFile="$(OutDir)\libevas.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="cache"\r
+ >\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\cache\evas_cache_engine_image.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\cache\evas_cache_image.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="libevas"\r
+ >\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\Evas.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_blend_ops.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_cairo_common.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_common.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_common_soft16.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_macros.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_mmx.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_options.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_private.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\main.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="canvas"\r
+ >\r
+ <Filter\r
+ Name="Header Files"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_async_events.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_callbacks.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_clip.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_data.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_events.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_focus.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_font_dir.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_key.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_key_grab.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_layer.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_map.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_name.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_gradient.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_image.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_inform.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_intercept.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_line.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_polygon.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_rectangle.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_smart.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_text.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_textblock.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_rectangle.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_render.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_smart.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_stack.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="file"\r
+ >\r
+ <Filter\r
+ Name="Header Files"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\file\evas_module.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\file\evas_path.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="imaging"\r
+ >\r
+ <Filter\r
+ Name="Header Files"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\imaging\evas_imaging.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="engines"\r
+ >\r
+ <Filter\r
+ Name="common"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_blend_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_blit_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_color.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_colorspace.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_gry_1.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_gry_4.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_gry_8.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_rgb_16.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_rgb_24.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_rgb_32.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_rgb_8.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_yuv.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_cpu.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_draw_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_font_draw.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_font_load.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_font_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_font_query.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_gradient2_linear.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_gradient2_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_gradient2_radial.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_gradient_angular.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_gradient_linear.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_gradient_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_gradient_radial.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_gradient_rectangular.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_gradient_sinusoidal.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_data.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_load.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_save.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_scalecache.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_line_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_map_image.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_add_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_blend_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_copy_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_mask_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_mul_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_sub_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_pipe.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_polygon_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_rectangle_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_regionbuf.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_sample.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_down.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_downx.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_downx_downy.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_downy.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_noscale.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_up.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_span.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_tiler.c"\r
+ >\r
+ </File>\r
+ <Filter\r
+ Name="evas_op_add"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_blend"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_copy"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_mask"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_mul"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_sub"\r
+ >\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="common_16"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_dither_mask.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_font.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_image_scaled_sampled.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_image_unscaled.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_line.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_main.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_polygon.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_rectangle.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_scanline_blend.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_scanline_fill.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="loader_eet"\r
+ ProjectGUID="{EB7D2089-3FDB-40F4-B90C-716752FFF786}"\r
+ RootNamespace="loader_eet"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeet.lib"\r
+ OutputFile="$(OutDir)\loaders\eet\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeet.lib"\r
+ OutputFile="$(OutDir)\loaders\eet\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\eet\evas_image_load_eet.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="loader_gif"\r
+ ProjectGUID="{C3534833-592F-4450-911E-9C35E205D488}"\r
+ RootNamespace="loader_gif"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libungif.lib"\r
+ OutputFile="$(OutDir)\loaders\gif\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libungif.lib"\r
+ OutputFile="$(OutDir)\loaders\gif\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\gif\evas_image_load_gif.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="loader_jpeg"\r
+ ProjectGUID="{EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}"\r
+ RootNamespace="loader_jpeg"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib jpeg.lib"\r
+ OutputFile="$(OutDir)\loaders\jpeg\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib jpeg.lib"\r
+ OutputFile="$(OutDir)\loaders\jpeg\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\jpeg\evas_image_load_jpeg.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8.00"\r
+ Name="loader_pmaps"\r
+ ProjectGUID="{73EB3790-3A72-436C-87CD-FE8747198F06}"\r
+ RootNamespace="loader_pmaps"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib"\r
+ OutputFile="$(OutDir)\loaders\pmaps\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib"\r
+ OutputFile="$(OutDir)\loaders\pmaps\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\pmaps\evas_image_load_pmaps.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="loader_png"\r
+ ProjectGUID="{866F2513-EEE6-4BD7-9C3E-1FF83682424A}"\r
+ RootNamespace="loader_png"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libpng.lib"\r
+ OutputFile="$(OutDir)\loaders\png\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libpng.lib"\r
+ OutputFile="$(OutDir)\loaders\png\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\png\evas_image_load_png.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8.00"\r
+ Name="loader_tiff"\r
+ ProjectGUID="{94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}"\r
+ RootNamespace="loader_tiff"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libtiff.dll.a"\r
+ OutputFile="$(OutDir)\loaders\tiff\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libtiff.dll.a"\r
+ OutputFile="$(OutDir)\loaders\tiff\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\tiff\evas_image_load_tiff.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8.00"\r
+ Name="loader_xpm"\r
+ ProjectGUID="{9063A709-C228-4CA1-822B-75A51F38817F}"\r
+ RootNamespace="loader_xpm"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__=;_CRT_SECURE_NO_WARNINGS"\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\loaders\xpm\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__=;_CRT_SECURE_NO_WARNINGS"\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\loaders\xpm\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\xpm\evas_image_load_xpm.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+\r
+Microsoft Visual Studio Solution File, Format Version 9.00\r
+# Visual Studio 2005\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_direct3d", "engine_direct3d.vcproj", "{689B4F2B-666D-439F-9BF3-1203D813DE3F}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_buffer", "engine_buffer.vcproj", "{FF8981EF-618E-45B9-9F03-738D7E2914AF}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_software_win32_gdi", "engine_software_win32_gdi.vcproj", "{3367A64F-A08E-4F27-8303-54A3BBB01D5A}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_software_generic", "engine_software_generic.vcproj", "{1E24C1AF-62F2-4EC0-AD94-7363C0534E36}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_gl_glew", "engine_gl_glew.vcproj", "{38C9AD78-8461-4A33-A31B-7DA62AB3BBE9}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_software_ddraw", "engine_software_ddraw.vcproj", "{C71D20DF-3BAB-4BFF-80D4-508E7548358B}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_eet", "loader_eet.vcproj", "{EB7D2089-3FDB-40F4-B90C-716752FFF786}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_gif", "loader_gif.vcproj", "{C3534833-592F-4450-911E-9C35E205D488}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_jpeg", "loader_jpeg.vcproj", "{EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_pmaps", "loader_pmaps.vcproj", "{73EB3790-3A72-436C-87CD-FE8747198F06}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_png", "loader_png.vcproj", "{866F2513-EEE6-4BD7-9C3E-1FF83682424A}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_tiff", "loader_tiff.vcproj", "{94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_xpm", "loader_xpm.vcproj", "{9063A709-C228-4CA1-822B-75A51F38817F}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "saver_eet", "saver_eet.vcproj", "{9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "saver_png", "saver_png.vcproj", "{455EB58B-C65C-4793-841A-22C62D58ADD5}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "saver_tiff", "saver_tiff.vcproj", "{9BC8E8CC-955C-4D41-91D4-BADBB87830AF}"\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Win32 = Debug|Win32\r
+ Release|Win32 = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Debug|Win32.Build.0 = Debug|Win32\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Release|Win32.ActiveCfg = Release|Win32\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Release|Win32.Build.0 = Release|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Debug|Win32.Build.0 = Debug|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Release|Win32.ActiveCfg = Release|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Release|Win32.Build.0 = Release|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Debug|Win32.Build.0 = Debug|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Release|Win32.ActiveCfg = Release|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Release|Win32.Build.0 = Release|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Debug|Win32.Build.0 = Debug|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Release|Win32.ActiveCfg = Release|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Release|Win32.Build.0 = Release|Win32\r
+ {38C9AD78-8461-4A33-A31B-7DA62AB3BBE9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {38C9AD78-8461-4A33-A31B-7DA62AB3BBE9}.Debug|Win32.Build.0 = Debug|Win32\r
+ {38C9AD78-8461-4A33-A31B-7DA62AB3BBE9}.Release|Win32.ActiveCfg = Release|Win32\r
+ {38C9AD78-8461-4A33-A31B-7DA62AB3BBE9}.Release|Win32.Build.0 = Release|Win32\r
+ {C71D20DF-3BAB-4BFF-80D4-508E7548358B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {C71D20DF-3BAB-4BFF-80D4-508E7548358B}.Debug|Win32.Build.0 = Debug|Win32\r
+ {C71D20DF-3BAB-4BFF-80D4-508E7548358B}.Release|Win32.ActiveCfg = Release|Win32\r
+ {C71D20DF-3BAB-4BFF-80D4-508E7548358B}.Release|Win32.Build.0 = Release|Win32\r
+ {EB7D2089-3FDB-40F4-B90C-716752FFF786}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {EB7D2089-3FDB-40F4-B90C-716752FFF786}.Debug|Win32.Build.0 = Debug|Win32\r
+ {EB7D2089-3FDB-40F4-B90C-716752FFF786}.Release|Win32.ActiveCfg = Release|Win32\r
+ {EB7D2089-3FDB-40F4-B90C-716752FFF786}.Release|Win32.Build.0 = Release|Win32\r
+ {C3534833-592F-4450-911E-9C35E205D488}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {C3534833-592F-4450-911E-9C35E205D488}.Debug|Win32.Build.0 = Debug|Win32\r
+ {C3534833-592F-4450-911E-9C35E205D488}.Release|Win32.ActiveCfg = Release|Win32\r
+ {C3534833-592F-4450-911E-9C35E205D488}.Release|Win32.Build.0 = Release|Win32\r
+ {EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}.Debug|Win32.Build.0 = Debug|Win32\r
+ {EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}.Release|Win32.ActiveCfg = Release|Win32\r
+ {EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}.Release|Win32.Build.0 = Release|Win32\r
+ {73EB3790-3A72-436C-87CD-FE8747198F06}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {73EB3790-3A72-436C-87CD-FE8747198F06}.Debug|Win32.Build.0 = Debug|Win32\r
+ {73EB3790-3A72-436C-87CD-FE8747198F06}.Release|Win32.ActiveCfg = Release|Win32\r
+ {73EB3790-3A72-436C-87CD-FE8747198F06}.Release|Win32.Build.0 = Release|Win32\r
+ {866F2513-EEE6-4BD7-9C3E-1FF83682424A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {866F2513-EEE6-4BD7-9C3E-1FF83682424A}.Debug|Win32.Build.0 = Debug|Win32\r
+ {866F2513-EEE6-4BD7-9C3E-1FF83682424A}.Release|Win32.ActiveCfg = Release|Win32\r
+ {866F2513-EEE6-4BD7-9C3E-1FF83682424A}.Release|Win32.Build.0 = Release|Win32\r
+ {94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}.Debug|Win32.Build.0 = Debug|Win32\r
+ {94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}.Release|Win32.ActiveCfg = Release|Win32\r
+ {94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}.Release|Win32.Build.0 = Release|Win32\r
+ {9063A709-C228-4CA1-822B-75A51F38817F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {9063A709-C228-4CA1-822B-75A51F38817F}.Debug|Win32.Build.0 = Debug|Win32\r
+ {9063A709-C228-4CA1-822B-75A51F38817F}.Release|Win32.ActiveCfg = Release|Win32\r
+ {9063A709-C228-4CA1-822B-75A51F38817F}.Release|Win32.Build.0 = Release|Win32\r
+ {9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}.Debug|Win32.Build.0 = Debug|Win32\r
+ {9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}.Release|Win32.ActiveCfg = Release|Win32\r
+ {9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}.Release|Win32.Build.0 = Release|Win32\r
+ {455EB58B-C65C-4793-841A-22C62D58ADD5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {455EB58B-C65C-4793-841A-22C62D58ADD5}.Debug|Win32.Build.0 = Debug|Win32\r
+ {455EB58B-C65C-4793-841A-22C62D58ADD5}.Release|Win32.ActiveCfg = Release|Win32\r
+ {455EB58B-C65C-4793-841A-22C62D58ADD5}.Release|Win32.Build.0 = Release|Win32\r
+ {9BC8E8CC-955C-4D41-91D4-BADBB87830AF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {9BC8E8CC-955C-4D41-91D4-BADBB87830AF}.Debug|Win32.Build.0 = Debug|Win32\r
+ {9BC8E8CC-955C-4D41-91D4-BADBB87830AF}.Release|Win32.ActiveCfg = Release|Win32\r
+ {9BC8E8CC-955C-4D41-91D4-BADBB87830AF}.Release|Win32.Build.0 = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="saver_eet"\r
+ ProjectGUID="{9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}"\r
+ RootNamespace="saver_eet"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeet.lib"\r
+ OutputFile="$(OutDir)\savers\eet\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeet.lib"\r
+ OutputFile="$(OutDir)\savers\eet\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\savers\eet\evas_image_save_eet.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="saver_png"\r
+ ProjectGUID="{455EB58B-C65C-4793-841A-22C62D58ADD5}"\r
+ RootNamespace="saver_png"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libpng.lib"\r
+ OutputFile="$(OutDir)\savers\png\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libpng.lib"\r
+ OutputFile="$(OutDir)\savers\png\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\savers\png\evas_image_save_png.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="8,00"\r
+ Name="saver_tiff"\r
+ ProjectGUID="{9BC8E8CC-955C-4D41-91D4-BADBB87830AF}"\r
+ RootNamespace="saver_tiff"\r
+ Keyword="Win32Proj"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libtiff.dll.a"\r
+ OutputFile="$(OutDir)\savers\tiff\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="2"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=_stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libtiff.dll.a"\r
+ OutputFile="$(OutDir)\savers\tiff\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\savers\tiff\evas_image_save_tiff.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+@echo off\r
+rem Warning: environment is set for Win32 platform.\r
+\r
+set PROJECT_TYPE=vs8\r
+\r
+pushd ..\r
+call set_env.bat\r
+popd\r
+\r
+if "%EXT_DIR%" == "" goto END\r
+\r
+rem Setup common Win32 environment variables\r
+\r
+set SolutionDirectory=%cd%\r
+set DebugOutputDirectory=%SolutionDirectory%\out\r
+set ReleaseOutputDirectory=%SolutionDirectory%\out\r
+set DebugLibraryDirectory=%SolutionDirectory%\out\r
+set ReleaseLibraryDirectory=%SolutionDirectory%\out\r
+set TemporaryDirectory=%SolutionDirectory%\temp\r
+\r
+set LIB=%DebugLibraryDirectory%;%ReleaseLibraryDirectory%;%LIB%\r
+\r
+rem Check for basic requirements\r
+if "%VS80COMNTOOLS%" == "" (\r
+ echo ERROR: Microsoft Visual Studio 2005 is not installed.\r
+ pause\r
+ goto END\r
+)\r
+\r
+rem Setting environment for using Microsoft Visual Studio 2005 x86 tools.\r
+call "%VS80COMNTOOLS%vsvars32.bat"\r
+\r
+evas.sln\r
+\r
+:END
\ No newline at end of file
--- /dev/null
+@echo off\r
+rem Warning: environment is set for Win32 platform.\r
+\r
+set PROJECT_TYPE=vs8\r
+\r
+pushd ..\r
+call set_env.bat\r
+popd\r
+\r
+if "%EXT_DIR%" == "" goto END\r
+\r
+rem Setup common Win32 environment variables\r
+\r
+set SolutionDirectory=%cd%\r
+set DebugOutputDirectory=%SolutionDirectory%\out\modules\r
+set ReleaseOutputDirectory=%SolutionDirectory%\out\modules\r
+set DebugLibraryDirectory=%SolutionDirectory%\out\modules\r
+set ReleaseLibraryDirectory=%SolutionDirectory%\out\modules\r
+set TemporaryDirectory=%SolutionDirectory%\temp\r
+\r
+set LIB=%DebugLibraryDirectory%\..;%DebugLibraryDirectory%;%ReleaseLibraryDirectory%;%LIB%\r
+\r
+rem Check for basic requirements\r
+if "%VS80COMNTOOLS%" == "" (\r
+ echo ERROR: Microsoft Visual Studio 2005 is not installed.\r
+ pause\r
+ goto END\r
+)\r
+\r
+rem Setting environment for using Microsoft Visual Studio 2005 x86 tools.\r
+call "%VS80COMNTOOLS%vsvars32.bat"\r
+\r
+modules.sln\r
+\r
+:END
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="engine_buffer"\r
+ ProjectGUID="{FF8981EF-618E-45B9-9F03-738D7E2914AF}"\r
+ RootNamespace="engine_buffer"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\engines\buffer\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\engines\buffer\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\buffer\evas_engine.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\buffer\Evas_Engine_Buffer.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\buffer\evas_engine.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\buffer\evas_outbuf.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="engine_software_gdi"\r
+ ProjectGUID="{3367A64F-A08E-4F27-8303-54A3BBB01D5A}"\r
+ RootNamespace="engine_software_gdi"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib gdi32.lib user32.lib"\r
+ OutputFile="$(OutDir)\engines\software_gdi\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib gdi32.lib user32.lib"\r
+ OutputFile="$(OutDir)\engines\software_gdi\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_engine.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\Evas_Engine_Software_GDI.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_engine.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_gdi_buffer.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_gdi_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_gdi\evas_outbuf.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="engine_software_generic"\r
+ ProjectGUID="{1E24C1AF-62F2-4EC0-AD94-7363C0534E36}"\r
+ RootNamespace="engine_software_generic"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\engines\software_generic\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\engines\software_generic\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\engines\software_generic\evas_engine.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+\r
+Microsoft Visual Studio Solution File, Format Version 10.00\r
+# Visual Studio 2008\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libevas", "libevas.vcproj", "{689B4F2B-666D-439F-9BF3-1203D813DE3F}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_buffer", "engine_buffer.vcproj", "{FF8981EF-618E-45B9-9F03-738D7E2914AF}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_software_generic", "engine_software_generic.vcproj", "{1E24C1AF-62F2-4EC0-AD94-7363C0534E36}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_software_gdi", "engine_software_gdi.vcproj", "{3367A64F-A08E-4F27-8303-54A3BBB01D5A}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36} = {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "engine_software_ddraw", "engine_software_ddraw.vcproj", "{C71D20DF-3BAB-4BFF-80D4-508E7548358B}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36} = {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_eet", "loader_eet.vcproj", "{EB7D2089-3FDB-40F4-B90C-716752FFF786}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_gif", "loader_gif.vcproj", "{C3534833-592F-4450-911E-9C35E205D488}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_jpeg", "loader_jpeg.vcproj", "{EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_pmaps", "loader_pmaps.vcproj", "{73EB3790-3A72-436C-87CD-FE8747198F06}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_png", "loader_png.vcproj", "{866F2513-EEE6-4BD7-9C3E-1FF83682424A}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_tiff", "loader_tiff.vcproj", "{94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_xpm", "loader_xpm.vcproj", "{9063A709-C228-4CA1-822B-75A51F38817F}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "saver_eet", "saver_eet.vcproj", "{9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "saver_png", "saver_png.vcproj", "{455EB58B-C65C-4793-841A-22C62D58ADD5}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "saver_tiff", "saver_tiff.vcproj", "{9BC8E8CC-955C-4D41-91D4-BADBB87830AF}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F} = {689B4F2B-666D-439F-9BF3-1203D813DE3F}\r
+ EndProjectSection\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Win32 = Debug|Win32\r
+ Release|Win32 = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Debug|Win32.Build.0 = Debug|Win32\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Release|Win32.ActiveCfg = Release|Win32\r
+ {689B4F2B-666D-439F-9BF3-1203D813DE3F}.Release|Win32.Build.0 = Release|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Debug|Win32.Build.0 = Debug|Win32\r
+ {FF8981EF-618E-45B9-9F03-738D7E2914AF}.Release|Win32.ActiveCfg = Release|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Debug|Win32.Build.0 = Debug|Win32\r
+ {1E24C1AF-62F2-4EC0-AD94-7363C0534E36}.Release|Win32.ActiveCfg = Release|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Debug|Win32.Build.0 = Debug|Win32\r
+ {3367A64F-A08E-4F27-8303-54A3BBB01D5A}.Release|Win32.ActiveCfg = Release|Win32\r
+ {C71D20DF-3BAB-4BFF-80D4-508E7548358B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {C71D20DF-3BAB-4BFF-80D4-508E7548358B}.Debug|Win32.Build.0 = Debug|Win32\r
+ {C71D20DF-3BAB-4BFF-80D4-508E7548358B}.Release|Win32.ActiveCfg = Release|Win32\r
+ {EB7D2089-3FDB-40F4-B90C-716752FFF786}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {EB7D2089-3FDB-40F4-B90C-716752FFF786}.Debug|Win32.Build.0 = Debug|Win32\r
+ {EB7D2089-3FDB-40F4-B90C-716752FFF786}.Release|Win32.ActiveCfg = Release|Win32\r
+ {C3534833-592F-4450-911E-9C35E205D488}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {C3534833-592F-4450-911E-9C35E205D488}.Debug|Win32.Build.0 = Debug|Win32\r
+ {C3534833-592F-4450-911E-9C35E205D488}.Release|Win32.ActiveCfg = Release|Win32\r
+ {EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}.Debug|Win32.Build.0 = Debug|Win32\r
+ {EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}.Release|Win32.ActiveCfg = Release|Win32\r
+ {73EB3790-3A72-436C-87CD-FE8747198F06}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {73EB3790-3A72-436C-87CD-FE8747198F06}.Debug|Win32.Build.0 = Debug|Win32\r
+ {73EB3790-3A72-436C-87CD-FE8747198F06}.Release|Win32.ActiveCfg = Release|Win32\r
+ {866F2513-EEE6-4BD7-9C3E-1FF83682424A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {866F2513-EEE6-4BD7-9C3E-1FF83682424A}.Debug|Win32.Build.0 = Debug|Win32\r
+ {866F2513-EEE6-4BD7-9C3E-1FF83682424A}.Release|Win32.ActiveCfg = Release|Win32\r
+ {94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}.Debug|Win32.Build.0 = Debug|Win32\r
+ {94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}.Release|Win32.ActiveCfg = Release|Win32\r
+ {9063A709-C228-4CA1-822B-75A51F38817F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {9063A709-C228-4CA1-822B-75A51F38817F}.Debug|Win32.Build.0 = Debug|Win32\r
+ {9063A709-C228-4CA1-822B-75A51F38817F}.Release|Win32.ActiveCfg = Release|Win32\r
+ {9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}.Debug|Win32.Build.0 = Debug|Win32\r
+ {9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}.Release|Win32.ActiveCfg = Release|Win32\r
+ {455EB58B-C65C-4793-841A-22C62D58ADD5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {455EB58B-C65C-4793-841A-22C62D58ADD5}.Debug|Win32.Build.0 = Debug|Win32\r
+ {455EB58B-C65C-4793-841A-22C62D58ADD5}.Release|Win32.ActiveCfg = Release|Win32\r
+ {9BC8E8CC-955C-4D41-91D4-BADBB87830AF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {9BC8E8CC-955C-4D41-91D4-BADBB87830AF}.Debug|Win32.Build.0 = Debug|Win32\r
+ {9BC8E8CC-955C-4D41-91D4-BADBB87830AF}.Release|Win32.ActiveCfg = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="libevas"\r
+ ProjectGUID="{689B4F2B-666D-439F-9BF3-1203D813DE3F}"\r
+ RootNamespace="libevas"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;_USE_MATH_DEFINES;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libeet.lib libeina.lib libevil.lib libdl.lib fontconfig.lib freetype.lib"\r
+ OutputFile="$(OutDir)\libevas.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;_USE_MATH_DEFINES;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libeet.lib libeina.lib libevil.lib libdl.lib fontconfig.lib freetype.lib"\r
+ OutputFile="$(OutDir)\libevas.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="cache"\r
+ >\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\cache\evas_cache_engine_image.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\cache\evas_cache_image.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\cache\evas_preload.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="libevas"\r
+ >\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\Evas.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_blend_ops.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_cairo_common.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_common.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_common_soft16.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_macros.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_mmx.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_options.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\include\evas_private.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\main.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="canvas"\r
+ >\r
+ <Filter\r
+ Name="Header Files"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_async_events.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_callbacks.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_clip.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_data.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_events.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_focus.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_font_dir.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_key.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_key_grab.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_layer.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_map.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_name.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_box.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_image.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_inform.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_intercept.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_line.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_polygon.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_rectangle.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_smart.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_smart_clipped.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_table.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_text.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_object_textblock.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_rectangle.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_render.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_smart.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_stack.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_stats.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\canvas\evas_transform.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="file"\r
+ >\r
+ <Filter\r
+ Name="Header Files"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\file\evas_module.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\file\evas_path.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\file\evas_module.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\file\evas_path.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="engines"\r
+ >\r
+ <Filter\r
+ Name="common"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_bidi_utils.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_blend_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_blit_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_color.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_colorspace.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_gry_1.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_gry_4.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_gry_8.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_grypal_6.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_rgb_16.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_rgb_24.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_rgb_32.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_rgb_8.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_convert_yuv.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_cpu.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_draw_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_encoding.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_font_draw.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_font_load.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_font_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_font_query.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_data.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_load.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_save.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_image_scalecache.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_line_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_map_image.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_add_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_blend_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_copy_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_mask_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_mul_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_op_sub_main_.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_pipe.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_polygon_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_rectangle_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_regionbuf.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_main.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_sample.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_down.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_downx.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_downx_downy.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_downy.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_noscale.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_smooth_scaler_up.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_scale_span.c"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common\evas_tiler.c"\r
+ >\r
+ </File>\r
+ <Filter\r
+ Name="evas_op_add"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_blend"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_copy"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_mask"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_mul"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="evas_op_sub"\r
+ >\r
+ </Filter>\r
+ </Filter>\r
+ <Filter\r
+ Name="common_16"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_dither_mask.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_font.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_image_scaled_sampled.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_image_unscaled.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_line.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_main.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_polygon.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_rectangle.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_scanline_blend.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\lib\engines\common_16\evas_soft16_scanline_fill.c"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ </Filter>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="loader_eet"\r
+ ProjectGUID="{EB7D2089-3FDB-40F4-B90C-716752FFF786}"\r
+ RootNamespace="loader_eet"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libeet.lib"\r
+ OutputFile="$(OutDir)\loaders\eet\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libeet.lib"\r
+ OutputFile="$(OutDir)\loaders\eet\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\eet\evas_image_load_eet.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="loader_gif"\r
+ ProjectGUID="{C3534833-592F-4450-911E-9C35E205D488}"\r
+ RootNamespace="loader_gif"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libungif.lib"\r
+ OutputFile="$(OutDir)\loaders\gif\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libungif.lib"\r
+ OutputFile="$(OutDir)\loaders\gif\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\gif\evas_image_load_gif.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="loader_jpeg"\r
+ ProjectGUID="{EAC1F90F-87EC-4E3F-8924-0F67FA2302CC}"\r
+ RootNamespace="loader_jpeg"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib jpeg.lib"\r
+ OutputFile="$(OutDir)\loaders\jpeg\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib jpeg.lib"\r
+ OutputFile="$(OutDir)\loaders\jpeg\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\jpeg\evas_image_load_jpeg.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="loader_pmaps"\r
+ ProjectGUID="{73EB3790-3A72-436C-87CD-FE8747198F06}"\r
+ RootNamespace="loader_pmaps"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\loaders\pmaps\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\loaders\pmaps\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\pmaps\evas_image_load_pmaps.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="loader_png"\r
+ ProjectGUID="{866F2513-EEE6-4BD7-9C3E-1FF83682424A}"\r
+ RootNamespace="loader_png"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libpng.lib"\r
+ OutputFile="$(OutDir)\loaders\png\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libpng.lib"\r
+ OutputFile="$(OutDir)\loaders\png\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\png\evas_image_load_png.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="loader_tiff"\r
+ ProjectGUID="{94C11E2D-6DA2-4CB9-AC08-4068A660C8C9}"\r
+ RootNamespace="loader_tiff"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libtiff.dll.a"\r
+ OutputFile="$(OutDir)\loaders\tiff\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libtiff.dll.a"\r
+ OutputFile="$(OutDir)\loaders\tiff\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\tiff\evas_image_load_tiff.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="loader_xpm"\r
+ ProjectGUID="{9063A709-C228-4CA1-822B-75A51F38817F}"\r
+ RootNamespace="loader_xpm"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\loaders\xpm\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib"\r
+ OutputFile="$(OutDir)\loaders\xpm\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\loaders\xpm\evas_image_load_xpm.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="saver_eet"\r
+ ProjectGUID="{9BF0AB1E-3B95-45BC-BDFB-5C2879577A1E}"\r
+ RootNamespace="saver_eet"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libeet.lib"\r
+ OutputFile="$(OutDir)\savers\eet\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libeet.lib"\r
+ OutputFile="$(OutDir)\savers\eet\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\savers\eet\evas_image_save_eet.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="saver_png"\r
+ ProjectGUID="{455EB58B-C65C-4793-841A-22C62D58ADD5}"\r
+ RootNamespace="saver_png"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libpng.lib"\r
+ OutputFile="$(OutDir)\savers\png\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libpng.lib"\r
+ OutputFile="$(OutDir)\savers\png\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\savers\png\evas_image_save_png.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9,00"\r
+ Name="saver_tiff"\r
+ ProjectGUID="{9BC8E8CC-955C-4D41-91D4-BADBB87830AF}"\r
+ RootNamespace="saver_tiff"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(DebugOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="4"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libtiff.dll.a"\r
+ OutputFile="$(OutDir)\savers\tiff\module.dll"\r
+ LinkIncremental="2"\r
+ AdditionalLibraryDirectories="$(LIB); $(DebugLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ReleaseOutputDirectory)"\r
+ IntermediateDirectory="$(TemporaryDirectory)\$(ProjectName)\$(TargetName)\$(ConfigurationName)"\r
+ ConfigurationType="2"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="$(INCLUDE)"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;EFL_EVAS_BUILD;DLL_EXPORT;__CRT_INLINE=__inline;inline=__inline;HAVE_CONFIG_H;snprintf=_snprintf_c;strcasecmp=stricmp;__UNUSED__="\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="3"\r
+ Detect64BitPortabilityProblems="true"\r
+ DebugInformationFormat="3"\r
+ CompileAs="0"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ IgnoreImportLibrary="false"\r
+ LinkLibraryDependencies="true"\r
+ UseLibraryDependencyInputs="false"\r
+ AdditionalDependencies="libevas.lib libeina.lib libtiff.dll.a"\r
+ OutputFile="$(OutDir)\savers\tiff\module.dll"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(LIB); $(ReleaseLibraryDirectory)"\r
+ AddModuleNamesToAssembly=""\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\modules\savers\tiff\evas_image_save_tiff.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r