summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fluid/Fl_Type.h1
-rw-r--r--fluid/Fluid_Image.cxx4
-rw-r--r--fluid/code.cxx19
-rw-r--r--test/hello.cxx25
4 files changed, 39 insertions, 10 deletions
diff --git a/fluid/Fl_Type.h b/fluid/Fl_Type.h
index 9f8f98d2b..e76368c08 100644
--- a/fluid/Fl_Type.h
+++ b/fluid/Fl_Type.h
@@ -732,6 +732,7 @@ void write_c(const char*, ...) __fl_attr((__format__ (__printf__, 1, 2)));
void write_h(const char*, ...) __fl_attr((__format__ (__printf__, 1, 2)));
void write_cstring(const char *);
void write_cstring(const char *,int length);
+void write_cdata(const char *,int length);
void write_indent(int n);
void write_open(int);
void write_close(int n);
diff --git a/fluid/Fluid_Image.cxx b/fluid/Fluid_Image.cxx
index 8ceaae003..fba6a9f9c 100644
--- a/fluid/Fluid_Image.cxx
+++ b/fluid/Fluid_Image.cxx
@@ -94,7 +94,7 @@ void Fluid_Image::write_static() {
}
write_c("static unsigned char %s[] =\n",
unique_id(this, "idata", fl_filename_name(name()), 0));
- write_cstring(img->data()[0], ((img->w() + 7) / 8) * img->h());
+ write_cdata(img->data()[0], ((img->w() + 7) / 8) * img->h());
write_c(";\n");
write_c("static Fl_Bitmap %s(%s, %d, %d);\n",
unique_id(this, "image", fl_filename_name(name()), 0),
@@ -109,7 +109,7 @@ void Fluid_Image::write_static() {
}
write_c("static unsigned char %s[] =\n",
unique_id(this, "idata", fl_filename_name(name()), 0));
- write_cstring(img->data()[0], (img->w() * img->d() + img->ld()) * img->h());
+ write_cdata(img->data()[0], (img->w() * img->d() + img->ld()) * img->h());
write_c(";\n");
write_c("static Fl_RGB_Image %s(%s, %d, %d, %d, %d);\n",
unique_id(this, "image", fl_filename_name(name()), 0),
diff --git a/fluid/code.cxx b/fluid/code.cxx
index afbbfd586..d50f37fd9 100644
--- a/fluid/code.cxx
+++ b/fluid/code.cxx
@@ -226,6 +226,25 @@ void write_cstring(const char *w, int length) {
// write a C string, quoting characters if necessary:
void write_cstring(const char *w) {write_cstring(w,strlen(w));}
+// write an array of C binary data (does not add a null):
+void write_cdata(const char *s, int length) {
+ if (varused_test) return;
+ const unsigned char *w = (const unsigned char *)s;
+ const unsigned char *e = w+length;
+ int linelength = 1;
+ putc('{', code_file);
+ for (; w < e;) {
+ unsigned char c = *w++;
+ if (c>99) linelength += 4;
+ else if (c>9) linelength += 3;
+ else linelength += 2;
+ if (linelength >= 77) {fputs("\n",code_file); linelength = 0;}
+ fprintf(code_file, "%d", c);
+ if (w<e) putc(',', code_file);
+ }
+ putc('}', code_file);
+}
+
void write_c(const char* format,...) {
if (varused_test) {varused = 1; return;}
va_list args;
diff --git a/test/hello.cxx b/test/hello.cxx
index 178d52934..727e4f003 100644
--- a/test/hello.cxx
+++ b/test/hello.cxx
@@ -26,20 +26,29 @@
//
#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Box.H>
+#include <FL/Fl_Double_Window.H>
+#include <FL/Fl_Button.H>
+
+#include <stdlib.h>
+
+void WinQuit_CB(Fl_Widget*, void*) {
+ exit(0);
+}
int main(int argc, char **argv) {
- Fl_Window *window = new Fl_Window(300,180);
- Fl_Box *box = new Fl_Box(FL_UP_BOX,20,40,260,100,"Hello, World!");
- box->labelfont(FL_BOLD+FL_ITALIC);
- box->labelsize(36);
- box->labeltype(FL_SHADOW_LABEL);
- window->end();
+ Fl_Double_Window *window;
+ { Fl_Double_Window *o = new Fl_Double_Window(347, 263);
+ window = o;
+ { Fl_Button *o = new Fl_Button(25, 25, 64, 20, "button");
+ o->callback(WinQuit_CB);
+ }
+ o->end();
+ }
window->show(argc, argv);
return Fl::run();
}
+
//
// End of "$Id$".
//