diff options
author | Jannis Pohlmann <jannis@xfce.org> | 2009-06-08 20:31:41 +0200 |
---|---|---|
committer | Jannis Pohlmann <jannis@xfce.org> | 2009-06-08 20:31:41 +0200 |
commit | 9d5f1b7b03bd0ad50365fa8186a0d9bce690f31d (patch) | |
tree | 9aed893b732fd3266c52fdbed77a1ac754199879 /tumbler/tumbler-abstract-thumbnailer.h | |
parent | 04bb883f2b53aea6f848672ee7dea42cf7a6af86 (diff) | |
download | tumbler-9d5f1b7b03bd0ad50365fa8186a0d9bce690f31d.tar.gz |
Add plugin interface for cache and thumbnailer implementations.
This is a major refactoring of the source code. Amongst others, the
classes TumblerProviderFactory, TumblerThumbnailer,
TumblerAbstractThumbnailer, TumblerThumbnailerProvider, TumblerCache,
TumblerCacheProvider and TumblerFileInfo have been added.
From now on tumbler supports different storage backends and thumbnailers
as plugins. Storage backends have to implement TumblerCache,
thumbnailers have to implement TumblerThumbnailer.
Plugins have to implement three methods: tumbler_plugin_initialize(),
tumbler_plugin_shutdown() and tumbler_plugin_get_types(). The latter
is expected to return a list of provider types for cache or thumbnailer
implementations.
Two example plugins have been added, one for the XDG thumbnail cache
and one for a GdkPixbuf based thumbnailer.
The code of tumblerd was updated to reflect these changes in libtumbler.
Diffstat (limited to 'tumbler/tumbler-abstract-thumbnailer.h')
-rw-r--r-- | tumbler/tumbler-abstract-thumbnailer.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tumbler/tumbler-abstract-thumbnailer.h b/tumbler/tumbler-abstract-thumbnailer.h new file mode 100644 index 0000000..5a12ade --- /dev/null +++ b/tumbler/tumbler-abstract-thumbnailer.h @@ -0,0 +1,64 @@ +/* vi:set et ai sw=2 sts=2 ts=2: */ +/*- + * Copyright (c) 2009 Jannis Pohlmann <jannis@xfce.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 Library General Public License for more details. + * + * You should have received a copy of the GNU Library General + * Public License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#if !defined (TUMBLER_INSIDE_TUMBLER_H) && !defined (TUMBLER_COMPILATION) +#error "Only <tumbler/tumbler.h> may be included directly. This file might disappear or change contents." +#endif + +#ifndef __TUMBLER_ABSTRACT_THUMBNAILER_H__ +#define __TUMBLER_ABSTRACT_THUMBNAILER_H__ + +#include <glib-object.h> + +G_BEGIN_DECLS; + +#define TUMBLER_TYPE_ABSTRACT_THUMBNAILER (tumbler_abstract_thumbnailer_get_type ()) +#define TUMBLER_ABSTRACT_THUMBNAILER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TUMBLER_TYPE_ABSTRACT_THUMBNAILER, TumblerAbstractThumbnailer)) +#define TUMBLER_ABSTRACT_THUMBNAILER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TUMBLER_TYPE_ABSTRACT_THUMBNAILER, TumblerAbstractThumbnailerClass)) +#define TUMBLER_IS_ABSTRACT_THUMBNAILER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TUMBLER_TYPE_ABSTRACT_THUMBNAILER)) +#define TUMBLER_IS_ABSTRACT_THUMBNAILER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TUMBLER_TYPE_ABSTRACT_THUMBNAILER) +#define TUMBLER_ABSTRACT_THUMBNAILER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TUMBLER_TYPE_ABSTRACT_THUMBNAILER, TumblerAbstractThumbnailerClass)) + +typedef struct _TumblerAbstractThumbnailerPrivate TumblerAbstractThumbnailerPrivate; +typedef struct _TumblerAbstractThumbnailerClass TumblerAbstractThumbnailerClass; +typedef struct _TumblerAbstractThumbnailer TumblerAbstractThumbnailer; + +struct _TumblerAbstractThumbnailerClass +{ + GObjectClass __parent__; + + /* virtual methods */ + void (*create) (TumblerAbstractThumbnailer *thumbnailer, + const gchar *uri, + const gchar *mime_hint); +}; + +struct _TumblerAbstractThumbnailer +{ + GObject __parent__; + + TumblerAbstractThumbnailerPrivate *priv; +}; + +GType tumbler_abstract_thumbnailer_get_type (void) G_GNUC_CONST; + +G_END_DECLS; + +#endif /* !__TUMBLER_ABSTRACT_THUMBNAILER_H__ */ |