]> mj.ucw.cz Git - paperjam.git/blobdiff - jam.h
Allow bare identifiers as values of string arguments
[paperjam.git] / jam.h
diff --git a/jam.h b/jam.h
index e7e2099c7fb9ac70aeb9f7c70e81174c5b604165..5ee7620d050cd28163062943431bc127b3bda4ad 100644 (file)
--- a/jam.h
+++ b/jam.h
@@ -48,6 +48,7 @@ enum arg_type {
 struct arg_def {
   const char *name;
   uint type;
+  const char *help;
 };
 
 class arg_val {
@@ -62,8 +63,10 @@ public:
 extern arg_val null_arg;
 
 struct out_context {
+  QPDF *pdf;
   QPDFObjectHandle resources;
   QPDFObjectHandle xobjects;
+  QPDFObjectHandle egstates;
   string contents;
   int res_cnt;
   string new_resource(const string type);
@@ -71,7 +74,7 @@ struct out_context {
 };
 
 struct page {
-  int index;
+  int index;           // Position in the source PDF, 0 for synthesized pages
   double width;                // Physical dimensions of media
   double height;
   BBox image_box;      // Bounds useful contents
@@ -100,6 +103,7 @@ struct cmd_def {
   const arg_def *arg_defs;
   bool has_pipeline;
   cmd_exec *(*constructor)(cmd *cmd);
+  const char *help;
 };
 
 struct cmd {
@@ -137,13 +141,23 @@ struct pipeline {
 
 extern const char *in_name, *out_name;
 extern bool recalc_bbox;
-extern int debug_mode;
+extern int debug_level;
 extern int debug_indent;
 
 void debug(const char *msg, ...) FORMAT_CHECK(printf, 1, 2);
 void warn(const char *msg, ...) FORMAT_CHECK(printf, 1, 2);
 void die(const char *msg, ...) FORMAT_CHECK(printf, 1, 2) NONRET;
 
+// This one is called during execution of commands and propagated as an exception
+void err(const char *msg, ...) FORMAT_CHECK(printf, 1, 2) NONRET;
+
+class paperjam_error : public exception {
+  string message;
+public:
+  paperjam_error(string m) : message(m) { }
+  const char *what() const noexcept override { return message.c_str(); }
+};
+
 // parse.cc
 
 void parse(const char *in, list<cmd *> &cmds);