Introduction
Introduction Statistics Contact Development Disclaimer Help
Update example in farbfeld.5 - farbfeld - suckless image format with conversion…
git clone git://git.suckless.org/farbfeld
Log
Files
Refs
README
LICENSE
---
commit b52f376a0f18db0dc8b2c8707cf3f41d32fd9a10
parent ac1630a81790f5db946d7091e08b758714c8cd19
Author: FRIGN <[email protected]>
Date: Tue, 5 Jan 2016 11:10:39 +0100
Update example in farbfeld.5
We were close to a full program anyway, so I just completed the code so
you can study and run it easily.
Diffstat:
M farbfeld.5 | 87 +++++++++++++++++------------…
1 file changed, 48 insertions(+), 39 deletions(-)
---
diff --git a/farbfeld.5 b/farbfeld.5
@@ -45,8 +45,8 @@ and inherent complexity involved in handling common image for…
(PNG, JPEG, GIF,...), having to rely on bloated libraries not being able
to focus on the task at hand for a given problem.
.Sh EXAMPLES
-Below is an example for a color inverter. No external libraries other
-than libc are needed to read the image data:
+Below is an example for a color inverter usable in a pipeline. No external
+libraries other than libc are needed to handle the image data:
.Bd -literal -offset left
#include <arpa/inet.h>
@@ -55,49 +55,58 @@ than libc are needed to read the image data:
#include <stdlib.h>
#include <string.h>
-(...)
+int
+main(int argc, char *argv[])
+{
+ uint32_t width, height, i, j, k;
+ uint16_t rgba[4];
+ uint8_t hdr[strlen("farbfeld") + 2 * sizeof(uint32_t)];
-uint32_t width, height, i, j, k;
-uint16_t rgba[4];
-uint8_t hdr[strlen("farbfeld") + 2 * sizeof(uint32_t)];
+ if (argc > 1) {
+ fprintf(stderr, "usage: %s\\n", argv[0]);
+ exit(1);
+ }
-if (fread(hdr, 1, sizeof(hdr), infile) != sizeof(hdr)) {
- fprintf(stderr, "incomplete header\\n");
- exit(1);
-}
-if (memcmp("farbfeld", hdr, strlen("farbfeld"))) {
- fprintf(stderr, "invalid magic\\n");
- exit(1);
-}
-width = ntohl(*((uint32_t *)(hdr + 8)));
-height = ntohl(*((uint32_t *)(hdr + 12)));
+ if (fread(hdr, 1, sizeof(hdr), stdin) != sizeof(hdr)) {
+ fprintf(stderr, "incomplete header\\n");
+ exit(1);
+ }
+ if (memcmp("farbfeld", hdr, strlen("farbfeld"))) {
+ fprintf(stderr, "invalid magic\\n");
+ exit(1);
+ }
+ width = ntohl(*((uint32_t *)(hdr + 8)));
+ height = ntohl(*((uint32_t *)(hdr + 12)));
-if (fwrite(hdr, 1, sizeof(hdr), outfile) != sizeof(hdr)) {
- fprintf(stderr, "write error\\n");
- exit(1);
-}
+ if (fwrite(hdr, 1, sizeof(hdr), stdout) != sizeof(hdr)) {
+ fprintf(stderr, "write error\\n");
+ exit(1);
+ }
-for (i = 0; i < height; i++) {
- for (j = 0; j < width; j++) {
- if (fread(rgba, sizeof(uint16_t), 4, infile) != 4) {
- fprintf(stderr, "unexpected EOF\\n");
- exit(1);
- }
- for (k = 0; k < 4; k++) {
- rgba[k] = ntohs(rgba[k]);
- }
+ for (i = 0; i < height; i++) {
+ for (j = 0; j < width; j++) {
+ if (fread(rgba, sizeof(uint16_t), 4,
+ stdin) != 4) {
+ fprintf(stderr, "unexpected EOF\\n");
+ exit(1);
+ }
+ for (k = 0; k < 4; k++) {
+ rgba[k] = ntohs(rgba[k]);
+ }
- /* invert colors */
- rgba[0] = 65535 - rgba[0];
- rgba[1] = 65535 - rgba[1];
- rgba[2] = 65535 - rgba[2];
+ /* invert colors */
+ rgba[0] = 65535 - rgba[0];
+ rgba[1] = 65535 - rgba[1];
+ rgba[2] = 65535 - rgba[2];
- for (k = 0; k < 4; k++) {
- rgba[k] = htons(rgba[k]);
- }
- if (fwrite(rgba, sizeof(uint16_t), 4, outfile) != 4) {
- fprintf(stderr, "write error\\n");
- exit(1);
+ for (k = 0; k < 4; k++) {
+ rgba[k] = htons(rgba[k]);
+ }
+ if (fwrite(rgba, sizeof(uint16_t), 4,
+ stdout) != 4) {
+ fprintf(stderr, "write error\\n");
+ exit(1);
+ }
}
}
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.