diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2018-08-25 15:17:16 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2018-08-25 15:17:16 +0000 |
| commit | 011e5c498a1f3f197d503bf5ce806e836d667f08 (patch) | |
| tree | 7d48dd1b47908f4bf3d4ddc095c683a31a7ca44f /fluid/Fl_Function_Type.cxx | |
| parent | 8de0a3c4453c50ae193c0603c7e57516a8157905 (diff) | |
Added new functionality to Fluid: the 'binary data' type can now include text files as well as binary files into the source code. There is an additional check box in the dialog. Terminology is now "inlined data" instead of "binary data". Texts were modified to reflect the changes.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@13026 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'fluid/Fl_Function_Type.cxx')
| -rw-r--r-- | fluid/Fl_Function_Type.cxx | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/fluid/Fl_Function_Type.cxx b/fluid/Fl_Function_Type.cxx index cf193dc48..38b883f27 100644 --- a/fluid/Fl_Function_Type.cxx +++ b/fluid/Fl_Function_Type.cxx @@ -770,7 +770,8 @@ Fl_Type *Fl_Data_Type::make() { o->public_ = 1; o->static_ = 1; o->filename_ = 0; - o->name("myBinaryData"); + o->text_mode_ = 0; + o->name("myInlineData"); o->add(p); o->factory = this; return o; @@ -782,11 +783,16 @@ void Fl_Data_Type::write_properties() { write_string("filename"); write_word(filename_); } + if (text_mode_) { + write_string("textmode"); + } } void Fl_Data_Type::read_property(const char *c) { if (!strcmp(c,"filename")) { storestring(read_word(), filename_, 1); + } else if (!strcmp(c,"textmode")) { + text_mode_ = 1; } else { Fl_Decl_Type::read_property(c); } @@ -804,6 +810,7 @@ void Fl_Data_Type::open() { data_choice->show(); data_class_choice->hide(); } + data_mode->value(text_mode_); data_filename->value(filename_?filename_:""); const char *c = comment(); data_comment_input->buffer()->text(c?c:""); @@ -817,7 +824,7 @@ void Fl_Data_Type::open() { else if (w == data_panel_ok) break; else if (w == data_filebrowser) { goto_source_dir(); - const char *fn = fl_file_chooser("Load Binary Data", 0L, data_filename->value(), 1); + const char *fn = fl_file_chooser("Load Data Verbose", 0L, data_filename->value(), 1); leave_source_dir(); if (fn) { if (strcmp(fn, data_filename->value())) @@ -868,6 +875,7 @@ void Fl_Data_Type::open() { static_ = ((data_choice->value()>>1)&1); } } + text_mode_ = data_mode->value(); // store the filename c = data_filename->value(); if (filename_ && strcmp(filename_, data_filename->value())) @@ -905,7 +913,7 @@ void Fl_Data_Type::write_code1() { if (filename_ && !write_sourceview) { FILE *f = fl_fopen(filename_, "rb"); if (!f) { - message = "Can't include binary file. Can't open"; + message = "Can't include data from file. Can't open"; } else { fseek(f, 0, SEEK_END); nData = ftell(f); @@ -917,38 +925,48 @@ void Fl_Data_Type::write_code1() { fclose(f); } } else { - fn = "<no filename>"; + fn = fn ? filename_ : "<no filename>"; } - if (is_in_class()) { + const char *variableType = text_mode_ ? "char" : "unsigned char"; + if (is_in_class()) { write_public(public_); write_comment_h(" "); - write_h(" static unsigned char %s[%d];\n", c, nData); - write_c("unsigned char %s::%s[%d] = /* binary data included from %s */\n", class_name(1), c, nData, fn); + write_h(" static %s %s[%d];\n", variableType, c, nData); + write_c("%s %s::%s[%d] = /* data inlined from %s */\n", variableType, class_name(1), c, nData, fn); if (message) write_c("#error %s %s\n", message, fn); - write_cdata(data, nData); + if (text_mode_) + write_cstring(data, nData); + else + write_cdata(data, nData); write_c(";\n"); } else { // the "header only" option does not apply here! if (public_) { if (static_) { - write_h("extern unsigned char %s[%d];\n", c, nData); + write_h("extern %s %s[%d];\n", variableType, c, nData); write_comment_c(); - write_c("unsigned char %s[%d] = /* binary data included from %s */\n", c, nData, fn); + write_c("%s %s[%d] = /* data inlined from %s */\n", variableType, c, nData, fn); if (message) write_c("#error %s %s\n", message, fn); - write_cdata(data, nData); + if (text_mode_) + write_cstring(data, nData); + else + write_cdata(data, nData); write_c(";\n"); } else { write_comment_h(); - write_h("#error Unsupported declaration loading binary data %s\n", fn); - write_h("unsigned char %s[3] = { 1, 2, 3 };\n", c); + write_h("#error Unsupported declaration loading inline data %s\n", fn); + write_h("%s %s[3] = { 1, 2, 3 };\n", variableType, c); } } else { write_comment_c(); if (static_) write_c("static "); - write_c("unsigned char %s[%d] = /* binary data included from %s */\n", c, nData, fn); + write_c("%s %s[%d] = /* data inlined from %s */\n", variableType, c, nData, fn); if (message) write_c("#error %s %s\n", message, fn); - write_cdata(data, nData); + if (text_mode_) + write_cstring(data, nData); + else + write_cdata(data, nData); write_c(";\n"); } } |
