[Rollback]
authorWooHyun Jung <wh0705.jung@samsung.com>
Tue, 8 Mar 2011 03:13:19 +0000 (12:13 +0900)
committerWooHyun Jung <wh0705.jung@samsung.com>
Tue, 8 Mar 2011 03:13:19 +0000 (12:13 +0900)
117 files changed:
ChangeLog
autogen.sh
configure.ac
doc/evas.dox.in
evas.spec.in
m4/evas_check_engine.m4
m4/evas_check_loader.m4
src/lib/Evas.h
src/lib/Makefile.am
src/lib/canvas/evas_font_dir.c
src/lib/canvas/evas_key_grab.c
src/lib/canvas/evas_map.c
src/lib/canvas/evas_object_box.c
src/lib/canvas/evas_object_image.c
src/lib/canvas/evas_object_main.c
src/lib/canvas/evas_object_rectangle.c
src/lib/canvas/evas_object_smart.c
src/lib/canvas/evas_object_table.c
src/lib/canvas/evas_object_text.c
src/lib/canvas/evas_object_textblock.c
src/lib/canvas/evas_render.c
src/lib/cserve/evas_cs_client.c
src/lib/engines/common/Makefile.am
src/lib/engines/common/evas_bidi_utils.c [new file with mode: 0644]
src/lib/engines/common/evas_bidi_utils.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_colorspace.c
src/lib/engines/common/evas_encoding.c [new file with mode: 0644]
src/lib/engines/common/evas_encoding.h [new file with mode: 0644]
src/lib/engines/common/evas_font.h
src/lib/engines/common/evas_font_draw.c
src/lib/engines/common/evas_font_load.c
src/lib/engines/common/evas_font_main.c
src/lib/engines/common/evas_font_private.h
src/lib/engines/common/evas_font_query.c
src/lib/engines/common/evas_map_image.c
src/lib/engines/common/evas_op_blend/op_blend_pixel_neon.c
src/lib/engines/common/evas_op_copy/op_copy_pixel_neon.c
src/lib/engines/common/evas_pipe.c
src/lib/engines/common/evas_pipe.h
src/lib/engines/common/evas_scale_smooth.c
src/lib/engines/common/evas_scale_smooth_scaler.c
src/lib/engines/common/evas_scale_smooth_scaler_down.c
src/lib/engines/common/evas_scale_smooth_scaler_downx.c
src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c
src/lib/engines/common/evas_scale_smooth_scaler_downy.c
src/lib/file/evas_module.c
src/lib/include/evas_common.h
src/lib/include/evas_inline.x
src/lib/include/evas_private.h
src/modules/engines/buffer/evas_engine.c
src/modules/engines/cairo_x11/evas_engine.c
src/modules/engines/direct3d/evas_engine.c
src/modules/engines/directfb/evas_engine.c
src/modules/engines/fb/evas_engine.c
src/modules/engines/gl_common/evas_gl_common.h
src/modules/engines/gl_common/evas_gl_context.c
src/modules/engines/gl_common/evas_gl_image.c
src/modules/engines/gl_common/evas_gl_texture.c
src/modules/engines/gl_glew/evas_engine.c
src/modules/engines/gl_sdl/evas_engine.c
src/modules/engines/gl_x11/evas_engine.c
src/modules/engines/quartz/evas_engine.c
src/modules/engines/quartz/evas_quartz_private.h
src/modules/engines/software_16/evas_engine.c
src/modules/engines/software_16_sdl/evas_engine.c
src/modules/engines/software_8/evas_engine.c
src/modules/engines/software_ddraw/evas_engine.c
src/modules/engines/software_gdi/evas_engine.c
src/modules/engines/software_generic/evas_engine.c
src/modules/engines/software_qtopia/evas_engine.c
src/modules/engines/software_sdl/evas_engine.c
src/modules/engines/software_x11/evas_engine.c
src/modules/engines/xrender_x11/evas_engine.c
src/modules/loaders/bmp/evas_image_load_bmp.c
src/modules/loaders/wbmp/evas_image_load_wbmp.c
src/modules/savers/jpeg/Makefile.am
src/modules/savers/jpeg/evas_image_save_jpeg.c
src/modules/savers/png/evas_image_save_png.c
win32/common/config.h [new file with mode: 0644]
win32/patch/evas.diff [new file with mode: 0644]
win32/start.bat [new file with mode: 0644]
win32/vs8/engine_buffer.vcproj [new file with mode: 0644]
win32/vs8/engine_direct3d.vcproj [new file with mode: 0644]
win32/vs8/engine_gl_glew.vcproj [new file with mode: 0644]
win32/vs8/engine_software_ddraw.vcproj [new file with mode: 0644]
win32/vs8/engine_software_gdi.vcproj [new file with mode: 0644]
win32/vs8/engine_software_generic.vcproj [new file with mode: 0644]
win32/vs8/evas.sln [new file with mode: 0644]
win32/vs8/libevas.vcproj [new file with mode: 0644]
win32/vs8/loader_eet.vcproj [new file with mode: 0644]
win32/vs8/loader_gif.vcproj [new file with mode: 0644]
win32/vs8/loader_jpeg.vcproj [new file with mode: 0644]
win32/vs8/loader_pmaps.vcproj [new file with mode: 0644]
win32/vs8/loader_png.vcproj [new file with mode: 0644]
win32/vs8/loader_tiff.vcproj [new file with mode: 0644]
win32/vs8/loader_xpm.vcproj [new file with mode: 0644]
win32/vs8/modules.sln [new file with mode: 0644]
win32/vs8/saver_eet.vcproj [new file with mode: 0644]
win32/vs8/saver_png.vcproj [new file with mode: 0644]
win32/vs8/saver_tiff.vcproj [new file with mode: 0644]
win32/vs8/start.bat [new file with mode: 0644]
win32/vs8/start_modules.bat [new file with mode: 0644]
win32/vs9/engine_buffer.vcproj [new file with mode: 0644]
win32/vs9/engine_software_gdi.vcproj [new file with mode: 0644]
win32/vs9/engine_software_generic.vcproj [new file with mode: 0644]
win32/vs9/evas.sln [new file with mode: 0644]
win32/vs9/libevas.vcproj [new file with mode: 0644]
win32/vs9/loader_eet.vcproj [new file with mode: 0644]
win32/vs9/loader_gif.vcproj [new file with mode: 0644]
win32/vs9/loader_jpeg.vcproj [new file with mode: 0644]
win32/vs9/loader_pmaps.vcproj [new file with mode: 0644]
win32/vs9/loader_png.vcproj [new file with mode: 0644]
win32/vs9/loader_tiff.vcproj [new file with mode: 0644]
win32/vs9/loader_xpm.vcproj [new file with mode: 0644]
win32/vs9/saver_eet.vcproj [new file with mode: 0644]
win32/vs9/saver_png.vcproj [new file with mode: 0644]
win32/vs9/saver_tiff.vcproj [new file with mode: 0644]

index 3e796e7..bbcf3c6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,137 +1,4 @@
-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
+        
index 6499736..995ff2f 100755 (executable)
@@ -1,5 +1,8 @@
 #!/bin/sh
 
+rm -rf autom4te.cache
+rm -f aclocal.m4 ltmain.sh
+
 touch README
 
 echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1
@@ -9,5 +12,5 @@ echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --au
 echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
 
 if [ -z "$NOCONFIGURE" ]; then
-       ./configure -C "$@"
+       ./configure "$@"
 fi
index d986ce2..e22607f 100644 (file)
@@ -2,11 +2,11 @@
 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
 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])
@@ -21,17 +21,17 @@ m4_define([lt_age], v_min)
 # 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])
@@ -89,7 +89,6 @@ AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture")
 
 want_fontconfig="auto"
 want_fribidi="auto"
-want_harfbuzz="auto"
 want_evas_cserve="yes"
 
 want_evas_engine_buffer="yes"
@@ -194,9 +193,9 @@ m4_ifdef([AC_PROG_OBJC],
     _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
@@ -304,68 +303,6 @@ if test "x${have_fribidi}" = "xno"; then
   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])
@@ -797,7 +734,6 @@ case "$host_os" in
       ;;
    *)
       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
       ;;
@@ -1708,10 +1644,7 @@ echo "  EET.....................: $have_evas_font_loader_eet"
 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
index 9ec03a0..c9c3334 100644 (file)
@@ -25,9 +25,8 @@
 @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
 
index 58d59bf..9ef36ae 100644 (file)
@@ -26,7 +26,6 @@
 %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
@@ -38,6 +37,7 @@
 %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
@@ -267,7 +267,6 @@ Software X11 rendering engine module for Evas
 %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
@@ -298,8 +297,8 @@ Framebuffer rendering engine module for Evas
 %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
@@ -384,7 +383,7 @@ Software XCB X11 rendering engine module for Evas
 %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
@@ -392,7 +391,7 @@ Xrender XCB X11 rendering engine module for Evas
 %endif
 
 %prep
-%setup -q
+%setup -q -n %{name}-%{version}
 
 %build
 %{configure} --prefix=%{_prefix} --x-libraries=%{_prefix}/X11R6/%{_lib} \
@@ -451,7 +450,7 @@ test "x$RPM_BUILD_ROOT" != "x/" && rm -rf $RPM_BUILD_ROOT
 %{_libdir}/*.la
 %{_libdir}/*.a
 %{_libdir}/pkgconfig/*
-%{_includedir}/evas-1/*.h
+%{_includedir}/*.h
 %{_datadir}/evas/examples/*.c
 %files module_engine_software_generic
 %defattr(-, root, root)
index fdc2870..178355f 100644 (file)
@@ -435,14 +435,16 @@ AC_REQUIRE([EVAS_MAYBE_GET_OBJCPP])
 
 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])
@@ -459,7 +461,7 @@ dnl Helper macro for EVAS_CHECK_ENGINE_DEP_QUARTZ
 
 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]])
index 00a9618..83b15b8 100644 (file)
@@ -114,7 +114,7 @@ if test "x${have_dep}"  = "xyes" ; then
       [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>
@@ -122,7 +122,7 @@ if test "x${have_dep}"  = "xyes" ; then
                           struct jpeg_decompress_struct decomp;
                           decomp.region_x = 0;
                           }
-                        ])],
+                        ]],
                         [have_jpeg_region="yes"],
                         [have_jpeg_region="no"])
       ],
index d9fd805..7e9fc5f 100644 (file)
@@ -1293,11 +1293,6 @@ typedef void (*Evas_Object_Image_Pixels_Get_Cb) (void *data, Evas_Object *o);
    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
  *
@@ -1349,7 +1344,6 @@ typedef void (*Evas_Object_Image_Pixels_Get_Cb) (void *data, Evas_Object *o);
    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
@@ -1405,8 +1399,6 @@ typedef void (*Evas_Object_Image_Pixels_Get_Cb) (void *data, Evas_Object *o);
    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);
@@ -1462,7 +1454,6 @@ typedef void (*Evas_Object_Image_Pixels_Get_Cb) (void *data, Evas_Object *o);
 
    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);
@@ -2088,8 +2079,6 @@ struct _Evas_Smart_Cb_Description
    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);
index 382e26e..16e0def 100644 (file)
@@ -113,11 +113,6 @@ SUBDIRS += ../modules/engines/xrender_x11/
 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
@@ -134,12 +129,8 @@ EVAS_STATIC_MODULE += ../modules/loaders/gif/libevas_loader_gif.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
@@ -157,21 +148,11 @@ SUBDIRS += ../modules/loaders/svg
 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
@@ -204,7 +185,6 @@ AM_CPPFLAGS = \
 @EINA_CFLAGS@ \
 @FREETYPE_CFLAGS@ \
 @FRIBIDI_CFLAGS@ \
-@HARFBUZZ_CFLAGS@ \
 @EET_CFLAGS@ \
 @FONTCONFIG_CFLAGS@ \
 @pthread_cflags@
@@ -232,7 +212,6 @@ $(libevas_cserve_la) \
 engines/common/libevas_engine_common.la \
 @FREETYPE_LIBS@ \
 @FRIBIDI_LIBS@ \
-@HARFBUZZ_LIBS@ \
 @EET_LIBS@ \
 @FONTCONFIG_LIBS@ \
 @pthread_libs@ \
index 91eed78..e939551 100644 (file)
@@ -912,7 +912,7 @@ evas_object_text_font_string_parse(char *buffer, char dest[14][256])
    while (p[i])
      {
        dest[n][m] = p[i];
-       if ((p[i] == '-') || (m == 255))
+       if ((p[i] == '-') || (m == 256))
          {
             dest[n][m] = 0;
             n++;
index 5152842..a8e8979 100644 (file)
@@ -48,8 +48,8 @@ evas_key_grab_new(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modi
        if (eina_error_get())
          {
             MERR_FATAL();
-            free(g->keyname);
             free(g);
+            free(g->keyname);
             return NULL;
          }
      }
@@ -63,8 +63,8 @@ evas_key_grab_new(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modi
          {
             MERR_FATAL();
             g->object->grabs = eina_list_remove(g->object->grabs, g);
-            free(g->keyname);
             free(g);
+            free(g->keyname);
             return NULL;
          }
      }
index f383e8f..90e4dca 100644 (file)
@@ -1244,10 +1244,11 @@ evas_map_util_3d_lighting(Evas_Map *m,
         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;
@@ -1256,12 +1257,16 @@ evas_map_util_3d_lighting(Evas_Map *m,
         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)
           {
@@ -1269,6 +1274,7 @@ evas_map_util_3d_lighting(Evas_Map *m,
              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;
index 8503cf4..fcdc910 100644 (file)
@@ -1,9 +1,5 @@
 #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;
 
index 8f71561..553ed57 100644 (file)
@@ -311,10 +311,6 @@ evas_object_image_file_get(const Evas_Object *obj, const char **file, const char
 /**
  * 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.
  *
@@ -341,8 +337,7 @@ evas_object_image_source_set(Evas_Object *obj, Evas_Object *src)
    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)
      {
@@ -1757,7 +1752,7 @@ evas_object_image_load_dpi_get(const Evas_Object *obj)
  *
  * @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.
  *
@@ -2148,39 +2143,6 @@ evas_object_image_content_hint_set(Evas_Object *obj, Evas_Image_Content_Hint hin
 }
 
 /**
- * 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.
@@ -2736,11 +2698,10 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
    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)
      {
@@ -2796,7 +2757,7 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
             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;
@@ -2812,10 +2773,6 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
                   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)
@@ -2832,12 +2789,9 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
              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;
index 5f44d72..c394e93 100644 (file)
@@ -399,10 +399,9 @@ evas_object_del(Evas_Object *obj)
    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);
index 50728ff..74ecac8 100644 (file)
@@ -201,7 +201,6 @@ evas_object_rectangle_render_pre(Evas_Object *obj)
    /* 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);
index cdb81d7..c3cde73 100644 (file)
@@ -735,7 +735,8 @@ evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value)
      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
@@ -744,7 +745,8 @@ evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value)
     */
    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 */
@@ -829,21 +831,17 @@ evas_call_smarts_calculate(Evas *e)
 {
    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)
          {
@@ -851,8 +849,8 @@ evas_call_smarts_calculate(Evas *e)
             obj->smart.smart->smart_class->calculate(obj);
          }
      }
-   in_smart_calc--;
-   if (in_smart_calc == 0) eina_array_flush(calculate);
+
+   eina_array_flush(calculate);
 }
 
 /**
index 0addce1..2d8e056 100644 (file)
@@ -62,7 +62,6 @@ struct _Evas_Object_Table_Data
    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
@@ -516,14 +515,7 @@ _evas_object_table_calculate_layout_homogeneous(Evas_Object *o, Evas_Object_Tabl
 
        _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);
      }
 }
@@ -790,25 +782,18 @@ _evas_object_table_calculate_layout_regular(Evas_Object *o, Evas_Object_Table_Da
      {
        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);
      }
 
@@ -1394,42 +1379,5 @@ evas_object_table_child_get(const Evas_Object *o, unsigned short col, unsigned s
 }
 
 /**
- * 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);
-     }
-}
-
-/**
  * @}
  */
index 73d03b6..8605cfe 100644 (file)
@@ -10,13 +10,13 @@ static const char o_type[] = "text";
 
 /* 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;
@@ -26,27 +26,15 @@ struct _Evas_Object_Text
       } 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 */
@@ -65,7 +53,6 @@ static int evas_object_text_is_opaque(Evas_Object *obj);
 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 =
 {
@@ -103,202 +90,6 @@ 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.
  *
@@ -385,6 +176,7 @@ EAPI void
 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;
 
@@ -435,21 +227,44 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
    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);
@@ -504,155 +319,6 @@ evas_object_text_font_get(const Evas_Object *obj, const char **font, Evas_Font_S
    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.
@@ -673,35 +339,63 @@ evas_object_text_text_set(Evas_Object *obj, const char *_text)
    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);
@@ -740,31 +434,6 @@ evas_object_text_text_get(const Evas_Object *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.
@@ -867,8 +536,8 @@ evas_object_text_inset_get(const Evas_Object *obj)
    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);
 }
 
 /**
@@ -890,8 +559,8 @@ evas_object_text_horiz_advance_get(const Evas_Object *obj)
    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);
 }
 
 /**
@@ -913,8 +582,8 @@ evas_object_text_vert_advance_get(const Evas_Object *obj)
    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);
 }
 
 /**
@@ -950,9 +619,9 @@ evas_object_text_char_pos_get(const Evas_Object *obj, int pos, Evas_Coord *cx, E
    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;
@@ -1000,8 +669,12 @@ evas_object_text_last_up_to_pos(const Evas_Object *obj, Evas_Coord x, Evas_Coord
    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);      
 }
 
 /**
@@ -1025,9 +698,14 @@ evas_object_text_char_coords_get(const Evas_Object *obj, Evas_Coord x, Evas_Coor
    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;
@@ -1075,7 +753,7 @@ evas_object_text_style_set(Evas_Object *obj, Evas_Text_Style_Type style)
    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;
@@ -1666,7 +1344,7 @@ evas_string_char_next_get(const char *str, int pos, int *decoded)
    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;
 }
@@ -1698,7 +1376,7 @@ evas_string_char_prev_get(const char *str, int pos, int *decoded)
    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;
 }
@@ -1713,7 +1391,7 @@ EAPI int
 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);
 }
 
 /**
@@ -1841,7 +1519,7 @@ evas_object_text_new(void)
    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;
 }
@@ -1857,13 +1535,13 @@ evas_object_text_free(Evas_Object *obj)
    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);
@@ -1874,7 +1552,6 @@ evas_object_text_render(Evas_Object *obj, void *output, void *context, void *sur
 {
    int i, j;
    Evas_Object_Text *o;
-   Evas_Object_Text_Item *it;
    const char vals[5][5] =
      {
        {0, 1, 2, 1, 0},
@@ -1938,12 +1615,12 @@ evas_object_text_render(Evas_Object *obj, void *output, void *context, void *sur
                                (((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), \
@@ -1951,102 +1628,116 @@ evas_object_text_render(Evas_Object *obj, void *output, void *context, void *sur
                     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
@@ -2136,8 +1827,14 @@ evas_object_text_render_pre(Evas_Object *obj)
    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)) ||
@@ -2264,51 +1961,20 @@ _evas_object_text_rehint(Evas_Object *obj)
                                       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
      {
@@ -2316,8 +1982,21 @@ _evas_object_text_recalc(Evas_Object *obj)
 
        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);
 }
-
index 3f81b65..ee3f748 100644 (file)
  * @subsection textblock_layout The layout system
  * @todo write @ref textblock_layout
  */
-#include <stdlib.h>
-
 #include "evas_common.h"
 #include "evas_private.h"
 
@@ -191,12 +189,6 @@ typedef struct _Evas_Object_Textblock_Line        Evas_Object_Textblock_Line;
 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.
  */
@@ -243,7 +235,6 @@ struct _Evas_Object_Textblock_Node_Text
    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
@@ -267,90 +258,47 @@ 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
@@ -381,11 +329,9 @@ 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;
@@ -395,7 +341,7 @@ struct _Evas_Object_Textblock_Format
 
 struct _Evas_Textblock_Style
 {
-   const char            *style_text;
+   char                  *style_text;
    char                  *default_tag;
    Evas_Object_Style_Tag *tags;
    Eina_List             *objects;
@@ -432,8 +378,6 @@ struct _Evas_Object_Textblock
    } 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 */
@@ -514,21 +458,20 @@ static Eina_Bool _evas_textblock_format_is_visible(const char *s);
 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)
      {
@@ -540,23 +483,13 @@ _style_replace(Evas_Textblock_Style *ts, const char *style_text)
        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.
@@ -626,9 +559,7 @@ _nodes_clear(const Evas_Object *obj)
        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)
      {
@@ -660,47 +591,33 @@ _format_unref_free(const Evas_Object *obj, Evas_Object_Textblock_Format *fmt)
 
 /**
  * @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);
 }
 
@@ -1143,7 +1060,6 @@ static const char *linegapstr = NULL;
 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;
 
 /**
@@ -1184,7 +1100,6 @@ _format_command_init(void)
         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++;
@@ -1228,7 +1143,6 @@ _format_command_shutdown(void)
    eina_stringshare_del(linerelgapstr);
    eina_stringshare_del(itemstr);
    eina_stringshare_del(linefillstr);
-   eina_stringshare_del(ellipsisstr);
    eina_stringshare_del(passwordstr);
 }
 
@@ -1411,21 +1325,17 @@ _format_command(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char
         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)
@@ -1574,13 +1484,6 @@ _format_command(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char
                }
           }
      }
-   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"))
@@ -1806,8 +1709,6 @@ struct _Ctxt
    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.
@@ -1877,7 +1778,6 @@ _layout_line_new(Ctxt *c, Evas_Object_Textblock_Format *fmt)
    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);
 }
 
@@ -1888,21 +1788,20 @@ _layout_line_new(Ctxt *c, Evas_Object_Textblock_Format *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)
      {
@@ -1912,27 +1811,6 @@ _paragraph_clear(const Evas_Object *obj, Evas_Object_Textblock_Paragraph *par)
         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);
 }
 
@@ -1947,28 +1825,6 @@ static void
 _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)
      {
@@ -2079,11 +1935,12 @@ static inline double
 _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;
@@ -2100,242 +1957,81 @@ _layout_line_align_get(Ctxt *c)
 
 /**
  * @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)
@@ -2346,12 +2042,7 @@ loop_advance:
      {
         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)
@@ -2360,55 +2051,36 @@ loop_advance:
            ((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;
 }
 
 /**
@@ -2418,144 +2090,40 @@ _layout_text_item_new(Ctxt *c __UNUSED__, Evas_Object_Textblock_Format *fmt, con
  * @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);
 }
 
 /**
@@ -2601,6 +2169,68 @@ _layout_word_start(const Eina_Unicode *str, int start)
 
 /**
  * @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.
@@ -2657,58 +2287,8 @@ _layout_word_next(Eina_Unicode *str, int p)
 
 /**
  * @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.
@@ -2720,12 +2300,12 @@ _layout_text_add_logical_item(Ctxt *c, Evas_Object_Textblock_Text_Item *ti,
 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 */
@@ -2767,7 +2347,7 @@ _layout_text_append(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Text
              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;
@@ -2779,61 +2359,214 @@ _layout_text_append(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Text
              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);
 }
 
@@ -2843,37 +2576,20 @@ skip:
  *
  * @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;
 }
 
@@ -2889,9 +2605,8 @@ _layout_format_item_add(Ctxt *c, Evas_Object_Textblock_Node_Format *n, const cha
  * 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
@@ -2909,7 +2624,7 @@ _layout_format_item_add(Ctxt *c, Evas_Object_Textblock_Node_Format *n, const cha
  * @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)
 {
@@ -2941,7 +2656,7 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c,
         // 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;
 
@@ -2960,10 +2675,8 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c,
              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;
                }
           }
@@ -2983,24 +2696,46 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c,
                   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)
@@ -3026,21 +2761,52 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c,
                }
              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;
                     }
                }
           }
@@ -3055,395 +2821,6 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c,
    *_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.
@@ -3460,7 +2837,9 @@ _layout(const Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_
 {
    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;
 
@@ -3485,9 +2864,6 @@ _layout(const Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_
    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))
      {
@@ -3500,171 +2876,73 @@ _layout(const Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_
         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)
@@ -3673,55 +2951,47 @@ _layout(const Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_
         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);
 }
 
 /*
@@ -3734,16 +3004,21 @@ static void
 _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;
 }
 
@@ -3755,52 +3030,29 @@ _relayout(const Evas_Object *obj)
  * @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;
@@ -3818,6 +3070,40 @@ _find_layout_item_line_match(Evas_Object *obj, Evas_Object_Textblock_Node_Text *
 
 /**
  * @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.
@@ -3827,25 +3113,13 @@ _find_layout_item_line_match(Evas_Object *obj, Evas_Object_Textblock_Node_Text *
 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;
 }
@@ -3914,26 +3188,28 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
    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;
@@ -4014,6 +3290,24 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *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);
+               }
+          }
+     }
 }
 
 /**
@@ -4041,14 +3335,18 @@ evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts)
    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);
@@ -4058,10 +3356,14 @@ evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts)
    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);
 }
 
 /**
@@ -4089,41 +3391,7 @@ evas_object_textblock_replace_char_set(Evas_Object *obj, const char *ch)
    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);
 }
 
 /**
@@ -4512,7 +3780,7 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char
              p++;
           }
      }
-   _evas_textblock_text_node_changed(o, obj, o->cursor->node);
+    _evas_textblock_changed(o, obj);
 }
 
 
@@ -4567,7 +3835,7 @@ _markup_get_format_append(Evas_Object_Textblock *o, Eina_Strbuf *txt, Evas_Objec
 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)
      {
@@ -4616,8 +3884,7 @@ evas_object_textblock_text_markup_get(const Evas_Object *obj)
          * 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))
@@ -4882,38 +4149,51 @@ _evas_textblock_cursor_node_format_before_or_at_pos_get(const Evas_Textblock_Cur
 
 /**
  * @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.
@@ -5090,7 +4370,7 @@ evas_textblock_node_format_remove_pair(Evas_Object *obj,
         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);
@@ -5103,7 +4383,7 @@ evas_textblock_node_format_remove_pair(Evas_Object *obj,
         /* 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);
 }
 
 /**
@@ -5342,17 +4622,12 @@ evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur)
      {
         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;
           }
      }
 }
@@ -5405,10 +4680,7 @@ evas_textblock_cursor_paragraph_char_last(Evas_Textblock_Cursor *cur)
    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;
 
 }
 
@@ -5424,31 +4696,60 @@ evas_textblock_cursor_line_char_first(Evas_Textblock_Cursor *cur)
    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);
      }
 }
 
@@ -5464,40 +4765,74 @@ evas_textblock_cursor_line_char_last(Evas_Textblock_Cursor *cur)
    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++;
           }
@@ -5817,7 +5152,7 @@ _evas_textblock_node_text_adjust_offsets_to_start(Evas_Object_Textblock *o,
         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);
@@ -6055,6 +5390,7 @@ evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line)
    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);
@@ -6063,10 +5399,22 @@ evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line)
    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
      {
@@ -6168,8 +5516,6 @@ _evas_textblock_node_text_new(void)
 
    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;
@@ -6345,31 +5691,17 @@ _evas_textblock_cursors_update_offset(const Evas_Textblock_Cursor *cur,
 
 /**
  * @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);
@@ -6398,7 +5730,7 @@ evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *_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);
@@ -6449,7 +5781,7 @@ evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *_text)
    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;
 }
@@ -6637,7 +5969,8 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form
 
         /* 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);
           }
@@ -6649,9 +5982,10 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form
                    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;
 }
@@ -6721,7 +6055,7 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
              /* 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;
                }
@@ -6762,7 +6096,7 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
      }
 
    _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);
 }
 
 /**
@@ -6863,7 +6197,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
    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);
 }
 
 
@@ -6892,7 +6226,7 @@ evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur)
    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;
 }
@@ -6945,8 +6279,7 @@ evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Ev
         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,
@@ -7164,75 +6497,46 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord
    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)
           {
@@ -7246,51 +6550,41 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord
    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);
@@ -7301,53 +6595,64 @@ _evas_textblock_cursor_char_pen_geometry_common_get(int (*query_func) (void *dat
              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)
@@ -7358,31 +6663,21 @@ _evas_textblock_cursor_char_pen_geometry_common_get(int (*query_func) (void *dat
                       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;
           }
      }
@@ -7394,41 +6689,7 @@ _evas_textblock_cursor_char_pen_geometry_common_get(int (*query_func) (void *dat
    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;
 }
 
 /**
@@ -7447,6 +6708,8 @@ evas_textblock_cursor_line_geometry_get(const Evas_Textblock_Cursor *cur, Evas_C
    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;
@@ -7458,455 +6721,160 @@ evas_textblock_cursor_line_geometry_get(const Evas_Textblock_Cursor *cur, Evas_C
      }
    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.
  *
@@ -7917,17 +6885,14 @@ _evas_textblock_cursor_range_in_line_geometry_get(
 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;
@@ -7937,52 +6902,76 @@ evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, cons
        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;
 }
@@ -8001,26 +6990,26 @@ evas_textblock_cursor_format_item_geometry_get(const Evas_Textblock_Cursor *cur,
 {
    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;
 }
 
 /**
@@ -8065,8 +7054,8 @@ evas_object_textblock_line_number_geometry_get(const Evas_Object *obj, int line,
    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;
@@ -8097,10 +7086,10 @@ evas_object_textblock_clear(Evas_Object *obj)
      }
    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);
 }
 
 /**
@@ -8163,7 +7152,6 @@ evas_object_textblock_size_native_get(const Evas_Object *obj, Evas_Coord *w, Eva
                -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;
@@ -8215,7 +7203,6 @@ evas_object_textblock_init(Evas_Object *obj)
 
    o = (Evas_Object_Textblock *)(obj->object_data);
    o->cursor->obj = obj;
-   o->newline_is_ps = EINA_TRUE;
 }
 
 static void *
@@ -8261,14 +7248,14 @@ evas_object_textblock_free(Evas_Object *obj)
 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;
@@ -8292,266 +7279,396 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
    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();
 }
@@ -8571,20 +7688,28 @@ evas_object_textblock_render_pre(Evas_Object *obj)
    /* 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;
@@ -8594,7 +7719,6 @@ evas_object_textblock_render_pre(Evas_Object *obj)
        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;
@@ -8651,11 +7775,10 @@ evas_object_textblock_render_pre(Evas_Object *obj)
        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);
@@ -8730,6 +7853,7 @@ evas_object_textblock_coords_recalc(Evas_Object *obj)
    if (obj->cur.geometry.w != o->last_w)
      {
        o->formatted.valid = 0;
+       o->native.valid = 0;
        o->changed = 1;
      }
 }
@@ -8744,35 +7868,30 @@ void
 _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);
 }
 
 /**
@@ -8788,7 +7907,7 @@ pfnode(Evas_Object_Textblock_Node_Format *n)
    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
@@ -8797,49 +7916,7 @@ ptnode(Evas_Object_Textblock_Node_Text *n)
    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
 
index f3f07ee..8eaebf5 100644 (file)
@@ -746,10 +746,6 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
              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 */
@@ -891,7 +887,7 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
           }
 
         RDI(level);
-        RD("        draw map\n");
+        RD("        draw map4\n");
 
         if (rendered)
           {
index e49074c..b60a62c 100644 (file)
@@ -314,10 +314,10 @@ evas_cserve_image_load(Image_Entry *ie, const char *file, const char *key, RGBA_
    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))
index c3290b9..00fbb06 100644 (file)
@@ -13,7 +13,7 @@ AM_CPPFLAGS        = -I. \
                       @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  = \
@@ -39,6 +39,7 @@ evas_convert_grypal_6.c \
 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 \
@@ -58,10 +59,7 @@ evas_scale_span.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
 
@@ -81,6 +79,7 @@ evas_convert_rgb_32.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 \
@@ -99,10 +98,7 @@ evas_scale_smooth_scaler_noscale.c \
 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
diff --git a/src/lib/engines/common/evas_bidi_utils.c b/src/lib/engines/common/evas_bidi_utils.c
new file mode 100644 (file)
index 0000000..ed83fe5
--- /dev/null
@@ -0,0 +1,459 @@
+#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
+
diff --git a/src/lib/engines/common/evas_bidi_utils.h b/src/lib/engines/common/evas_bidi_utils.h
new file mode 100644 (file)
index 0000000..86a83f1
--- /dev/null
@@ -0,0 +1,147 @@
+#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
+
index fa5faec..2886133 100644 (file)
@@ -55,15 +55,13 @@ evas_common_convert_argb8888_to_a8(void *data, int w, int h, int stride, Eina_Bo
    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;
 }
diff --git a/src/lib/engines/common/evas_encoding.c b/src/lib/engines/common/evas_encoding.c
new file mode 100644 (file)
index 0000000..96a2690
--- /dev/null
@@ -0,0 +1,317 @@
+#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;
+}
+
+
diff --git a/src/lib/engines/common/evas_encoding.h b/src/lib/engines/common/evas_encoding.h
new file mode 100644 (file)
index 0000000..e278727
--- /dev/null
@@ -0,0 +1,26 @@
+#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
index 3db4366..ddacb8e 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef _EVAS_FONT_H
 #define _EVAS_FONT_H
-#include "evas_text_utils.h"
+#include "evas_bidi_utils.h"
 
 
 /* main */
@@ -17,7 +17,7 @@ EAPI int               evas_common_font_get_line_advance     (RGBA_Font *fn);
 
 /* 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);
@@ -56,13 +56,12 @@ EAPI void              evas_common_font_all_clear            (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);
index 195fe16..6067f92 100644 (file)
@@ -2,12 +2,10 @@
 #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;
@@ -30,6 +28,7 @@ struct prword
 
 struct cinfo 
 {
+   int gl;
    FT_UInt index;
    struct 
      {
@@ -49,7 +48,7 @@ struct cinfo
 #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
@@ -389,21 +388,25 @@ evas_common_font_glyph_search(RGBA_Font *fn, RGBA_Font_Int **fi_ret, int gl)
 }
 
 /* 
- * 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;
@@ -411,12 +414,12 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
    /* 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)
           {
@@ -493,57 +496,64 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
 # 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);
 
@@ -553,10 +563,15 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
              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))
           {
@@ -569,10 +584,10 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
              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))
                     {
@@ -580,14 +595,14 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
                          {
                             /* 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++)
                                    {
@@ -603,8 +618,8 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
 #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);
@@ -617,7 +632,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
                                                 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);
                                                   }
                                              }
                                         }
@@ -658,8 +673,8 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
                                                 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);
@@ -672,26 +687,31 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
                                                 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;
@@ -743,7 +763,7 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int
 
    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);
      }
@@ -759,7 +779,7 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int
                {
                   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);
                }
@@ -776,19 +796,22 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int
 /* 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;
@@ -809,54 +832,61 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Eina_Unicode *in_text, con
 
    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);
@@ -871,41 +901,26 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Eina_Unicode *in_text, con
         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 
@@ -923,9 +938,7 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Eina_Unicode *in_text, con
    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;
index 9048d53..daa4f96 100644 (file)
@@ -4,7 +4,6 @@
 #include <assert.h>
 
 #include "evas_font_private.h" /* for Frame-Queuing support */
-#include "evas_font_ot.h"
 
 extern FT_Library         evas_ft_lib;
 
@@ -45,11 +44,7 @@ _evas_common_font_source_free(RGBA_Font_Source *fs)
    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);
 }
 
@@ -136,9 +131,6 @@ evas_common_font_source_memory_load(const char *name, const void *data, int data
       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;
@@ -159,7 +151,7 @@ evas_common_font_source_load(const char *name)
    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);
@@ -172,9 +164,6 @@ evas_common_font_source_unload(RGBA_Font_Source *fs)
    FTLOCK();
    FT_Done_Face(fs->ft.face);
    fs->ft.face = NULL;
-#ifdef OT_SUPPORT
-   evas_common_font_ot_unload_face(fs);
-#endif
    FTUNLOCK();
 }
 
@@ -224,9 +213,6 @@ evas_common_font_source_load_complete(RGBA_Font_Source *fs)
        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;
index 821ab6e..8a11a10 100644 (file)
@@ -1,5 +1,6 @@
 #include "evas_common.h"
 #include "evas_private.h"
+#include "evas_encoding.h"
 
 #include "evas_font_private.h"
 
@@ -8,7 +9,6 @@ static int      initialised = 0;
 
 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)
@@ -23,7 +23,6 @@ evas_common_font_init(void)
    evas_common_font_draw_init();
    LKI(lock_font_draw);
    LKI(lock_bidi);
-   LKI(lock_ot);
 }
 
 EAPI void
@@ -37,7 +36,6 @@ evas_common_font_shutdown(void)
 
    LKD(lock_font_draw);
    LKD(lock_bidi);
-   LKD(lock_ot);
 
    evas_common_font_load_shutdown();
    evas_common_font_cache_set(0);
index cc68578..57940ee 100644 (file)
@@ -1,11 +1,9 @@
 #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)
@@ -14,15 +12,13 @@ extern LK(lock_ot); // for harfbuzz calls
 
 #  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);
@@ -32,20 +28,5 @@ void evas_common_font_int_use_increase(int size);
 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 */
index ae73e60..e570f69 100644 (file)
@@ -1,7 +1,6 @@
 #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,
@@ -37,7 +36,7 @@ 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;
@@ -58,70 +57,267 @@ evas_common_font_query_kerning(RGBA_Font_Int* fi,
    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
@@ -130,235 +326,164 @@ evas_common_font_query_advance(RGBA_Font *fn, const Eina_Unicode *text __UNUSED_
  */
 
 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;
 }
 
@@ -370,114 +495,266 @@ end:
  */
 
 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;
 }
-
index 6ac74a3..7330910 100644 (file)
@@ -341,7 +341,7 @@ _calc_spans(RGBA_Map_Point *p, Line *spans, int ystart, int yend, int cx, int cy
 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
index 1cb50b6..cba9c66 100644 (file)
@@ -113,8 +113,7 @@ _op_blend_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
                //** 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"
index 5b8bd60..e4afbbb 100644 (file)
@@ -3,47 +3,47 @@
 #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
index bda94ee..fbe546b 100644 (file)
@@ -1177,7 +1177,9 @@ evas_common_pipe_op_text_free(RGBA_Pipe_Op *op)
 #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);
 }
@@ -1228,7 +1230,7 @@ evas_common_pipe_text_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Threa
 
 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;
 
@@ -1238,8 +1240,9 @@ evas_common_pipe_text_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
    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]++;
@@ -1440,23 +1443,23 @@ evas_common_pipe_image_draw(RGBA_Image *src, RGBA_Image *dst,
 }
 
 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)
      {
@@ -1469,22 +1472,22 @@ evas_common_pipe_map_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread
        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;
@@ -1503,9 +1506,8 @@ evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst,
    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]++;
@@ -1513,10 +1515,10 @@ evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst,
 #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
@@ -1534,7 +1536,7 @@ evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst,
 }
 
 static void
-evas_common_pipe_map_render(RGBA_Image *root)
+evas_common_pipe_map4_render(RGBA_Image *root)
 {
   RGBA_Pipe *p;
   int i;
@@ -1544,15 +1546,15 @@ evas_common_pipe_map_render(RGBA_Image *root)
     {
       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);
            }
        }
     }
@@ -1707,7 +1709,7 @@ evas_common_pipe_image_load(RGBA_Image *im)
 }
 
 EAPI void
-evas_common_pipe_map_begin(RGBA_Image *root)
+evas_common_pipe_map4_begin(RGBA_Image *root)
 {
   if (!evas_common_pipe_init())
     {
@@ -1725,7 +1727,7 @@ evas_common_pipe_map_begin(RGBA_Image *root)
 
   evas_common_pipe_image_load_do();
 
-  evas_common_pipe_map_render(root);
+  evas_common_pipe_map4_render(root);
 }
 
 #endif
index df7f673..de033f0 100644 (file)
@@ -1,6 +1,6 @@
 #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
@@ -92,12 +92,12 @@ EAPI void evas_common_pipe_free(RGBA_Image *im);
 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);
 
index b8f392b..00d3243 100644 (file)
@@ -2,24 +2,24 @@
 #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;
 
@@ -27,16 +27,14 @@ scale_calc_y_points(DATA32** p, DATA32 *src, int sw, int sh, int dh, int cy, int
    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;
 
@@ -44,16 +42,14 @@ scale_calc_x_points(int *p, int sw, int dw, int cx, int cw)
    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;
 
@@ -63,11 +59,8 @@ scale_calc_a_points(int *p, int s, int d, int c, int cc)
        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;
          }
      }
@@ -81,11 +74,11 @@ scale_calc_a_points(int *p, int s, int d, int c, int cc)
        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
index 599bfda..d119411 100644 (file)
@@ -136,12 +136,6 @@ SCALE_FUNC(RGBA_Image *src, RGBA_Image *dst,
      }
    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;
index 357eb32..859f2f3 100644 (file)
@@ -8,21 +8,20 @@
    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"
      }
index 50b2e5c..466135f 100644 (file)
    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)
@@ -97,8 +97,8 @@
             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;
               }
          }
      }
index ab0c74e..bfe47d7 100644 (file)
    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++;
               }
          }
index 4c5448e..a6cf34c 100644 (file)
    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)
@@ -98,8 +98,8 @@
             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;
               }
          }
      }
index 4e37f1a..a70ea64 100644 (file)
@@ -246,7 +246,7 @@ static const struct {
 #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
index 6e9cb6d..b975cbf 100644 (file)
@@ -49,6 +49,10 @@ extern EAPI int _evas_log_dom_global;
 #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__)
@@ -660,7 +664,6 @@ struct _RGBA_Draw_Context
       DATA32 col;
    } col;
    struct RGBA_Draw_Context_clip {
-      DATA8  *mask;
       int    x, y, w, h;
       Eina_Bool use : 1;
    } clip;
@@ -689,7 +692,7 @@ struct _RGBA_Draw_Context
 
 #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
 {
@@ -711,7 +714,7 @@ 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;
@@ -722,10 +725,9 @@ struct _RGBA_Pipe_Op
       struct {
         RGBA_Image         *src;
         RGBA_Map_Point     *p;
-        int                 npoints;
         int                 smooth;
         int                 level;
-      } map;
+      } map4;
    } op;
 };
 
@@ -891,8 +893,6 @@ struct _RGBA_Font_Int
    unsigned char    inuse : 1;
 };
 
-#include "../engines/common/evas_font_ot.h"
-
 struct _RGBA_Font_Source
 {
    const char       *name;
@@ -905,11 +905,6 @@ struct _RGBA_Font_Source
       int            orig_upem;
       FT_Face        face;
    } ft;
-#ifdef OT_SUPPORT
-   struct {
-      void *face;
-   } hb;
-#endif
 };
 
 struct _RGBA_Font_Glyph
index 73f3f42..653125f 100644 (file)
@@ -90,8 +90,8 @@ evas_event_passes_through(Evas_Object *obj)
 
 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))
index 6103bfd..9745bc4 100644 (file)
@@ -11,9 +11,7 @@
 
 #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. */
@@ -55,7 +53,6 @@ typedef struct _Evas_Post_Callback          Evas_Post_Callback;
 #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
@@ -653,13 +650,13 @@ struct _Evas_Func
    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);
@@ -674,7 +671,7 @@ struct _Evas_Func
 
    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);
@@ -682,8 +679,6 @@ struct _Evas_Func
 
    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
@@ -843,7 +838,7 @@ Eina_Bool evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y, Eva
 /****************************************************************************/
 /*****************************************/
 /********************/
-#define MPOOL 1
+//#define MPOOL 1
 
 #ifdef MPOOL 
 typedef struct _Evas_Mempool Evas_Mempool;
index 0277db4..851d905 100644 (file)
@@ -306,7 +306,7 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int
 
    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);
index 0f9ea14..528a273 100644 (file)
@@ -89,12 +89,10 @@ 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, 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);
@@ -213,14 +211,9 @@ static Evas_Func eng_func =
      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 *
@@ -1238,7 +1231,7 @@ 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)
+eng_font_inset_get(void *data, void *font, char *text)
 {
    Render_Engine *re;
 
@@ -1280,27 +1273,6 @@ eng_font_char_coords_get(void *data, void *font, char *text, int pos, int *cx, i
 }
 
 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;
index 2ed59bc..be5938b 100644 (file)
@@ -388,7 +388,7 @@ eng_image_scale_hint_get(void *data __UNUSED__, void *image)
 }
 
 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;
@@ -469,7 +469,7 @@ module_open(Evas_Module *em)
    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);
 
index 4f960cd..cecc69c 100644 (file)
@@ -1037,7 +1037,7 @@ evas_engine_dfb_output_idle_flush(void *data)
  * 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;
@@ -1551,7 +1551,7 @@ evas_engine_dfb_image_draw(void *data, void *context, void *surface, void *image
 #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;
@@ -1570,7 +1570,7 @@ evas_engine_dfb_image_map_draw(void *data __UNUSED__, void *context, void *surfa
    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);
@@ -1718,7 +1718,7 @@ module_open(Evas_Module *em)
    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);
 
index 7681b00..b2b8b58 100644 (file)
@@ -223,7 +223,7 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int
 
    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);
index d83bdd1..defaa1a 100644 (file)
@@ -126,8 +126,6 @@ struct _Evas_GL_Shared
 {
    Eina_List          *images;
    
-   int                 images_size;
-   
    struct {
       GLint max_texture_units;
       GLint max_texture_size;
@@ -358,7 +356,6 @@ struct _Evas_GL_Image
    } native;
 
    int scale_hint, content_hint;
-   int csize;
    
    unsigned char    dirty : 1;
    unsigned char    cached : 1;
@@ -451,15 +448,14 @@ void             evas_gl_common_context_yuv_push(Evas_GL_Context *gc,
                                                  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,
@@ -484,8 +480,6 @@ void              evas_gl_common_texture_yuv_update(Evas_GL_Texture *tex, DATA8
 
 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);
@@ -495,11 +489,10 @@ void              evas_gl_common_image_native_enable(Evas_GL_Image *im);
 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);
index 5eceb64..d7ad88a 100644 (file)
@@ -2185,14 +2185,13 @@ again:
 }
 
 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 };
@@ -2206,11 +2205,6 @@ evas_gl_common_context_image_map_push(Evas_GL_Context *gc,
 
    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;
@@ -2526,7 +2520,7 @@ again:
    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);
index e119df9..afed2a7 100644 (file)
@@ -20,82 +20,6 @@ evas_gl_common_image_all_unload(Evas_GL_Context *gc)
      }
 }
 
-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)
 {
@@ -106,17 +30,14 @@ evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key
    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;
          }
@@ -131,6 +52,7 @@ evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key
    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;
@@ -157,7 +79,7 @@ evas_gl_common_image_new_from_data(Evas_GL_Context *gc, unsigned int w, unsigned
                {
                   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;
                }
           }
@@ -308,8 +230,6 @@ evas_gl_common_image_native_enable(Evas_GL_Image *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;
      }
@@ -382,8 +302,6 @@ evas_gl_common_image_content_hint_set(Evas_GL_Image *im, int hint)
         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;
           }
@@ -425,12 +343,6 @@ evas_gl_common_image_content_hint_set(Evas_GL_Image *im, int hint)
 }
 
 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--;
@@ -443,10 +355,7 @@ evas_gl_common_image_free(Evas_GL_Image *im)
      {
        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);
@@ -553,8 +462,8 @@ _evas_gl_common_image_update(Evas_GL_Context *gc, Evas_GL_Image *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;
@@ -583,10 +492,10 @@ evas_gl_common_image_map_draw(Evas_GL_Context *gc, Evas_GL_Image *im,
    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
index 0810472..e03b2d9 100644 (file)
@@ -847,7 +847,6 @@ evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im)
    glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
    GLERR(__FUNCTION__, __FILE__, __LINE__, "");
 
-//   printf("tex upload %ix%i\n", im->cache_entry.w, im->cache_entry.h);
    //  +-+
    //  +-+
    // 
index 43e349d..5f40812 100644 (file)
@@ -729,7 +729,7 @@ eng_image_scale_hint_get(void *data __UNUSED__, void *image __UNUSED__)
 }
 
 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
 }
@@ -748,7 +748,7 @@ eng_image_map_surface_free(void *data __UNUSED__, void *surface)
 }
 
 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;
 
@@ -853,7 +853,7 @@ module_open(Evas_Module *em)
    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);
    
index fd4f817..ec8edbf 100644 (file)
@@ -785,14 +785,14 @@ eng_image_scale_hint_set(void *data __UNUSED__, void *image, int hint)
 }
 
 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 *
@@ -817,7 +817,7 @@ eng_image_scale_hint_get(void *data __UNUSED__, void *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;
 
@@ -922,7 +922,7 @@ module_open(Evas_Module *em)
    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);
    
index 8523df4..6ea8256 100644 (file)
@@ -1225,13 +1225,13 @@ eng_image_native_set(void *data, void *image, void *native)
       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)
@@ -1762,11 +1762,6 @@ eng_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *im
    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) &&
@@ -1792,13 +1787,15 @@ eng_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *im
         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);
      }
 }
 
@@ -1832,42 +1829,6 @@ eng_image_content_hint_get(void *data __UNUSED__, void *image)
 }
 
 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;
@@ -1880,7 +1841,7 @@ eng_image_stride_get(void *data __UNUSED__, void *image, int *stride)
 }
 
 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;
 
@@ -2002,10 +1963,6 @@ module_open(Evas_Module *em)
    
    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);
index 6ed0c25..28508ff 100644 (file)
@@ -1026,7 +1026,7 @@ 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 *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;
@@ -1050,34 +1050,34 @@ eng_font_string_size_get(void *data, void *font, const char *text, const Evas_Te
 }
 
 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;
 
@@ -1096,32 +1096,8 @@ eng_font_char_coords_get(void *data, void *font, const char *text, const Evas_Te
    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;
@@ -1133,8 +1109,8 @@ eng_font_char_at_coords_get(void *data, void *font, const char *text, const Evas
    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;
@@ -1160,7 +1136,7 @@ eng_font_hinting_can_hint(void *data, int hinting)
 }
 
 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;
@@ -1321,7 +1297,7 @@ module_open(Evas_Module *em)
    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 */
index c1a1123..3254f75 100644 (file)
@@ -75,15 +75,13 @@ static int eng_font_ascent_get(void *data, void *font);
 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);
 
index fd657d9..86855ab 100644 (file)
@@ -505,76 +505,55 @@ eng_font_max_descent_get(void *data __UNUSED__, void *font)
 }
 
 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;
@@ -587,7 +566,7 @@ eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, i
                                         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,
@@ -740,13 +719,11 @@ static Evas_Func func =
      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 */
 };
 
index e4cf501..3166107 100644 (file)
@@ -816,7 +816,7 @@ evas_engine_sdl16_image_draw(void *data __UNUSED__, void *context, void *surface
 }
 
 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__)
 {
 }
 
@@ -873,7 +873,7 @@ evas_engine_sdl16_image_format_get(void *data __UNUSED__, void *image __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;
@@ -1074,7 +1074,7 @@ module_open(Evas_Module *em)
    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);
index bc8b933..a9462d2 100644 (file)
@@ -561,84 +561,62 @@ eng_font_max_descent_get(void *data __UNUSED__, void *font)
 }
 
 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);
 }
 
@@ -786,13 +764,11 @@ static Evas_Func func = {
    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 */
 };
 
index 5bfc87f..7bcfdf9 100644 (file)
@@ -287,7 +287,7 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int
 
    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);
index 414e880..ba80eb5 100644 (file)
@@ -293,7 +293,7 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int
 
    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);
index 2ff188e..f2bd395 100644 (file)
@@ -604,7 +604,7 @@ eng_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *im
    if (npoints > 4)
      {
         eng_image_map_draw(data, context, surface, image, npoints - 2, p + 2,
-                           smooth, level);
+                       smooth, level);
      }
 }
 
@@ -725,76 +725,55 @@ eng_font_max_descent_get(void *data __UNUSED__, void *font)
 }
 
 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)
@@ -802,11 +781,11 @@ eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, i
         && 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();
      }
 }
@@ -814,12 +793,7 @@ eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, i
 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
@@ -969,9 +943,7 @@ static Evas_Func func =
      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 */
 };
 
index 1d84d57..a291adc 100644 (file)
@@ -237,7 +237,7 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int
 
    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);
index 7c6f2b5..d7d9e22 100644 (file)
@@ -618,7 +618,7 @@ evas_engine_sdl_image_draw(void *data, void *context, void *surface, void *image
 }
 
 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;
@@ -641,8 +641,8 @@ evas_engine_sdl_image_map_draw(void *data __UNUSED__, void *context, void *surfa
        _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)
@@ -738,7 +738,7 @@ evas_engine_sdl_image_format_get(void *data __UNUSED__, void *image __UNUSED__)
 }
 
 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;
@@ -903,7 +903,7 @@ static int module_open(Evas_Module *em)
    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);
index aff3469..722f5f3 100644 (file)
@@ -736,7 +736,7 @@ eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int
 
    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
index b7efa97..b16ebdd 100644 (file)
@@ -1172,7 +1172,7 @@ eng_image_cache_get(void *data)
 }
 
 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;
@@ -1286,7 +1286,7 @@ module_open(Evas_Module *em)
    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);
    
index a06d807..46a726a 100644 (file)
@@ -681,34 +681,32 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key
                     {
                        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
@@ -811,19 +809,17 @@ evas_image_load_file_data_bmp(Image_Entry *ie, const char *file, const char *key
                     {
                        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
index 393d6da..1c7ce4e 100644 (file)
@@ -16,126 +16,119 @@ static Eina_Bool evas_image_load_file_data_wbmp(Image_Entry *ie, const char *fil
 
 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
index 7d86faa..63c8fd9 100644 (file)
@@ -11,7 +11,7 @@ AM_CPPFLAGS= \
 
 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)
index 27d48e2..1ddb0bb 100644 (file)
@@ -24,7 +24,7 @@ static void
 _JPEGFatalErrorHandler(j_common_ptr cinfo)
 {
    emptr errmgr;
-
+   
    errmgr = (emptr) cinfo->err;
    longjmp(errmgr->setjmp_buffer, 1);
    return;
@@ -34,7 +34,7 @@ static void
 _JPEGErrorHandler(j_common_ptr cinfo __UNUSED__)
 {
 /*    emptr errmgr; */
-
+   
 /*    errmgr = (emptr) cinfo->err; */
    return;
 }
@@ -43,7 +43,7 @@ static void
 _JPEGErrorHandler2(j_common_ptr cinfo __UNUSED__, int msg_level __UNUSED__)
 {
 /*    emptr errmgr; */
-
+   
 /*    errmgr = (emptr) cinfo->err; */
    return;
 }
@@ -61,7 +61,7 @@ save_image_jpeg(RGBA_Image *im, const char *file, int quality)
 
    if (!im || !im->image.data || !file)
       return 0;
-
+   
    buf = alloca(im->cache_entry.w * 3 * sizeof(DATA8));
    f = fopen(file, "wb");
    if (!f)
@@ -90,7 +90,7 @@ save_image_jpeg(RGBA_Image *im, const char *file, int quality)
    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;
@@ -142,3 +142,4 @@ EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_SAVER, image_saver, jpeg);
 #ifndef EVAS_STATIC_BUILD_JPEG
 EVAS_EINA_MODULE_DEFINE(image_saver, jpeg);
 #endif
+
index decc14d..f6dcb4b 100644 (file)
@@ -66,13 +66,10 @@ save_image_png(RGBA_Image *im, const char *file, int compress, int interlace)
    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)
      {
@@ -87,7 +84,7 @@ save_image_png(RGBA_Image *im, const char *file, int compress, int interlace)
        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);
@@ -100,7 +97,7 @@ save_image_png(RGBA_Image *im, const char *file, int compress, int interlace)
        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));
      }
@@ -115,10 +112,6 @@ save_image_png(RGBA_Image *im, const char *file, int compress, int interlace)
    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;
diff --git a/win32/common/config.h b/win32/common/config.h
new file mode 100644 (file)
index 0000000..5a94303
--- /dev/null
@@ -0,0 +1,328 @@
+/* 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
diff --git a/win32/patch/evas.diff b/win32/patch/evas.diff
new file mode 100644 (file)
index 0000000..e827ce3
--- /dev/null
@@ -0,0 +1,70 @@
+--- ../../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
diff --git a/win32/start.bat b/win32/start.bat
new file mode 100644 (file)
index 0000000..4e716ed
--- /dev/null
@@ -0,0 +1,99 @@
+@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
diff --git a/win32/vs8/engine_buffer.vcproj b/win32/vs8/engine_buffer.vcproj
new file mode 100644 (file)
index 0000000..b0acbaf
--- /dev/null
@@ -0,0 +1,227 @@
+<?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
diff --git a/win32/vs8/engine_direct3d.vcproj b/win32/vs8/engine_direct3d.vcproj
new file mode 100644 (file)
index 0000000..48556bb
--- /dev/null
@@ -0,0 +1,323 @@
+<?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
diff --git a/win32/vs8/engine_gl_glew.vcproj b/win32/vs8/engine_gl_glew.vcproj
new file mode 100644 (file)
index 0000000..690393b
--- /dev/null
@@ -0,0 +1,275 @@
+<?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
diff --git a/win32/vs8/engine_software_ddraw.vcproj b/win32/vs8/engine_software_ddraw.vcproj
new file mode 100644 (file)
index 0000000..29e43a0
--- /dev/null
@@ -0,0 +1,235 @@
+<?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
diff --git a/win32/vs8/engine_software_gdi.vcproj b/win32/vs8/engine_software_gdi.vcproj
new file mode 100644 (file)
index 0000000..1fae64f
--- /dev/null
@@ -0,0 +1,235 @@
+<?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
diff --git a/win32/vs8/engine_software_generic.vcproj b/win32/vs8/engine_software_generic.vcproj
new file mode 100644 (file)
index 0000000..f6bd243
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/evas.sln b/win32/vs8/evas.sln
new file mode 100644 (file)
index 0000000..90a1801
--- /dev/null
@@ -0,0 +1,47 @@
+\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
diff --git a/win32/vs8/libevas.vcproj b/win32/vs8/libevas.vcproj
new file mode 100644 (file)
index 0000000..ddc2e27
--- /dev/null
@@ -0,0 +1,949 @@
+<?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
diff --git a/win32/vs8/loader_eet.vcproj b/win32/vs8/loader_eet.vcproj
new file mode 100644 (file)
index 0000000..686bcca
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/loader_gif.vcproj b/win32/vs8/loader_gif.vcproj
new file mode 100644 (file)
index 0000000..7be2861
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/loader_jpeg.vcproj b/win32/vs8/loader_jpeg.vcproj
new file mode 100644 (file)
index 0000000..581e2ce
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/loader_pmaps.vcproj b/win32/vs8/loader_pmaps.vcproj
new file mode 100644 (file)
index 0000000..c18f46d
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/loader_png.vcproj b/win32/vs8/loader_png.vcproj
new file mode 100644 (file)
index 0000000..389a005
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/loader_tiff.vcproj b/win32/vs8/loader_tiff.vcproj
new file mode 100644 (file)
index 0000000..0dd15a2
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/loader_xpm.vcproj b/win32/vs8/loader_xpm.vcproj
new file mode 100644 (file)
index 0000000..26b881f
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/modules.sln b/win32/vs8/modules.sln
new file mode 100644 (file)
index 0000000..e4fabf2
--- /dev/null
@@ -0,0 +1,110 @@
+\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
diff --git a/win32/vs8/saver_eet.vcproj b/win32/vs8/saver_eet.vcproj
new file mode 100644 (file)
index 0000000..aaa46b8
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/saver_png.vcproj b/win32/vs8/saver_png.vcproj
new file mode 100644 (file)
index 0000000..a2e866a
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/saver_tiff.vcproj b/win32/vs8/saver_tiff.vcproj
new file mode 100644 (file)
index 0000000..531ec2c
--- /dev/null
@@ -0,0 +1,215 @@
+<?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
diff --git a/win32/vs8/start.bat b/win32/vs8/start.bat
new file mode 100644 (file)
index 0000000..5f6b049
--- /dev/null
@@ -0,0 +1,35 @@
+@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
diff --git a/win32/vs8/start_modules.bat b/win32/vs8/start_modules.bat
new file mode 100644 (file)
index 0000000..067d810
--- /dev/null
@@ -0,0 +1,35 @@
+@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
diff --git a/win32/vs9/engine_buffer.vcproj b/win32/vs9/engine_buffer.vcproj
new file mode 100644 (file)
index 0000000..44512e5
--- /dev/null
@@ -0,0 +1,226 @@
+<?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
diff --git a/win32/vs9/engine_software_gdi.vcproj b/win32/vs9/engine_software_gdi.vcproj
new file mode 100644 (file)
index 0000000..7a61467
--- /dev/null
@@ -0,0 +1,234 @@
+<?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
diff --git a/win32/vs9/engine_software_generic.vcproj b/win32/vs9/engine_software_generic.vcproj
new file mode 100644 (file)
index 0000000..1c5766a
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/evas.sln b/win32/vs9/evas.sln
new file mode 100644 (file)
index 0000000..24020bc
--- /dev/null
@@ -0,0 +1,132 @@
+\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
diff --git a/win32/vs9/libevas.vcproj b/win32/vs9/libevas.vcproj
new file mode 100644 (file)
index 0000000..918d830
--- /dev/null
@@ -0,0 +1,936 @@
+<?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
diff --git a/win32/vs9/loader_eet.vcproj b/win32/vs9/loader_eet.vcproj
new file mode 100644 (file)
index 0000000..d132d04
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/loader_gif.vcproj b/win32/vs9/loader_gif.vcproj
new file mode 100644 (file)
index 0000000..299c7d5
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/loader_jpeg.vcproj b/win32/vs9/loader_jpeg.vcproj
new file mode 100644 (file)
index 0000000..21bfbe6
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/loader_pmaps.vcproj b/win32/vs9/loader_pmaps.vcproj
new file mode 100644 (file)
index 0000000..9ed557a
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/loader_png.vcproj b/win32/vs9/loader_png.vcproj
new file mode 100644 (file)
index 0000000..f1223e7
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/loader_tiff.vcproj b/win32/vs9/loader_tiff.vcproj
new file mode 100644 (file)
index 0000000..db188ff
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/loader_xpm.vcproj b/win32/vs9/loader_xpm.vcproj
new file mode 100644 (file)
index 0000000..4e02946
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/saver_eet.vcproj b/win32/vs9/saver_eet.vcproj
new file mode 100644 (file)
index 0000000..6b84c97
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/saver_png.vcproj b/win32/vs9/saver_png.vcproj
new file mode 100644 (file)
index 0000000..55cf49e
--- /dev/null
@@ -0,0 +1,214 @@
+<?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
diff --git a/win32/vs9/saver_tiff.vcproj b/win32/vs9/saver_tiff.vcproj
new file mode 100644 (file)
index 0000000..de0d8b6
--- /dev/null
@@ -0,0 +1,214 @@
+<?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