*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "config.h"
struct _DjvuDocumentClass
{
- GObjectClass parent_class;
+ EvDocumentClass parent_class;
};
typedef struct _DjvuDocumentClass DjvuDocumentClass;
-static void djvu_document_document_iface_init (EvDocumentIface *iface);
-static void djvu_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface);
-static void djvu_document_file_exporter_iface_init (EvFileExporterIface *iface);
-static void djvu_document_find_iface_init (EvDocumentFindIface *iface);
-static void djvu_document_document_links_iface_init (EvDocumentLinksIface *iface);
-static void djvu_selection_iface_init (EvSelectionIface *iface);
+static void djvu_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface);
+static void djvu_document_file_exporter_iface_init (EvFileExporterInterface *iface);
+static void djvu_document_find_iface_init (EvDocumentFindInterface *iface);
+static void djvu_document_document_links_iface_init (EvDocumentLinksInterface *iface);
+static void djvu_selection_iface_init (EvSelectionInterface *iface);
EV_BACKEND_REGISTER_WITH_CODE (DjvuDocument, djvu_document,
{
{
static GQuark q = 0;
if (q == 0)
- q = g_quark_from_static_string ("ev-djvu-quark");
+ q = g_quark_from_string ("ev-djvu-quark");
return q;
}
if (!doc) {
g_free (filename);
+ g_set_error_literal (error,
+ EV_DOCUMENT_ERROR,
+ EV_DOCUMENT_ERROR_INVALID,
+ _("DjVu document has incorrect format"));
return FALSE;
}
g_set_error_literal (error,
G_FILE_ERROR,
G_FILE_ERROR_EXIST,
- _("The document is composed by several files. "
- "One or more of such files cannot be accessed."));
+ _("The document is composed of several files. "
+ "One or more of these files cannot be accessed."));
return FALSE;
}
ddjvu_page_t *d_page;
ddjvu_page_rotation_t rotation;
double page_width, page_height, tmp;
- static const cairo_user_data_key_t key;
d_page = ddjvu_page_create_by_pageno (djvu_document->d_document, rc->page->index);
default:
rotation = DDJVU_ROTATE_0;
}
-#ifdef HAVE_CAIRO_FORMAT_STRIDE_FOR_WIDTH
- rowstride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, page_width);
-#else
- rowstride = page_width * 4;
-#endif
- pixels = (gchar *) g_malloc (page_height * rowstride);
- surface = cairo_image_surface_create_for_data ((guchar *)pixels,
- CAIRO_FORMAT_RGB24,
- page_width,
- page_height,
- rowstride);
- cairo_surface_set_user_data (surface, &key,
- pixels, (cairo_destroy_func_t)g_free);
+
+ surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
+ page_width, page_height);
+ rowstride = cairo_image_surface_get_stride (surface);
+ pixels = (gchar *)cairo_image_surface_get_data (surface);
+
prect.x = 0;
prect.y = 0;
prect.w = page_width;
rowstride,
pixels);
+ cairo_surface_mark_dirty (surface);
+
return surface;
}
static void
djvu_document_class_init (DjvuDocumentClass *klass)
{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ EvDocumentClass *ev_document_class = EV_DOCUMENT_CLASS (klass);
gobject_class->finalize = djvu_document_finalize;
-}
-
-static EvDocumentInfo *
-djvu_document_get_info (EvDocument *document)
-{
- EvDocumentInfo *info;
-
- info = g_new0 (EvDocumentInfo, 1);
- return info;
-}
-
-static void
-djvu_document_document_iface_init (EvDocumentIface *iface)
-{
- iface->load = djvu_document_load;
- iface->save = djvu_document_save;
- iface->get_n_pages = djvu_document_get_n_pages;
- iface->get_page_size = djvu_document_get_page_size;
- iface->render = djvu_document_render;
- iface->get_info = djvu_document_get_info;
+ ev_document_class->load = djvu_document_load;
+ ev_document_class->save = djvu_document_save;
+ ev_document_class->get_n_pages = djvu_document_get_n_pages;
+ ev_document_class->get_page_size = djvu_document_get_page_size;
+ ev_document_class->render = djvu_document_render;
}
static gchar *
static gchar *
djvu_selection_get_selected_text (EvSelection *selection,
- EvRenderContext *rc,
+ EvPage *page,
EvSelectionStyle style,
EvRectangle *points)
{
gchar *text;
djvu_document_get_page_size (EV_DOCUMENT (djvu_document),
- rc->page, &width, &height);
+ page, &width, &height);
rectangle.x1 = points->x1 / SCALE_FACTOR;
rectangle.y1 = (height - points->y2) / SCALE_FACTOR;
rectangle.x2 = points->x2 / SCALE_FACTOR;
rectangle.y2 = (height - points->y1) / SCALE_FACTOR;
- text = djvu_text_copy (djvu_document, rc->page->index, &rectangle);
+ text = djvu_text_copy (djvu_document, page->index, &rectangle);
if (text == NULL)
text = g_strdup ("");
}
static void
-djvu_selection_iface_init (EvSelectionIface *iface)
+djvu_selection_iface_init (EvSelectionInterface *iface)
{
iface->get_selected_text = djvu_selection_get_selected_text;
}
}
static void
-djvu_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface)
+djvu_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface)
{
iface->get_thumbnail = djvu_document_thumbnails_get_thumbnail;
iface->get_dimensions = djvu_document_thumbnails_get_dimensions;
}
static void
-djvu_document_file_exporter_iface_init (EvFileExporterIface *iface)
+djvu_document_file_exporter_iface_init (EvFileExporterInterface *iface)
{
iface->begin = djvu_document_file_exporter_begin;
iface->do_page = djvu_document_file_exporter_do_page;
}
static void
-djvu_document_find_iface_init (EvDocumentFindIface *iface)
+djvu_document_find_iface_init (EvDocumentFindInterface *iface)
{
iface->find_text = djvu_document_find_find_text;
}
-static GList *
+static EvMappingList *
djvu_document_links_get_links (EvDocumentLinks *document_links,
- gint page)
+ EvPage *page)
{
- return djvu_links_get_links (document_links, page, SCALE_FACTOR);
+ return djvu_links_get_links (document_links, page->index, SCALE_FACTOR);
}
static void
-djvu_document_document_links_iface_init (EvDocumentLinksIface *iface)
+djvu_document_document_links_iface_init (EvDocumentLinksInterface *iface)
{
iface->has_document_links = djvu_links_has_document_links;
iface->get_links_model = djvu_links_get_links_model;