static inline bool is_zero(double z)
{
- return fabs(z) < 0.001;
+ return fabs(z) < 1e-6;
}
static inline bool is_equal(double x, double y)
struct arg_def {
const char *name;
uint type;
+ const char *help;
};
class arg_val {
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);
};
struct page {
- int index;
+ int index; // Position in the source PDF, 0 for synthesized pages
double width; // Physical dimensions of media
double height;
- BBox bbox; // Bounds useful contents
+ BBox image_box; // Bounds useful contents
virtual void render(out_context *out UNUSED, pdf_matrix xform UNUSED) { abort(); }
- page(double _w=0, double _h=0) : index(0), width(_w), height(_h), bbox() { }
+ page(double _w=0, double _h=0) : index(0), width(_w), height(_h), image_box() { }
page(page *p)
{
index = p->index;
width = p->width;
height = p->height;
- bbox = p->bbox;
+ image_box = p->image_box;
}
};
const arg_def *arg_defs;
bool has_pipeline;
cmd_exec *(*constructor)(cmd *cmd);
+ const char *help;
};
struct cmd {
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);