summaryrefslogtreecommitdiff
path: root/fluid/app/Image_Asset.cxx
diff options
context:
space:
mode:
authormaxim nikonov <maxim.nikonov@hqo.co>2026-02-06 02:49:13 +0500
committermaxim nikonov <maxim.nikonov@hqo.co>2026-02-06 02:49:13 +0500
commitc19f34db2f4a64326d03cee7edae095051660f65 (patch)
tree3c8defa8bcafe90fb907dace5d2a21c2ca5e0f8a /fluid/app/Image_Asset.cxx
parent43e0a37906afabb0b3b091b8d3eac9a910cae50c (diff)
wip
Diffstat (limited to 'fluid/app/Image_Asset.cxx')
-rw-r--r--fluid/app/Image_Asset.cxx23
1 files changed, 14 insertions, 9 deletions
diff --git a/fluid/app/Image_Asset.cxx b/fluid/app/Image_Asset.cxx
index cea3cc058..36fa4d443 100644
--- a/fluid/app/Image_Asset.cxx
+++ b/fluid/app/Image_Asset.cxx
@@ -39,7 +39,6 @@
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
-#include <string>
/** Simple string-to-Image_Asset map entry */
struct Image_Asset_Entry {
@@ -210,7 +209,8 @@ void Image_Asset::write_static_rgb(fld::io::Code_Writer& f, const char* idata_na
void Image_Asset::write_static(fld::io::Code_Writer& f, int compressed) {
if (!image_) return;
const char *idata_name = f.unique_id(this, "idata", fl_filename_name(filename()), 0);
- initializer_function_ = f.unique_id(this, "image", fl_filename_name(filename()), 0);
+ if (initializer_function_) free(initializer_function_);
+ initializer_function_ = fl_strdup(f.unique_id(this, "image", fl_filename_name(filename()), 0));
if (is_animated_gif_) {
// Write animated gif image data...
@@ -370,7 +370,7 @@ void Image_Asset::write_file_error(fld::io::Code_Writer& f, const char *fmt) {
void Image_Asset::write_initializer(fld::io::Code_Writer& f, const char *image_class, const char *format, ...) {
va_list ap;
va_start(ap, format);
- f.write_c("static Fl_Image *%s() {\n", initializer_function_.c_str());
+ f.write_c("static Fl_Image *%s() {\n", initializer_function_);
if (is_animated_gif_)
f.write_c("%sFl_GIF_Image::animate = true;\n", f.indent(1));
f.write_c("%sstatic Fl_Image *image = 0L;\n", f.indent(1));
@@ -402,11 +402,11 @@ void Image_Asset::write_code(fld::io::Code_Writer& f, int bind, const char *var,
var,
bind ? "bind_" : "",
inactive ? "deimage" : "image",
- initializer_function_.c_str());
+ initializer_function_);
if (is_animated_gif_)
f.write_c("%s((Fl_Anim_GIF_Image*)(%s()))->canvas(%s, Fl_Anim_GIF_Image::DONT_RESIZE_CANVAS);\n",
f.indent(),
- initializer_function_.c_str(),
+ initializer_function_,
var);
}
}
@@ -424,7 +424,7 @@ void Image_Asset::write_code(fld::io::Code_Writer& f, int bind, const char *var,
void Image_Asset::write_inline(fld::io::Code_Writer& f, int inactive) {
(void)inactive;
if (image_) {
- f.write_c("%s()", initializer_function_.c_str());
+ f.write_c("%s()", initializer_function_);
}
}
@@ -492,13 +492,16 @@ Image_Asset* Image_Asset::find(const char *iname) {
*/
Image_Asset::Image_Asset(const char *iname)
{
- filename_ = iname;
+ is_animated_gif_ = 0;
+ filename_ = iname ? fl_strdup(iname) : 0;
+ refcount_ = 0;
+ initializer_function_ = 0;
image_ = Fl_Shared_Image::get(iname);
if (image_ && iname) {
const char *ext = fl_filename_ext(iname);
if (fl_ascii_strcasecmp(ext, ".gif")==0) {
int fc = Fl_Anim_GIF_Image::frame_count(iname);
- if (fc > 0) is_animated_gif_ = true;
+ if (fc > 0) is_animated_gif_ = 1;
}
}
}
@@ -538,8 +541,10 @@ void Image_Asset::dec_ref() {
when the object is destroyed.
*/
Image_Asset::~Image_Asset() {
- image_asset_map.erase(filename_.c_str());
+ image_asset_map.erase(filename_);
if (image_) image_->release();
+ if (filename_) free(filename_);
+ if (initializer_function_) free(initializer_function_);
}
////////////////////////////////////////////////////////////////