summaryrefslogtreecommitdiff
path: root/fluid/Fl_Function_Type.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2018-08-25 15:17:16 +0000
committerMatthias Melcher <fltk@matthiasm.com>2018-08-25 15:17:16 +0000
commit011e5c498a1f3f197d503bf5ce806e836d667f08 (patch)
tree7d48dd1b47908f4bf3d4ddc095c683a31a7ca44f /fluid/Fl_Function_Type.cxx
parent8de0a3c4453c50ae193c0603c7e57516a8157905 (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.cxx48
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");
}
}