r3069 - in trunk/src/target/OM-2007.2/libraries/moko-gtk-engine: . src
chris at sita.openmoko.org
chris at sita.openmoko.org
Tue Oct 2 12:05:15 CEST 2007
Author: chris
Date: 2007-10-02 12:05:14 +0200 (Tue, 02 Oct 2007)
New Revision: 3069
Modified:
trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/ChangeLog
trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/ltmain.sh
trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/src/moko-draw.c
Log:
Add 16-bit dithering for gradients
Modified: trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/ChangeLog 2007-10-02 09:59:43 UTC (rev 3068)
+++ trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/ChangeLog 2007-10-02 10:05:14 UTC (rev 3069)
@@ -1,3 +1,8 @@
+2007-10-02 Chris Lord <chris at openedhand.com>
+
+ * src/moko-draw.c: (moko_dither16), (moko_gradient):
+ Add 16-bit dithering for gradients
+
2007-09-21 Thomas Wood <thomas at openedhand.com>
* data/gtkrc: Add some gradient and border options to styles
Modified: trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/ltmain.sh
===================================================================
--- trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/ltmain.sh 2007-10-02 09:59:43 UTC (rev 3068)
+++ trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/ltmain.sh 2007-10-02 10:05:14 UTC (rev 3069)
@@ -1,8 +1,8 @@
# ltmain.sh - Provide generalized library-building support services.
# NOTE: Changing this file will not affect anything until you rerun configure.
#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007 Free Software Foundation, Inc.
# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
#
# This program is free software; you can redistribute it and/or modify
@@ -43,8 +43,8 @@
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION=1.5.22
-TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
+VERSION="1.5.24 Debian 1.5.24-1ubuntu1"
+TIMESTAMP=" (1.1220.2.456 2007/06/24 02:25:32)"
# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -57,6 +57,8 @@
else
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
# Check that we have a working $echo.
if test "X$1" = X--no-reexec; then
@@ -114,10 +116,10 @@
for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
do
eval "if test \"\${$lt_var+set}\" = set; then
- save_$lt_var=\$$lt_var
- $lt_var=C
- export $lt_var
- fi"
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ fi"
done
# Make sure IFS has a sensible default
@@ -206,7 +208,13 @@
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
$EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
win32_nmres=`eval $NM -f posix -A $1 | \
- $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+ $SED -n -e '1,100{
+ / I /{
+ s,.*,import,
+ p
+ q
+ }
+ }'`
case $win32_nmres in
import*) win32_libid_type="x86 archive import";;
*) win32_libid_type="x86 archive static";;
@@ -340,11 +348,11 @@
my_xlib_u=$my_xlib
while :; do
case " $extracted_archives " in
- *" $my_xlib_u "*)
- extracted_serial=`expr $extracted_serial + 1`
- my_xlib_u=lt$extracted_serial-$my_xlib ;;
- *) break ;;
- esac
+ *" $my_xlib_u "*)
+ extracted_serial=`expr $extracted_serial + 1`
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
done
extracted_archives="$extracted_archives $my_xlib_u"
my_xdir="$my_gentop/$my_xlib_u"
@@ -474,11 +482,12 @@
;;
--version)
- $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
- $echo
- $echo "Copyright (C) 2005 Free Software Foundation, Inc."
- $echo "This is free software; see the source for copying conditions. There is NO"
- $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ echo "\
+$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
+
+Copyright (C) 2007 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
exit $?
;;
@@ -775,7 +784,7 @@
*.class) xform=class ;;
*.cpp) xform=cpp ;;
*.cxx) xform=cxx ;;
- *.f90) xform=f90 ;;
+ *.[fF][09]?) xform=[fF][09]. ;;
*.for) xform=for ;;
*.java) xform=java ;;
*.obj) xform=obj ;;
@@ -1160,8 +1169,8 @@
do
case $arg in
-all-static | -static | -static-libtool-libs)
- case $arg in
- -all-static)
+ case $arg in
+ -all-static)
if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
$echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
fi
@@ -1170,19 +1179,19 @@
fi
prefer_static_libs=yes
;;
- -static)
+ -static)
if test -z "$pic_flag" && test -n "$link_static_flag"; then
dlopen_self=$dlopen_self_static
fi
prefer_static_libs=built
;;
- -static-libtool-libs)
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- prefer_static_libs=yes
- ;;
- esac
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
build_libtool_libs=no
build_old_libs=yes
break
@@ -1630,7 +1639,7 @@
continue
;;
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
compiler_flags="$compiler_flags $arg"
compile_command="$compile_command $arg"
finalize_command="$finalize_command $arg"
@@ -1650,10 +1659,11 @@
# -m* pass through architecture-specific compiler args for GCC
# -m*, -t[45]*, -txscale* pass through architecture-specific
# compiler args for GCC
- # -pg pass through profiling flag for GCC
+ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+ # -F/path gives path to uninstalled frameworks, gcc on darwin
# @file GCC response files
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
- -t[45]*|-txscale*|@*)
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
@@ -1681,9 +1691,9 @@
-no-install)
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
# The PATH hackery in wrapper scripts is required on Windows
- # in order for the loader to find any dlls it needs.
+ # and Darwin in order for the loader to find any dlls it needs.
$echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
$echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
fast_install=no
@@ -2112,7 +2122,10 @@
case $pass in
dlopen) libs="$dlfiles" ;;
dlpreopen) libs="$dlprefiles" ;;
- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ link)
+ libs="$deplibs %DEPLIBS%"
+ test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+ ;;
esac
fi
if test "$pass" = dlopen; then
@@ -2124,7 +2137,7 @@
lib=
found=no
case $deplib in
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
@@ -2520,9 +2533,9 @@
if test "$linkmode,$pass" = "prog,link"; then
if test -n "$library_names" &&
- { { test "$prefer_static_libs" = no ||
- test "$prefer_static_libs,$installed" = "built,yes"; } ||
- test -z "$old_library"; }; then
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
# We need to hardcode the library path
if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
# Make sure the rpath contains only unique directories.
@@ -3229,10 +3242,16 @@
age="0"
;;
irix|nonstopux)
- current=`expr $number_major + $number_minor - 1`
+ current=`expr $number_major + $number_minor`
age="$number_minor"
revision="$number_minor"
+ lt_irix_increment=no
;;
+ *)
+ $echo "$modename: unknown library version type \`$version_type'" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+ ;;
esac
;;
no)
@@ -3290,7 +3309,8 @@
versuffix="$major.$age.$revision"
# Darwin ld doesn't like 0 for these options...
minor_current=`expr $current + 1`
- verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
;;
freebsd-aout)
@@ -3304,8 +3324,11 @@
;;
irix | nonstopux)
- major=`expr $current - $age + 1`
-
+ if test "X$lt_irix_increment" = "Xno"; then
+ major=`expr $current - $age`
+ else
+ major=`expr $current - $age + 1`
+ fi
case $version_type in
nonstopux) verstring_prefix=nonstopux ;;
*) verstring_prefix=sgi ;;
@@ -3442,11 +3465,11 @@
fi
# Eliminate all temporary directories.
-# for path in $notinst_path; do
-# lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
-# deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
-# dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
-# done
+ #for path in $notinst_path; do
+ # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+ # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+ # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+ #done
if test -n "$xrpath"; then
# If the user specified any rpath flags, then add them.
@@ -3547,7 +3570,7 @@
int main() { return 0; }
EOF
$rm conftest
- if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
ldd_output=`ldd conftest`
for i in $deplibs; do
name=`expr $i : '-l\(.*\)'`
@@ -3909,7 +3932,10 @@
test -n "$hardcode_libdirs"; then
libdir="$hardcode_libdirs"
if test -n "$hardcode_libdir_flag_spec_ld"; then
- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ case $archive_cmds in
+ *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
+ *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
+ esac
else
eval dep_rpath=\"$hardcode_libdir_flag_spec\"
fi
@@ -4275,7 +4301,7 @@
if test -n "$convenience"; then
if test -n "$whole_archive_flag_spec"; then
eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
- reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+ reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
else
gentop="$output_objdir/${obj}x"
generated="$generated $gentop"
@@ -5295,6 +5321,8 @@
else
case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
@@ -6391,8 +6419,10 @@
if test -f "$dir/$objdir/$dlname"; then
dir="$dir/$objdir"
else
- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
- exit $EXIT_FAILURE
+ if test ! -f "$dir/$dlname"; then
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
fi
;;
@@ -6458,12 +6488,11 @@
# Restore saved environment variables
for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
do
- eval "if test \"\${save_$lt_var+set}\" = set; then
- $lt_var=\$save_$lt_var; export $lt_var
- fi"
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ fi"
done
-
# Now prepare to actually exec the command.
exec_cmd="\$cmd$args"
else
Modified: trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/src/moko-draw.c
===================================================================
--- trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/src/moko-draw.c 2007-10-02 09:59:43 UTC (rev 3068)
+++ trunk/src/target/OM-2007.2/libraries/moko-gtk-engine/src/moko-draw.c 2007-10-02 10:05:14 UTC (rev 3069)
@@ -48,13 +48,57 @@
return new_gc;
}
+/*
+ * moko_dither16:
+ * @dither: An 18x1, 1-bit pixmap
+ * @gc: The gc that needs to be dithered
+ * @gcd: A gc for @dither
+ * @c1: The intended colour
+ * @i: Any random number
+ *
+ * Calculates and sets the dither colour and pattern for a 16-bit drawable,
+ * given a 32-bit colour.
+ */
static void
+moko_dither16 (GdkPixmap *dither, GdkGC *gc, GdkGC *gcd, GdkColor *c1, gint i)
+{
+ gint sum, x;
+ GdkColor c1d;
+ /* Assuming 565, so see how much of the colour is ignored and use that
+ * to decide on the dithering colour/pattern.
+ */
+ c1d.red = c1->red & 0x700;
+ c1d.green = c1->green & 0x300;
+ c1d.blue = c1->blue & 0x700;
+
+ sum = (c1d.red + c1d.green + c1d.blue) >> 8;
+ gdk_gc_set_function (gcd, GDK_SET);
+ gdk_draw_rectangle (dither, gcd, TRUE, 0, 0, 17, 1);
+ gdk_gc_set_function (gcd, GDK_CLEAR);
+ for (x = 0; x < sum; x ++) {
+ gdk_draw_point (dither, gcd, ((x+i) * 11) % 18, 0);
+ }
+
+ c1d.red = c1->red + 0x800;
+ c1d.green = c1->green + 0x400;
+ c1d.blue = c1->blue + 0x800;
+ if (c1d.red < c1->red) c1d.red = 0xFF00;
+ if (c1d.green < c1->green) c1d.green = 0xFF00;
+ if (c1d.blue < c1->blue) c1d.blue = 0xFF00;
+ gdk_gc_set_rgb_bg_color (gc, &c1d);
+
+ gdk_gc_set_fill (gc, GDK_OPAQUE_STIPPLED);
+ gdk_gc_set_stipple (gc, dither);
+}
+
+static void
moko_gradient (GtkStyle * style, GdkWindow * window, GtkStateType state_type,
gint x, gint y, gint width, gint height)
{
- gint i, rd, gd, bd; /* rd, gd, bd - change in r g and b for gradient */
- GdkColor c1, c2, c3, c4;
- GdkGC *gc;
+ gint i, rd, gd, bd, depth; /* rd, gd, bd - change in r g and b for gradient */
+ GdkColor c1, c2, c3, c4, c1d, c3d;
+ GdkPixmap *dither;
+ GdkGC *gc, *gcd;
gc = gdk_gc_new (window);
/* get the start and end colours */
@@ -67,6 +111,12 @@
gdk_gc_set_line_attributes (gc, 1, GDK_LINE_SOLID, GDK_CAP_BUTT,
GDK_JOIN_MITER);
+ /* Get the drawable pixel depth, for dithering */
+ depth = gdk_drawable_get_depth (window);
+ if (depth == 16) {
+ dither = gdk_pixmap_new (NULL, 18, 1, 1);
+ gcd = gdk_gc_new (dither);
+ }
/*** First Gradient ***/
/* calculate the delta values */
@@ -79,6 +129,10 @@
while (i < height / 2)
{
gdk_gc_set_rgb_fg_color (gc, &c1);
+ /* TODO: Handle 15-bit colour */
+ if (depth == 16) {
+ moko_dither16 (dither, gc, gcd, &c1, i);
+ }
gdk_draw_line (window, gc, x, y + i, x + width, y + i);
c1.red -= rd;
c1.blue -= bd;
@@ -95,6 +149,9 @@
i = height / 2;
while (i < height)
{
+ if (depth == 16) {
+ moko_dither16 (dither, gc, gcd, &c3, i);
+ }
gdk_gc_set_rgb_fg_color (gc, &c3);
gdk_draw_line (window, gc, x, y + i, x + width, y + i);
c3.red -= rd;
@@ -103,7 +160,13 @@
i++;
}
+ g_object_unref (gc);
+ if (depth == 16) {
+ g_object_unref (gcd);
+ g_object_unref (dither);
+ }
+
}
static void
More information about the commitlog
mailing list