CAPS Universe documentation  1.0.4
All you need to know to be successful
libcapsraster-api.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) 2018 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
26#include <libcapsprovider.h>
27#include <libcapsppd.h>
28#include <features.h>
29
30__BEGIN_DECLS
31
33struct caps_rasterizer;
34struct caps_pp_handle;
35struct caps_pp_page;
36
63#define LIBCAPSRASTER_MAJOR 1
65#define LIBCAPSRASTER_MINOR 1
67#define LIBCAPSRASTER_MICRO 0
76void caps_libraster_version_get(unsigned *major, unsigned *minor, unsigned *micro) __nonnull();
92};
153void caps_librstr_init(void);
166void caps_rstr_destroy(struct caps_rasterizer *rstr) __nonnull();
298 /* The printing state machine */
299 unsigned no;
300 unsigned copies;
301 unsigned duplex_front:1;
302 unsigned duplex_reverse:1;
303 unsigned last_page:1;
304 unsigned eject_medium:1;
306 /* The document's page dimension */
307 const char *medium_name;
316} __attribute__((designated_init));
322 unsigned max_width;
323 unsigned max_length;
325};
330#define FAV_ROTATION_NONE (0)
338#define FAV_ROTATION_COUNTERCLOCKWISE (-90)
346#define FAV_ROTATION_CLOCKWISE (+90)
361 /* Print medium description */
389 /* Raster configuration (default or user settings) */
395} __attribute__((designated_init));
505 /* The following medium size is the base for the raster information below */
506 unsigned medium_width;
507 unsigned medium_length;
508 /*
509 * Since margins and raster offset can overlap, we need the correct margins here
510 * The following information are required to re-create a raster which covers the whole
511 * medium, even if the raster is smaller than the medium or (seldom) larger.
512 * Refer #caps_rstr_raster_get() for calculation.
513 */
514 unsigned margin_bottom;
515 unsigned margin_right;
516 unsigned margin_top;
517 unsigned margin_left;
518 /*
519 * Raster position on the medium (for scaled raster), both can be 0 for a raster which fits exactly into the medium.
520 * But in this case the margins must still be considered!
521 * The raster position already includes all kind of alignments.
522 */
523 unsigned offset_top;
524 unsigned offset_left;
526 /* Real and available raster description */
527 unsigned width;
529 unsigned length;
531 unsigned dot_size;
534 const void *buffer;
535 ptrdiff_t line_length;
536} __attribute__((designated_init));
573int caps_rstr_job_attach(struct caps_rasterizer *rstr, int fd, struct caps_ppd_options_table *ppd_options, const char *params) __nonnull((1,3)) __warn_unused_res;
651int caps_rstr_page_get_next(struct caps_rasterizer *rstr, const struct caps_rstr_page_desc **pg_desc) __nonnull();
671int caps_rstr_page_rasterize(struct caps_rasterizer *rstr, const struct caps_rstr_page *pg) __nonnull();
682int caps_rstr_raster_get(struct caps_rasterizer *rstr, struct caps_rstr_raster *desc) __nonnull();
698const void *caps_rstr_line_get(struct caps_rasterizer *rstr, const struct caps_rstr_raster *desc, unsigned line_no) __nonnull() __returns_nonnull;
719const char *caps_rstr_job_mime_get(const struct caps_rasterizer *rstr) __nonnull() __pure;
857unsigned caps_rstr_job_copies_get(struct caps_rasterizer *rstr) __nonnull();
878const char *caps_rstr_job_value_get(struct caps_rasterizer *rstr, const char *keyword, const char *name) __nonnull((1,2));
903const char *caps_rstr_job_choice_get(struct caps_rasterizer *rstr, const char *keyword) __nonnull();
943const char *caps_rstr_format_name_get(const struct caps_rect *size) __nonnull();
957struct caps_rect caps_rstr_format_size_get(const char *format_name) __nonnull();
967int caps_rstr_format_validate(const char *format_name) __nonnull();
1024int caps_rstr_predictive_size_get(struct caps_rasterizer *rstr, struct caps_rect size, struct caps_rect *psize) __nonnull();
1074__END_DECLS
1075
#define __const
Definition: libcapsbase.h:130
#define __warn_unused_res
Definition: libcapsbase.h:146
#define __returns_nonnull
Definition: libcapsbase.h:141
#define __nonnull(params)
Definition: libcapsbase.h:84
#define __pure
Definition: libcapsbase.h:124
caps_colour_format
Dot colour format definition.
Definition: libcapsbase.h:375
caps_ppd_color_formats
Definition: libcapsppd.h:201
caps_ppd_paper_leading_edges
Definition: libcapsppd.h:146
int caps_rstr_format_validate(const char *format_name)
Definition: libcapsraster.c:582
int caps_rstr_predictive_size_get(struct caps_rasterizer *rstr, struct caps_rect size, struct caps_rect *psize)
Definition: libcapsraster.c:554
struct caps_rect caps_rstr_format_size_get(const char *format_name)
Definition: libcapsraster.c:572
int caps_rstr_page_default_setup(struct caps_rasterizer *rstr, struct caps_rstr_page *pg)
Definition: libcapsraster.c:473
const char * caps_rstr_format_name_get(const struct caps_rect *size)
Definition: libcapsraster.c:577
void caps_librstr_init(void)
Definition: libcapsraster.c:43
struct caps_rasterizer * caps_rstr_create(void)
Definition: libcapsraster.c:85
void caps_rstr_destroy(struct caps_rasterizer *rstr)
Definition: libcapsraster.c:115
void caps_libraster_version_get(unsigned *major, unsigned *minor, unsigned *micro)
Definition: libcapsraster.c:594
const char * caps_rstr_job_value_get(struct caps_rasterizer *rstr, const char *keyword, const char *name)
Definition: doc-convinience.c:125
struct caps_area caps_rstr_job_medium_margins_get(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:308
struct caps_rect caps_rstr_job_medium_size_get(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:261
enum caps_ppd_color_formats caps_rstr_job_color_mode_get(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:183
unsigned caps_rstr_job_copies_get(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:90
const char * caps_rstr_job_choice_get(struct caps_rasterizer *rstr, const char *keyword)
Definition: doc-convinience.c:379
const struct caps_job_progression * caps_rstr_job_progression_get(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:392
const char * caps_rstr_job_mime_get(const struct caps_rasterizer *rstr)
Definition: libcapsraster.c:179
const struct caps_ppd_resolution * caps_rstr_job_resolution_get(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:387
enum caps_ppd_paper_leading_edges caps_rstr_job_medium_orientation_get(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:253
bool caps_rstr_job_is_collating(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:73
struct caps_area caps_rstr_job_medium_imageable_get(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:284
const char * caps_rstr_job_medium_format_name_get(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:218
bool caps_rstr_job_is_duplex(struct caps_rasterizer *rstr)
Definition: doc-convinience.c:59
const struct caps_supported_mime_list * caps_rstr_mime_list_get(void)
Definition: libcapsraster.c:80
caps_rstr_feature
Definition: libcapsraster-api.h:89
@ CAPS_RSTR_NOTHING
Definition: libcapsraster-api.h:90
@ CAPS_RSTR_HW_COPY
Definition: libcapsraster-api.h:91
int caps_rstr_job_attach(struct caps_rasterizer *rstr, int fd, struct caps_ppd_options_table *ppd_options, const char *params)
Definition: libcapsraster.c:201
void caps_rstr_printer_feature_set(struct caps_rasterizer *rstr, enum caps_rstr_feature feature)
Definition: libcapsraster.c:258
int caps_rstr_raster_get(struct caps_rasterizer *rstr, struct caps_rstr_raster *desc)
Definition: libcapsraster.c:405
int caps_rstr_page_rasterize(struct caps_rasterizer *rstr, const struct caps_rstr_page *pg)
Definition: libcapsraster.c:375
void caps_rstr_job_detach(struct caps_rasterizer *rstr)
Definition: libcapsraster.c:96
struct caps_rstr_page_limits caps_rstr_limits_get(struct caps_rasterizer *rstr)
Definition: libcapsraster.c:271
const void * caps_rstr_line_get(struct caps_rasterizer *rstr, const struct caps_rstr_raster *desc, unsigned line_no)
Definition: libcapsraster.c:465
int caps_rstr_page_get_next(struct caps_rasterizer *rstr, const struct caps_rstr_page_desc **pg_desc)
Definition: libcapsraster.c:313
static const char * params
Definition: libcapsdriver.c:525
Data declaration to handle PPD file information.
Printing provisioning for printing providers/printer drivers.
Defines an area by its left bottom and right top coordinates in floating point values.
Definition: libcapsbase.h:361
Information collection for printing progression report.
Definition: libcapsppcommon.h:308
Definition: libcapsprovider-local.h:82
Manage the content of a PPD file.
Definition: libcapsppd-local.h:70
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
unsigned no
Definition: libcapsraster-api.h:299
unsigned duplex_reverse
Definition: libcapsraster-api.h:302
struct caps_rect printing_sz
Definition: libcapsraster-api.h:315
struct caps_area printing_area
Definition: libcapsraster-api.h:314
unsigned copies
Definition: libcapsraster-api.h:300
unsigned last_page
Definition: libcapsraster-api.h:303
const char * medium_name
Definition: libcapsraster-api.h:307
unsigned duplex_front
Definition: libcapsraster-api.h:301
unsigned eject_medium
Definition: libcapsraster-api.h:304
struct caps_rect medium_sz
Definition: libcapsraster-api.h:311
Limits the rasterizer has when rasterizing the current document.
Definition: libcapsraster-api.h:320
unsigned max_line_length
Definition: libcapsraster-api.h:321
unsigned max_length
Definition: libcapsraster-api.h:323
unsigned max_width
Definition: libcapsraster-api.h:322
enum caps_colour_format cf
Definition: libcapsraster-api.h:324
Physical print medium description.
Definition: libcapsraster-api.h:360
double resolution_horizontal
Definition: libcapsraster-api.h:393
int rotation_favoured
Definition: libcapsraster-api.h:372
struct caps_area margins
Definition: libcapsraster-api.h:366
enum caps_colour_format cf
Definition: libcapsraster-api.h:390
double resolution_vertical
Definition: libcapsraster-api.h:394
struct caps_rect medium_sz
Definition: libcapsraster-api.h:362
Definition: libcapsraster-api.h:504
unsigned margin_right
Definition: libcapsraster-api.h:515
unsigned offset_left
Definition: libcapsraster-api.h:524
unsigned margin_top
Definition: libcapsraster-api.h:516
unsigned dot_size
Definition: libcapsraster-api.h:531
unsigned width
Definition: libcapsraster-api.h:527
unsigned medium_length
Definition: libcapsraster-api.h:507
enum caps_colour_format cf
Definition: libcapsraster-api.h:533
ptrdiff_t line_length
Definition: libcapsraster-api.h:535
const void * buffer
Definition: libcapsraster-api.h:534
unsigned margin_left
Definition: libcapsraster-api.h:517
unsigned length
Definition: libcapsraster-api.h:529
unsigned offset_top
Definition: libcapsraster-api.h:523
unsigned margin_bottom
Definition: libcapsraster-api.h:514
unsigned medium_width
Definition: libcapsraster-api.h:506
Definition: libcapsppcommon.h:166