fltk::SharedImage Class Reference

Inherits fltk::Image.

Inherited by fltk::bmpImage, fltk::gifImage, fltk::jpegImage, fltk::pngImage, fltk::pnmImage, and fltk::xpmFileImage.

List of all members.


Detailed Description

Subclass of Image that can read a file or block of compressed data. This provides several useful functions: Images are identified by filename. The static get() function will return an existing instance if it was called before with the same filename. The release() function will decrement the reference count and delete the image if nobody wants it any more. An inline block of data may be provided that is the contents of the file, so the file does not have to exist and you can link the image directly into your program. You may set a memory usage limit. If Image::mem_used() goes above this limit, it will call destroy() on least-recently-used images until it goes below this limit. The get() function can determine the type of the file or block of data and create the correct subclass.


Public Types

typedef SharedImage *(* Handler )(const char *filename, uchar *header, int headerlen)

Public Member Functions

void _draw (const Rectangle &) const
void clear_cache ()
void reload (const uchar *datas=0)
int remove ()

Static Public Member Functions

static void add_handler (Handler f)
static SharedImageget (SharedImage *(*create)(), const char *name, const uchar *datas=0)
static SharedImageget (const char *n)
static const char * get_filename (const char *)
static void reload (const char *name, const uchar *datas=0)
static int remove (const char *name)
static void remove_handler (Handler f)
static void set_cache_size (unsigned l)
static void set_root_directory (const char *d)

Static Public Attributes

static SharedImagefirst_image

Protected Member Functions

virtual bool fetch ()=0
void find_less_used ()
const char * get_filename () const
void remove_from_tree (SharedImage *&p, SharedImage *image)

Static Protected Member Functions

static void check_mem_usage ()
static SharedImagefind (SharedImage *image, const char *name)
static void insert (SharedImage *&p, SharedImage *image)

Protected Attributes

const uchar * datas
SharedImagel1
SharedImagel2
const char * name
int refcount
unsigned int used

Static Protected Attributes

static int image_used
static unsigned mem_usage_limit
static const char * shared_image_root


Member Typedef Documentation

typedef SharedImage*(* fltk::SharedImage::Handler)(const char *filename, uchar *header, int headerlen)
 

fetch to the data/pixels unified buffer the image, return true if success. this method() does NOT draw the image, it only prepares a generic buffer and its info, this method should be used by all non-progresive-reading read() methods so that we avoid redondant code


Member Function Documentation

SharedImage * SharedImage::get const char *  n  )  [static]
 

get an image of this name and dimensions , can be already loaded or not

void SharedImage::add_handler Handler  f  )  [static]
 

adds a new handler for hanling a concrete type of image, typically one handler per image type should be registered

void SharedImage::remove_handler Handler  f  )  [static]
 

removes a concrete handler

const char * SharedImage::get_filename  )  const [protected]
 

Return the filename obtained from the concatenation of the image root directory and this image name WARNING : the returned pointer will be available only until next call to get_filename

SharedImage * SharedImage::get SharedImage *(*)()  create,
const char *  name,
const uchar *  datas = 0
[static]
 

Return an SharedImage, using the create function if an image with the given name doesn't already exist. Use datas, or read from the file with filename name if datas==0.

void SharedImage::reload const uchar *  datas = 0  ) 
 

Reload the image, useful if it has changed on disk, or if the datas / in memory have changed (you can also give a new pointer on datas)

int SharedImage::remove  ) 
 

Remove an image from the database and delete it if its refcount has fallen to zero Each remove() decrements the refcount, each get() increments it Return 1 if it has been really deleted.

void SharedImage::clear_cache  ) 
 

Clear the cache for this image and all of its children in the binary tree

void SharedImage::set_root_directory const char *  d  )  [static]
 

Set the position where images are looked for on disk

const char * SharedImage::get_filename const char *   )  [static]
 

Expand a name relative to root to see what file it will read

void SharedImage::set_cache_size unsigned  l  )  [static]
 

Set the size of the cache (0 = unlimited is the default)


Fri Apr 2 15:19:55 2010. FLTK ©2007 Bill Spitzak and others.
Permission is granted to reproduce this manual or any portion for any purpose, provided this copyright and permission notice are preserved.