page-widget.h 2.62 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* See LICENSE file for license and copyright information */

#ifndef PAGE_WIDGET_H
#define PAGE_WIDGET_H

#include <gtk/gtk.h>
#include "document.h"

/**
 * The page view widget. The widget handles all the rendering on its own. It
 * only has to be resized. The widget also manages and handles all the
 * rectangles for highlighting.
 *
 * Before the properties contain the correct values, 'draw-links' has to be set
 * to TRUE at least one time.
 * */
typedef struct zathura_page_widget_s ZathuraPage;
typedef struct zathura_page_widget_class_s ZathuraPageClass;

Sebastian Ramacher's avatar
Sebastian Ramacher committed
20
21
struct zathura_page_widget_s
{
22
23
24
  GtkDrawingArea parent;
};

Sebastian Ramacher's avatar
Sebastian Ramacher committed
25
26
struct zathura_page_widget_class_s
{
27
28
29
30
31
32
33
34
  GtkDrawingAreaClass parent_class;
};

#define ZATHURA_TYPE_PAGE \
  (zathura_page_widget_get_type ())
#define ZATHURA_PAGE(obj) \
  (G_TYPE_CHECK_INSTANCE_CAST ((obj), ZATHURA_TYPE_PAGE, ZathuraPage))
#define ZATHURA_PAGE_CLASS(obj) \
35
  (G_TYPE_CHECK_CLASS_CAST ((obj), ZATHURA_TYPE_PAGE, ZathuraPageClass))
36
#define ZATHURA_IS_PAGE(obj) \
37
  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ZATHURA_TYPE_PAGE))
Sebastian Ramacher's avatar
Sebastian Ramacher committed
38
#define ZATHURA_IS_PAGE_CLASS(obj) \
39
40
  (G_TYPE_CHECK_CLASS_TYPE ((obj), ZATHURA_TYPE_PAGE))
#define ZATHURA_PAGE_GET_CLASS \
Sebastian Ramacher's avatar
Sebastian Ramacher committed
41
  (G_TYPE_INSTANCE_GET_CLASS ((obj), ZATHURA_TYPE_PAGE, ZathuraPageClass))
42
43
44
45
46
47
48
49

/**
 * Returns the type of the page view widget.
 * @return the type
 */
GType zathura_page_widget_get_type(void);
/**
 * Create a page view widget.
50
 * @param zathura the zathura instance
51
52
53
 * @param page the page to be displayed
 * @return a page view widget
 */
54
GtkWidget* zathura_page_widget_new(zathura_t* zathura, zathura_page_t* page);
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
/**
 * Update the widget's surface. This should only be called from the render
 * thread.
 * @param widget the widget
 * @param surface the new surface
 */
void zathura_page_widget_update_surface(ZathuraPage* widget, cairo_surface_t* surface);
/**
 * Draw a rectangle to mark links or search results
 * @param widget the widget
 * @param rectangle the rectangle
 * @param linkid the link id if it's a link, -1 otherwise
 */
void zathura_page_widget_draw_rectangle(ZathuraPage* widget, zathura_rectangle_t* rectangle, int linkid);
/**
 * Clear all rectangles.
 * @param widget the widget
 */
void zathura_page_widget_clear_rectangles(ZathuraPage* widget);

/**
 * Returns the zathura link object at the given index
 *
 * @param widget the widget
 * @param index Index of the link
 * @return Link object or NULL if an error occured
 */
zathura_link_t* zathura_page_widget_link_get(ZathuraPage* widget, unsigned int index);

84
85
86
87
88
89
90
/**
 * Update the last view time of the page.
 *
 * @param widget the widget
 */
void zathura_page_widget_update_view_time(ZathuraPage* widget);

91
#endif