libpurple/image.c

Sat, 13 Apr 2024 21:21:59 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sat, 13 Apr 2024 21:21:59 -0500
changeset 42715
f886f74847b0
parent 42656
df9aafbae930
child 42767
8cf1d11b59c1
permissions
-rw-r--r--

Remove PurpleIMConversation and PurpleProtocolIM

Both of these have been replaced and needed to be removed.

Testing Done:
Checked in with our turtle buddies.

Reviewed at https://reviews.imfreedom.org/r/3113/

42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
1 /*
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
2 * Purple - Internet Messaging Library
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
4 *
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
7 * source distribution.
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
8 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
9 * This library is free software; you can redistribute it and/or modify it
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
10 * under the terms of the GNU General Public License as published by the Free
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
11 * Software Foundation; either version 2 of the License, or (at your option)
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
12 * any later version.
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
13 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
14 * This library is distributed in the hope that it will be useful, but WITHOUT
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
17 * more details.
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
18 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
19 * You should have received a copy of the GNU General Public License along with
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
20 * this library; if not, see <https://www.gnu.org/licenses/>.
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
21 */
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
22
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
23 #include "debug.h"
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
24 #include "image.h"
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40195
diff changeset
25 #include "util.h"
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
26
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
27 typedef struct {
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
28 gchar *path;
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
29
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
30 GBytes *contents;
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
31
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
32 const gchar *extension;
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
33 const gchar *mime;
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
34 gchar *gen_filename;
35829
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
35 gchar *friendly_filename;
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
36 } PurpleImagePrivate;
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
37
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
38 enum {
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
39 PROP_0,
38567
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
40 PROP_PATH,
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
41 PROP_CONTENTS,
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
42 PROP_SIZE,
42584
687260353985 Make signal and property enums and initializers consistent
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41960
diff changeset
43 N_PROPERTIES,
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
44 };
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
45
42584
687260353985 Make signal and property enums and initializers consistent
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41960
diff changeset
46 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
47
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
48 G_DEFINE_TYPE_WITH_PRIVATE(PurpleImage, purple_image, G_TYPE_OBJECT);
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
49
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
50 /******************************************************************************
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
51 * Helpers
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
52 ******************************************************************************/
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
53 static void
38567
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
54 _purple_image_set_path(PurpleImage *image, const gchar *path) {
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
55 PurpleImagePrivate *priv = purple_image_get_instance_private(image);
38567
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
56
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
57 g_free(priv->path);
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
58
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
59 priv->path = g_strdup(path);
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
60 }
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
61
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
62 static void
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
63 _purple_image_set_contents(PurpleImage *image, GBytes *bytes) {
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
64 PurpleImagePrivate *priv = purple_image_get_instance_private(image);
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
65
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
66 if(priv->contents)
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
67 g_bytes_unref(priv->contents);
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
68
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
69 priv->contents = (bytes) ? g_bytes_ref(bytes) : NULL;
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
70 }
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
71
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
72 /******************************************************************************
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
73 * Object stuff
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
74 ******************************************************************************/
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
75 static void
41960
c8a4853205e3 Bump C standard to C99 for libpurple files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41685
diff changeset
76 purple_image_init(G_GNUC_UNUSED PurpleImage *image) {
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
77 }
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
78
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
79 static void
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
80 purple_image_finalize(GObject *obj) {
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
81 PurpleImage *image = PURPLE_IMAGE(obj);
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
82 PurpleImagePrivate *priv = purple_image_get_instance_private(image);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
83
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
84 if(priv->contents)
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
85 g_bytes_unref(priv->contents);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
86
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
87 g_free(priv->path);
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
88 g_free(priv->gen_filename);
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
89 g_free(priv->friendly_filename);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
90
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
91 G_OBJECT_CLASS(purple_image_parent_class)->finalize(obj);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
92 }
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
93
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
94 static void
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
95 purple_image_set_property(GObject *obj, guint param_id,
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
96 const GValue *value, GParamSpec *pspec)
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
97 {
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
98 PurpleImage *image = PURPLE_IMAGE(obj);
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
99
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
100 switch (param_id) {
38567
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
101 case PROP_PATH:
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
102 _purple_image_set_path(image, g_value_get_string(value));
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
103 break;
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
104 case PROP_CONTENTS:
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
105 _purple_image_set_contents(image, g_value_get_boxed(value));
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
106 break;
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
107 default:
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
108 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
109 break;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
110 }
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
111 }
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
112
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
113 static void
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
114 purple_image_get_property(GObject *obj, guint param_id, GValue *value,
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
115 GParamSpec *pspec)
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
116 {
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
117 PurpleImage *image = PURPLE_IMAGE(obj);
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
118
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
119 switch (param_id) {
38567
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
120 case PROP_PATH:
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
121 g_value_set_string(value, purple_image_get_path(image));
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
122 break;
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
123 case PROP_CONTENTS:
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
124 g_value_set_boxed(value, purple_image_get_contents(image));
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
125 break;
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
126 case PROP_SIZE:
38298
f0a8f63f9312 rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents: 38295
diff changeset
127 g_value_set_uint64(value, purple_image_get_data_size(image));
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
128 break;
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
129 default:
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
130 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
131 break;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
132 }
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
133 }
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
134
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
135 static void
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
136 purple_image_class_init(PurpleImageClass *klass) {
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
137 GObjectClass *gobj_class = G_OBJECT_CLASS(klass);
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
138
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
139 gobj_class->finalize = purple_image_finalize;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
140 gobj_class->get_property = purple_image_get_property;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
141 gobj_class->set_property = purple_image_set_property;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
142
42656
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
143 /**
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
144 * PurpleImage:path:
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
145 *
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
146 * The file path for the image if one was provided.
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
147 *
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
148 * Since: 3.0
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
149 */
38567
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
150 properties[PROP_PATH] = g_param_spec_string(
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
151 "path",
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
152 "path",
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
153 "The filepath for the image if one was provided",
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
154 NULL,
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
155 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
156 );
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
157
42656
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
158 /**
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
159 * PurpleImage:contents:
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
160 *
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
161 * The contents of the image.
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
162 *
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
163 * Since: 3.0
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
164 */
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
165 properties[PROP_CONTENTS] = g_param_spec_boxed(
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
166 "contents",
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
167 "contents",
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
168 "The contents of the image stored in a GBytes",
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
169 G_TYPE_BYTES,
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
170 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
171 );
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
172
42656
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
173 /**
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
174 * PurpleImage:size:
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
175 *
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
176 * The size of the image in bytes.
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
177 *
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
178 * Since: 3.0
df9aafbae930 Add a doc-check unit test to libpurple and fix the issues it has found
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
179 */
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
180 properties[PROP_SIZE] = g_param_spec_uint64(
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
181 "size",
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
182 "size",
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
183 "The size of the image in bytes",
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
184 0,
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
185 G_MAXUINT64,
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
186 0,
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
187 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
188 );
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
189
42584
687260353985 Make signal and property enums and initializers consistent
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41960
diff changeset
190 g_object_class_install_properties(gobj_class, N_PROPERTIES, properties);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
191 }
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
192
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
193 /******************************************************************************
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
194 * API
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
195 ******************************************************************************/
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
196 PurpleImage *
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
197 purple_image_new_from_bytes(GBytes *bytes) {
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
198 return g_object_new(
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
199 PURPLE_TYPE_IMAGE,
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
200 "contents", bytes,
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
201 NULL
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
202 );
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
203 }
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
204
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
205 PurpleImage *
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
206 purple_image_new_from_file(const gchar *path, GError **error) {
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
207 PurpleImage *image = NULL;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
208 GBytes *bytes = NULL;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
209 gchar *contents = NULL;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
210 gsize length = 0;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
211
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
212 if(!g_file_get_contents(path, &contents, &length, error)) {
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
213 return NULL;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
214 }
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
215
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
216 bytes = g_bytes_new_take(contents, length);
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
217
38568
9463c7db20fa Set the path on the image for purple_image_new_from_file, update/add some tests
Gary Kramlich <grim@reaperworld.com>
parents: 38567
diff changeset
218 image = g_object_new(
9463c7db20fa Set the path on the image for purple_image_new_from_file, update/add some tests
Gary Kramlich <grim@reaperworld.com>
parents: 38567
diff changeset
219 PURPLE_TYPE_IMAGE,
9463c7db20fa Set the path on the image for purple_image_new_from_file, update/add some tests
Gary Kramlich <grim@reaperworld.com>
parents: 38567
diff changeset
220 "contents", bytes,
9463c7db20fa Set the path on the image for purple_image_new_from_file, update/add some tests
Gary Kramlich <grim@reaperworld.com>
parents: 38567
diff changeset
221 "path", path,
9463c7db20fa Set the path on the image for purple_image_new_from_file, update/add some tests
Gary Kramlich <grim@reaperworld.com>
parents: 38567
diff changeset
222 NULL
9463c7db20fa Set the path on the image for purple_image_new_from_file, update/add some tests
Gary Kramlich <grim@reaperworld.com>
parents: 38567
diff changeset
223 );
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
224
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
225 g_bytes_unref(bytes);
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
226
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
227 return image;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
228 }
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
229
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
230 PurpleImage *
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
231 purple_image_new_from_data(const guint8 *data, gsize length) {
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
232 PurpleImage *image;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
233 GBytes *bytes = NULL;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
234
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
235 bytes = g_bytes_new(data, length);
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
236
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
237 image = purple_image_new_from_bytes(bytes);
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
238
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
239 g_bytes_unref(bytes);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
240
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
241 return image;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
242 }
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
243
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
244 PurpleImage *
38294
5a797c987eb2 Rename purple_image_new_from_data_take to purple_image_new_take_data
Gary Kramlich <grim@reaperworld.com>
parents: 38293
diff changeset
245 purple_image_new_take_data(guint8 *data, gsize length) {
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
246 PurpleImage *image;
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
247 GBytes *bytes = NULL;
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
248
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
249 bytes = g_bytes_new_take(data, length);
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
250
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
251 image = purple_image_new_from_bytes(bytes);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
252
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
253 g_bytes_unref(bytes);
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
254
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
255 return image;
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
256 }
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
257
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
258 gboolean
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
259 purple_image_save(PurpleImage *image, const gchar *path) {
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
260 PurpleImagePrivate *priv = NULL;
35846
07dabf3c0022 PurpleImage: purple_image_get_data should return const buffer
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35843
diff changeset
261 gconstpointer data;
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
262 gsize len;
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
263 gboolean succ;
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
264
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
265 g_return_val_if_fail(PURPLE_IS_IMAGE(image), FALSE);
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
266 g_return_val_if_fail(path != NULL, FALSE);
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
267 g_return_val_if_fail(path[0] != '\0', FALSE);
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
268
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
269 priv = purple_image_get_instance_private(image);
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
270 data = purple_image_get_data(image);
38298
f0a8f63f9312 rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents: 38295
diff changeset
271 len = purple_image_get_data_size(image);
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
272
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
273 g_return_val_if_fail(data != NULL, FALSE);
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
274 g_return_val_if_fail(len > 0, FALSE);
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
275
40650
94e777c03e4a Deprecate purple_util_write_data_to_file_absolute and use g_file_set_contents in place of it
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
276 succ = g_file_set_contents(path, data, len, NULL);
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
277 if (succ && priv->path == NULL)
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
278 priv->path = g_strdup(path);
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
279
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
280 return succ;
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
281 }
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
282
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
283 GBytes *
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
284 purple_image_get_contents(PurpleImage *image)
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
285 {
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
286 PurpleImagePrivate *priv = NULL;
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
287
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
288 g_return_val_if_fail(PURPLE_IS_IMAGE(image), NULL);
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
289
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
290 priv = purple_image_get_instance_private(image);
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
291
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
292 if(priv->contents)
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
293 return g_bytes_ref(priv->contents);
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
294
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
295 return NULL;
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
296 }
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
297
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
298 const gchar *
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
299 purple_image_get_path(PurpleImage *image) {
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
300 PurpleImagePrivate *priv = NULL;
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
301
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
302 g_return_val_if_fail(PURPLE_IS_IMAGE(image), NULL);
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
303
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
304 priv = purple_image_get_instance_private(image);
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
305
38567
277d8f0ec6f8 This should fix up https://github.com/tieto/sipe/issues/147 as paths for smileys were overlooked
Gary Kramlich <grim@reaperworld.com>
parents: 38298
diff changeset
306 return priv->path ? priv->path : purple_image_generate_filename(image);
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
307 }
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
308
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
309 gsize
38298
f0a8f63f9312 rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents: 38295
diff changeset
310 purple_image_get_data_size(PurpleImage *image) {
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
311 PurpleImagePrivate *priv;
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
312
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
313 g_return_val_if_fail(PURPLE_IS_IMAGE(image), 0);
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
314
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
315 priv = purple_image_get_instance_private(image);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
316
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
317 if(priv->contents)
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
318 return g_bytes_get_size(priv->contents);
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
319
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
320 return 0;
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
321 }
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
322
35846
07dabf3c0022 PurpleImage: purple_image_get_data should return const buffer
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35843
diff changeset
323 gconstpointer
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
324 purple_image_get_data(PurpleImage *image) {
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
325 PurpleImagePrivate *priv = NULL;
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
326
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
327 g_return_val_if_fail(PURPLE_IS_IMAGE(image), NULL);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
328
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
329 priv = purple_image_get_instance_private(image);
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
330
38281
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
331 if(priv->contents)
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
332 return g_bytes_get_data(priv->contents, NULL);
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
333
df274be2afa2 A bunch more hack and slash with a bit more design on the fly
Gary Kramlich <grim@reaperworld.com>
parents: 38278
diff changeset
334 return NULL;
35800
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
335 }
2c21828e7442 PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
336
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
337 const gchar *
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
338 purple_image_get_extension(PurpleImage *image) {
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
339 PurpleImagePrivate *priv = NULL;
35846
07dabf3c0022 PurpleImage: purple_image_get_data should return const buffer
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35843
diff changeset
340 gconstpointer data;
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
341
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
342 g_return_val_if_fail(PURPLE_IS_IMAGE(image), NULL);
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
343
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
344 priv = purple_image_get_instance_private(image);
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
345
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
346 if (priv->extension)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
347 return priv->extension;
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
348
38298
f0a8f63f9312 rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents: 38295
diff changeset
349 if (purple_image_get_data_size(image) < 4)
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
350 return NULL;
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
351
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
352 data = purple_image_get_data(image);
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
353 g_assert(data != NULL);
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
354
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
355 if (memcmp(data, "GIF8", 4) == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
356 return priv->extension = "gif";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
357 if (memcmp(data, "\xff\xd8\xff", 3) == 0) /* 4th may be e0 through ef */
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
358 return priv->extension = "jpg";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
359 if (memcmp(data, "\x89PNG", 4) == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
360 return priv->extension = "png";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
361 if (memcmp(data, "MM", 2) == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
362 return priv->extension = "tif";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
363 if (memcmp(data, "II", 2) == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
364 return priv->extension = "tif";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
365 if (memcmp(data, "BM", 2) == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
366 return priv->extension = "bmp";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
367 if (memcmp(data, "\x00\x00\x01\x00", 4) == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
368 return priv->extension = "ico";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
369
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
370 return NULL;
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
371 }
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
372
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
373 const gchar *
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
374 purple_image_get_mimetype(PurpleImage *image) {
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
375 PurpleImagePrivate *priv = NULL;
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
376 const gchar *ext = purple_image_get_extension(image);
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
377
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
378 g_return_val_if_fail(PURPLE_IS_IMAGE(image), NULL);
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
379
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
380 priv = purple_image_get_instance_private(image);
35801
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
381
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
382 if (priv->mime)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
383 return priv->mime;
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
384
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
385 g_return_val_if_fail(ext != NULL, NULL);
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
386
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
387 if (g_strcmp0(ext, "gif") == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
388 return priv->mime = "image/gif";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
389 if (g_strcmp0(ext, "jpg") == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
390 return priv->mime = "image/jpeg";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
391 if (g_strcmp0(ext, "png") == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
392 return priv->mime = "image/png";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
393 if (g_strcmp0(ext, "tif") == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
394 return priv->mime = "image/tiff";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
395 if (g_strcmp0(ext, "bmp") == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
396 return priv->mime = "image/bmp";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
397 if (g_strcmp0(ext, "ico") == 0)
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
398 return priv->mime = "image/vnd.microsoft.icon";
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
399
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
400 return NULL;
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
401 }
9cdf2c4d5a7a PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35800
diff changeset
402
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
403 const gchar *
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
404 purple_image_generate_filename(PurpleImage *image) {
38575
9ba990f8a102 Refactor the way we generate image filenames and make it not depend on a file extension.
Gary Kramlich <grim@reaperworld.com>
parents: 38568
diff changeset
405 PurpleImagePrivate *priv = NULL;
35846
07dabf3c0022 PurpleImage: purple_image_get_data should return const buffer
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35843
diff changeset
406 gconstpointer data;
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
407 gsize len;
38575
9ba990f8a102 Refactor the way we generate image filenames and make it not depend on a file extension.
Gary Kramlich <grim@reaperworld.com>
parents: 38568
diff changeset
408 const gchar *ext = NULL;
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
409 gchar *checksum;
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
410
38575
9ba990f8a102 Refactor the way we generate image filenames and make it not depend on a file extension.
Gary Kramlich <grim@reaperworld.com>
parents: 38568
diff changeset
411 g_return_val_if_fail(PURPLE_IS_IMAGE(image), NULL);
9ba990f8a102 Refactor the way we generate image filenames and make it not depend on a file extension.
Gary Kramlich <grim@reaperworld.com>
parents: 38568
diff changeset
412
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
413 priv = purple_image_get_instance_private(image);
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
414
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
415 if (priv->gen_filename)
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
416 return priv->gen_filename;
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
417
38575
9ba990f8a102 Refactor the way we generate image filenames and make it not depend on a file extension.
Gary Kramlich <grim@reaperworld.com>
parents: 38568
diff changeset
418 /* grab the image's data and size of that data */
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
419 data = purple_image_get_data(image);
38298
f0a8f63f9312 rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents: 38295
diff changeset
420 len = purple_image_get_data_size(image);
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
421
38575
9ba990f8a102 Refactor the way we generate image filenames and make it not depend on a file extension.
Gary Kramlich <grim@reaperworld.com>
parents: 38568
diff changeset
422 /* create a checksum of it and use it as the start of our filename */
9ba990f8a102 Refactor the way we generate image filenames and make it not depend on a file extension.
Gary Kramlich <grim@reaperworld.com>
parents: 38568
diff changeset
423 checksum = g_compute_checksum_for_data(G_CHECKSUM_SHA1, data, len);
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
424
38575
9ba990f8a102 Refactor the way we generate image filenames and make it not depend on a file extension.
Gary Kramlich <grim@reaperworld.com>
parents: 38568
diff changeset
425 /* if the image has a known format, set the extension appropriately */
9ba990f8a102 Refactor the way we generate image filenames and make it not depend on a file extension.
Gary Kramlich <grim@reaperworld.com>
parents: 38568
diff changeset
426 ext = purple_image_get_extension(image);
38576
09ad2b3bbd02 Avoid an extra copy by not using a GString here
Gary Kramlich <grim@reaperworld.com>
parents: 38575
diff changeset
427 if(ext != NULL) {
09ad2b3bbd02 Avoid an extra copy by not using a GString here
Gary Kramlich <grim@reaperworld.com>
parents: 38575
diff changeset
428 priv->gen_filename = g_strdup_printf("%s.%s", checksum, ext);
09ad2b3bbd02 Avoid an extra copy by not using a GString here
Gary Kramlich <grim@reaperworld.com>
parents: 38575
diff changeset
429 g_free(checksum);
09ad2b3bbd02 Avoid an extra copy by not using a GString here
Gary Kramlich <grim@reaperworld.com>
parents: 38575
diff changeset
430 } else {
09ad2b3bbd02 Avoid an extra copy by not using a GString here
Gary Kramlich <grim@reaperworld.com>
parents: 38575
diff changeset
431 priv->gen_filename = checksum;
09ad2b3bbd02 Avoid an extra copy by not using a GString here
Gary Kramlich <grim@reaperworld.com>
parents: 38575
diff changeset
432 }
35809
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
433
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
434 return priv->gen_filename;
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
435 }
6dd40b244ce3 PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35806
diff changeset
436
35819
cc375b914104 imgstore: remove refs from gg prpl
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35809
diff changeset
437 void
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
438 purple_image_set_friendly_filename(PurpleImage *image, const gchar *filename) {
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
439 PurpleImagePrivate *priv = NULL;
35829
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
440 gchar *newname;
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
441 const gchar *escaped;
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
442
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
443 g_return_if_fail(PURPLE_IS_IMAGE(image));
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
444
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
445 priv = purple_image_get_instance_private(image);
35829
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
446
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
447 newname = g_path_get_basename(filename);
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
448 escaped = purple_escape_filename(newname);
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
449 g_free(newname);
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
450 newname = NULL;
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
451
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
452 if (g_strcmp0(escaped, "") == 0 || g_strcmp0(escaped, ".") == 0 ||
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
453 g_strcmp0(escaped, G_DIR_SEPARATOR_S) == 0 ||
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
454 g_strcmp0(escaped, "/") == 0 || g_strcmp0(escaped, "\\") == 0)
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
455 {
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
456 escaped = NULL;
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
457 }
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
458
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
459 g_free(priv->friendly_filename);
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
460 priv->friendly_filename = g_strdup(escaped);
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
461 }
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
462
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
463 const gchar *
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
464 purple_image_get_friendly_filename(PurpleImage *image) {
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
465 PurpleImagePrivate *priv = NULL;
35829
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
466
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
467 g_return_val_if_fail(PURPLE_IS_IMAGE(image), NULL);
35829
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
468
39545
77379050b5f7 Use G_DECLARE* for PurpleImage and drop private macro.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38576
diff changeset
469 priv = purple_image_get_instance_private(image);
35829
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
470
38277
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
471 if(priv->friendly_filename) {
061e91dd78d4 first pass at cleaning up PurpleImage
Gary Kramlich <grim@reaperworld.com>
parents: 36049
diff changeset
472 return priv->friendly_filename;
35829
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
473 }
268931512478 imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
474
38295
8344bea0b9c7 Follow what the documentation says for purple_image_get_friendly_filename and generate it if it is not set
Gary Kramlich <grim@reaperworld.com>
parents: 38294
diff changeset
475 return purple_image_generate_filename(image);
35819
cc375b914104 imgstore: remove refs from gg prpl
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35809
diff changeset
476 }
38298
f0a8f63f9312 rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents: 38295
diff changeset
477

mercurial