CAPS Universe documentation  1.0.4
All you need to know to be successful
libcapsdriver.h
Go to the documentation of this file.
1#pragma once
2
3/*
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 *
6 * (c) 2022 Juergen Borleis <projects@caps-printing.org>
7 *
8 * This library is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU General Public License as published by the Free
10 * Software Foundation; either version 2 of the License, or (at your option)
11 * any later version.
12 */
13
14#include <stdio.h>
15#include <features.h>
16
17#include <libcapsbase.h>
18#include <libcapscmdparser.h>
19#include <libcapsppd.h>
20
21__BEGIN_DECLS
22
30/* Opaque handle type */
31struct caps_drv;
47};
48
187#define LIBCAPSDRIVER_MAJOR 1
189#define LIBCAPSDRIVER_MINOR 3
191#define LIBCAPSDRIVER_MICRO 0
200void caps_libdriver_version_get(unsigned *major, unsigned *minor, unsigned *micro) __nonnull();
254 int (*init)(struct caps_drv*, void*);
257 int (*printer_adaptions)(struct caps_drv*, void*);
260 int (*job_start)(struct caps_drv*, void*);
261 int (*job_finish)(struct caps_drv*, void*);
262 int (*page_setup)(struct caps_drv*, void*);
263 int (*page_print)(struct caps_drv*, void*);
264 int (*printer_monitor)(struct caps_drv*, void*);
265 int (*exit)(struct caps_drv*, void*);
266};
267
294void caps_drv_exit(struct caps_drv *cdrv) __nonnull();
317int caps_drv_run(struct caps_drv *cdrv, const struct caps_generic_driver *cb, void *private) __nonnull((1,2));
328int caps_drv_terminate_now(struct caps_drv *cdrv) __nonnull();
340FILE *caps_drv_to_stream(struct caps_drv *cdrv) __nonnull();
373void caps_drv_private_set(struct caps_drv *cdrv, void *private) __nonnull((1));
382void *caps_drv_private_get(struct caps_drv *cdrv) __nonnull();
413const char *caps_drv_setup_value_get(struct caps_drv *cdrv, const char *section, const char *key) __nonnull((1,3));
442int caps_drv_setup_boolean_get(struct caps_drv *cdrv, const char *section, const char *key) __nonnull((1,3));
469void caps_drv_printer_desc_set(struct caps_drv *cdrv, const struct caps_ppd_base *desc) __nonnull();
484int caps_drv_is_printing(struct caps_drv *cdrv) __nonnull();
494int caps_drv_is_offline(struct caps_drv *cdrv) __nonnull();
504int caps_drv_is_empty(struct caps_drv *cdrv) __nonnull();
516int caps_drv_is_fault_state(struct caps_drv *cdrv) __nonnull();
532 unsigned max_width;
533 unsigned max_length;
535};
564const char *caps_drv_job_value_get(struct caps_drv *cdrv, const char *designator, const char *name) __nonnull((1,2));
584const char *caps_drv_job_choice_get(struct caps_drv *cdrv, const char *designator) __nonnull();
595int caps_drv_job_is_duplex(struct caps_drv *cdrv) __nonnull();
748void caps_drv_job_canceled(struct caps_drv *cdrv, const char *message) __nonnull();
766unsigned caps_drv_page_number_get(struct caps_drv *cdrv) __nonnull();
803unsigned caps_drv_page_copies_get(struct caps_drv *cdrv) __nonnull();
886int caps_drv_predictive_size_get(struct caps_drv *cdrv, struct caps_rect size, struct caps_rect *psize) __nonnull();
946int caps_drv_print_medium_size_set(struct caps_drv *cdrv, struct caps_rect page_size) __nonnull();
979int caps_drv_print_medium_width_set(struct caps_drv *cdrv, double min, double max) __nonnull();
1007int caps_drv_print_medium_length_set(struct caps_drv *cdrv, double min, double max) __nonnull();
1024int caps_drv_print_medium_margins_set(struct caps_drv *cdrv, struct caps_area margins) __nonnull();
1034int caps_drv_print_medium_resolution_set(struct caps_drv *cdrv, double x_res, double y_res) __nonnull();
1067ssize_t caps_drv_raster_line_length_get(struct caps_drv *cdrv) __nonnull();
1107void *caps_drv_raster_line_copy_get(struct caps_drv *cdrv, void * __restrict line_buf, unsigned line_no) __nonnull((1));
1118unsigned caps_drv_raster_width_get(struct caps_drv *cdrv) __nonnull();
1129unsigned caps_drv_raster_length_get(struct caps_drv *cdrv) __nonnull();
1178 unsigned width;
1179 unsigned length;
1182};
1222const void *caps_drv_raw_raster_line_get(struct caps_drv *cdrv, unsigned line_no) __nonnull() __returns_nonnull;
1243const char *caps_drv_medium_name_from_size_get(const struct caps_rect *size) __nonnull();
1255struct caps_rect caps_drv_medium_size_from_name_get(const char *paper_name) __nonnull();
1271struct caps_rasterizer;
1277struct caps_rasterizer *caps_drv_to_rstr(struct caps_drv *cdrv) __nonnull();
1278struct caps_rstr_page_desc;
1285struct caps_rstr_page;
1292struct caps_rstr_raster;
1393 int (*idx_process)(void *anonymous_data, unsigned index_no);
1399 int (*idx_is_ready)(void *anonymous_data, unsigned index_no);
1403 int (*idx_send)(void *anonymous_data, unsigned index_no);
1409};
1410
1436int caps_worker_idx_create(struct caps_worker_idx_context **wctx, const struct caps_worker_idx *ciw, void *anonymous_data, unsigned index_cnt, unsigned thread_cnt) __nonnull((1,2,3)) __warn_unused_res;
1477__END_DECLS
static const struct caps_arg_parser parser
Definition: capsinfo.c:139
#define __warn_unused_res
Definition: libcapsbase.h:146
#define __returns_nonnull
Definition: libcapsbase.h:141
#define __nonnull(params)
Definition: libcapsbase.h:84
caps_colour_format
Dot colour format definition.
Definition: libcapsbase.h:375
int caps_drv_terminate_now(struct caps_drv *cdrv)
Definition: libcapsdriver.c:635
int caps_drv_run(struct caps_drv *cdrv, const struct caps_generic_driver *cb, void *private)
Definition: libcapsdriver.c:781
void caps_drv_exit(struct caps_drv *cdrv)
Definition: libcapsdriver.c:617
struct caps_drv * caps_drv_init(struct caps_arg_parser parser[2])
Definition: libcapsdriver.c:593
FILE * caps_drv_to_stream(struct caps_drv *cdrv)
Definition: libcapsdriver.c:88
struct caps_rect caps_drv_medium_size_from_name_get(const char *paper_name)
Definition: libcapsdriver.c:499
const char * caps_drv_medium_name_from_size_get(const struct caps_rect *size)
Definition: libcapsdriver.c:493
void caps_drv_job_canceled(struct caps_drv *cdrv, const char *message)
Definition: job-status.c:89
void caps_libdriver_version_get(unsigned *major, unsigned *minor, unsigned *micro)
Definition: libcapsdriver.c:40
int caps_drv_setup_boolean_get(struct caps_drv *cdrv, const char *section, const char *key)
Definition: libcapsdriver.c:183
const char * caps_drv_setup_value_get(struct caps_drv *cdrv, const char *section, const char *key)
Definition: libcapsdriver.c:195
struct caps_area caps_drv_print_medium_imageable_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:438
int caps_drv_job_is_duplex(struct caps_drv *cdrv)
Definition: libcapsdriver.c:348
struct caps_drv_page_limits caps_drv_job_limits_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:163
const char * caps_drv_print_medium_format_name_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:406
const char * caps_drv_job_value_get(struct caps_drv *cdrv, const char *designator, const char *name)
Definition: libcapsdriver.c:334
struct caps_rect caps_drv_print_medium_size_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:417
enum caps_colour_format caps_drv_print_colour_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:355
enum caps_ppd_paper_leading_edges caps_drv_print_medium_orientation_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:431
struct caps_ppd_resolution caps_drv_print_resolution_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:374
struct caps_area caps_drv_print_medium_margins_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:424
const char * caps_drv_job_choice_get(struct caps_drv *cdrv, const char *designator)
Definition: libcapsdriver.c:341
struct caps_rasterizer * caps_drv_to_rstr(struct caps_drv *cdrv)
Definition: libcapsdriver.c:83
const struct caps_rstr_raster * caps_drv_to_caps_rstr_raster(struct caps_drv *cdrv)
Definition: libcapsdriver.c:78
struct caps_rstr_page * caps_drv_to_caps_rstr_page(struct caps_drv *cdrv)
Definition: libcapsdriver.c:68
const struct caps_rstr_page_desc * caps_drv_to_caps_rstr_page_desc(struct caps_drv *cdrv)
Definition: libcapsdriver.c:73
struct caps_rect caps_drv_doc_page_size_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:320
unsigned caps_drv_page_copies_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:295
int caps_drv_page_is_duplex_front(struct caps_drv *cdrv)
Definition: libcapsdriver.c:300
int caps_drv_page_is_last_page(struct caps_drv *cdrv)
Definition: libcapsdriver.c:310
int caps_drv_predictive_size_get(struct caps_drv *cdrv, struct caps_rect size, struct caps_rect *psize)
Definition: libcapsdriver.c:325
int caps_drv_print_medium_is_to_be_ejected(struct caps_drv *cdrv)
Definition: libcapsdriver.c:315
unsigned caps_drv_page_number_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:290
int caps_drv_page_is_duplex_reverse(struct caps_drv *cdrv)
Definition: libcapsdriver.c:305
int caps_drv_print_medium_favoured_rotation_set(struct caps_drv *cdrv, int rot)
Definition: libcapsdriver.c:100
int caps_drv_print_medium_colour_format_set(struct caps_drv *cdrv, enum caps_colour_format cf)
Definition: libcapsdriver.c:114
int caps_drv_print_medium_default_setup(struct caps_drv *cdrv)
Definition: libcapsdriver.c:384
int caps_drv_print_medium_length_set(struct caps_drv *cdrv, double min, double max)
Definition: libcapsdriver.c:138
int caps_drv_print_medium_size_set(struct caps_drv *cdrv, struct caps_rect page_size)
Definition: libcapsdriver.c:93
int caps_drv_print_medium_width_set(struct caps_drv *cdrv, double min, double max)
Definition: libcapsdriver.c:130
int caps_drv_print_medium_resolution_set(struct caps_drv *cdrv, double x_res, double y_res)
Definition: libcapsdriver.c:121
int caps_drv_print_medium_margins_set(struct caps_drv *cdrv, struct caps_area margins)
Definition: libcapsdriver.c:107
void caps_drv_printer_desc_set(struct caps_drv *cdrv, const struct caps_ppd_base *desc)
Definition: libcapsdriver.c:62
int caps_drv_is_offline(struct caps_drv *cdrv)
Definition: device-monitor.c:342
int caps_drv_is_fault_state(struct caps_drv *cdrv)
Definition: device-monitor.c:350
int caps_drv_is_printing(struct caps_drv *cdrv)
Definition: libcapsdriver.c:47
int caps_drv_is_empty(struct caps_drv *cdrv)
Definition: device-monitor.c:358
void caps_drv_private_set(struct caps_drv *cdrv, void *private)
Definition: libcapsdriver.c:52
void * caps_drv_private_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:57
unsigned caps_drv_raster_width_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:145
ssize_t caps_drv_raster_line_length_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:205
void * caps_drv_raster_line_copy_get(struct caps_drv *cdrv, void *line_buf, unsigned line_no)
Definition: emulation-and-restore.c:346
unsigned caps_drv_raster_length_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:150
enum caps_colour_format caps_drv_raster_cf_get(struct caps_drv *cdrv)
Definition: libcapsdriver.c:155
const void * caps_drv_raw_raster_line_get(struct caps_drv *cdrv, unsigned line_no)
Definition: emulation-and-restore.c:309
int caps_drv_raw_raster_info_get(struct caps_drv *cdrv, struct caps_drv_raw_raster *rr)
Definition: libcapsdriver.c:232
void caps_worker_idx_destroy(struct caps_worker_idx_context *wctx)
Definition: worker_index.c:293
int caps_worker_idx_create(struct caps_worker_idx_context **wctx, const struct caps_worker_idx *ciw, void *anonymous_data, unsigned index_cnt, unsigned thread_cnt)
Definition: worker_index.c:250
int caps_worker_idx_start(struct caps_worker_idx_context *wctx)
Definition: worker_index.c:357
void caps_worker_idx_stop(struct caps_worker_idx_context *wctx)
Definition: worker_index.c:54
caps_ppd_paper_leading_edges
Definition: libcapsppd.h:146
Basic API for everything else of the CAPS universe.
Cascadeable command line argument parser intendend for library based command line processing.
caps_drv_prn_tweaks
Definition: libcapsdriver.h:44
@ CAPS_TWEAK_SKIP_STATUS
Definition: libcapsdriver.h:45
@ CAPS_TWEAK_SKIP_STATUS_WHEN_PRINTING
Definition: libcapsdriver.h:46
Data declaration to handle PPD file information.
Defines an area by its left bottom and right top coordinates in floating point values.
Definition: libcapsbase.h:361
Definition: libcapscmdparser.h:348
The static rasterizer limits.
Definition: libcapsdriver.h:530
unsigned max_line_length
Definition: libcapsdriver.h:531
unsigned max_length
Definition: libcapsdriver.h:533
unsigned max_width
Definition: libcapsdriver.h:532
enum caps_colour_format cf
Definition: libcapsdriver.h:534
Raw raster information for full medium raster reconstruction.
Definition: libcapsdriver.h:1173
unsigned covering_length
Definition: libcapsdriver.h:1175
unsigned skipped_top_lines
Definition: libcapsdriver.h:1176
unsigned width
Definition: libcapsdriver.h:1178
size_t line_length
Definition: libcapsdriver.h:1181
unsigned skipped_left_dots
Definition: libcapsdriver.h:1177
enum caps_colour_format cf
Definition: libcapsdriver.h:1180
unsigned covering_width
Definition: libcapsdriver.h:1174
unsigned length
Definition: libcapsdriver.h:1179
libcapsdriver internal data collection
Definition: libcapsdriver-local.h:124
const struct caps_generic_driver * cb
Definition: libcapsdriver-local.h:126
Printer Driver Callback declaration.
Definition: libcapsdriver.h:253
int(* init)(struct caps_drv *, void *)
Definition: libcapsdriver.h:254
int(* printer_adaptions)(struct caps_drv *, void *)
Definition: libcapsdriver.h:257
int(* job_finish)(struct caps_drv *, void *)
Definition: libcapsdriver.h:261
int(* page_setup)(struct caps_drv *, void *)
Definition: libcapsdriver.h:262
int(* printer_monitor)(struct caps_drv *, void *)
Definition: libcapsdriver.h:264
int(* job_start)(struct caps_drv *, void *)
Definition: libcapsdriver.h:260
int(* page_print)(struct caps_drv *, void *)
Definition: libcapsdriver.h:263
int(* exit)(struct caps_drv *, void *)
Definition: libcapsdriver.h:265
Basic description of common features a printing device/printing driver can provide.
Definition: libcapsppd.h:322
Definition of one supported resolution in Dots Per Inch (DPI).
Definition: libcapsppd.h:233
Declare the externally transparent structure for internal use.
Definition: libcapsraster-local.h:423
Defines a simple rectangle by its width and length in floating point values.
Definition: libcapsbase.h:338
Definition: libcapsraster-api.h:297
Physical print medium description.
Definition: libcapsraster-api.h:360
Definition: libcapsraster-api.h:504
Index worker internal tracking data.
Definition: worker_index.c:39
const struct caps_worker_idx * ciw
Definition: worker_index.c:51
Declaration of the callbacks.
Definition: libcapsdriver.h:1392