CAPS Universe documentation  1.0.4
All you need to know to be successful
Functions | Variables
libcapsdriver.c File Reference

Printer driver convenience library. More...

Functions

void caps_libdriver_version_get (unsigned *major, unsigned *minor, unsigned *micro)
 
int caps_drv_is_printing (struct caps_drv *cdrv)
 
void caps_drv_private_set (struct caps_drv *cdrv, void *private)
 
void * caps_drv_private_get (struct caps_drv *cdrv)
 
void caps_drv_printer_desc_set (struct caps_drv *cdrv, const struct caps_ppd_base *desc)
 
struct caps_rstr_pagecaps_drv_to_caps_rstr_page (struct caps_drv *cdrv)
 
const struct caps_rstr_page_desccaps_drv_to_caps_rstr_page_desc (struct caps_drv *cdrv)
 
const struct caps_rstr_rastercaps_drv_to_caps_rstr_raster (struct caps_drv *cdrv)
 
struct caps_rasterizercaps_drv_to_rstr (struct caps_drv *cdrv)
 
FILE * caps_drv_to_stream (struct caps_drv *cdrv)
 
int caps_drv_print_medium_size_set (struct caps_drv *cdrv, struct caps_rect page_size)
 
int caps_drv_print_medium_favoured_rotation_set (struct caps_drv *cdrv, int rot)
 
int caps_drv_print_medium_margins_set (struct caps_drv *cdrv, struct caps_area margins)
 
int caps_drv_print_medium_colour_format_set (struct caps_drv *cdrv, enum caps_colour_format cf)
 
int caps_drv_print_medium_resolution_set (struct caps_drv *cdrv, double x_res, double y_res)
 
int caps_drv_print_medium_width_set (struct caps_drv *cdrv, double min, double max)
 
int caps_drv_print_medium_length_set (struct caps_drv *cdrv, double min, double max)
 
unsigned caps_drv_raster_width_get (struct caps_drv *cdrv)
 
unsigned caps_drv_raster_length_get (struct caps_drv *cdrv)
 
enum caps_colour_format caps_drv_raster_cf_get (struct caps_drv *cdrv)
 
struct caps_drv_page_limits caps_drv_job_limits_get (struct caps_drv *cdrv)
 
int caps_drv_setup_boolean_get (struct caps_drv *cdrv, const char *section, const char *key)
 
const char * caps_drv_setup_value_get (struct caps_drv *cdrv, const char *section, const char *key)
 
ssize_t caps_drv_raster_line_length_get (struct caps_drv *cdrv)
 
int caps_drv_raw_raster_info_get (struct caps_drv *cdrv, struct caps_drv_raw_raster *rr)
 
static int caps_drv_printer_open (struct caps_drv *cdrv, const char *dev_node)
 
unsigned caps_drv_page_number_get (struct caps_drv *cdrv)
 
unsigned caps_drv_page_copies_get (struct caps_drv *cdrv)
 
int caps_drv_page_is_duplex_front (struct caps_drv *cdrv)
 
int caps_drv_page_is_duplex_reverse (struct caps_drv *cdrv)
 
int caps_drv_page_is_last_page (struct caps_drv *cdrv)
 
int caps_drv_print_medium_is_to_be_ejected (struct caps_drv *cdrv)
 
struct caps_rect caps_drv_doc_page_size_get (struct caps_drv *cdrv)
 
int caps_drv_predictive_size_get (struct caps_drv *cdrv, struct caps_rect size, struct caps_rect *psize)
 
const char * caps_drv_job_value_get (struct caps_drv *cdrv, const char *designator, const char *name)
 
const char * caps_drv_job_choice_get (struct caps_drv *cdrv, const char *designator)
 
int caps_drv_job_is_duplex (struct caps_drv *cdrv)
 
enum caps_colour_format caps_drv_print_colour_get (struct caps_drv *cdrv)
 
struct caps_ppd_resolution caps_drv_print_resolution_get (struct caps_drv *cdrv)
 
int caps_drv_print_medium_default_setup (struct caps_drv *cdrv)
 
const char * caps_drv_print_medium_format_name_get (struct caps_drv *cdrv)
 
struct caps_rect caps_drv_print_medium_size_get (struct caps_drv *cdrv)
 
struct caps_area caps_drv_print_medium_margins_get (struct caps_drv *cdrv)
 
enum caps_ppd_paper_leading_edges caps_drv_print_medium_orientation_get (struct caps_drv *cdrv)
 
struct caps_area caps_drv_print_medium_imageable_get (struct caps_drv *cdrv)
 
int caps_drv_print_medium_default_post_setup (struct caps_drv *cdrv)
 
const char * caps_drv_medium_name_from_size_get (const struct caps_rect *rect)
 
struct caps_rect caps_drv_medium_size_from_name_get (const char *paper_name)
 
static void caps_libdriver_init (void)
 
static int test_doc_cb (const struct caps_arg_parser *parser, const char *value)
 
static int test_param_cb (const struct caps_arg_parser *parser, const char *value)
 
static int test_printer_cb (const struct caps_arg_parser *parser, const char *value)
 
static int test_exit_cb (const struct caps_arg_parser *parser, const char *value)
 
struct caps_drvcaps_drv_init (struct caps_arg_parser parser[2])
 
void caps_drv_exit (struct caps_drv *cdrv)
 
static void sig_intr_handler (int signal)
 
static void sig_term_handler (int signal)
 
int caps_drv_terminate_now (struct caps_drv *cdrv)
 
static void signal_handling_startup (void)
 
static void signal_handling_teardown (void)
 
static void _caps_drv_default_halftone_method_set (struct caps_drv *cdrv)
 
int caps_drv_run (struct caps_drv *cdrv, const struct caps_generic_driver *cb, void *private)
 

Variables

volatile sig_atomic_t quit = 0
 
static const char * printer_node
 
static const char * filename = NULL
 
static const char * params = NULL
 
static int exit_after_print
 
static const struct caps_arg_parameter libcapsdriver_argument_list []
 libcapsdriver's additional command line parameters
 
static struct caps_arg_parser libcapsdriver_parser [2]
 libcapsdriver's additional command line parser info
 
static struct caps_drv drv_instance = { .prn_desc = -1, }
 
static const struct sigaction sig_interrupt
 
static const struct sigaction sig_terminate
 
static const struct sigaction sig_reset
 

Detailed Description

Author
Jürgen Borleis
Warning
Use as experimental

Function Documentation

◆ caps_drv_printer_open()

static int caps_drv_printer_open ( struct caps_drv cdrv,
const char *  dev_node 
)
static

If not already done externally, open the communication channel to the printer on demand

Parameters
[in]cdrvlibcapsdriver handle
[in]dev_nodeDevice node to open
Return values
0On success
-EBADFDFailed to get descriptor '3' for the printer communication

The regular expectation is, the filedesciptor 3 was already opened by CAPS (or to be more precise: by the caps-printer tool).
This routine should do the same for testing purposes without the CAPS framework at hand. It is used if an explicit job is implanted.

Todo:
Comment is outdated!

◆ caps_drv_print_medium_default_post_setup()

int caps_drv_print_medium_default_post_setup ( struct caps_drv cdrv)

Check if the medium setup is possible

Parameters
[in]cdrvlibcapsdriver handle
Return values
0On success
-EINVALThe setup for the current page cannot be done

Enable emulation of a monochrome raster if the rasterizer supports grey scale but no monochrome.

If the job cannot be printed, a corresponding abort error message is set.

Precondition
This function can be called after caps_drv_print_medium_default_setup() has done its job.

◆ caps_libdriver_init()

static void caps_libdriver_init ( void  )
static

◆ test_doc_cb()

static int test_doc_cb ( const struct caps_arg_parser parser,
const char *  value 
)
static

◆ test_param_cb()

static int test_param_cb ( const struct caps_arg_parser parser,
const char *  value 
)
static

◆ test_printer_cb()

static int test_printer_cb ( const struct caps_arg_parser parser,
const char *  value 
)
static

◆ test_exit_cb()

static int test_exit_cb ( const struct caps_arg_parser parser,
const char *  value 
)
static

◆ sig_intr_handler()

static void sig_intr_handler ( int  signal)
static

◆ sig_term_handler()

static void sig_term_handler ( int  signal)
static

◆ signal_handling_startup()

static void signal_handling_startup ( void  )
static

◆ signal_handling_teardown()

static void signal_handling_teardown ( void  )
static

◆ _caps_drv_default_halftone_method_set()

static void _caps_drv_default_halftone_method_set ( struct caps_drv cdrv)
static

Read the default halftone method for monochrome rasters from the INI file settings

Parameters
[in,out]cdrvFull state information

This setting is used only if the rasterizer doesn't support monochrome raster by itself. In this case monochrome raster is emulated here in libcapsdriver.

If not set in any INI file, it falls back to the Floyd and Steinberg error diffusion method (e.g. HT_METHOD_FLS).

Variable Documentation

◆ quit

volatile sig_atomic_t quit = 0

Used in all long term running subroutines to terminate earlier

◆ printer_node

const char* printer_node
static

◆ filename

const char * filename = NULL
static

◆ params

const char * params = NULL
static

◆ exit_after_print

int exit_after_print
static

◆ libcapsdriver_argument_list

const struct caps_arg_parameter libcapsdriver_argument_list[]
static
Initial value:
= {
{
.keyword = "test-doc", .arg = "FILE", .cb = test_doc_cb,
.flags = CAPS_PARAM_OPTIONAL, .doc = ( "Direct file to print" ),
}, {
.keyword = "test-param", .arg = "PARAMS", .cb = test_param_cb,
.flags = CAPS_PARAM_OPTIONAL, .doc = ( "IPP style printing parameters" ),
}, {
.keyword = "test-printer", .arg = "FILE", .cb = test_printer_cb,
.flags = CAPS_PARAM_OPTIONAL, .doc = ( "File/device node to print to" ),
}, {
.keyword = "test-exit", .cb = test_exit_cb,
.flags = CAPS_PARAM_OPTIONAL, .doc = ( "Exit after print" ),
}
}
@ CAPS_PARAM_OPTIONAL
Definition: libcapscmdparser.h:273
static int test_doc_cb(const struct caps_arg_parser *parser, const char *value)
Definition: libcapsdriver.c:528
static int test_printer_cb(const struct caps_arg_parser *parser, const char *value)
Definition: libcapsdriver.c:540
static int test_param_cb(const struct caps_arg_parser *parser, const char *value)
Definition: libcapsdriver.c:534
static int test_exit_cb(const struct caps_arg_parser *parser, const char *value)
Definition: libcapsdriver.c:546
Note
For testing purposes.

◆ libcapsdriver_parser

struct caps_arg_parser libcapsdriver_parser[2]
static
Initial value:
= {
[1] = {
.parameter_cnt = (sizeof( libcapsdriver_argument_list )/sizeof( libcapsdriver_argument_list [0])),
.parameter_list = libcapsdriver_argument_list,
.header = ( "libcapsdriver generic parameters" ),
.footer = ( "These arguments are optional and for development and testing purposes only" ),
.domain = PACKAGE,
}
}
static const struct caps_arg_parameter libcapsdriver_argument_list[]
libcapsdriver's additional command line parameters
Definition: libcapsdriver.c:557
Note
For testing purposes.

◆ drv_instance

struct caps_drv drv_instance = { .prn_desc = -1, }
static

Single library instance

◆ sig_interrupt

const struct sigaction sig_interrupt
static
Initial value:
= {
.sa_handler = sig_intr_handler,
.sa_flags = (signed)SA_RESETHAND,
}
static void sig_intr_handler(int signal)
Definition: libcapsdriver.c:625

◆ sig_terminate

const struct sigaction sig_terminate
static
Initial value:
= {
.sa_handler = sig_term_handler,
.sa_flags = (signed)SA_RESETHAND,
}
static void sig_term_handler(int signal)
Definition: libcapsdriver.c:630

◆ sig_reset

const struct sigaction sig_reset
static
Initial value:
= {
.sa_handler = SIG_DFL,
}