From: Alexander Kerner <alexander.kerner@googlemail.com>
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 28 Jul 2010 00:16:06 +0000 (00:16 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 28 Jul 2010 00:16:06 +0000 (00:16 +0000)
Subject: [E-devel] 8bpp xcb evas engine

Hi all,

I've implemented the 8bpp grayscale evas engine. It is based on the 16bpp
engine. It would be nice if someone could review the code and maybe commit
into svn. The patches against evas and ecore are attached.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@50560 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

Makefile.am
configure.ac
m4/evas_check_engine.m4
src/lib/Evas.h
src/lib/Makefile.am
src/lib/engines/Makefile.am
src/lib/file/evas_module.c
src/lib/include/Makefile.am
src/modules/engines/Makefile.am

index 1e000f4..1114352 100644 (file)
@@ -30,6 +30,7 @@ evas-software-buffer.pc \
 evas-software-qtopia.pc \
 evas-software-x11.pc \
 evas-software-16-x11.pc \
+evas-software-8-x11.pc \
 evas-xrender-x11.pc \
 evas-xrender-xcb.pc \
 evas-software-gdi.pc \
@@ -69,6 +70,7 @@ evas-software-buffer.pc.in \
 evas-software-qtopia.pc.in \
 evas-software-x11.pc.in \
 evas-software-16-x11.pc.in \
+evas-software-8-x11.pc.in \
 evas-xrender-x11.pc.in \
 evas-xrender-xcb.pc.in \
 evas-software-gdi.pc.in \
@@ -90,6 +92,10 @@ if BUILD_ENGINE_SOFTWARE_16_X11
 pkgconfig_DATA += evas-software-16-x11.pc
 endif
 
+if BUILD_ENGINE_SOFTWARE_8_X11
+pkgconfig_DATA += evas-software-8-x11.pc
+endif
+
 if BUILD_ENGINE_DIRECTFB
 pkgconfig_DATA += evas-directfb.pc
 endif
index f76c784..ce24f37 100644 (file)
@@ -106,6 +106,7 @@ want_evas_engine_software_sdl="no"
 want_evas_engine_fb="no"
 want_evas_engine_directfb="no"
 want_evas_engine_software_qtopia="no"
+want_evas_engine_software_8_x11="no"
 want_evas_engine_software_16_x11="no"
 want_evas_engine_software_16_ddraw="no"
 want_evas_engine_software_16_wince="no"
@@ -148,6 +149,7 @@ case "$host_os" in
    *)
       want_evas_engine_software_xlib="auto"
       want_evas_engine_xrender_x11="auto"
+      want_evas_engine_software_8_x11="auto"
       want_evas_engine_software_16_x11="auto"
       ;;
 esac
@@ -521,6 +523,8 @@ EVAS_CHECK_ENGINE([directfb], [${want_evas_engine_directfb}], [no], [DirectFB])
 # disable cairo engine for the release
 #EVAS_CHECK_ENGINE([software-qtopia], [${want_evas_engine_software_qtopia}], [no], [Qtopia])
 
+EVAS_CHECK_ENGINE([software-8-x11], [${want_evas_engine_software_8_x11}], [yes], [Software X11 8 bits grayscale])
+
 EVAS_CHECK_ENGINE([software-16-x11], [${want_evas_engine_software_16_x11}], [yes], [Software X11 16 bits])
 
 EVAS_CHECK_ENGINE([software-16-ddraw], [${want_evas_engine_software_16_ddraw}], [no], [Software DirectDraw 16 bits])
@@ -659,6 +663,28 @@ if test "x${have_static_software_16}" = "xyes"; then
    AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_16, [1], [Build software 16 engine as part of libevas])
 fi
 
+# if software 8 x11 is enabled - build software_8 (the generic 8bit
+# engine).
+have_evas_engine_software_8="no"
+if test "x$have_evas_engine_software_8_x11" = "xyes" -o "x$have_evas_engine_software_8_x11" = "xstatic"; then
+   have_evas_engine_software_8="yes"
+fi
+AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_8, test "x$have_evas_engine_software_8" = "xyes")
+
+# if software 8 need to be build as part of libevas.so
+have_static_software_8="no"
+AC_ARG_ENABLE([static-software-8],
+   [AC_HELP_STRING([--enable-static-software-8], [Build software 8 engine as part of libevas])],
+   [have_static_software_8=${enableval}]
+)
+AC_MSG_CHECKING([Whether to build software 8 engine as part of libevas])
+AC_MSG_RESULT([${have_static_software_8}])
+
+AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_8, test "x${have_static_software_8}" = "xyes")
+if test "x${have_static_software_8}" = "xyes"; then
+   AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_8, [1], [Build software 8 engine as part of libevas])
+fi
+
 #####################################################################
 ## Image loaders
 
@@ -1409,6 +1435,7 @@ evas-opengl-sdl.pc
 evas-quartz.pc
 evas-software-buffer.pc
 evas-software-x11.pc
+evas-software-8-x11.pc
 evas-software-16-x11.pc
 evas-xrender-x11.pc
 evas-xrender-xcb.pc
@@ -1437,6 +1464,7 @@ src/lib/engines/common/evas_op_copy/Makefile
 src/lib/engines/common/evas_op_mask/Makefile
 src/lib/engines/common/evas_op_mul/Makefile
 src/lib/engines/common/evas_op_sub/Makefile
+src/lib/engines/common_8/Makefile
 src/lib/engines/common_16/Makefile
 src/modules/Makefile
 src/modules/engines/Makefile
@@ -1456,6 +1484,8 @@ src/modules/engines/gl_sdl/Makefile
 src/modules/engines/quartz/Makefile
 src/modules/engines/xrender_x11/Makefile
 src/modules/engines/software_sdl/Makefile
+src/modules/engines/software_8/Makefile
+src/modules/engines/software_8_x11/Makefile
 src/modules/engines/software_16/Makefile
 src/modules/engines/software_16_x11/Makefile
 src/modules/engines/software_16_ddraw/Makefile
@@ -1530,6 +1560,7 @@ fi
 echo "  Software Framebuffer.......: $have_evas_engine_fb"
 echo "  DirectFB...................: $have_evas_engine_directfb"
 #echo "  Software Qtopia............: $have_evas_engine_software_qtopia"
+echo "  Software 8bit grayscale....: $have_evas_engine_software_8"
 echo "  Software 16bit ............: $have_evas_engine_software_16"
 echo "  Software 16bit X11.........: $have_evas_engine_software_16_x11"
 echo "  Software 16bit Directdraw..: $have_evas_engine_software_16_ddraw"
index 0454951..54ce5d2 100644 (file)
@@ -248,6 +248,8 @@ PKG_CHECK_MODULES([XCB],
     requirement="xcb xcb-shm xcb-image pixman-1"
     evas_engine_[]$1[]_cflags="${XCB_CFLAGS}"
     evas_engine_[]$1[]_libs="${XCB_LIBS}"
+   ],[
+    have_dep="no"
    ]
 )
 
@@ -283,6 +285,8 @@ PKG_CHECK_MODULES([XCBRENDER],
     requirement="xcb xcb-shm xcb-render xcb-image pixman-1"
     evas_engine_[]$1[]_cflags="${XCBRENDER_CFLAGS}"
     evas_engine_[]$1[]_libs="${XCBRENDER_LIBS}"
+   ],[
+    have_dep="no"
    ]
 )
 
@@ -655,6 +659,42 @@ fi
 
 ])
 
+dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_8_X11(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+
+AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_8_X11],
+[
+
+have_dep="no"
+evas_engine_[]$1[]_cflags=""
+evas_engine_[]$1[]_libs=""
+
+PKG_CHECK_MODULES([XCB],
+   [xcb xcb-shm xcb-image >= 0.2.1 pixman-1],
+   [
+    have_dep="yes"
+    requirement="xcb xcb-shm xcb-image pixman-1"
+    evas_engine_[]$1[]_cflags="${XCB_CFLAGS}"
+    evas_engine_[]$1[]_libs="${XCB_LIBS}"
+   ],[
+    have_dep="no"
+   ]
+)
+
+AC_SUBST([evas_engine_$1_cflags])
+AC_SUBST([evas_engine_$1_libs])
+
+if test "x$3" = "xstatic" ; then
+   requirement_evas="${requirement} ${requirement_evas}"
+fi
+
+if test "x${have_dep}" = "xyes" ; then
+  m4_default([$4], [:])
+else
+  m4_default([$5], [:])
+fi
+
+])
+
 dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_X11(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_16_X11],
 [
index 06e78b3..7a56156 100644 (file)
@@ -151,7 +151,8 @@ typedef enum _Evas_Colorspace
      /* these are not currently supported - but planned for the future */
    EVAS_COLORSPACE_YCBCR422P601_PL, /**< YCbCr 4:2:2 Planar, ITU.BT-601 specifications. The data poitned to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */
    EVAS_COLORSPACE_YCBCR422P709_PL,/**< YCbCr 4:2:2 Planar, ITU.BT-709 specifications. The data poitned to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */
-   EVAS_COLORSPACE_RGB565_A5P /**< 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */
+   EVAS_COLORSPACE_RGB565_A5P, /**< 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */
+   EVAS_COLORSPACE_GRY8 /**< 8bit grayscale */
 } Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */
 
 /**
index d80c8b8..94b0812 100644 (file)
@@ -67,6 +67,15 @@ SUBDIRS += ../modules/engines/software_16_x11/
 EVAS_STATIC_MODULE += ../modules/engines/software_16_x11/libevas_engine_software_16_x11.la
 EVAS_STATIC_LIBADD += @evas_engine_software_16_x11_libs@
 endif
+if EVAS_STATIC_BUILD_SOFTWARE_8
+SUBDIRS += ../modules/engines/software_8/
+EVAS_STATIC_MODULE += ../modules/engines/software_8/libevas_engine_software_8.la
+endif
+if EVAS_STATIC_BUILD_SOFTWARE_8_X11
+SUBDIRS += ../modules/engines/software_8_x11/
+EVAS_STATIC_MODULE += ../modules/engines/software_8_x11/libevas_engine_software_8_x11.la
+EVAS_STATIC_LIBADD += @evas_engine_software_8_x11_libs@
+endif
 if EVAS_STATIC_BUILD_SOFTWARE_SDL
 SUBDIRS += \
        ../modules/engines/software_16_sdl/ \
@@ -220,6 +229,13 @@ libevas_la_DEPENDENCIES += engines/common_16/libevas_engine_common_16.la
 
 endif
 
+if BUILD_ENGINE_SOFTWARE_8
+
+libevas_la_LIBADD += engines/common_8/libevas_engine_common_8.la
+libevas_la_DEPENDENCIES += engines/common_8/libevas_engine_common_8.la
+
+endif
+
 libevas_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@
 
 DIST_SUBDIRS = canvas cache cserve file engines imaging include
index 9d68875..0e7706c 100644 (file)
@@ -8,3 +8,9 @@ if BUILD_ENGINE_SOFTWARE_16
 SUBDIRS += common_16
 
 endif
+
+if BUILD_ENGINE_SOFTWARE_8
+
+SUBDIRS += common_8
+
+endif
index 9d8cfbc..957767a 100644 (file)
@@ -105,6 +105,8 @@ EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_ddraw);
 EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_sdl);
 EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_wince);
 EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_x11);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_8);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_8_x11);
 EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_ddraw);
 EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_gdi);
 EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_generic);
@@ -176,6 +178,12 @@ static const struct {
 #ifdef EVAS_STATIC_BUILD_SOFTWARE_16_GDI
   EVAS_EINA_STATIC_MODULE_USE(engine, software_gdi),
 #endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_8
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_8),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_8_X11
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_8_x11),
+#endif
 #ifdef EVAS_STATIC_BUILD_SOFTWARE_GENERIC
   EVAS_EINA_STATIC_MODULE_USE(engine, software_generic),
 #endif
index 1570bf4..5c986c2 100644 (file)
@@ -8,5 +8,6 @@ evas_options.h \
 evas_macros.h \
 evas_mmx.h \
 evas_common.h \
+evas_common_soft8.h \
 evas_common_soft16.h \
 evas_blend_ops.h
index 1db0e21..bdc9ba1 100644 (file)
@@ -29,6 +29,12 @@ endif
 if !EVAS_STATIC_BUILD_QUARTZ
 SUBDIRS += quartz
 endif
+if !EVAS_STATIC_BUILD_SOFTWARE_8
+SUBDIRS += software_8
+endif
+if !EVAS_STATIC_BUILD_SOFTWARE_8_X11
+SUBDIRS += software_8_x11
+endif
 if !EVAS_STATIC_BUILD_SOFTWARE_16
 SUBDIRS += software_16
 endif