Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
pdf.c File Reference
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <time.h>
#include <zlib.h>
#include <glib/gstdio.h>
#include "pdf.h"
#include "common/math.h"
#include "common/utility.h"
+ Include dependency graph for common/pdf.c:

Macros

#define _XOPEN_SOURCE   700
 
#define PACKAGE_STRING   darktable_package_string
 
#define SKIP_SPACES(s)   {while(*(s) == ' ')(s)++;}
 

Functions

int dt_pdf_parse_length (const char *str, float *length)
 
int dt_pdf_parse_paper_size (const char *str, float *width, float *height)
 
static void _pdf_set_offset (dt_pdf_t *pdf, int id, size_t offset)
 
dt_pdf_tdt_pdf_start (const char *filename, float width, float height, float dpi, dt_pdf_stream_encoder_t default_encoder)
 
static size_t _pdf_stream_encoder_ASCIIHex (dt_pdf_t *pdf, const unsigned char *data, size_t len)
 
static size_t _pdf_stream_encoder_Flate (dt_pdf_t *pdf, const unsigned char *data, size_t len)
 
static size_t _pdf_write_stream (dt_pdf_t *pdf, dt_pdf_stream_encoder_t encoder, const unsigned char *data, size_t len)
 
int dt_pdf_add_icc (dt_pdf_t *pdf, const char *filename)
 
int dt_pdf_add_icc_from_data (dt_pdf_t *pdf, const unsigned char *data, size_t size)
 
dt_pdf_image_tdt_pdf_add_image (dt_pdf_t *pdf, const unsigned char *image, int width, int height, int bpp, int icc_id, float border)
 
dt_pdf_page_tdt_pdf_add_page (dt_pdf_t *pdf, dt_pdf_image_t **images, int n_images)
 
void dt_pdf_finish (dt_pdf_t *pdf, dt_pdf_page_t **pages, int n_pages)
 

Variables

static const char * stream_encoder_filters [] = {"/ASCIIHexDecode", "/FlateDecode"}
 

Macro Definition Documentation

◆ _XOPEN_SOURCE

#define _XOPEN_SOURCE   700

◆ PACKAGE_STRING

#define PACKAGE_STRING   darktable_package_string

◆ SKIP_SPACES

#define SKIP_SPACES (   s)    {while(*(s) == ' ')(s)++;}

Function Documentation

◆ _pdf_set_offset()

static void _pdf_set_offset ( dt_pdf_t pdf,
int  id,
size_t  offset 
)
static

◆ _pdf_stream_encoder_ASCIIHex()

static size_t _pdf_stream_encoder_ASCIIHex ( dt_pdf_t pdf,
const unsigned char *  data,
size_t  len 
)
static
Todo:
: maybe OpenMP-ify, it's quite fast already (the fwrite is the slowest part), but wouldn't hurt

References dt_pdf_t::fd.

Referenced by _pdf_write_stream(), and dt_pdf_add_icc_from_data().

◆ _pdf_stream_encoder_Flate()

static size_t _pdf_stream_encoder_Flate ( dt_pdf_t pdf,
const unsigned char *  data,
size_t  len 
)
static

References dt_pdf_t::fd.

Referenced by _pdf_write_stream().

◆ _pdf_write_stream()

static size_t _pdf_write_stream ( dt_pdf_t pdf,
dt_pdf_stream_encoder_t  encoder,
const unsigned char *  data,
size_t  len 
)
static

◆ dt_pdf_add_icc()

int dt_pdf_add_icc ( dt_pdf_t pdf,
const char *  filename 
)

◆ dt_pdf_add_icc_from_data()

int dt_pdf_add_icc_from_data ( dt_pdf_t pdf,
const unsigned char *  data,
size_t  size 
)

◆ dt_pdf_add_image()

◆ dt_pdf_add_page()

◆ dt_pdf_finish()

void dt_pdf_finish ( dt_pdf_t pdf,
dt_pdf_page_t **  pages,
int  n_pages 
)
Todo:
find something less necrophilic, maybe hash of image + history? or just of filename + date :)

References _pdf_set_offset(), dt_pdf_t::bytes_written, dt_pdf_t::fd, gmt, dt_pdf_t::next_id, dt_pdf_page_t::object_id, dt_pdf_t::offsets, PACKAGE_STRING, size, and dt_pdf_t::title.

Referenced by _create_pdf(), free_params(), and write_image().

◆ dt_pdf_parse_length()

int dt_pdf_parse_length ( const char *  str,
float *  length 
)

References dt_pdf_units, name, and SKIP_SPACES.

Referenced by _paper_size().

◆ dt_pdf_parse_paper_size()

int dt_pdf_parse_paper_size ( const char *  str,
float *  width,
float *  height 
)

◆ dt_pdf_start()

Variable Documentation

◆ stream_encoder_filters

const char* stream_encoder_filters[] = {"/ASCIIHexDecode", "/FlateDecode"}
static

Referenced by dt_pdf_add_image().