diff options
Diffstat (limited to 'fluid/app/Image_Asset.h')
| -rw-r--r-- | fluid/app/Image_Asset.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/fluid/app/Image_Asset.h b/fluid/app/Image_Asset.h new file mode 100644 index 000000000..f5376beaa --- /dev/null +++ b/fluid/app/Image_Asset.h @@ -0,0 +1,63 @@ +// +// Image Helper header file for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2025 by Bill Spitzak and others. +// +// This library is free software. Distribution and use rights are outlined in +// the file "COPYING" which should have been included with this file. If this +// file is missing or damaged, see the license at: +// +// https://www.fltk.org/COPYING.php +// +// Please see the following page on how to report bugs and issues: +// +// https://www.fltk.org/bugs.php +// + +// This class stores the image labels for widgets in fluid. This is +// not a class in FLTK itself, and will produce different types of +// code depending on what the image type is. + + +#ifndef APP_IMAGE_ASSET_H +#define APP_IMAGE_ASSET_H + +#include "io/Code_Writer.h" + +#include <FL/Fl_Shared_Image.H> + +class Image_Asset { + +private: // member variables + bool is_animated_gif_ = false; ///< It's an animated gif. + std::string filename_ { }; ///< Relative path to the image file + int refcount_ = 0; ///< Reference count + Fl_Shared_Image *image_ = nullptr; ///< The actual image as managed by FLTK + std::string initializer_function_ { }; ///< The name of the initializer function + +private: // methods + Image_Asset(const char *name); // no public constructor + ~Image_Asset(); // no public destructor + size_t write_static_binary(fld::io::Code_Writer& f, const char* fmt); + size_t write_static_text(fld::io::Code_Writer& f, const char* fmt); + void write_static_rgb(fld::io::Code_Writer& f, const char* idata_name); + +public: // methods + static Image_Asset* find(const char *); + void dec_ref(); // reference counting & automatic free + void inc_ref(); + Fl_Shared_Image *image() const { return image_; } + void write_static(fld::io::Code_Writer& f, int compressed); + void write_initializer(fld::io::Code_Writer& f, const char *type_name, const char *format, ...); + void write_code(fld::io::Code_Writer& f, int bind, const char *var, int inactive = 0); + void write_inline(fld::io::Code_Writer& f, int inactive = 0); + void write_file_error(fld::io::Code_Writer& f, const char *fmt); + const char *filename() const { return filename_.c_str(); } +}; + +// pop up file chooser and return a legal image selected by user, +// or zero for any errors: +Image_Asset *ui_find_image(const char *); +extern const char *ui_find_image_name; + +#endif // APP_IMAGE_ASSET_H |
