diff options
author | Martin Jansa <Martin.Jansa@gmail.com> | 2010-11-15 22:39:46 +0100 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2010-11-15 22:47:10 +0100 |
commit | 664ad859bca00d27c18fc39953fd7730de42ed7d (patch) | |
tree | 354a88df6644c6769e1335a5c01276f22eef3566 /recipes/orrery/orrery | |
parent | 08b1bf363f581cfbd4a6c45a5441206546863e7e (diff) | |
download | openembedded-664ad859bca00d27c18fc39953fd7730de42ed7d.tar.gz |
orrery: use GdkPixbuf for more effective drawing
* also s/files/orrery/ for faster lookup
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'recipes/orrery/orrery')
-rw-r--r-- | recipes/orrery/orrery/orrery.png | bin | 0 -> 19475 bytes | |||
-rw-r--r-- | recipes/orrery/orrery/use.GdkPixbuf.patch | 59 |
2 files changed, 59 insertions, 0 deletions
diff --git a/recipes/orrery/orrery/orrery.png b/recipes/orrery/orrery/orrery.png Binary files differnew file mode 100644 index 0000000000..d9865b70ce --- /dev/null +++ b/recipes/orrery/orrery/orrery.png diff --git a/recipes/orrery/orrery/use.GdkPixbuf.patch b/recipes/orrery/orrery/use.GdkPixbuf.patch new file mode 100644 index 0000000000..92d194de08 --- /dev/null +++ b/recipes/orrery/orrery/use.GdkPixbuf.patch @@ -0,0 +1,59 @@ +From: Benjamin Deering +Subject: orrery crashing X +Date: Thursday, September 2, 2010 - 5:25 pm +Link: http://kerneltrap.org/mailarchive/openmoko-community/2010/9/3/13218 + +diff -uNr orrery.orig//orrery.c orrery/orrery.c +--- orrery.orig//orrery.c 2009-11-30 06:59:44.000000000 +0100 ++++ orrery/orrery.c 2010-11-15 22:33:17.000000000 +0100 +@@ -1238,12 +1238,44 @@ + } + currentEntry = currentEntry->forwardPointer; + } +- if (nDarkGreyPoints > 0) +- gdk_draw_points(pixmap, darkGreyGC, darkGreyPoints, nDarkGreyPoints); +- if (nGreyPoints > 0) +- gdk_draw_points(pixmap, greyGC, greyPoints, nGreyPoints); +- if (nWhitePoints > 0) +- gdk_draw_points(pixmap, whiteGC, whitePoints, nWhitePoints); ++ GdkPixbuf* starDrawingBuf = gdk_pixbuf_get_from_drawable( NULL, ++ pixmap, ++ gdk_colormap_get_system() ++ , 0, 0, 0, 0, displayWidth, displayHeight); ++ g_assert (gdk_pixbuf_get_bits_per_sample (starDrawingBuf) == 8); ++ guchar* p; ++ int rowstride = gdk_pixbuf_get_rowstride (starDrawingBuf); ++ guchar* pixels = gdk_pixbuf_get_pixels (starDrawingBuf); ++ int n_channels = gdk_pixbuf_get_n_channels (starDrawingBuf); ++ GdkGCValues starGCval; ++ GdkColor starColor; ++ int pointNum; ++ gdk_gc_get_values(darkGreyGC, &starGCval); ++ gdk_colormap_query_color( gdk_gc_get_colormap(darkGreyGC),starGCval.foreground.pixel, &starColor ); ++ for( pointNum = 0; pointNum < nDarkGreyPoints; pointNum++) { ++ p = pixels + darkGreyPoints[pointNum].y * rowstride + darkGreyPoints[pointNum].x * n_channels; ++ p[0] = starColor.red & 0xff; ++ p[1] = starColor.green & 0xff; ++ p[2] = starColor.blue & 0xff; ++ } ++ gdk_gc_get_values(greyGC, &starGCval); ++ gdk_colormap_query_color( gdk_gc_get_colormap(greyGC), starGCval.foreground.pixel, &starColor ); ++ for( pointNum = 0; pointNum < nGreyPoints; pointNum++) { ++ p = pixels + greyPoints[pointNum].y * rowstride + greyPoints[pointNum].x * n_channels; ++ p[0] = starColor.red & 0xff; ++ p[1] = starColor.green & 0xff; ++ p[2] = starColor.blue & 0xff; ++ } ++ gdk_gc_get_values(whiteGC, &starGCval); ++ gdk_colormap_query_color( gdk_gc_get_colormap(whiteGC), starGCval.foreground.pixel, &starColor ); ++ for( pointNum = 0; pointNum < nWhitePoints; pointNum++) { ++ p = pixels + whitePoints[pointNum].y * rowstride + whitePoints[pointNum].x * n_channels; ++ p[0] = starColor.red & 0xff; ++ p[1] = starColor.green & 0xff; ++ p[2] = starColor.blue & 0xff; ++ } ++ gdk_draw_pixbuf ( pixmap , NULL , starDrawingBuf, ++ 0, 0, 0, 0, displayWidth, displayHeight, GDK_RGB_DITHER_NORMAL, 0, 0 ) ; + } + + void makeTimeString(char *string) |