summaryrefslogtreecommitdiff
path: root/gdk-pixbuf/gdk-pixbuf-private.h
blob: 343724c7e10aa6b9301b4e58fdfd6bcd9e98aa51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
/* GdkPixbuf library - Private declarations
 *
 * Copyright (C) 1999 The Free Software Foundation
 *
 * Authors: Mark Crichton <crichton@gimp.org>
 *          Miguel de Icaza <miguel@gnu.org>
 *          Federico Mena-Quintero <federico@gimp.org>
 *          Havoc Pennington <hp@redhat.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */

#ifndef GDK_PIXBUF_PRIVATE_H
#define GDK_PIXBUF_PRIVATE_H

#include <stdio.h>
#include <math.h>

#include <glib-object.h>
#include <glib/gi18n-lib.h>

#include "gdk-pixbuf-core.h"
#include "gdk-pixbuf-loader.h"
#include "gdk-pixbuf-io.h"

#define LOAD_BUFFER_SIZE 65536
#define SNIFF_BUFFER_SIZE 4096



typedef struct _GdkPixbufClass GdkPixbufClass;

#define GDK_PIXBUF_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_PIXBUF, GdkPixbufClass))
#define GDK_IS_PIXBUF_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_PIXBUF))
#define GDK_PIXBUF_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_PIXBUF, GdkPixbufClass))

/* Default fill color */
#define DEFAULT_FILL_COLOR 0x979899ff

typedef enum {
        STORAGE_UNINITIALIZED,
        STORAGE_PIXELS,
        STORAGE_BYTES
} Storage;

typedef struct {
        /* The pixel array */
        guchar *pixels;

        /* Destroy notification function; it is supposed to free the pixel array */
        GdkPixbufDestroyNotify destroy_fn;

        /* User data for the destroy notification function */
        gpointer destroy_fn_data;
} Pixels;

typedef struct {
        GBytes *bytes;
} Bytes;

/* Private part of the GdkPixbuf structure */
struct _GdkPixbuf {
        GObject parent_instance;

	/* Color space */
	GdkColorspace colorspace;

	/* Number of channels, alpha included */
	int n_channels;

	/* Bits per channel */
	int bits_per_sample;

	/* Size */
	int width, height;

	/* Offset between rows */
	int rowstride;

        Storage storage;

        struct {
                Pixels pixels;
                Bytes bytes;
        } s;

	/* Do we have an alpha channel? */
	guint has_alpha : 1;
};

struct _GdkPixbufClass {
        GObjectClass parent_class;

};

#ifdef GDK_PIXBUF_ENABLE_BACKEND

GdkPixbufModule *_gdk_pixbuf_get_module (guchar *buffer, guint size,
                                         const gchar *filename,
                                         GError **error);
GdkPixbufModule *_gdk_pixbuf_get_named_module (const char *name,
                                               GError **error);
gboolean _gdk_pixbuf_load_module (GdkPixbufModule *image_module,
                                  GError **error);

GdkPixbuf *_gdk_pixbuf_generic_image_load (GdkPixbufModule *image_module,
					   FILE *f,
					   GError **error);

GdkPixbufFormat *_gdk_pixbuf_get_format (GdkPixbufModule *image_module);


#endif /* GDK_PIXBUF_ENABLE_BACKEND */

GdkPixbuf * _gdk_pixbuf_new_from_resource_try_pixdata (const char *resource_path);
GdkPixbufLoader *_gdk_pixbuf_loader_new_with_filename (const char *filename);

void _gdk_pixbuf_init_gettext (void);

#endif /* GDK_PIXBUF_PRIVATE_H */

#ifdef GDK_PIXBUF_RELOCATABLE

gchar * gdk_pixbuf_get_toplevel (void);

#endif /* G_OS_WIN32 */