Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
gtk
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nikita Churaev
gtk
Commits
837b7120
Commit
837b7120
authored
Jun 26, 2001
by
Owen Taylor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert inline-pixbuf changes until Tim comes back to fix missing files
parent
671b3b0e
Changes
23
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
318 additions
and
142 deletions
+318
-142
ChangeLog
ChangeLog
+0
-6
ChangeLog.pre-2-0
ChangeLog.pre-2-0
+0
-6
ChangeLog.pre-2-10
ChangeLog.pre-2-10
+0
-6
ChangeLog.pre-2-2
ChangeLog.pre-2-2
+0
-6
ChangeLog.pre-2-4
ChangeLog.pre-2-4
+0
-6
ChangeLog.pre-2-6
ChangeLog.pre-2-6
+0
-6
ChangeLog.pre-2-8
ChangeLog.pre-2-8
+0
-6
demos/Makefile.am
demos/Makefile.am
+3
-5
demos/testpixbuf.c
demos/testpixbuf.c
+6
-14
docs/reference/gdk-pixbuf/tmpl/creating.sgml
docs/reference/gdk-pixbuf/tmpl/creating.sgml
+12
-0
docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf-unused.sgml
docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf-unused.sgml
+0
-11
docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf.sgml
docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf.sgml
+0
-3
docs/reference/gtk/tmpl/gtkitemfactory.sgml
docs/reference/gtk/tmpl/gtkitemfactory.sgml
+1
-0
gdk-pixbuf/ChangeLog
gdk-pixbuf/ChangeLog
+0
-16
gdk-pixbuf/Makefile.am
gdk-pixbuf/Makefile.am
+13
-23
gdk-pixbuf/gdk-pixbuf-data.c
gdk-pixbuf/gdk-pixbuf-data.c
+251
-0
gdk-pixbuf/gdk-pixbuf-private.h
gdk-pixbuf/gdk-pixbuf-private.h
+10
-0
gdk-pixbuf/gdk-pixbuf.h
gdk-pixbuf/gdk-pixbuf.h
+7
-11
gtk/gtkiconfactory.c
gtk/gtkiconfactory.c
+5
-5
gtk/gtkitemfactory.c
gtk/gtkitemfactory.c
+4
-4
gtk/gtkitemfactory.h
gtk/gtkitemfactory.h
+3
-5
gtk/stock-icons/Makefile.am
gtk/stock-icons/Makefile.am
+2
-2
tests/testgtk.c
tests/testgtk.c
+1
-1
No files found.
ChangeLog
View file @
837b7120
...
...
@@ -5,12 +5,6 @@ Tue Jun 26 11:06:34 2001 Owen Taylor <otaylor@redhat.com>
with font lists in descriptions. (#56184, reported by
Jonas Borgström)
Tue Jun 26 10:04:30 2001 Tim Janik <timj@gtk.org>
* gtk/gtkiconfactory.c:
* gtk/gtkitemfactory.c: use gdk_pixbuf_new_from_stream(). fixed up
item factory so inlined pixbufs actually work.
2001-06-25 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeviewcolumn.h, gtk/gtktreeviewcolumn.c:
...
...
ChangeLog.pre-2-0
View file @
837b7120
...
...
@@ -5,12 +5,6 @@ Tue Jun 26 11:06:34 2001 Owen Taylor <otaylor@redhat.com>
with font lists in descriptions. (#56184, reported by
Jonas Borgström)
Tue Jun 26 10:04:30 2001 Tim Janik <timj@gtk.org>
* gtk/gtkiconfactory.c:
* gtk/gtkitemfactory.c: use gdk_pixbuf_new_from_stream(). fixed up
item factory so inlined pixbufs actually work.
2001-06-25 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeviewcolumn.h, gtk/gtktreeviewcolumn.c:
...
...
ChangeLog.pre-2-10
View file @
837b7120
...
...
@@ -5,12 +5,6 @@ Tue Jun 26 11:06:34 2001 Owen Taylor <otaylor@redhat.com>
with font lists in descriptions. (#56184, reported by
Jonas Borgström)
Tue Jun 26 10:04:30 2001 Tim Janik <timj@gtk.org>
* gtk/gtkiconfactory.c:
* gtk/gtkitemfactory.c: use gdk_pixbuf_new_from_stream(). fixed up
item factory so inlined pixbufs actually work.
2001-06-25 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeviewcolumn.h, gtk/gtktreeviewcolumn.c:
...
...
ChangeLog.pre-2-2
View file @
837b7120
...
...
@@ -5,12 +5,6 @@ Tue Jun 26 11:06:34 2001 Owen Taylor <otaylor@redhat.com>
with font lists in descriptions. (#56184, reported by
Jonas Borgström)
Tue Jun 26 10:04:30 2001 Tim Janik <timj@gtk.org>
* gtk/gtkiconfactory.c:
* gtk/gtkitemfactory.c: use gdk_pixbuf_new_from_stream(). fixed up
item factory so inlined pixbufs actually work.
2001-06-25 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeviewcolumn.h, gtk/gtktreeviewcolumn.c:
...
...
ChangeLog.pre-2-4
View file @
837b7120
...
...
@@ -5,12 +5,6 @@ Tue Jun 26 11:06:34 2001 Owen Taylor <otaylor@redhat.com>
with font lists in descriptions. (#56184, reported by
Jonas Borgström)
Tue Jun 26 10:04:30 2001 Tim Janik <timj@gtk.org>
* gtk/gtkiconfactory.c:
* gtk/gtkitemfactory.c: use gdk_pixbuf_new_from_stream(). fixed up
item factory so inlined pixbufs actually work.
2001-06-25 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeviewcolumn.h, gtk/gtktreeviewcolumn.c:
...
...
ChangeLog.pre-2-6
View file @
837b7120
...
...
@@ -5,12 +5,6 @@ Tue Jun 26 11:06:34 2001 Owen Taylor <otaylor@redhat.com>
with font lists in descriptions. (#56184, reported by
Jonas Borgström)
Tue Jun 26 10:04:30 2001 Tim Janik <timj@gtk.org>
* gtk/gtkiconfactory.c:
* gtk/gtkitemfactory.c: use gdk_pixbuf_new_from_stream(). fixed up
item factory so inlined pixbufs actually work.
2001-06-25 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeviewcolumn.h, gtk/gtktreeviewcolumn.c:
...
...
ChangeLog.pre-2-8
View file @
837b7120
...
...
@@ -5,12 +5,6 @@ Tue Jun 26 11:06:34 2001 Owen Taylor <otaylor@redhat.com>
with font lists in descriptions. (#56184, reported by
Jonas Borgström)
Tue Jun 26 10:04:30 2001 Tim Janik <timj@gtk.org>
* gtk/gtkiconfactory.c:
* gtk/gtkitemfactory.c: use gdk_pixbuf_new_from_stream(). fixed up
item factory so inlined pixbufs actually work.
2001-06-25 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeviewcolumn.h, gtk/gtktreeviewcolumn.c:
...
...
demos/Makefile.am
View file @
837b7120
...
...
@@ -32,12 +32,10 @@ noinst_PROGRAMS = \
BUILT_SOURCES
=
test-inline-pixbufs.h
test-inline-pixbufs.h
:
$(top_builddir)/gdk-pixbuf/
gdk-pixbuf-csource
apple-red.png gnome-foot.png
test-inline-pixbufs.h
:
$(top_builddir)/gdk-pixbuf/
make-inline-pixbuf
apple-red.png gnome-foot.png
(
topdir
=
`
cd
$(top_builddir)
&&
pwd
`
;
curdir
=
`
pwd
`
;
\
cd
$(srcdir)
&&
\
GDK_PIXBUF_MODULEDIR
=
$$
topdir/gdk-pixbuf/.libs
\
$$
topdir/gdk-pixbuf/gdk-pixbuf-csource
--build-list
\
apple_red apple-red.png gnome_foot gnome-foot.png
>
$$
curdir/test-inline-pixbufs.h
)
GDK_PIXBUF_MODULEDIR
=
$$
topdir/gdk-pixbuf/.libs
$$
topdir/gdk-pixbuf/make-inline-pixbuf
$$
curdir/test-inline-pixbufs.h apple_red apple-red.png gnome_foot gnome-foot.png
)
testpixbuf_DEPENDENCIES
=
$(DEPS)
testpixbuf_drawable_DEPENDENCIES
=
$(DEPS)
...
...
demos/testpixbuf.c
View file @
837b7120
...
...
@@ -543,7 +543,6 @@ main (int argc, char **argv)
i
=
1
;
if
(
argc
==
1
)
{
const
gchar
***
xpmp
;
GError
*
error
=
NULL
;
pixbuf
=
gdk_pixbuf_new_from_data
(
default_image
,
GDK_COLORSPACE_RGB
,
FALSE
,
8
,
DEFAULT_WIDTH
,
DEFAULT_HEIGHT
,
DEFAULT_WIDTH
*
3
,
...
...
@@ -558,18 +557,11 @@ main (int argc, char **argv)
}
/* Test loading from inline data. */
pixbuf
=
gdk_pixbuf_new_from_stream
(
-
1
,
apple_red
,
FALSE
,
&
error
);
if
(
!
pixbuf
)
{
fprintf
(
stderr
,
"failed to construct
\"
red apple
\"
pixbuf: %s
\n
"
,
error
->
message
);
g_error_free
(
error
);
}
else
new_testrgb_window
(
pixbuf
,
"Red apple from inlined RLE data"
);
pixbuf
=
gdk_pixbuf_new_from_inline
(
apple_red
,
FALSE
,
-
1
,
NULL
);
new_testrgb_window
(
pixbuf
,
"Red apple from inline data"
);
pixbuf
=
gdk_pixbuf_new_from_
stream
(
sizeof
(
gnome_foot
),
gnome_foot
,
TRUE
,
NULL
);
new_testrgb_window
(
pixbuf
,
"
GNOME Foot from inlined RLE
data"
);
pixbuf
=
gdk_pixbuf_new_from_
inline
(
gnome_foot
,
TRUE
,
sizeof
(
gnome_foot
)
,
NULL
);
new_testrgb_window
(
pixbuf
,
"
Foot from inline
data"
);
found_valid
=
TRUE
;
}
else
{
...
...
docs/reference/gdk-pixbuf/tmpl/creating.sgml
View file @
837b7120
...
...
@@ -82,6 +82,18 @@ Creating a pixbuf from image data that is already in memory.
@Returns:
<!-- ##### FUNCTION gdk_pixbuf_new_from_inline ##### -->
<para>
</para>
@inline_pixbuf:
@copy_pixels:
@length:
@error:
@Returns:
<!-- ##### FUNCTION gdk_pixbuf_new_subpixbuf ##### -->
<para>
...
...
docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf-unused.sgml
View file @
837b7120
...
...
@@ -552,14 +552,3 @@ End:
</para>
<!-- ##### FUNCTION gdk_pixbuf_new_from_inline ##### -->
<para>
</para>
@inline_pixbuf:
@copy_pixels:
@length:
@error:
@Returns:
docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf.sgml
View file @
837b7120
...
...
@@ -20,9 +20,6 @@ Information that describes an image.
</para>
@GDK_PIXBUF_ERROR_HEADER_CORRUPT:
@GDK_PIXBUF_ERROR_PIXEL_CORRUPT:
@GDK_PIXBUF_ERROR_UNKNOWN_FORMAT:
@GDK_PIXBUF_ERROR_CORRUPT_IMAGE:
@GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY:
@GDK_PIXBUF_ERROR_BAD_OPTION_VALUE:
...
...
docs/reference/gtk/tmpl/gtkitemfactory.sgml
View file @
837b7120
...
...
@@ -77,6 +77,7 @@ GtkItemFactory
@callback_action:
@item_type:
@extra_data:
@extra_data2:
<!-- ##### STRUCT GtkItemFactoryItem ##### -->
<para>
...
...
gdk-pixbuf/ChangeLog
View file @
837b7120
Tue
Jun
26
09
:
48
:
02
2001
Tim
Janik
<
timj
@
gtk
.
org
>
*
Makefile
.
am
(
noinst_PROGRAMS
):
get
rid
of
make
-
inline
-
pixbuf
*
gdk
-
pixbuf
-
data
.[
hc
]:
provide
gdk_pixbuf_new_from_stream
()
instead
from
gdk_pixbuf_new_from_inline
().
*
gdk
-
pixdata
.[
hc
]:
auxillary
GdkPixdata
structure
,
public
installed
API
for
applications
that
need
to
serialize
/
deserialize
on
their
own
(
gimp
,
BEAST
).
*
gdk
-
pixbuf
/
gdk
-
pixbuf
-
csource
.
c
:
provide
publically
installed
program
that
can
dump
images
in
CSource
format
and
Pixbuf
stream
format
.
supports
RLE
encoding
,
MACRO
formatting
etc
...
invoke
with
--
help
.
Mon
Jun
25
00
:
28
:
11
2001
Owen
Taylor
<
otaylor
@
redhat
.
com
>
*
Makefile
.
am
:
Actually
update
timestamps
,
so
rules
don
't
...
...
gdk-pixbuf/Makefile.am
View file @
837b7120
...
...
@@ -164,15 +164,12 @@ TESTS = test-gdk-pixbuf test-loaders
noinst_PROGRAMS
=
$(TESTS)
DEPS
=
libgdk_pixbuf-1.3.la
INCLUDES
=
@STRIP_BEGIN@
\
-I
$(top_srcdir)
-I
$(top_builddir)
\
INCLUDES
=
-I
$(top_srcdir)
-I
$(top_builddir)
\
-I
$(top_srcdir)
/gdk-pixbuf
\
-I
$(top_builddir)
/gdk-pixbuf
\
@INCLUDED_LOADER_DEFINE@
\
@GTK_DEBUG_FLAGS@
\
@GDK_PIXBUF_DEP_CFLAGS@
\
@STRIP_END@
@GDK_PIXBUF_DEP_CFLAGS@
AM_CPPFLAGS
=
"-DPIXBUF_LIBDIR=
\"
$(loaderdir)
\"
"
"-DBUILT_MODULES_DIR=
\"
$(srcdir)
/.libs
\"
"
LDADDS
=
libgdk_pixbuf-1.3.la
...
...
@@ -182,13 +179,12 @@ test_loaders_LDADD = $(LDADDS)
test_loaders_SOURCES
=
test-loaders.c test-images.h
#noinst_PROGRAMS=make-inline-pixbuf
#make_inline_pixbuf_SOURCES=make-inline-pixbuf.c
#make_inline_pixbuf_LDADD = $(LDADDS)
bin_PROGRAMS
=
make-inline-pixbuf
make_inline_pixbuf_SOURCES
=
make-inline-pixbuf.c
make_inline_pixbuf_LDADD
=
$(LDADDS)
bin_PROGRAMS
=
gdk-pixbuf-csource
gdk_pixbuf_csource_SOURCES
=
gdk-pixbuf-csource.c
gdk_pixbuf_csource_LDADD
=
$(LDADDS)
#
...
...
@@ -199,7 +195,7 @@ BUILT_SOURCES=gdk-pixbuf-marshal.h gdk-pixbuf-marshal.c
libgdk_pixbufincludedir
=
$(includedir)
/gtk-2.0/gdk-pixbuf
libgdk_pixbuf_1_3_la_SOURCES
=
@STRIP_BEGIN@
\
libgdk_pixbuf_1_3_la_SOURCES
=
\
gdk-pixbuf-i18n.h
\
gdk-pixbuf.c
\
gdk-pixbuf-animation.c
\
...
...
@@ -207,26 +203,20 @@ libgdk_pixbuf_1_3_la_SOURCES = @STRIP_BEGIN@ \
gdk-pixbuf-io.c
\
gdk-pixbuf-loader.c
\
gdk-pixbuf-scale.c
\
gdk-pixbuf-util.c
\
gdk-pixdata.c
\
@STRIP_END@
gdk-pixbuf-util.c
$(libgdk_pixbuf_1_3_la_OBJECTS)
:
gdk-pixbuf-marshal.h gdk-pixbuf-marshal.c
libgdk_pixbuf_1_3_la_LDFLAGS
=
@STRIP_BEGIN@
\
libgdk_pixbuf_1_3_la_LDFLAGS
=
\
-version-info
$(LT_CURRENT)
:
$(LT_REVISION)
:
$(LT_AGE)
\
@LIBTOOL_EXPORT_OPTIONS@
\
@STRIP_END@
@LIBTOOL_EXPORT_OPTIONS@
libgdk_pixbuf_1_3_la_LIBADD
=
pixops/libpixops.la
$(builtin_objs)
$(GDK_PIXBUF_DEP_LIBS)
libgdk_pixbuf_1_3_la_DEPENDENCIES
=
$(builtin_objs)
libgdk_pixbufinclude_HEADERS
=
\
gdk-pixbuf.h
\
gdk-pixbuf-loader.h
\
gdk-pixbuf-features.h
\
gdk-pixdata.h
gdk-pixbuf-features.h
noinst_HEADERS
=
\
gdk-pixbuf-io.h
\
...
...
gdk-pixbuf/gdk-pixbuf-data.c
View file @
837b7120
...
...
@@ -78,3 +78,254 @@ gdk_pixbuf_new_from_data (const guchar *data, GdkColorspace colorspace, gboolean
return
pixbuf
;
}
static
guint32
read_int
(
const
guchar
**
p
)
{
guint32
num
;
/* Note most significant bytes are first in the byte stream */
num
=
(
*
p
)[
3
]
|
((
*
p
)[
2
]
<<
8
)
|
((
*
p
)[
1
]
<<
16
)
|
((
*
p
)[
0
]
<<
24
);
*
p
+=
4
;
return
num
;
}
static
gboolean
read_bool
(
const
guchar
**
p
)
{
gboolean
val
=
**
p
!=
0
;
++
(
*
p
);
return
val
;
}
static
GdkPixbuf
*
read_raw_inline
(
const
guchar
*
data
,
gboolean
copy_pixels
,
int
length
,
GError
**
error
)
{
GdkPixbuf
*
pixbuf
;
const
guchar
*
p
=
data
;
guint32
rowstride
,
width
,
height
,
colorspace
,
n_channels
,
bits_per_sample
;
gboolean
has_alpha
;
if
(
length
>=
0
&&
length
<
12
)
{
/* Not enough buffer to hold the width/height/rowstride */
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image data is partially missing"
));
return
NULL
;
}
rowstride
=
read_int
(
&
p
);
width
=
read_int
(
&
p
);
height
=
read_int
(
&
p
);
if
(
rowstride
<
width
)
{
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image has an incorrect pixel rowstride, perhaps the data was corrupted somehow."
));
return
NULL
;
/* bad data from untrusted source. */
}
/* rowstride >= width, so we can trust width */
length
-=
12
;
/* There's some better way like G_MAXINT/height > rowstride
* but I'm not sure it works, so stick to this for now.
*/
if
(((
double
)
height
)
*
((
double
)
rowstride
)
>
(
double
)
G_MAXINT
)
{
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image size is impossibly large, perhaps the data was corrupted somehow"
));
return
NULL
;
/* overflow */
}
if
(
length
>=
0
&&
length
<
(
height
*
rowstride
+
13
))
{
/* Not enough buffer to hold the remaining header
* information plus the data.
*/
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image data is partially missing, probably it was corrupted somehow."
));
return
NULL
;
}
/* Read the remaining 13 bytes of header information */
has_alpha
=
read_bool
(
&
p
)
!=
FALSE
;
colorspace
=
read_int
(
&
p
);
n_channels
=
read_int
(
&
p
);
bits_per_sample
=
read_int
(
&
p
);
if
(
colorspace
!=
GDK_COLORSPACE_RGB
)
{
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image has an unknown colorspace code (%d), perhaps the image data was corrupted"
),
colorspace
);
return
NULL
;
}
if
(
bits_per_sample
!=
8
)
{
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image has an improper number of bits per sample (%d), perhaps the image data was corrupted"
),
bits_per_sample
);
return
NULL
;
}
if
(
has_alpha
&&
n_channels
!=
4
)
{
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image has an improper number of channels (%d), perhaps the image data was corrupted"
),
n_channels
);
return
NULL
;
}
if
(
!
has_alpha
&&
n_channels
!=
3
)
{
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image has an improper number of channels (%d), perhaps the image data was corrupted"
),
n_channels
);
return
NULL
;
}
if
(
copy_pixels
)
{
guchar
*
pixels
;
gint
dest_rowstride
;
gint
row
;
pixbuf
=
gdk_pixbuf_new
(
colorspace
,
has_alpha
,
bits_per_sample
,
width
,
height
);
if
(
pixbuf
==
NULL
)
{
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY
,
_
(
"Not enough memory to store a %d by %d image; try exiting some applications to free memory."
),
width
,
height
);
return
NULL
;
}
pixels
=
gdk_pixbuf_get_pixels
(
pixbuf
);
dest_rowstride
=
gdk_pixbuf_get_rowstride
(
pixbuf
);
for
(
row
=
0
;
row
<
height
;
row
++
)
{
memcpy
(
pixels
,
p
,
rowstride
);
pixels
+=
dest_rowstride
;
p
+=
rowstride
;
}
}
else
{
pixbuf
=
gdk_pixbuf_new_from_data
(
p
,
colorspace
,
has_alpha
,
bits_per_sample
,
width
,
height
,
rowstride
,
NULL
,
NULL
);
}
return
pixbuf
;
}
/**
* gdk_pixbuf_new_from_inline:
* @inline_pixbuf: An inlined GdkPixbuf
* @copy_pixels: whether to copy the pixels out of the inline data, or to use them in-place
* @length: length of the inline data
* @error: return location for error
*
* Create a #GdkPixbuf from a custom format invented to store pixbuf
* data in C program code. This library comes with a program called
* "make-inline-pixbuf" that can write out a variable definition
* containing an inlined pixbuf. This is useful if you want to ship a
* program with images, but don't want to depend on any external
* files.
*
* The inline data format contains the pixels in #GdkPixbuf's native
* format. Since the inline pixbuf is read-only static data, you
* don't need to copy it unless you intend to write to it.
*
* If you create a pixbuf from const inline data compiled into your
* program, it's probably safe to ignore errors, since things will
* always succeed. For non-const inline data, you could get out of
* memory. For untrusted inline data located at runtime, you could
* have corrupt inline data in addition.
*
* Return value: A newly-created #GdkPixbuf structure with a reference count of
* 1, or NULL If error is set.
**/
GdkPixbuf
*
gdk_pixbuf_new_from_inline
(
const
guchar
*
inline_pixbuf
,
gboolean
copy_pixels
,
int
length
,
GError
**
error
)
{
const
guchar
*
p
;
GdkPixbuf
*
pixbuf
;
GdkPixbufInlineFormat
format
;
if
(
length
>=
0
&&
length
<
8
)
{
/* not enough bytes to contain even the magic number
* and format code.
*/
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image contained no data."
));
return
NULL
;
}
p
=
inline_pixbuf
;
if
(
read_int
(
&
p
)
!=
GDK_PIXBUF_INLINE_MAGIC_NUMBER
)
{
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
_
(
"Image isn't in the correct format (inline GdkPixbuf format)"
));
return
NULL
;
}
format
=
read_int
(
&
p
);
switch
(
format
)
{
case
GDK_PIXBUF_INLINE_RAW
:
pixbuf
=
read_raw_inline
(
p
,
copy_pixels
,
length
-
8
,
error
);
break
;
default:
g_set_error
(
error
,
GDK_PIXBUF_ERROR
,
GDK_PIXBUF_ERROR_UNKNOWN_TYPE
,
_
(
"This version of the software is unable to read images with type code %d"
),
format
);
return
NULL
;
}
return
pixbuf
;
}
gdk-pixbuf/gdk-pixbuf-private.h
View file @
837b7120
...
...
@@ -130,6 +130,16 @@ struct _GdkPixbufAnimationIterClass {
#define GDK_PIXBUF_INLINE_MAGIC_NUMBER 0x47646B50
/* 'GdkP' */
typedef
enum
{
GDK_PIXBUF_INLINE_RAW
=
0
,
GDK_PIXBUF_INLINE_RLE
=
1
}
GdkPixbufInlineFormat
;
GdkPixbufAnimation
*
gdk_pixbuf_non_anim_new
(
GdkPixbuf
*
pixbuf
);
#endif
gdk-pixbuf/gdk-pixbuf.h
View file @
837b7120
...
...
@@ -75,12 +75,6 @@ typedef void (* GdkPixbufDestroyNotify) (guchar *pixels, gpointer data);
#define GDK_PIXBUF_ERROR gdk_pixbuf_error_quark ()
typedef
enum
{
/* stream header corrupt */
GDK_PIXBUF_ERROR_HEADER_CORRUPT
,
/* stream pixel data corrupt */
GDK_PIXBUF_ERROR_PIXEL_CORRUPT
,
/* stream header corrupt */
GDK_PIXBUF_ERROR_UNKNOWN_FORMAT
,
/* image data hosed */
GDK_PIXBUF_ERROR_CORRUPT_IMAGE
,
/* no mem to load image */
...
...
@@ -148,9 +142,11 @@ GdkPixbuf *gdk_pixbuf_new_from_data (const guchar *data,
gpointer
destroy_fn_data
);
GdkPixbuf
*
gdk_pixbuf_new_from_xpm_data
(
const
char
**
data
);
GdkPixbuf
*
gdk_pixbuf_new_from_stream
(
gint
stream_length
,
const
guint8
*
stream
,
/* Read an inline pixbuf */
GdkPixbuf
*
gdk_pixbuf_new_from_inline
(
const
guchar
*
inline_pixbuf
,
gboolean
copy_pixels
,
int
length
,
GError
**
error
);
/* Mutations */
...
...
gtk/gtkiconfactory.c
View file @
837b7120
...
...
@@ -335,7 +335,7 @@ sized_icon_set_from_inline (const guchar *inline_data,
set
=
gtk_icon_set_new
();
source
.
pixbuf
=
gdk_pixbuf_new_from_
stream
(
-
1
,
inline_data
,
FALSE
,
NULL
);
source
.
pixbuf
=
gdk_pixbuf_new_from_
inline
(
inline_data
,
FALSE
,
-
1
,
NULL
);
g_assert
(
source
.
pixbuf
);
...
...
@@ -361,7 +361,7 @@ sized_with_fallback_icon_set_from_inline (const guchar *fallback_data,
set
=
gtk_icon_set_new
();
source
.
pixbuf
=
gdk_pixbuf_new_from_
stream
(
-
1
,
inline_data
,
FALSE
,
NULL
);
source
.
pixbuf
=
gdk_pixbuf_new_from_
inline
(
inline_data
,
FALSE
,
-
1
,
NULL
);
g_assert
(
source
.
pixbuf
);
...
...
@@ -371,7 +371,7 @@ sized_with_fallback_icon_set_from_inline (const guchar *fallback_data,
source
.
any_size
=
TRUE
;
source
.
pixbuf
=
gdk_pixbuf_new_from_
stream
(
-
1
,
fallback_data
,
FALSE
,
NULL
);
source
.
pixbuf
=
gdk_pixbuf_new_from_
inline
(
fallback_data
,
FALSE
,
-
1
,
NULL
);
g_assert
(
source
.
pixbuf
);
...
...
@@ -393,7 +393,7 @@ unsized_icon_set_from_inline (const guchar *inline_data)
set
=
gtk_icon_set_new
();
source
.
pixbuf
=
gdk_pixbuf_new_from_
stream
(
-
1
,
inline_data
,
FALSE
,
NULL
);
source
.
pixbuf
=
gdk_pixbuf_new_from_
inline
(
inline_data
,
FALSE
,
-
1
,
NULL
);