#include "ev-view.h"
#include "ev-pixbuf-cache.h"
#include "ev-page-cache.h"
+#include "ev-image.h"
/* Information for middle clicking and moving around the doc */
typedef struct {
GList *selections;
} SelectionInfo;
+/* Information for handling images DND */
+typedef struct {
+ gboolean in_drag;
+ GdkPoint start;
+ EvImage *image;
+} ImageDNDInfo;
+
typedef enum {
SCROLL_TO_KEEP_POSITION,
SCROLL_TO_PAGE_POSITION,
EV_VIEW_CURSOR_DRAG
} EvViewCursor;
+typedef enum {
+ EV_PRESENTATION_NORMAL,
+ EV_PRESENTATION_BLACK,
+ EV_PRESENTATION_WHITE,
+ EV_PRESENTATION_END
+} EvPresentationState;
+
struct _EvView {
GtkWidget parent_instance;
gint end_page;
gint current_page;
- int rotation;
- double scale;
- int spacing;
+ gint rotation;
+ gdouble scale;
+ gint spacing;
+ gdouble dpi;
+ gdouble max_scale;
+ gdouble min_scale;
gboolean loading;
gboolean continuous;
gboolean dual_page;
gboolean fullscreen;
gboolean presentation;
- gboolean end_presentation;
EvSizingMode sizing_mode;
+ cairo_surface_t *loading_text;
+
+ /* Presentation */
+ EvPresentationState presentation_state;
+ EvSizingMode sizing_mode_saved;
+ double scale_saved;
+ guint trans_timeout_id;
/* Common for button press handling */
int pressed_button;
EvViewSelectionMode selection_mode;
SelectionInfo selection_info;
+ /* Image DND */
+ ImageDNDInfo image_dnd_info;
+
/* Links */
GtkWidget *link_tooltip;
EvLink *hovered_link;
+
+ /* Goto Popup */
+ GtkWidget *goto_window;
+ GtkWidget *goto_entry;
};
struct _EvViewClass {
EvScrollType scroll,
gboolean horizontal);
void (*zoom_invalid) (EvView *view);
+ void (*handle_link) (EvView *view,
+ EvLink *link);
void (*external_link) (EvView *view,
EvLinkAction *action);
void (*popup_menu) (EvView *view,