1/*
2 * Copyright © 2018 Benjamin Otte
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16 *
17 * Authors: Benjamin Otte <otte@gnome.org>
18 */
19
20#ifndef __GDK_MEMORY_TEXTURE__H__
21#define __GDK_MEMORY_TEXTURE__H__
22
23#if !defined (__GDK_H_INSIDE__) && !defined (GTK_COMPILATION)
24#error "Only <gdk/gdk.h> can be included directly."
25#endif
26
27#include <gdk/gdkenums.h>
28#include <gdk/gdktexture.h>
29
30G_BEGIN_DECLS
31
32/**
33 * GDK_MEMORY_DEFAULT:
34 *
35 * The default memory format used by GTK.
36 *
37 * This is the format provided by [method@Gdk.Texture.download].
38 * It is equal to %CAIRO_FORMAT_ARGB32.
39 *
40 * Be aware that unlike the `GdkMemoryFormat` values, this format
41 * is different for different endianness.
42 */
43#if G_BYTE_ORDER == G_LITTLE_ENDIAN
44#define GDK_MEMORY_DEFAULT GDK_MEMORY_B8G8R8A8_PREMULTIPLIED
45#elif G_BYTE_ORDER == G_BIG_ENDIAN
46#define GDK_MEMORY_DEFAULT GDK_MEMORY_A8R8G8B8_PREMULTIPLIED
47#else
48#error "Unknown byte order for GDK_MEMORY_DEFAULT"
49#endif
50
51#define GDK_TYPE_MEMORY_TEXTURE (gdk_memory_texture_get_type ())
52
53#define GDK_MEMORY_TEXTURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_MEMORY_TEXTURE, GdkMemoryTexture))
54#define GDK_IS_MEMORY_TEXTURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_MEMORY_TEXTURE))
55
56typedef struct _GdkMemoryTexture GdkMemoryTexture;
57typedef struct _GdkMemoryTextureClass GdkMemoryTextureClass;
58
59G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkMemoryTexture, g_object_unref)
60
61
62GDK_AVAILABLE_IN_ALL
63GType gdk_memory_texture_get_type (void) G_GNUC_CONST;
64
65GDK_AVAILABLE_IN_ALL
66GdkTexture * gdk_memory_texture_new (int width,
67 int height,
68 GdkMemoryFormat format,
69 GBytes *bytes,
70 gsize stride);
71
72
73G_END_DECLS
74
75#endif /* __GDK_MEMORY_TEXTURE_H__ */
76

source code of gtk/gdk/gdkmemorytexture.h