summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl_GIF_Image.cxx55
1 files changed, 41 insertions, 14 deletions
diff --git a/src/Fl_GIF_Image.cxx b/src/Fl_GIF_Image.cxx
index 6ae3f6ca1..b006a4340 100644
--- a/src/Fl_GIF_Image.cxx
+++ b/src/Fl_GIF_Image.cxx
@@ -146,16 +146,8 @@ Fl_GIF_Image::Fl_GIF_Image(const char *filename) :
The destructor frees all memory and server resources that are used by
the image.
- The (new and optional) third parameter \p length \b should be used so buffer
- overruns (i.e. truncated images) can be checked. See note below.
-
- If \p length is not used
- - it defaults to -1 (unlimited size)
- - buffer overruns will not be checked.
-
- \note The optional parameter \p length is available since FLTK 1.4.0.
- Not using it is deprecated and old code should be modified to use it.
- This parameter will likely become mandatory in a future FLTK version.
+ The third parameter \p length is used to test for buffer overruns,
+ i.e. truncated images.
Use Fl_Image::fail() to check if Fl_GIF_Image failed to load. fail() returns
ERR_FILE_ACCESS if the file could not be opened or read, ERR_FORMAT if the
@@ -168,8 +160,10 @@ Fl_GIF_Image::Fl_GIF_Image(const char *filename) :
\see Fl_GIF_Image::Fl_GIF_Image(const char *filename)
\see Fl_Shared_Image
+
+ \since 1.4.0
*/
-Fl_GIF_Image::Fl_GIF_Image(const char *imagename, const unsigned char *data, const long length) :
+Fl_GIF_Image::Fl_GIF_Image(const char *imagename, const unsigned char *data, const size_t length) :
Fl_Pixmap((char *const*)0)
{
Fl_Image_Reader rdr;
@@ -180,10 +174,43 @@ Fl_GIF_Image::Fl_GIF_Image(const char *imagename, const unsigned char *data, con
}
}
+/**
+ This constructor loads a GIF image from memory (deprecated).
+
+ \deprecated Please use
+ Fl_GIF_Image(const char *imagename, const unsigned char *data, const size_t length)
+ instead.
+
+ \note Buffer overruns will not be checked.
+
+ This constructor should not be used because the caller can't supply the
+ memory size and the image reader can't check for "end of memory" errors.
+
+ \note A new constructor with parameter \p length is available since FLTK 1.4.0.
+
+ \param[in] imagename A name given to this image or NULL
+ \param[in] data Pointer to the start of the GIF image in memory.
+
+ \see Fl_GIF_Image(const char *filename)
+ \see Fl_GIF_Image(const char *imagename, const unsigned char *data, const size_t length)
+*/
+Fl_GIF_Image::Fl_GIF_Image(const char *imagename, const unsigned char *data) :
+ Fl_Pixmap((char *const*)0)
+{
+ Fl_Image_Reader rdr;
+ if (rdr.open(imagename, data) == -1) {
+ ld(ERR_FILE_ACCESS);
+ } else {
+ load_gif_(rdr);
+ }
+}
+
/*
- This method reads GIF image data and creates an RGB or RGBA image. The GIF
- format supports only 1 bit for alpha. To avoid code duplication, we use
- an Fl_Image_Reader that reads data from either a file or from memory.
+ This method reads GIF image data and creates an RGB or RGBA image. The GIF
+ format supports only 1 bit for alpha. The final image data is stored in
+ a modified XPM format (Fl_GIF_Image is a subclass of Fl_Pixmap).
+ To avoid code duplication, we use an Fl_Image_Reader that reads data from
+ either a file or from memory.
*/
void Fl_GIF_Image::load_gif_(Fl_Image_Reader &rdr)
{