PDF-Make

 view release on metacpan or  search on metacpan

xs/bridge.xs  view on Meta::CPAN

int
_open(self, path, password = NULL)
    SV *self
    const char *path
    const char *password
CODE:
    pdfmake_bridge_t *bridge = BRIDGE_FROM_SV(self);
    CHECK_BRIDGE(bridge);
    pdfmake_err_t err = pdfmake_bridge_open(bridge, path, password);
    if (err != PDFMAKE_OK) {
        croak("Failed to open document: %s", pdfmake_err_string(err));
    }
    RETVAL = 1;
OUTPUT:
    RETVAL

int
_save(self, path = NULL)
    SV *self
    const char *path
CODE:
    pdfmake_bridge_t *bridge = BRIDGE_FROM_SV(self);
    CHECK_BRIDGE(bridge);
    pdfmake_err_t err = pdfmake_bridge_save(bridge, path);
    if (err != PDFMAKE_OK) {
        croak("Failed to save document: %s", pdfmake_err_string(err));
    }
    RETVAL = 1;
OUTPUT:
    RETVAL

int
_close(self)
    SV *self
CODE:
    pdfmake_bridge_t *bridge = BRIDGE_FROM_SV(self);
    CHECK_BRIDGE(bridge);
    pdfmake_err_t err = pdfmake_bridge_close(bridge);
    RETVAL = (err == PDFMAKE_OK) ? 1 : 0;
OUTPUT:
    RETVAL

#
# Query operations
#

int
_page_count(self)
    SV *self
CODE:
    pdfmake_bridge_t *bridge = BRIDGE_FROM_SV(self);
    CHECK_BRIDGE(bridge);
    RETVAL = pdfmake_bridge_page_count(bridge);
OUTPUT:
    RETVAL

void
_page_size(self, page)
    SV *self
    int page
PPCODE:
    pdfmake_bridge_t *bridge = BRIDGE_FROM_SV(self);
    CHECK_BRIDGE(bridge);
    double width, height;
    pdfmake_err_t err = pdfmake_bridge_page_size(bridge, page, &width, &height);
    if (err != PDFMAKE_OK) {
        croak("Failed to get page size: %s", pdfmake_err_string(err));
    }
    EXTEND(SP, 2);
    PUSHs(sv_2mortal(newSVnv(width)));
    PUSHs(sv_2mortal(newSVnv(height)));

#
# Page operations
#

int
_add_page(self, width, height, index = -1)
    SV *self
    double width
    double height
    int index
CODE:
    pdfmake_bridge_t *bridge = BRIDGE_FROM_SV(self);
    CHECK_BRIDGE(bridge);
    pdfmake_err_t err = pdfmake_bridge_add_page(bridge, width, height, index);
    if (err != PDFMAKE_OK) {
        croak("Failed to add page: %s", pdfmake_err_string(err));
    }
    RETVAL = 1;
OUTPUT:
    RETVAL

int
_delete_page(self, page)
    SV *self
    int page
CODE:
    pdfmake_bridge_t *bridge = BRIDGE_FROM_SV(self);
    CHECK_BRIDGE(bridge);
    pdfmake_err_t err = pdfmake_bridge_delete_page(bridge, page);
    if (err != PDFMAKE_OK) {
        croak("Failed to delete page: %s", pdfmake_err_string(err));
    }
    RETVAL = 1;
OUTPUT:
    RETVAL

#
# Rendering
#

SV *
_render_page(self, page, zoom = 1.0, format = 0)
    SV *self
    int page
    double zoom
    int format
CODE:
    pdfmake_bridge_t *bridge = BRIDGE_FROM_SV(self);
    CHECK_BRIDGE(bridge);



( run in 1.429 second using v1.01-cache-2.11-cpan-4e7a2411597 )