aboutsummaryrefslogtreecommitdiffstats
path: root/libtests/runlength.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2017-08-16 12:26:31 +0200
committerJay Berkenbilt <ejb@ql.org>2017-08-19 20:50:55 +0200
commit2d2f61966525cb948bcb6307cccbc3493b1825b5 (patch)
tree862dbdd156d2af563d0d20f755f7abeb2c200889 /libtests/runlength.cc
parente0d1cd1f4b2de30967f9c70460c2d0765f003676 (diff)
downloadqpdf-2d2f61966525cb948bcb6307cccbc3493b1825b5.tar.zst
Implement Pl_RunLength pipeline
Diffstat (limited to 'libtests/runlength.cc')
-rw-r--r--libtests/runlength.cc47
1 files changed, 47 insertions, 0 deletions
diff --git a/libtests/runlength.cc b/libtests/runlength.cc
new file mode 100644
index 00000000..3dfe0563
--- /dev/null
+++ b/libtests/runlength.cc
@@ -0,0 +1,47 @@
+#include <qpdf/Pl_RunLength.hh>
+#include <qpdf/Pl_StdioFile.hh>
+#include <qpdf/QUtil.hh>
+
+#include <stdio.h>
+#include <string.h>
+#include <iostream>
+#include <stdlib.h>
+
+int main(int argc, char* argv[])
+{
+ if (argc != 4)
+ {
+ std::cerr << "Usage: runlength {-encode|-decode} infile outfile"
+ << std::endl;
+ exit(2);
+ }
+
+ bool encode = (strcmp("-encode", argv[1]) == 0);
+ char* infilename = argv[2];
+ char* outfilename = argv[3];
+
+ FILE* infile = QUtil::safe_fopen(infilename, "rb");
+ FILE* outfile = QUtil::safe_fopen(outfilename, "wb");
+ Pl_StdioFile out("stdout", outfile);
+ unsigned char buf[100];
+ bool done = false;
+ Pl_RunLength rl(
+ "runlength", &out,
+ (encode ? Pl_RunLength::a_encode : Pl_RunLength::a_decode));
+ while (! done)
+ {
+ size_t len = fread(buf, 1, sizeof(buf), infile);
+ if (len <= 0)
+ {
+ done = true;
+ }
+ else
+ {
+ rl.write(buf, len);
+ }
+ }
+ rl.finish();
+ fclose(infile);
+ fclose(outfile);
+ return 0;
+}