X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=backend%2Fdjvu%2Fdjvu-document.c;h=aa0e595d78b3e1d9919798fde5186bf7e08d6427;hb=86e41a9d457049a4cc45efba0edcb15efbc6b045;hp=e26db4a693530fe3f952bd721812afd656bbf8d9;hpb=766adb9bff7a5c8ada0d18cafd3643e647fb6f23;p=evince.git diff --git a/backend/djvu/djvu-document.c b/backend/djvu/djvu-document.c index e26db4a6..aa0e595d 100644 --- a/backend/djvu/djvu-document.c +++ b/backend/djvu/djvu-document.c @@ -14,7 +14,7 @@ * * 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" @@ -51,11 +51,11 @@ struct _DjvuDocumentClass typedef struct _DjvuDocumentClass DjvuDocumentClass; -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, { @@ -323,7 +323,6 @@ djvu_document_render (EvDocument *document, 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); @@ -355,19 +354,12 @@ djvu_document_render (EvDocument *document, 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; @@ -383,6 +375,8 @@ djvu_document_render (EvDocument *document, rowstride, pixels); + cairo_surface_mark_dirty (surface); + return surface; } @@ -449,7 +443,7 @@ djvu_text_copy (DjvuDocument *djvu_document, static gchar * djvu_selection_get_selected_text (EvSelection *selection, - EvRenderContext *rc, + EvPage *page, EvSelectionStyle style, EvRectangle *points) { @@ -459,13 +453,13 @@ djvu_selection_get_selected_text (EvSelection *selection, 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 (""); @@ -474,7 +468,7 @@ djvu_selection_get_selected_text (EvSelection *selection, } static void -djvu_selection_iface_init (EvSelectionIface *iface) +djvu_selection_iface_init (EvSelectionInterface *iface) { iface->get_selected_text = djvu_selection_get_selected_text; } @@ -547,7 +541,7 @@ djvu_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document, } 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; @@ -611,7 +605,7 @@ djvu_document_file_exporter_get_capabilities (EvFileExporter *exporter) } 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; @@ -690,12 +684,12 @@ djvu_document_find_find_text (EvDocumentFind *document, } 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, EvPage *page) { @@ -703,7 +697,7 @@ djvu_document_links_get_links (EvDocumentLinks *document_links, } 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;