From fb5f322406068fb9e514d204f9ba999bc40e2c55 Mon Sep 17 00:00:00 2001 From: Claudio Saavedra Date: Tue, 24 Jan 2012 14:25:29 +0200 Subject: Add a service for snapshotting webpages This service provides pixbufs for URLs while caching these locally as thumbnails. gnome-desktop-thumbnail is used to handle caching. https://bugzilla.gnome.org/show_bug.cgi?id=668578 --- lib/ephy-snapshot-service.h | 94 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 lib/ephy-snapshot-service.h (limited to 'lib/ephy-snapshot-service.h') diff --git a/lib/ephy-snapshot-service.h b/lib/ephy-snapshot-service.h new file mode 100644 index 000000000..4de9745aa --- /dev/null +++ b/lib/ephy-snapshot-service.h @@ -0,0 +1,94 @@ +/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * Copyright © 2012 Igalia S.L. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _EPHY_SNAPSHOT_SERVICE_H +#define _EPHY_SNAPSHOT_SERVICE_H + +#include +#ifdef HAVE_WEBKIT2 +#include +#else +#include +#endif + +#include + +G_BEGIN_DECLS + +#define EPHY_TYPE_SNAPSHOT_SERVICE (ephy_snapshot_service_get_type()) +#define EPHY_SNAPSHOT_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EPHY_TYPE_SNAPSHOT_SERVICE, EphySnapshotService)) +#define EPHY_SNAPSHOT_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EPHY_TYPE_SNAPSHOT_SERVICE, EphySnapshotServiceClass)) +#define EPHY_IS_SNAPSHOT_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EPHY_TYPE_SNAPSHOT_SERVICE)) +#define EPHY_IS_SNAPSHOT_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EPHY_TYPE_SNAPSHOT_SERVICE)) +#define EPHY_SNAPSHOT_SERVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EPHY_TYPE_SNAPSHOT_SERVICE, EphySnapshotServiceClass)) + +typedef struct _EphySnapshotService EphySnapshotService; +typedef struct _EphySnapshotServiceClass EphySnapshotServiceClass; +typedef struct _EphySnapshotServicePrivate EphySnapshotServicePrivate; + +struct _EphySnapshotService +{ + GObject parent; + + /*< private >*/ + EphySnapshotServicePrivate *priv; +}; + +struct _EphySnapshotServiceClass +{ + GObjectClass parent_class; +}; + +/* Values taken from the Web mockups. */ +#define EPHY_THUMBNAIL_WIDTH 172 +#define EPHY_THUMBNAIL_HEIGHT 172 + +typedef void (* EphySnapshotServiceCallback) (GdkPixbuf *snapshot, + gpointer user_data); + +GType ephy_snapshot_service_get_type (void) G_GNUC_CONST; + +EphySnapshotService *ephy_snapshot_service_get_default (void); + +void ephy_snapshot_service_get_snapshot_async (EphySnapshotService *service, + WebKitWebView *webview, + const char *url, + const time_t mtime, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GdkPixbuf * ephy_snapshot_service_get_snapshot_finish (EphySnapshotService *service, + GAsyncResult *result, + GError **error); + +void ephy_snapshot_service_save_snapshot_async (EphySnapshotService *service, + GdkPixbuf *snapshot, + const char *url, + time_t mtime, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +GdkPixbuf* ephy_snapshot_service_crop_snapshot (cairo_surface_t *surface); + +G_END_DECLS + +#endif /* _EPHY_SNAPSHOT_SERVICE_H */ -- cgit v1.2.3