Author: matt
Date: 2011-01-01 10:57:37 -0800 (Sat, 01 Jan 2011)
New Revision: 8160
Log:
Modified ut8 test program formatting to get closer to FLTK coding standards

Modified:
   branches/branch-1.3/test/utf8.cxx

Modified: branches/branch-1.3/test/utf8.cxx
===================================================================
--- branches/branch-1.3/test/utf8.cxx   2011-01-01 18:48:32 UTC (rev 8159)
+++ branches/branch-1.3/test/utf8.cxx   2011-01-01 18:57:37 UTC (rev 8160)
@@ -47,10 +47,10 @@
 // Font chooser widget for the Fast Light Tool Kit(FLTK).
 //
 
-/********************************************************************************************/
+
 #define DEF_SIZE 16 // default value for the font size picker
 
-/********************************************************************************************/
+
 static Fl_Double_Window *fnt_chooser_win;
 static Fl_Hold_Browser *fontobj;
 static Fl_Hold_Browser *sizeobj;
@@ -73,363 +73,376 @@
 static int font_count = 0;
 static int first_free = 0;
 
-/********************************************************************************************/
+
+/*
+ Class for displaying samle fonts.
+ */
 class FontDisplay : public Fl_Widget
 {
-       void draw(void);
-
+  void draw(void);
+  
 public:
-       int  font, size;
+  int  font, size;
+  
+  int test_fixed_pitch(void);
+  
+  FontDisplay(Fl_Boxtype B, int X, int Y, int W, int H, const char *L = 0) : 
Fl_Widget(X, Y, W, H, L)
+  {
+    box(B);
+    font = 0;
+    size = DEF_SIZE;
+  }
+};
 
-       int test_fixed_pitch(void);
 
-       FontDisplay(Fl_Boxtype B, int X, int Y, int W, int H, const char *L = 
0) : Fl_Widget(X, Y, W, H, L)
-       {
-               box(B);
-               font = 0;
-               size = DEF_SIZE;
-       }
-};
-
-/********************************************************************************************/
+/*
+ Draw the sample text.
+ */
 void FontDisplay::draw(void)
 {
-       draw_box();
-       fl_font((Fl_Font)font, size);
-       fl_color(FL_BLACK);
-       fl_draw(label(), x() + 3, y() + 3, w() - 6, h() - 6, align());
+  draw_box();
+  fl_font((Fl_Font)font, size);
+  fl_color(FL_BLACK);
+  fl_draw(label(), x() + 3, y() + 3, w() - 6, h() - 6, align());
 }
-/********************************************************************************************/
+
+
 int FontDisplay::test_fixed_pitch(void)
 {
-       int w1, w2;
-       int h1, h2;
+  int w1, w2;
+  int h1, h2;
+  
+  w1 = w2 = 0;
+  h1 = h2 = 0;
+  
+  fl_font((Fl_Font)font, size);
+  
+  fl_measure("MHMHWWMHMHMHM###WWX__--HUW", w1, h1, 0);
+  fl_measure("iiiiiiiiiiiiiiiiiiiiiiiiii", w2, h2, 0);
+  
+  if (w1 == w2) return 1; // exact match - fixed pitch
+  
+  // Is the font "nearly" fixed pitch? If it is within 5%, say it is...
+  double f1 = (double)w1;
+  double f2 = (double)w2;
+  double delta = fabs(f1 - f2) * 5.0;
+  if (delta <= f1) return 2; // nearly fixed pitch...
+  
+  return 0; // NOT fixed pitch
+}
 
-       w1 = w2 = 0;
-       h1 = h2 = 0;
 
-       fl_font((Fl_Font)font, size);
+static FontDisplay *textobj;
 
-       fl_measure("MHMHWWMHMHMHM###WWX__--HUW", w1, h1, 0);
-       fl_measure("iiiiiiiiiiiiiiiiiiiiiiiiii", w2, h2, 0);
 
-       if (w1 == w2) return 1; // exact match - fixed pitch
-
-       // Is the font "nearly" fixed pitch? If it is within 5%, say it is...
-       double f1 = (double)w1;
-       double f2 = (double)w2;
-       double delta = fabs(f1 - f2) * 5.0;
-       if (delta <= f1) return 2; // nearly fixed pitch...
-
-       return 0; // NOT fixed pitch
-}
-
-/********************************************************************************************/
-static FontDisplay *textobj;
-
-/********************************************************************************************/
 static void size_cb(Fl_Widget *, long)
 {
-       int size_idx = sizeobj->value();
+  int size_idx = sizeobj->value();
+  
+  if (!size_idx) return;
+  
+  const char *c = sizeobj->text(size_idx);
+  
+  while (*c < '0' || *c > '9') c++; // find the first numeric char
+  pickedsize = atoi(c);             // convert the number string to a value
+  
+  // Now set the font view to the selected size and redraw it.
+  textobj->size = pickedsize;
+  textobj->redraw();
+}
 
-       if (!size_idx) return;
 
-       const char *c = sizeobj->text(size_idx);
-
-       while (*c < '0' || *c > '9') c++; // find the first numeric char
-       pickedsize = atoi(c);             // convert the number string to a 
value
-
-       // Now set the font view to the selected size and redraw it.
-       textobj->size = pickedsize;
-       textobj->redraw();
-}
-/********************************************************************************************/
 static void font_cb(Fl_Widget *, long)
 {
-       int font_idx = fontobj->value() + first_free;
+  int font_idx = fontobj->value() + first_free;
+  
+  if (!font_idx) return;
+  font_idx--;
+  
+  textobj->font = font_idx;
+  sizeobj->clear();
+  
+  int  size_count = numsizes[font_idx-first_free];
+  int *size_array = sizes[font_idx-first_free];
+  if (!size_count)
+  {
+    // no preferred sizes - probably TT fonts etc...
+  }
+  else if (size_array[0] == 0)
+  {
+    // many sizes, probably a scaleable font with preferred sizes
+    int j = 1;
+    for (int i = 1; i <= 64 || i < size_array[size_count - 1]; i++)
+    {
+      char buf[16];
+      if (j < size_count && i == size_array[j])
+      {
+        sprintf(buf, "@b%d", i);
+        j++;
+      }
+      else
+        sprintf(buf, "%d", i);
+      sizeobj->add(buf);
+    }
+    sizeobj->value(pickedsize);
+  }
+  else
+  {
+    // some sizes, probably a font with a few fixed sizes available
+    int w = 0;
+    for (int i = 0; i < size_count; i++)
+    {
+      // find the nearest available size to the current picked size
+      if (size_array[i] <= pickedsize) w = i;
+      
+      char buf[16];
+      sprintf(buf, "@b%d", size_array[i]);
+      sizeobj->add(buf);
+    }
+    sizeobj->value(w + 1);
+  }
+  size_cb(sizeobj, 0); // force selection of nearest valid size, then redraw
+  
+  // Now check to see if the font looks like a fixed pitch font or not...
+  int looks_fixed = textobj->test_fixed_pitch();
+  if(looks_fixed)
+  {
+    if (looks_fixed > 1)
+      fix_prop->value("near");
+    else
+      fix_prop->value("fixed");
+  }
+  else
+  {
+    fix_prop->value("prop");
+  }
+}
 
-       if (!font_idx) return;
-       font_idx--;
 
-       textobj->font = font_idx;
-       sizeobj->clear();
-
-       int  size_count = numsizes[font_idx-first_free];
-       int *size_array = sizes[font_idx-first_free];
-       if (!size_count)
-       {
-               // no preferred sizes - probably TT fonts etc...
-       }
-       else if (size_array[0] == 0)
-       {
-               // many sizes, probably a scaleable font with preferred sizes
-               int j = 1;
-               for (int i = 1; i <= 64 || i < size_array[size_count - 1]; i++)
-               {
-                       char buf[16];
-                       if (j < size_count && i == size_array[j])
-                       {
-                               sprintf(buf, "@b%d", i);
-                               j++;
-                       }
-                       else
-                               sprintf(buf, "%d", i);
-                       sizeobj->add(buf);
-               }
-               sizeobj->value(pickedsize);
-       }
-       else
-       {
-               // some sizes, probably a font with a few fixed sizes available
-               int w = 0;
-               for (int i = 0; i < size_count; i++)
-               {
-                       // find the nearest available size to the current 
picked size
-                       if (size_array[i] <= pickedsize) w = i;
-
-                       char buf[16];
-                       sprintf(buf, "@b%d", size_array[i]);
-                       sizeobj->add(buf);
-               }
-               sizeobj->value(w + 1);
-       }
-       size_cb(sizeobj, 0); // force selection of nearest valid size, then 
redraw
-
-       // Now check to see if the font looks like a fixed pitch font or not...
-       int looks_fixed = textobj->test_fixed_pitch();
-       if(looks_fixed)
-       {
-               if (looks_fixed > 1)
-                       fix_prop->value("near");
-               else
-                       fix_prop->value("fixed");
-       }
-       else
-       {
-               fix_prop->value("prop");
-       }
-}
-
-/********************************************************************************************/
 static void choose_cb(Fl_Widget *, long)
 {
-       int font_idx = fontobj->value() + first_free;
-       if (!font_idx)
-       {
-               puts("No font chosen");
-       }
-       else
-       {
-               int font_type;
-               font_idx -= 1;
-               const char *name = Fl::get_font_name((Fl_Font)font_idx, 
&font_type);
-               printf("idx %d\nUser name :%s:\n", font_idx, name);
-               printf("FLTK name :%s:\n", Fl::get_font((Fl_Font)font_idx));
+  int font_idx = fontobj->value() + first_free;
+  if (!font_idx)
+  {
+    puts("No font chosen");
+  }
+  else
+  {
+    int font_type;
+    font_idx -= 1;
+    const char *name = Fl::get_font_name((Fl_Font)font_idx, &font_type);
+    printf("idx %d\nUser name :%s:\n", font_idx, name);
+    printf("FLTK name :%s:\n", Fl::get_font((Fl_Font)font_idx));
+    
+    Fl::set_font(extra_font, (Fl_Font)font_idx);
+    //         Fl::set_font(extra_font, Fl::get_font((Fl_Font)font_idx));
+  }
+  
+  int size_idx = sizeobj->value();
+  if (!size_idx)
+  {
+    puts("No size selected");
+  }
+  else
+  {
+    const char *c = sizeobj->text(size_idx);
+    while (*c < '0' || *c > '9') c++; // find the first numeric char
+    int pickedsize = atoi(c);         // convert the number string to a value
+    
+    printf("size %d\n\n", pickedsize);
+  }
+  
+  fflush(stdout);
+  main_win->redraw();
+}
 
-               Fl::set_font(extra_font, (Fl_Font)font_idx);
-//             Fl::set_font(extra_font, Fl::get_font((Fl_Font)font_idx));
-       }
 
-       int size_idx = sizeobj->value();
-       if (!size_idx)
-       {
-               puts("No size selected");
-       }
-       else
-       {
-               const char *c = sizeobj->text(size_idx);
-               while (*c < '0' || *c > '9') c++; // find the first numeric char
-               int pickedsize = atoi(c);         // convert the number string 
to a value
-
-               printf("size %d\n\n", pickedsize);
-       }
-
-       fflush(stdout);
-       main_win->redraw();
-}
-/********************************************************************************************/
 static void refresh_cb(Fl_Widget *, long)
 {
-       main_win->redraw();
+  main_win->redraw();
 }
 
-/********************************************************************************************/
+
 static void own_face_cb(Fl_Widget *, void *)
 {
-       int font_idx;
-       int cursor_restore = 0;
-       static int i_was = -1; // used to keep track of where we were in the 
list...
+  int font_idx;
+  int cursor_restore = 0;
+  static int i_was = -1; // used to keep track of where we were in the list...
+  
+  if (i_was < 0) { // not been here before
+    i_was = 1;
+  } else {
+    i_was = fontobj->topline(); // record which was the topmost visible line
+    fontobj->clear();
+    // Populating the font widget can be slower than an old dog with three 
legs 
+    // on a bad day, show a wait cursor
+    fnt_chooser_win->cursor(FL_CURSOR_WAIT);
+    cursor_restore = 1;
+  }
+  
+  
+  // Populate the font list with the names of the fonts found
+  for (font_idx = first_free; font_idx < font_count; font_idx++)
+  {
+    int font_type;
+    const char *name = Fl::get_font_name((Fl_Font)font_idx, &font_type);
+    char buffer[128];
+    
+    if(own_face->value() == 0) {
+      char *p = buffer;
+      if (font_type & FL_BOLD) { // if the font is BOLD, set the bold 
attribute in the list
+        *p++ = '@';
+        *p++ = 'b';
+      }
+      if (font_type & FL_ITALIC) { //  ditto for italic fonts
+        *p++ = '@';
+        *p++ = 'i';
+      }
+      // Suppress subsequent formatting - some MS fonts have '@' in their name
+      *p++ = '@';
+      *p++ = '.';
+      strcpy(p, name);
+    } else { // Show font in its own face
+      /* this is neat, but really slow on some systems: uses each font to 
display its own name */
+      sprintf (buffer, "@f...@.%s", font_idx, name);
+    }
+    fontobj->add(buffer);
+  }
+  // now put the browser position back the way it was... more or less
+  fontobj->topline(i_was);
+  // restore the cursor
+  if(cursor_restore) fnt_chooser_win->cursor(FL_CURSOR_DEFAULT);
+}
 
-       if (i_was < 0) { // not been here before
-               i_was = 1;
-       } else {
-               i_was = fontobj->topline(); // record which was the topmost 
visible line
-               fontobj->clear();
-               // Populating the font widget can be slower than an old dog 
with three legs 
-               // on a bad day, show a wait cursor
-               fnt_chooser_win->cursor(FL_CURSOR_WAIT);
-               cursor_restore = 1;
-       }
 
-
-       // Populate the font list with the names of the fonts found
-       for (font_idx = first_free; font_idx < font_count; font_idx++)
-       {
-               int font_type;
-               const char *name = Fl::get_font_name((Fl_Font)font_idx, 
&font_type);
-               char buffer[128];
-
-               if(own_face->value() == 0) {
-                       char *p = buffer;
-                       if (font_type & FL_BOLD) { // if the font is BOLD, set 
the bold attribute in the list
-                               *p++ = '@';
-                               *p++ = 'b';
-                       }
-                       if (font_type & FL_ITALIC) { //  ditto for italic fonts
-                               *p++ = '@';
-                               *p++ = 'i';
-                       }
-                       // Suppress subsequent formatting - some MS fonts have 
'@' in their name
-                       *p++ = '@';
-                       *p++ = '.';
-                       strcpy(p, name);
-               } else { // Show font in its own face
-                       /* this is neat, but really slow on some systems: uses 
each font to display its own name */
-                       sprintf (buffer, "@f...@.%s", font_idx, name);
-               }
-               fontobj->add(buffer);
-       }
-       // now put the browser position back the way it was... more or less
-       fontobj->topline(i_was);
-       // restore the cursor
-       if(cursor_restore) fnt_chooser_win->cursor(FL_CURSOR_DEFAULT);
-}
-
-/********************************************************************************************/
 static void create_font_widget()
 {
-       fnt_chooser_win = new Fl_Double_Window(380, 420, "Font Selector");
+  fnt_chooser_win = new Fl_Double_Window(380, 420, "Font Selector");
+  
+  strcpy(label, "Font Sample\n");
+  int i = 12; // strlen(label);
+  int n = 0;
+  ulong c;
+  for (c = ' '+1; c < 127; c++) {
+    if (!(c&0x1f)) label[i++]='\n';
+    if (c=='@') label[i++]=c;
+    label[i++]=c;
+  }
+  label[i++] = '\n';
+  for (c = 0xA1; c < 0x600; c += 9) {
+    if (!(++n&(0x1f))) label[i++]='\n';
+    i += fl_utf8encode((unsigned int)c, label + i);
+  }
+  label[i] = 0;
+  
+  textobj = new FontDisplay(FL_FRAME_BOX, 10, 10, 360, 90, label);
+  textobj->align(FL_ALIGN_TOP | FL_ALIGN_LEFT | FL_ALIGN_INSIDE | 
FL_ALIGN_CLIP);
+  textobj->color(53, 3);
+  
+  fontobj = new Fl_Hold_Browser(10, 110, 290, 270);
+  fontobj->box(FL_FRAME_BOX);
+  fontobj->color(53, 3);
+  fontobj->callback(font_cb);
+  fnt_chooser_win->resizable(fontobj);
+  
+  sizeobj = new Fl_Hold_Browser(310, 110, 60, 270);
+  sizeobj->box(FL_FRAME_BOX);
+  sizeobj->color(53, 3);
+  sizeobj->callback(size_cb);
+  
+  // Create the status bar
+  Fl_Group * stat_bar = new Fl_Group (10, 385, 380, 30);
+  stat_bar->begin();
+  
+  fnt_cnt = new Fl_Value_Output(10, 390, 40, 20);
+  fnt_cnt->label("fonts");
+  fnt_cnt->align(FL_ALIGN_RIGHT);
+  
+  fix_prop = new Fl_Output(100, 390, 40, 20);
+  fix_prop->color(FL_BACKGROUND_COLOR);
+  fix_prop->value("prop");
+  fix_prop->clear_visible_focus();
+  
+  own_face = new Fl_Check_Button(150, 390, 40, 20, "Self");
+  own_face->value(0);
+  own_face->type(FL_TOGGLE_BUTTON);
+  own_face->clear_visible_focus();
+  own_face->callback(own_face_cb);
+  own_face->tooltip("Display font names in their own face");
+  
+  Fl_Box * dummy = new Fl_Box(220, 390, 1, 1);
+  
+  choose_btn = new Fl_Button(240, 385, 60, 30);
+  choose_btn->label("Select");
+  choose_btn->callback(choose_cb);
+  
+  refresh_btn = new Fl_Button(310, 385, 60, 30);
+  refresh_btn->label("Refresh");
+  refresh_btn->callback(refresh_cb);
+  
+  stat_bar->end();
+  stat_bar->resizable (dummy);
+  
+  fnt_chooser_win->end();
+}
 
-       strcpy(label, "Font Sample\n");
-       int i = 12; // strlen(label);
-       int n = 0;
-       ulong c;
-       for (c = ' '+1; c < 127; c++) {
-               if (!(c&0x1f)) label[i++]='\n';
-               if (c=='@') label[i++]=c;
-               label[i++]=c;
-       }
-       label[i++] = '\n';
-       for (c = 0xA1; c < 0x600; c += 9) {if (!(++n&(0x1f))) label[i++]='\n';
-                                                 i += fl_utf8encode((unsigned 
int)c, label + i);}
-       label[i] = 0;
 
-       textobj = new FontDisplay(FL_FRAME_BOX, 10, 10, 360, 90, label);
-       textobj->align(FL_ALIGN_TOP | FL_ALIGN_LEFT | FL_ALIGN_INSIDE | 
FL_ALIGN_CLIP);
-       textobj->color(53, 3);
-
-       fontobj = new Fl_Hold_Browser(10, 110, 290, 270);
-       fontobj->box(FL_FRAME_BOX);
-       fontobj->color(53, 3);
-       fontobj->callback(font_cb);
-       fnt_chooser_win->resizable(fontobj);
-
-       sizeobj = new Fl_Hold_Browser(310, 110, 60, 270);
-       sizeobj->box(FL_FRAME_BOX);
-       sizeobj->color(53, 3);
-       sizeobj->callback(size_cb);
-
-// Create the status bar
-       Fl_Group * stat_bar = new Fl_Group (10, 385, 380, 30);
-       stat_bar->begin();
-
-       fnt_cnt = new Fl_Value_Output(10, 390, 40, 20);
-       fnt_cnt->label("fonts");
-       fnt_cnt->align(FL_ALIGN_RIGHT);
-
-       fix_prop = new Fl_Output(100, 390, 40, 20);
-       fix_prop->color(FL_BACKGROUND_COLOR);
-       fix_prop->value("prop");
-       fix_prop->clear_visible_focus();
-
-       own_face = new Fl_Check_Button(150, 390, 40, 20, "Self");
-       own_face->value(0);
-       own_face->type(FL_TOGGLE_BUTTON);
-       own_face->clear_visible_focus();
-       own_face->callback(own_face_cb);
-       own_face->tooltip("Display font names in their own face");
-
-       Fl_Box * dummy = new Fl_Box(220, 390, 1, 1);
-
-       choose_btn = new Fl_Button(240, 385, 60, 30);
-       choose_btn->label("Select");
-       choose_btn->callback(choose_cb);
-
-       refresh_btn = new Fl_Button(310, 385, 60, 30);
-       refresh_btn->label("Refresh");
-       refresh_btn->callback(refresh_cb);
-
-       stat_bar->end();
-       stat_bar->resizable (dummy);
-
-       fnt_chooser_win->end();
-}
-
-/********************************************************************************************/
 int make_font_chooser(void)
 {
-       int font_idx;
-
-       // create the widget frame
-       create_font_widget();
-
-       // Load the systems available fonts - ask for everything
-//     font_count = Fl::set_fonts("*");
+  int font_idx;
+  
+  // create the widget frame
+  create_font_widget();
+  
+  // Load the systems available fonts - ask for everything
+  //   font_count = Fl::set_fonts("*");
 #ifdef WIN32
-       font_count = Fl::set_fonts("*");
+  font_count = Fl::set_fonts("*");
 #elif __APPLE__
-       font_count = Fl::set_fonts("*");
+  font_count = Fl::set_fonts("*");
 #else
-       // Load the systems available fonts - ask for everything that claims to 
be iso10646 compatible
-    font_count = Fl::set_fonts("-*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1");
+  // Load the systems available fonts - ask for everything that claims to be 
iso10646 compatible
+  font_count = Fl::set_fonts("-*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1");
 #endif
-       
-       // allocate space for the sizes and numsizes array, now we know how 
many entries it needs
-       sizes = new int*[font_count];
-       numsizes = new int[font_count];
+  
+  // allocate space for the sizes and numsizes array, now we know how many 
entries it needs
+  sizes = new int*[font_count];
+  numsizes = new int[font_count];
+  
+  // Populate the font list with the names of the fonts found
+  first_free = FL_FREE_FONT;
+  for (font_idx = first_free; font_idx < font_count; font_idx++)
+  {
+    // Find out how many sizes are supported for each font face
+    int *size_array;
+    int size_count = Fl::get_font_sizes((Fl_Font)font_idx, size_array);
+    numsizes[font_idx-first_free] = size_count;
+    if (size_count) // if the font has multiple sizes, populate the 2-D sizes 
array
+    {
+      sizes[font_idx-first_free] = new int[size_count];
+      for (int j = 0; j < size_count; j++)
+        sizes[font_idx-first_free][j] = size_array[j];
+    }
+  } // end of font list filling loop
+  
+  // Call this once to get the font browser loaded up
+  own_face_cb(NULL, 0);
+  
+  fontobj->value(1);
+  //   fontobj->textfont(261); // optional hard-coded font for testing - do 
not use!
+  
+  font_cb(fontobj, 0);
+  
+  fnt_cnt->value(font_count);
+  
+  return font_count;
+  
+} // make_font_chooser
 
-       // Populate the font list with the names of the fonts found
-       first_free = FL_FREE_FONT;
-       for (font_idx = first_free; font_idx < font_count; font_idx++)
-       {
-               // Find out how many sizes are supported for each font face
-               int *size_array;
-               int size_count = Fl::get_font_sizes((Fl_Font)font_idx, 
size_array);
-               numsizes[font_idx-first_free] = size_count;
-               if (size_count) // if the font has multiple sizes, populate the 
2-D sizes array
-               {
-                       sizes[font_idx-first_free] = new int[size_count];
-                       for (int j = 0; j < size_count; j++)
-                               sizes[font_idx-first_free][j] = size_array[j];
-               }
-       } // end of font list filling loop
+/* End of Font Chooser Widget code */
 
-       // Call this once to get the font browser loaded up
-       own_face_cb(NULL, 0);
 
-       fontobj->value(1);
-//     fontobj->textfont(261); // optional hard-coded font for testing - do 
not use!
 
-       font_cb(fontobj, 0);
-
-       fnt_cnt->value(font_count);
-
-       return font_count;
-
-} // make_font_chooser
-
-/* End of Font Chooser Widget code */
-/********************************************************************************************/
 /* Unicode Font display widget */
 
 void box_cb(Fl_Widget* o, void*) {
@@ -437,23 +450,24 @@
   thescroll->redraw();
 }
 
+
 class right_left_input : public Fl_Input
 {
 public:
-       right_left_input (int x, int y, int w, int h) : Fl_Input(x, y, w, h) {};
-       void draw() {
-               if (type() == FL_HIDDEN_INPUT) return;
-                Fl_Boxtype b = box();
-               if (damage() & FL_DAMAGE_ALL) draw_box(b, color());
-               drawtext(x()+Fl::box_dx(b)+3, y()+Fl::box_dy(b),
-                       w()-Fl::box_dw(b)-6, h()-Fl::box_dh(b));
-       }
-       void drawtext(int X, int Y, int W, int H) {
-               fl_color(textcolor());
-               fl_font(textfont(), textsize());
-               fl_rtl_draw(value(), strlen(value()),
-                       X + W, Y + fl_height() -fl_descent());
-       }
+  right_left_input (int x, int y, int w, int h) : Fl_Input(x, y, w, h) {};
+  void draw() {
+    if (type() == FL_HIDDEN_INPUT) return;
+    Fl_Boxtype b = box();
+    if (damage() & FL_DAMAGE_ALL) draw_box(b, color());
+    drawtext(x()+Fl::box_dx(b)+3, y()+Fl::box_dy(b),
+             w()-Fl::box_dw(b)-6, h()-Fl::box_dh(b));
+  }
+  void drawtext(int X, int Y, int W, int H) {
+    fl_color(textcolor());
+    fl_font(textfont(), textsize());
+    fl_rtl_draw(value(), strlen(value()),
+                X + W, Y + fl_height() -fl_descent());
+  }
 };
 
 
@@ -466,102 +480,103 @@
   static char buf[1024];
   const char *ptr = i7->value();
   while (ptr && *ptr) {
-     if (*ptr < ' ' || *ptr > 126) {
-       buf[i++] = '\\';
-       buf[i++] = nb[((*ptr >> 6) & 0x3)];
-       buf[i++] = nb[((*ptr >> 3) & 0x7)];
-       buf[i++] = nb[(*ptr & 0x7)];
-     } else {
-       if (*ptr == '\\') buf[i++] = '\\';
-       buf[i++] = *ptr;
-     }
-     ptr++;
+    if (*ptr < ' ' || *ptr > 126) {
+      buf[i++] = '\\';
+      buf[i++] = nb[((*ptr >> 6) & 0x3)];
+      buf[i++] = nb[((*ptr >> 3) & 0x7)];
+      buf[i++] = nb[(*ptr & 0x7)];
+    } else {
+      if (*ptr == '\\') buf[i++] = '\\';
+      buf[i++] = *ptr;
+    }
+    ptr++;
   }
   buf[i] = 0;
   i8->value(buf);
 }
 
+
 class UCharDropBox : public Fl_Output {
 public:
   UCharDropBox(int x, int y, int w, int h, const char *label=0) :
-    Fl_Output(x, y, w, h, label) { }
+  Fl_Output(x, y, w, h, label) { }
   int handle(int event) {
     switch (event) {
       case FL_DND_ENTER: return 1;
       case FL_DND_DRAG: return 1;
       case FL_DND_RELEASE: return 1;
       case FL_PASTE:
-        {
-          static const char lut[] = "0123456789abcdef";
-          const char *t = Fl::event_text();
-          int i, n;
-          unsigned int ucode = fl_utf8decode(t, t+Fl::event_length(), &n);
-          if (n==0) {
-            value("");
-            return 1;
-          }
-          char buffer[200], *d = buffer;
-          for (i=0; i<n; i++) *d++ = t[i];
-          *d++ = ' ';
-          for (i=0; i<n; i++) {
-            *d++ = '\\'; *d++ = 'x';
-            *d++ = lut[(t[i]>>4)&0x0f]; *d++ = lut[t[i]&0x0f];
-          }
-          *d++ = ' ';
-          *d++ = '0';
-          *d++ = 'x';
-          *d++ = lut[(ucode>>20)&0x0f]; *d++ = lut[(ucode>>16)&0x0f];
-          *d++ = lut[(ucode>>12)&0x0f]; *d++ = lut[(ucode>>8)&0x0f];
-          *d++ = lut[(ucode>>4)&0x0f]; *d++ = lut[ucode&0x0f];
-          *d++ = 0;
-          value(buffer);
+      {
+        static const char lut[] = "0123456789abcdef";
+        const char *t = Fl::event_text();
+        int i, n;
+        unsigned int ucode = fl_utf8decode(t, t+Fl::event_length(), &n);
+        if (n==0) {
+          value("");
+          return 1;
         }
+        char buffer[200], *d = buffer;
+        for (i=0; i<n; i++) *d++ = t[i];
+        *d++ = ' ';
+        for (i=0; i<n; i++) {
+          *d++ = '\\'; *d++ = 'x';
+          *d++ = lut[(t[i]>>4)&0x0f]; *d++ = lut[t[i]&0x0f];
+        }
+        *d++ = ' ';
+        *d++ = '0';
+        *d++ = 'x';
+        *d++ = lut[(ucode>>20)&0x0f]; *d++ = lut[(ucode>>16)&0x0f];
+        *d++ = lut[(ucode>>12)&0x0f]; *d++ = lut[(ucode>>8)&0x0f];
+        *d++ = lut[(ucode>>4)&0x0f]; *d++ = lut[ucode&0x0f];
+        *d++ = 0;
+        value(buffer);
+      }
         return 1;
     }
     return Fl_Output::handle(event);
   }
 };
 
-/********************************************************************************************/
+
 int main(int argc, char** argv)
 {
-       int l;
-/* If this file is saved as a UTF-8, the latin1 text in the comment 
- * below doesn't look right any more! 
- * Store the specific latin-1 byte values here... this should be equivalent to:
- *     char *latin1 = "ABCabc���������123"; */
-       const char *latin1 = 
"\x41\x42\x43\x61\x62\x63\xe0\xe8\xe9\xef\xe2\xee\xf6\xfc\xe3\x31\x32\x33";
-       char *utf8 = (char*) malloc(strlen(latin1) * 5 + 1);
-       l = 0;
-//     l = fl_latin12utf((const unsigned char*)latin1, strlen(latin1), utf8);
-       l = fl_utf8froma(utf8, (strlen(latin1) * 5 + 1), latin1, 
strlen(latin1));
-
-       make_font_chooser();
-       extra_font = FL_TIMES_BOLD_ITALIC;
-
+  int l;
+  /* If this file is saved as a UTF-8, the latin1 text in the comment 
+   * below doesn't look right any more! 
+   * Store the specific latin-1 byte values here... this should be equivalent 
to:
+   *   char *latin1 = "ABCabc���������123"; */
+  const char *latin1 = 
"\x41\x42\x43\x61\x62\x63\xe0\xe8\xe9\xef\xe2\xee\xf6\xfc\xe3\x31\x32\x33";
+  char *utf8 = (char*) malloc(strlen(latin1) * 5 + 1);
+  l = 0;
+  //   l = fl_latin12utf((const unsigned char*)latin1, strlen(latin1), utf8);
+  l = fl_utf8froma(utf8, (strlen(latin1) * 5 + 1), latin1, strlen(latin1));
+  
+  make_font_chooser();
+  extra_font = FL_TIMES_BOLD_ITALIC;
+  
   /* setup the extra font */
   Fl::set_font(extra_font,
 #ifdef WIN32
-       " Arial Unicode MS"
+               " Arial Unicode MS"
 #elif __APPLE__
-       "Monaco"
+               "Monaco"
 #else
-       "-*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1"
+               "-*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1"
 #endif
-  );
-
-       main_win = new Fl_Double_Window (200 + 5*75, 400, "Unicode Display 
Test");
-       main_win->begin();
-
-       Fl_Input i1(5, 5, 190, 25);
-       utf8[l] = '\0';
-       i1.value(utf8);
-       Fl_Scroll scroll(200,0,5 * 75,400);
-
+               );
+  
+  main_win = new Fl_Double_Window (200 + 5*75, 400, "Unicode Display Test");
+  main_win->begin();
+  
+  Fl_Input i1(5, 5, 190, 25);
+  utf8[l] = '\0';
+  i1.value(utf8);
+  Fl_Scroll scroll(200,0,5 * 75,400);
+  
   int off = 2;
   if (argc > 1) {
-       off = (int)strtoul(argv[1], NULL, 0);
-       off /= 16;
+    off = (int)strtoul(argv[1], NULL, 0);
+    off /= 16;
   }
   argc = 1;
   for (long y=off; y< 0x10000 / 16; y++) {
@@ -570,11 +585,11 @@
     char buf[16*6];
     int i = 16 * y;
     for (int x=0; x<16; x++) {
-         int l;
-         l = fl_utf8encode(i, buf + o);
-         if (l < 1) l = 1;
-         o += l;
-         i++;
+      int l;
+      l = fl_utf8encode(i, buf + o);
+      if (l < 1) l = 1;
+      o += l;
+      i++;
     }
     buf[o] = '\0';
     sprintf(bu, "0x%04lX", y * 16);
@@ -586,48 +601,48 @@
   }
   main_win->resizable(scroll);
   scroll.end();
-
+  
   thescroll = &scroll;
-
+  
   char *utf8l = (char*) malloc(strlen(utf8) * 3 + 1);
   Fl_Input i2(5, 35, 190, 25);
   l = fl_utf_tolower((const unsigned char*)utf8, l, utf8l);
   utf8l[l] = '\0';
   i2.value(utf8l);
-
+  
   char *utf8u = (char*) malloc(strlen(utf8l) * 3 + 1);
   Fl_Input i3(5, 65, 190, 25);
   l = fl_utf_toupper((const unsigned char*)utf8l, l, utf8u);
   utf8u[l] = '\0';
   i3.value(utf8u);
-
+  
   const char *ltr_txt = "\\->e\xCC\x82=\xC3\xAA";
   Fl_Input i4(5, 90, 190, 25);
   i4.value(ltr_txt);
   i4.textfont(extra_font);
-
+  
   wchar_t r_to_l_txt[] ={/*8238,*/ 1610, 1608, 1606, 1604, 1603, 1608, 1583, 
0};
-
+  
   char abuf[40];
-//  l = fl_unicode2utf(r_to_l_txt, 8, abuf);
+  //  l = fl_unicode2utf(r_to_l_txt, 8, abuf);
   l = fl_utf8fromwc(abuf, 40, r_to_l_txt, 8);
   abuf[l] = 0;
-
+  
   right_left_input i5(5, 115, 190, 50);
   i5.textfont(extra_font);
   i5.textsize(30);
   i5.value(abuf);
-
+  
   Fl_Input i7(5, 230, 190, 25);
   Fl_Input i8(5, 260, 190, 25);
   i7.callback(i7_cb, &i8);
   i7.textsize(20);
   i7.value(abuf);
   i7.when(FL_WHEN_CHANGED);
-
+  
   wchar_t r_to_l_txt1[] ={/*8238,*/ 1610, 0x20, 1608, 0x20, 1606, 0x20,  1604, 
0x20, 1603, 0x20, 1608, 0x20, 1583, 0};
-
-//  l = fl_unicode2utf(r_to_l_txt1, 14, abuf);
+  
+  //  l = fl_unicode2utf(r_to_l_txt1, 14, abuf);
   l = fl_utf8fromwc(abuf, 40, r_to_l_txt1, 14);
   abuf[l] = 0;
   right_left_input i6(5, 175, 190, 50);
@@ -638,31 +653,31 @@
   // Now try Greg Ercolano's Japanese test sequence
   // SOME JAPANESE UTF8 TEXT
   const char *utfstr = "\xe4\xbd\x95\xe3\x82\x82\xe8\xa1"
-                 "\x8c\xe3\x82\x8b\xe3\x80\x82"; // 何も行る。
-
+  "\x8c\xe3\x82\x8b\xe3\x80\x82"; // 何も行る。
+  
   UCharDropBox db(5, 300, 190, 30);
   db.textsize(16);
   db.value("unichar drop box");
-                
+  
   Fl_Output o9(5, 330, 190, 45);
   o9.textfont(extra_font);
   o9.textsize(30);
   o9.value(utfstr);
-
-
+  
+  
   main_win->end();
   fl_set_status(0, 370, 100, 30);
-
+  
   main_win->show(argc,argv);
-
+  
   fnt_chooser_win->show();
-
+  
   int ret = Fl::run();
-
+  
   // Free up the sizes arrays we allocated
   if(numsizes) {delete [] numsizes;}
   if(sizes) {delete [] sizes;}
-
+  
   return ret;
 }
 

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to