1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
// SPDX-License-Identifier: GPL-2.0-or-later
/* this file is part of papers, a gnome document viewer
*
* Copyright (C) 2005 Jonathan Blandford <jrb@gnome.org>
*/
#pragma once
#if !defined(__PPS_PAPERS_DOCUMENT_H_INSIDE__) && !defined(PAPERS_COMPILATION)
#error "Only <papers-document.h> can be included directly."
#endif
#include <glib-object.h>
#include "pps-macros.h"
#include "pps-page.h"
G_BEGIN_DECLS
#define PPS_TYPE_RENDER_CONTEXT (pps_render_context_get_type ())
PPS_PUBLIC
G_DECLARE_FINAL_TYPE (PpsRenderContext, pps_render_context, PPS, RENDER_CONTEXT, GObject)
/* These are the same flags as poppler ones in glib/poppler.h and must be
* kept in sync */
typedef enum {
PPS_RENDER_ANNOTS_NONE = 0,
PPS_RENDER_ANNOTS_TEXT = 1 << 0,
PPS_RENDER_ANNOTS_LINK = 1 << 1,
PPS_RENDER_ANNOTS_FREETEXT = 1 << 2,
PPS_RENDER_ANNOTS_LINE = 1 << 3,
PPS_RENDER_ANNOTS_SQUARE = 1 << 4,
PPS_RENDER_ANNOTS_CIRCLE = 1 << 5,
PPS_RENDER_ANNOTS_POLYGON = 1 << 6,
PPS_RENDER_ANNOTS_POLYLINE = 1 << 7,
PPS_RENDER_ANNOTS_HIGHLIGHT = 1 << 8,
PPS_RENDER_ANNOTS_UNDERLINE = 1 << 9,
PPS_RENDER_ANNOTS_SQUIGGLY = 1 << 10,
PPS_RENDER_ANNOTS_STRIKEOUT = 1 << 11,
PPS_RENDER_ANNOTS_STAMP = 1 << 12,
PPS_RENDER_ANNOTS_CARET = 1 << 13,
PPS_RENDER_ANNOTS_INK = 1 << 14,
PPS_RENDER_ANNOTS_POPUP = 1 << 15,
PPS_RENDER_ANNOTS_FILEATTACHMENT = 1 << 16,
PPS_RENDER_ANNOTS_SOUND = 1 << 17,
PPS_RENDER_ANNOTS_MOVIE = 1 << 18,
PPS_RENDER_ANNOTS_WIDGET = 1 << 19,
PPS_RENDER_ANNOTS_SCREEN = 1 << 20,
PPS_RENDER_ANNOTS_PRINTERMARK = 1 << 21,
PPS_RENDER_ANNOTS_TRAPNET = 1 << 22,
PPS_RENDER_ANNOTS_WATERMARK = 1 << 23,
PPS_RENDER_ANNOTS_3D = 1 << 24,
PPS_RENDER_ANNOTS_RICHMEDIA = 1 << 25,
/* Everything below are special flags to combine them all */
PPS_RENDER_ANNOTS_PRINT_DOCUMENT = PPS_RENDER_ANNOTS_WIDGET,
PPS_RENDER_ANNOTS_PRINT_MARKUP = ~(PPS_RENDER_ANNOTS_LINK | PPS_RENDER_ANNOTS_POPUP | PPS_RENDER_ANNOTS_MOVIE | PPS_RENDER_ANNOTS_SCREEN | PPS_RENDER_ANNOTS_PRINTERMARK | PPS_RENDER_ANNOTS_TRAPNET | PPS_RENDER_ANNOTS_WATERMARK | PPS_RENDER_ANNOTS_3D),
PPS_RENDER_ANNOTS_PRINT_STAMP = PPS_RENDER_ANNOTS_WIDGET | PPS_RENDER_ANNOTS_STAMP,
PPS_RENDER_ANNOTS_PRINT_ALL = PPS_RENDER_ANNOTS_PRINT_MARKUP,
/* Enable all flags, by shifting and substracting the last one */
PPS_RENDER_ANNOTS_ALL = (PPS_RENDER_ANNOTS_RICHMEDIA << 1) - 1
} PpsRenderAnnotsFlags;
struct _PpsRenderContext {
GObject parent;
PpsPage *page;
gint rotation;
gdouble scale;
gint target_width;
gint target_height;
PpsRenderAnnotsFlags annot_flags;
};
PPS_PUBLIC
PpsRenderContext *pps_render_context_new (PpsPage *page,
gint rotation,
gdouble scale,
PpsRenderAnnotsFlags annot_flags);
PPS_PUBLIC
void pps_render_context_set_page (PpsRenderContext *rc,
PpsPage *page);
PPS_PUBLIC
void pps_render_context_set_rotation (PpsRenderContext *rc,
gint rotation);
PPS_PUBLIC
void pps_render_context_set_scale (PpsRenderContext *rc,
gdouble scale);
PPS_PUBLIC
void pps_render_context_set_target_size (PpsRenderContext *rc,
int target_width,
int target_height);
PPS_PUBLIC
void pps_render_context_compute_scaled_size (PpsRenderContext *rc,
double width_points,
double height_points,
int *scaled_width,
int *scaled_height);
PPS_PUBLIC
void pps_render_context_compute_transformed_size (PpsRenderContext *rc,
double width_points,
double height_points,
int *transformed_width,
int *transformed_height);
PPS_PUBLIC
void pps_render_context_compute_scales (PpsRenderContext *rc,
double width_points,
double height_points,
double *scale_x,
double *scale_y);
G_END_DECLS
|