Introduction
Introduction Statistics Contact Development Disclaimer Help
Add ff2pam(1): convert farbfeld to 16-bit RGBA Portable Arbitrary Map - farbfel…
git clone git://git.suckless.org/farbfeld
Log
Files
Refs
README
LICENSE
---
commit 3d80d7237d18bdbf53e327a576b52b35b36af3ad
parent e9db1f49b75b183c8aeda321ca54aff5b436a4f6
Author: Mattias Andrée <[email protected]>
Date: Mon, 9 Jan 2017 05:23:27 +0100
Add ff2pam(1): convert farbfeld to 16-bit RGBA Portable Arbitrary Map
Laslo: Minor changes
Signed-off-by: Mattias Andrée <[email protected]>
Diffstat:
M Makefile | 2 +-
A ff2pam.1 | 41 +++++++++++++++++++++++++++++…
A ff2pam.c | 74 +++++++++++++++++++++++++++++…
3 files changed, 116 insertions(+), 1 deletion(-)
---
diff --git a/Makefile b/Makefile
@@ -2,7 +2,7 @@
# See LICENSE file for copyright and license details
include config.mk
-BIN = png2ff ff2png jpg2ff ff2jpg ff2ppm
+BIN = png2ff ff2png jpg2ff ff2jpg ff2pam ff2ppm
SCRIPTS = 2ff
SRC = ${BIN:=.c}
HDR = arg.h
diff --git a/ff2pam.1 b/ff2pam.1
@@ -0,0 +1,41 @@
+.Dd 2017-01-09
+.Dt FF2PAM 1
+.Os suckless.org
+.Sh NAME
+.Nm ff2pam
+.Nd convert farbfeld to PAM
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+.Nm
+reads a
+.Xr farbfeld 5
+image from stdin, converts it to a 16-bit RGBA PAM and writes the result
+to stdout.
+.Pp
+In case of an error
+.Nm
+writes a diagnostic message to stderr.
+.Sh EXIT STATUS
+.Bl -tag -width Ds
+.It 0
+Image processed successfully.
+.It 1
+An error occurred.
+.El
+.Sh EXAMPLES
+$
+.Nm
+< image.ff > image.pam
+.Pp
+$ bunzip2 < image.ff.bz2 |
+.Nm
+> image.pam
+.Sh SEE ALSO
+.Xr 2ff 1 ,
+.Xr bunzip2 1 ,
+.Xr bzip2 1 ,
+.Xr png2ff 1 ,
+.Xr farbfeld 5
+.Sh AUTHORS
+.An Mattias Andrée Aq Mt [email protected]
diff --git a/ff2pam.c b/ff2pam.c
@@ -0,0 +1,74 @@
+/* See LICENSE file for copyright and license details. */
+#include <arpa/inet.h>
+
+#include <errno.h>
+#include <inttypes.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+static char *argv0;
+
+int
+main(int argc, char *argv[])
+{
+ uint32_t hdr[4], width, height;
+ char buf[BUFSIZ];
+ size_t n, t;
+
+ argv0 = argv[0], argc--, argv++;
+
+ if (argc) {
+ fprintf(stderr, "usage: %s\n", argv0);
+ return 1;
+ }
+
+ /* header */
+ if (fread(hdr, sizeof(*hdr), 4, stdin) != 4) {
+ fprintf(stderr, "%s: file too short\n", argv0);
+ return 1;
+ }
+ if (memcmp("farbfeld", hdr, sizeof("farbfeld") - 1)) {
+ fprintf(stderr, "%s: invalid magic value\n", argv0);
+ return 1;
+ }
+ width = ntohl(hdr[2]);
+ height = ntohl(hdr[3]);
+
+ /* write header */
+ printf("P7\n"
+ "WIDTH %" PRIu32 "\n"
+ "HEIGHT %" PRIu32 "\n"
+ "DEPTH 4\n" /* number of channels */
+ "MAXVAL 65535\n"
+ "TUPLTYPE RGB_ALPHA\n"
+ "ENDHDR\n",
+ width, height);
+
+ /* write image */
+ t = (size_t)width * (size_t)height * sizeof(uint16_t) * (sizeof("RGBA"…
+ for (; (n = fread(buf, 1, sizeof(buf) <= t ? sizeof(buf) : t, stdin));…
+ t -= n;
+ fwrite(buf, 1, n, stdout);
+
+ if (feof(stdin)) {
+ break;
+ }
+ if (ferror(stdin)) {
+ fprintf(stderr, "%s: read: %s\n", argv0, strerror(errn…
+ return 1;
+ }
+ if (ferror(stdout)) {
+ fprintf(stderr, "%s: write: %s\n", argv0, strerror(err…
+ return 1;
+ }
+ }
+
+ if (t > 0) {
+ fprintf(stderr, "%s: file too short\n", argv0);
+ return 1;
+ }
+
+ return 0;
+}
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.