summaryrefslogtreecommitdiff
path: root/support/dktools/dk4paper.h
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/dk4paper.h
Initial commit
Diffstat (limited to 'support/dktools/dk4paper.h')
-rw-r--r--support/dktools/dk4paper.h321
1 files changed, 321 insertions, 0 deletions
diff --git a/support/dktools/dk4paper.h b/support/dktools/dk4paper.h
new file mode 100644
index 0000000000..6afcd696ec
--- /dev/null
+++ b/support/dktools/dk4paper.h
@@ -0,0 +1,321 @@
+/*
+ WARNING: This file was generated by dkct.
+ Changes you make here will be lost if dkct is run again!
+ You should modify the original source and run dkct on it.
+ Original source: dk4paper.ctr
+*/
+
+/*
+Copyright (C) 2016-2017, Dirk Krause
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above opyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* Neither the name of the author nor the names of contributors may be used
+ to endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef DK4PAPER_H_INCLUDED
+/** Avoid multiple inclusions. */
+#define DK4PAPER_H_INCLUDED 1
+
+
+#line 9 "dk4paper.ctr"
+
+/** @file dk4paper.h Read paper sizes.
+*/
+
+#ifndef DK4CONF_H_INCLUDED
+#include "dk4conf.h"
+#endif
+
+#ifndef DK4TYPES_H_INCLUDED
+#include "dk4types.h"
+#endif
+
+#ifndef DK4ERROR_H_INCLUDED
+#include "dk4error.h"
+#endif
+
+#ifndef DK4STO_H_INCLUDED
+#include "dk4sto.h"
+#endif
+
+
+/** One paper size.
+*/
+typedef struct {
+ dkChar *name; /**< Paper format name. */
+ double w; /**< Paper width in PS points. */
+ double h; /**< Paper height. */
+ double i; /**< Left or inner border. */
+ double o; /**< Right or outer border. */
+ double t; /**< Top border. */
+ double b; /**< Bottom border. */
+} dk4_paper_size_t;
+
+
+/** Collection of paper sizes read from files.
+*/
+typedef struct {
+ dk4_sto_t *s_ps; /**< Storage for paper sizes. */
+ dk4_sto_it_t *i_ps; /**< Iterator through storage. */
+} dk4_paper_size_collection_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** Open a new paper size collection with minimum entries only.
+ @param erp Error report, may be NULL.
+*/
+
+dk4_paper_size_collection_t *
+dk4papersize_coll_open(dk4_er_t *erp);
+
+
+/** Open a new paper size collection, search for configuration files
+ and apply them.
+ Note: Programs using the dk4_app_t type should use the
+ dk4app_get_paper_sizes() from the dk4papea module instead.
+ @param progname Program name.
+ @param grpname Program group name.
+ @param erp Error report, may be NULL.
+ @return Valid pointer on success, NULL on error.
+*/
+
+dk4_paper_size_collection_t *
+dk4papersize_coll_for_application(
+ const dkChar *progname,
+ const dkChar *grpname,
+ dk4_er_t *erp
+);
+
+
+/** Close paper size collection, release memory.
+ @param ptr Paper size collection to close.
+*/
+
+void
+dk4papersize_coll_close(dk4_paper_size_collection_t *ptr);
+
+
+/** Find a specific paper size in the collection.
+ Note: Do not mix search and traversal mechanism, use exactly
+ one method from the following three:
+ - Find paper size entry by name using dk4papersize_coll_find(),
+ - Get number of paper sizes using dk4papersize_coll_size() and use
+ dk4papersize_coll_get() to get an entry for a given index,
+ - Reset the collection using dk4papersize_coll_reset() and retrieve
+ the next entry using dk4papersize_coll_next(), repeat
+ dk4papersize_coll_next() until it returns NULL.
+ All three methods use and modify the same internal container iterator,
+ so mixing the methods is not a good idea.
+ @param ptr Paper size collection to search for a paper size.
+ @param name Name of paper size to find.
+ @param erp Error report, may be NULL.
+ @return Pointer to paper size on success, NULL on error or not found.
+*/
+
+const dk4_paper_size_t *
+dk4papersize_coll_find(
+ dk4_paper_size_collection_t *ptr,
+ const dkChar *name,
+ dk4_er_t *erp
+);
+
+
+/** Get number of paper sizes stored in the collection.
+ Note: Do not mix search and traversal mechanism, use exactly
+ one method from the following three:
+ - Find paper size entry by name using dk4papersize_coll_find(),
+ - Get number of paper sizes using dk4papersize_coll_size() and use
+ dk4papersize_coll_get() to get an entry for a given index,
+ - Reset the collection using dk4papersize_coll_reset() and retrieve
+ the next entry using dk4papersize_coll_next(), repeat
+ dk4papersize_coll_next() until it returns NULL.
+ All three methods use and modify the same internal container iterator,
+ so mixing the methods is not a good idea.
+ @param ptr Paper size collection to query.
+ @return Positive number of paper sizes on success, 0 on error.
+*/
+
+size_t
+dk4papersize_coll_size(dk4_paper_size_collection_t *ptr);
+
+
+/** Get paper size entry from collection by number.
+ Note: Do not mix search and traversal mechanism, use exactly
+ one method from the following three:
+ - Find paper size entry by name using dk4papersize_coll_find(),
+ - Get number of paper sizes using dk4papersize_coll_size() and use
+ dk4papersize_coll_get() to get an entry for a given index,
+ - Reset the collection using dk4papersize_coll_reset() and retrieve
+ the next entry using dk4papersize_coll_next(), repeat
+ dk4papersize_coll_next() until it returns NULL.
+ All three methods use and modify the same internal container iterator,
+ so mixing the methods is not a good idea.
+ @param ptr Paper size collection to query.
+ @param n Index of paper size entry, 0 for the first.
+ @return Valid pointer on success, NULL on error.
+*/
+
+const dk4_paper_size_t *
+dk4papersize_coll_get(dk4_paper_size_collection_t *ptr, size_t n);
+
+
+/** Reset collection (start traversing at beginning).
+ Note: Do not mix search and traversal mechanism, use exactly
+ one method from the following three:
+ - Find paper size entry by name using dk4papersize_coll_find(),
+ - Get number of paper sizes using dk4papersize_coll_size() and use
+ dk4papersize_coll_get() to get an entry for a given index,
+ - Reset the collection using dk4papersize_coll_reset() and retrieve
+ the next entry using dk4papersize_coll_next(), repeat
+ dk4papersize_coll_next() until it returns NULL.
+ All three methods use and modify the same internal container iterator,
+ so mixing the methods is not a good idea.
+ @param ptr Paper size collection to reset.
+*/
+
+void
+dk4papersize_coll_reset(dk4_paper_size_collection_t *ptr);
+
+
+/** Get next paper size from collection.
+ Note: Do not mix search and traversal mechanism, use exactly
+ one method from the following three:
+ - Find paper size entry by name using dk4papersize_coll_find(),
+ - Get number of paper sizes using dk4papersize_coll_size() and use
+ dk4papersize_coll_get() to get an entry for a given index,
+ - Reset the collection using dk4papersize_coll_reset() and retrieve
+ the next entry using dk4papersize_coll_next(), repeat
+ dk4papersize_coll_next() until it returns NULL.
+ All three methods use and modify the same internal container iterator,
+ so mixing the methods is not a good idea.
+ @param ptr Paper size collection to query.
+ @return Valid pointer on success, NULL on error or end of collection.
+*/
+
+const dk4_paper_size_t *
+dk4papersize_coll_next(dk4_paper_size_collection_t *ptr);
+
+
+/** Create a new paper size structure, allocate memory.
+ @param name Name of paper size.
+ @param erp Error report, may be NULL.
+ @return Pointer to new paper size structure on success, NULL on error.
+*/
+
+dk4_paper_size_t *
+dk4papersize_new(const dkChar *name, dk4_er_t *erp);
+
+
+/** Destroy a paper size structure, release memory.
+ @param pps Paper size structure to destroy.
+*/
+
+void
+dk4papersize_delete(dk4_paper_size_t *pps);
+
+
+/** Compare two paper sizes.
+ @param l Left object pointer.
+ @param r Right object or name pointer.
+ @param cr Comparison criteria: 0=papersize/papersize, 1=papersize/name.
+ @return Comparison result.
+*/
+
+int
+dk4papersize_cmp(const void *l, const void *r, int cr);
+
+
+/** Get paper width from paper size record.
+ @param psptr Paper size record to query.
+ @return Positive result on success, negative value on error.
+*/
+
+double
+dk4papersize_get_width(const dk4_paper_size_t *psptr);
+
+
+/** Get paper height from paper size record.
+ @param psptr Paper size record to query.
+ @return Positive result on success, negative value on error.
+*/
+
+double
+dk4papersize_get_height(const dk4_paper_size_t *psptr);
+
+
+/** Get left (inner) border from paper size record.
+ @param psptr Paper size record to query.
+ @return Non-negative result on success, negative value on error.
+*/
+
+double
+dk4papersize_get_left_border(const dk4_paper_size_t *psptr);
+
+
+/** Get right (outer) border from paper size record.
+ @param psptr Paper size record to query.
+ @return Non-negative result on success, negative value on error.
+*/
+
+double
+dk4papersize_get_right_border(const dk4_paper_size_t *psptr);
+
+
+/** Get top border from paper size record.
+ @param psptr Paper size record to query.
+ @return Non-negative result on success, negative value on error.
+*/
+
+double
+dk4papersize_get_top_border(const dk4_paper_size_t *psptr);
+
+
+/** Get bottom border from paper size record.
+ @param psptr Paper size record to query.
+ @return Non-negative result on success, negative value on error.
+*/
+
+double
+dk4papersize_get_bottom_border(const dk4_paper_size_t *psptr);
+
+
+/** Get name for paper size.
+ @param psptr Paper size record to query.
+ @return Valid pointer on success, NULL on error or empty name.
+*/
+
+const dkChar *
+dk4papersize_get_name(const dk4_paper_size_t *psptr);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* vim: set ai sw=4 ts=4 : */
+
+#endif