summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2008-12-15 20:23:26 +0100
committerJeremy Lainé <jeremy.laine@m4x.org>2008-12-15 20:23:26 +0100
commitbec79ea02035fe7baef993cf1912ec2117d2e1f8 (patch)
tree4cc34208bf2f85accb47d6973dd8d32d7ae629cb
parent51fc27d415c1f9d0a5f6ce7aae220e7268069725 (diff)
fbgrab: add support for monochrome framebuffer
-rw-r--r--packages/fbgrab/fbgrab/fbgrab_1bpp.patch52
-rw-r--r--packages/fbgrab/fbgrab_1.0.bb3
2 files changed, 54 insertions, 1 deletions
diff --git a/packages/fbgrab/fbgrab/fbgrab_1bpp.patch b/packages/fbgrab/fbgrab/fbgrab_1bpp.patch
new file mode 100644
index 0000000000..8c6dff27b3
--- /dev/null
+++ b/packages/fbgrab/fbgrab/fbgrab_1bpp.patch
@@ -0,0 +1,52 @@
+--- fbgrab-1.0.orig/fbgrab.c 2002-04-15 22:22:54.000000000 +0200
++++ fbgrab-1.0/fbgrab.c 2008-12-15 20:18:55.000000000 +0100
+@@ -135,6 +135,26 @@
+ fatal_error("Error: Not enough memory or data\n");
+ }
+
++static void convert1to32(int width, int height,
++ unsigned char *inbuffer,
++ unsigned char *outbuffer)
++{
++ unsigned int i, j;
++ unsigned char *ptr = outbuffer;
++
++ for (i=0; i < (unsigned int) height*width >> 3; i++)
++ {
++ for(j=0; j < 8; j++)
++ {
++ /* BLUE = 0, GREEN = 1, RED = 2 */
++ *ptr = *(ptr+1) = *(ptr+2) = ((inbuffer[i] >> (7-j)) & 1) ? 255 : 0;
++ /* ALPHA = 3 */
++ *(ptr+3) = '\0';
++ ptr += 4;
++ }
++ }
++}
++
+ static void convert1555to32(int width, int height,
+ unsigned char *inbuffer,
+ unsigned char *outbuffer)
+@@ -270,6 +290,10 @@
+
+ switch(bits)
+ {
++ case 1:
++ convert1to32(width, height, inbuffer, outbuffer);
++ write_PNG(outbuffer, filename, width, height, interlace);
++ break;
+ case 15:
+ convert1555to32(width, height, inbuffer, outbuffer);
+ write_PNG(outbuffer, filename, width, height, interlace);
+@@ -405,7 +429,10 @@
+ strncpy(infile, device, MAX_LEN - 1);
+ }
+
+- buf_size = width * height * (((unsigned int) bitdepth + 7) >> 3);
++ if (bitdepth == 1)
++ buf_size = (width * height) >> 3;
++ else
++ buf_size = width * height * (((unsigned int) bitdepth + 7) >> 3);
+
+ buf_p = malloc(buf_size);
+
diff --git a/packages/fbgrab/fbgrab_1.0.bb b/packages/fbgrab/fbgrab_1.0.bb
index 8790fe0a28..28ac55f943 100644
--- a/packages/fbgrab/fbgrab_1.0.bb
+++ b/packages/fbgrab/fbgrab_1.0.bb
@@ -2,13 +2,14 @@ SECTION = "console/network"
DESCRIPTION = "framebuffer screenshot program"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
DEPENDS = " zlib libpng "
SRC_URI = "http://hem.bredband.net/gmogmo/fbgrab/fbgrab-${PV}.tar.gz \
file://makefile.patch;patch=1 \
http://people.openezx.org/ao2/fbgrab_network_mode.diff;patch=1 \
+ file://fbgrab_1bpp.patch;patch=1 \
"
do_install() {