* Add classes for application and project * Removed all globals from Fluid.h * Extracting args and project history into their own classes * Moving globals into Application class * Initialize values inside headers for some classes. * Undo functionality wrapped in a class inside Project. * File reader and writer are now linked to a project. * Avoid global project access * Nodes (former Types) will be managed by a new Tree class. * Removed static members (hidden globals) form Node/Fl_Type. * Adding Tree iterator. * Use nullptr instead of 0, NULL, or 0L * Renamed Fl_..._Type to ..._Node, FL_OVERRIDE -> override * Renaming ..._type to ...::prototype * Splitting Widget Panel into multiple files. * Moved callback code into widget panel file. * Cleaning up Fluid_Image -> Image_asset * Moving Fd_Snap_Action into new namespace fld::app::Snap_Action etc. * Moved mergeback into proj folder. * `enum ID` is now `enum class Type`.
64 lines
2.3 KiB
C++
64 lines
2.3 KiB
C++
//
|
|
// 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
|