]> git.pld-linux.org Git - packages/fbgrab.git/blame - fbgrab-bigendian.patch
- release 6 (by relup.sh)
[packages/fbgrab.git] / fbgrab-bigendian.patch
CommitLineData
60f8d802 1--- fbgrab-1.0/fbgrab.c 2002-04-15 22:22:54.000000000 +0200
2+++ fbgrab-1.0/fbgrab.c.new 2006-07-14 02:46:49.000000000 +0200
3@@ -163,15 +163,17 @@
4
5 for (i=0; i < (unsigned int) height*width*2; i+=2)
6 {
7- /* BLUE = 0 */
8- outbuffer[(i<<1)+0] = (inbuffer[i] & 0x1f) << 3;
9- /* GREEN = 1 */
10- outbuffer[(i<<1)+1] = (((inbuffer[i+1] & 0x7) << 3) |
11- (inbuffer[i] & 0xE0) >> 5) << 2;
12- /* RED = 2 */
13- outbuffer[(i<<1)+2] = (inbuffer[i+1] & 0xF8);
14- /* ALPHA = 3 */
15- outbuffer[(i<<1)+3] = '\0';
16+ int16_t v =
17+#ifdef __BIG_ENDIAN__
18+ (inbuffer[i] << 8) + inbuffer[i+1];
19+#else
20+ (inbuffer[i+1] << 8) + inbuffer[i];
21+#endif
22+
23+ outbuffer[(i<<1)+0] = (v << 3) & 0xf8; /* B */
24+ outbuffer[(i<<1)+1] = (v >> 3) & 0xfc; /* G */
25+ outbuffer[(i<<1)+2] = (v >> 8) & 0xf8; /* R */
26+ outbuffer[(i<<1)+3] = 0; /* A */
27 }
28 }
29
30@@ -194,6 +196,22 @@
31 }
32 }
33
34+static void convertARGBtoBGRA(int width, int height,
35+ unsigned char *inbuffer,
36+ unsigned char *outbuffer)
37+{
38+ unsigned int i;
39+
40+ for (i=0; i < (unsigned int) height*width*4; i+=4)
41+ {
42+ outbuffer[i+0] = inbuffer[i+3];
43+ outbuffer[i+1] = inbuffer[i+2];
44+ outbuffer[i+2] = inbuffer[i+1];
45+ outbuffer[i+3] = inbuffer[i+0];
46+ }
47+}
48+
49+
50 static void write_PNG(unsigned char *outbuffer, char *filename,
51 int width, int height, int interlace)
52 {
53@@ -283,8 +301,13 @@
54 write_PNG(outbuffer, filename, width, height, interlace);
55 break;
56 case 32:
57+#ifdef __BIG_ENDIAN__
58+ convertARGBtoBGRA(width, height, inbuffer, outbuffer);
59+ write_PNG(outbuffer, filename, width, height, interlace);
60+#else
61 /* No conversion needed */
62 write_PNG(inbuffer, filename, width, height, interlace);
63+#endif
64 break;
65 default:
66 fprintf(stderr, "%d bits per pixel are not supported! ", bits);
This page took 0.067337 seconds and 4 git commands to generate.