src/imgstore.c

branch
gaim
changeset 20470
77693555855f
parent 13071
b98e72d4089a
parent 20469
b2836a24d81e
child 20471
1966704b3e42
--- a/src/imgstore.c	Mon Apr 16 00:43:53 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/**
- * @file imgstore.h IM Image Store API
- * @ingroup core
- *
- * gaim
- *
- * Gaim is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * 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 of the License, 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
-*/
-
-#include <glib.h>
-#include <debug.h>
-#include <imgstore.h>
-
-static GSList *imgstore = NULL;
-static int nextid = 0;
-
-/**
- * Stored image
- *
- * Represents a single IM image awaiting display and/or transmission.
- * Now that this type is basicly private too, these two structs could
- * probably be combined.
- */
-struct _GaimStoredImage
-{
-	char *data;		/**< The image data.		*/
-	size_t size;		/**< The image data's size.	*/
-	char *filename;		/**< The filename (for the UI)	*/
-};
-
-typedef struct
-{
-	int id;
-	int refcount;
-	GaimStoredImage *img;
-} GaimStoredImagePriv;
-
-/* private functions */
-
-static GaimStoredImagePriv *gaim_imgstore_get_priv(int id) {
-	GSList *tmp = imgstore;
-	GaimStoredImagePriv *priv = NULL;
-
-	g_return_val_if_fail(id > 0, NULL);
-
-	while (tmp && !priv) {
-		GaimStoredImagePriv *tmp_priv = tmp->data;
-
-		if (tmp_priv->id == id)
-			priv = tmp_priv;
-
-		tmp = tmp->next;
-	}
-
-	if (!priv)
-		gaim_debug(GAIM_DEBUG_ERROR, "imgstore", "failed to find image id %d\n", id);
-
-	return priv;
-}
-
-static void gaim_imgstore_free_priv(GaimStoredImagePriv *priv) {
-	GaimStoredImage *img = NULL;
-
-	g_return_if_fail(priv != NULL);
-
-	img = priv->img;
-	if (img) {
-		if (img->data)
-			g_free(img->data);
-		if (img->filename)
-			g_free(img->filename);
-		g_free(img);
-	}
-
-	gaim_debug(GAIM_DEBUG_INFO, "imgstore", "freed image id %d\n", priv->id);
-
-	g_free(priv);
-
-	imgstore = g_slist_remove(imgstore, priv);
-}
-
-/* public functions */
-
-int gaim_imgstore_add(const void *data, size_t size, const char *filename) {
-	GaimStoredImagePriv *priv;
-	GaimStoredImage *img;
-
-	g_return_val_if_fail(data != NULL, 0);
-	g_return_val_if_fail(size > 0, 0);
-
-	img = g_new0(GaimStoredImage, 1);
-	img->data = g_memdup(data, size);
-	img->size = size;
-	img->filename = g_strdup(filename);
-
-	priv = g_new0(GaimStoredImagePriv, 1);
-	priv->id = ++nextid;
-	priv->refcount = 1;
-	priv->img = img;
-
-	imgstore = g_slist_append(imgstore, priv);
-	gaim_debug(GAIM_DEBUG_INFO, "imgstore", "added image id %d\n", priv->id);
-
-	return priv->id;
-}
-
-GaimStoredImage *gaim_imgstore_get(int id) {
-	GaimStoredImagePriv *priv = gaim_imgstore_get_priv(id);
-
-	g_return_val_if_fail(priv != NULL, NULL);
-
-	gaim_debug(GAIM_DEBUG_INFO, "imgstore", "retrieved image id %d\n", priv->id);
-
-	return priv->img;
-}
-
-gpointer gaim_imgstore_get_data(GaimStoredImage *i) {
-	return i->data;
-}
-
-size_t gaim_imgstore_get_size(GaimStoredImage *i) {
-	return i->size;
-}
-
-const char *gaim_imgstore_get_filename(GaimStoredImage *i) {
-	return i->filename;
-}
-
-void gaim_imgstore_ref(int id) {
-	GaimStoredImagePriv *priv = gaim_imgstore_get_priv(id);
-
-	g_return_if_fail(priv != NULL);
-
-	(priv->refcount)++;
-
-	gaim_debug(GAIM_DEBUG_INFO, "imgstore", "referenced image id %d (count now %d)\n", priv->id, priv->refcount);
-}
-
-void gaim_imgstore_unref(int id) {
-	GaimStoredImagePriv *priv = gaim_imgstore_get_priv(id);
-
-	g_return_if_fail(priv != NULL);
-	g_return_if_fail(priv->refcount > 0);
-
-	(priv->refcount)--;
-
-	gaim_debug(GAIM_DEBUG_INFO, "imgstore", "unreferenced image id %d (count now %d)\n", priv->id, priv->refcount);
-
-	if (priv->refcount == 0)
-		gaim_imgstore_free_priv(priv);
-}

mercurial