[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-cvs: pcb.git: branch: master updated (14d6b636fffdba8ffe271b458d2d177e7c1eb016)



The branch, master has been updated
       via  14d6b636fffdba8ffe271b458d2d177e7c1eb016 (commit)
      from  dca72407d0b3d23e3bd6743c87498b0f48fcd196 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


=========
 Summary
=========

 src/crosshair.c           |   88 ++++++++----------------
 src/hid.h                 |    2 +
 src/hid/common/hidnogui.c |    4 +
 src/hid/gtk/gtkhid-gdk.c  |   90 ++++++++++++++++++++++++-
 src/hid/gtk/gtkhid-main.c |  110 ++++++++++++++++---------------
 src/hid/gtk/gui.h         |    2 +
 src/hid/lesstif/main.c    |  162 ++++++++++++++++++++++++++++++---------------
 7 files changed, 291 insertions(+), 167 deletions(-)


=================
 Commit Messages
=================

commit 14d6b636fffdba8ffe271b458d2d177e7c1eb016
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Commit: Peter Clifton <pcjc2@xxxxxxxxx>

    Give the HIDs control over attached object (crosshair, mark) drawing
    
    This is required if a renderer doesn't want to follow the current
    drawing model where it is assumed the core can call the HID's
    drawing APIs at any arbitrary point in time.
    
    Expose some API from crosshair.c to perform the actual drawing on
    demand, and add hooks to the HID structure to notify the GUI when it
    would previously have called the crosshair or mark drawing routines.
    
    This allows renderers with defined setup and tear-down requirements
    around drawing to execute them before the objects are drawn.
    
    CrosshairOn() and CrosshairOff() now simply set the Crosshair.On flag
    and call the appropriate notification hooks.
    
    This commit replaces all HideCrosshair() and RestoreCrosshair() calls
    with the new hooks notify_{crosshair|mark}_changed(), with an argument
    specifying whether a change is about to happen (false argument), or has
    been completed (true argument).

:100644 100644 06226d2... 9498879... M	src/crosshair.c
:100644 100644 0a81ddd... 36aca75... M	src/hid.h
:100644 100644 1568cd5... 84ceda3... M	src/hid/common/hidnogui.c
:100644 100644 fa6dea0... bd6e035... M	src/hid/gtk/gtkhid-gdk.c
:100644 100644 5037ff0... a51d167... M	src/hid/gtk/gtkhid-main.c
:100644 100644 180e58c... 5616489... M	src/hid/gtk/gui.h
:100644 100644 75c295e... 703da61... M	src/hid/lesstif/main.c

=========
 Changes
=========

commit 14d6b636fffdba8ffe271b458d2d177e7c1eb016
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Commit: Peter Clifton <pcjc2@xxxxxxxxx>

    Give the HIDs control over attached object (crosshair, mark) drawing
    
    This is required if a renderer doesn't want to follow the current
    drawing model where it is assumed the core can call the HID's
    drawing APIs at any arbitrary point in time.
    
    Expose some API from crosshair.c to perform the actual drawing on
    demand, and add hooks to the HID structure to notify the GUI when it
    would previously have called the crosshair or mark drawing routines.
    
    This allows renderers with defined setup and tear-down requirements
    around drawing to execute them before the objects are drawn.
    
    CrosshairOn() and CrosshairOff() now simply set the Crosshair.On flag
    and call the appropriate notification hooks.
    
    This commit replaces all HideCrosshair() and RestoreCrosshair() calls
    with the new hooks notify_{crosshair|mark}_changed(), with an argument
    specifying whether a change is about to happen (false argument), or has
    been completed (true argument).

diff --git a/src/crosshair.c b/src/crosshair.c
index 06226d2..9498879 100644
--- a/src/crosshair.c
+++ b/src/crosshair.c
@@ -66,15 +66,6 @@ typedef struct
 } point;
 
 /* ---------------------------------------------------------------------------
- * some local identifiers
- */
-
-/* This is a stack for HideCrosshair() and RestoreCrosshair() calls. They
- * must always be matched. */
-static bool CrosshairStack[MAX_CROSSHAIRSTACK_DEPTH];
-static int CrosshairStackLocation = 0;
-
-/* ---------------------------------------------------------------------------
  * some local prototypes
  */
 static void XORPolygon (PolygonTypePtr, LocationType, LocationType);
@@ -723,38 +714,11 @@ DrawMark (void)
 void
 notify_crosshair_change (bool changes_complete)
 {
-  if (changes_complete)
-    {
-      /* fprintf(stderr, "RestoreCrosshair stack %d\n", CrosshairStackLocation); */
-      if (CrosshairStackLocation <= 0)
-        {
-          fprintf(stderr, "Error: CrosshairStackLocation underflow\n");
-          return;
-        }
-
-      CrosshairStackLocation--;
-
-      if (CrosshairStack[CrosshairStackLocation])
-        CrosshairOn ();
-      else
-        CrosshairOff ();
-    }
-  else
-    {
-      /* fprintf(stderr, "HideCrosshair stack %d\n", CrosshairStackLocation); */
-      if (CrosshairStackLocation >= MAX_CROSSHAIRSTACK_DEPTH)
-        {
-          fprintf(stderr, "Error: CrosshairStackLocation overflow\n");
-          return;
-        }
-
-      CrosshairStack[CrosshairStackLocation] = Crosshair.On;
-      CrosshairStackLocation++;
-
-      CrosshairOff ();
-    }
+  if (gui->notify_crosshair_change)
+    gui->notify_crosshair_change (changes_complete);
 }
 
+
 /* ---------------------------------------------------------------------------
  * notify the GUI that data relating to the mark is being changed.
  *
@@ -772,8 +736,8 @@ notify_crosshair_change (bool changes_complete)
 void
 notify_mark_change (bool changes_complete)
 {
-  /* For now, just piggy back on the crosshair changes redrawing the mark */
-  notify_crosshair_change (changes_complete);
+  if (gui->notify_mark_change)
+    gui->notify_mark_change (changes_complete);
 }
 
 /* ---------------------------------------------------------------------------
@@ -782,12 +746,18 @@ notify_mark_change (bool changes_complete)
 void
 CrosshairOn (void)
 {
-  if (!Crosshair.On)
-    {
-      Crosshair.On = true;
-      DrawAttached ();
-      DrawMark ();
-    }
+  if (Crosshair.On)
+    return;
+
+  notify_crosshair_change (false);
+  if (Marked.status)
+    notify_mark_change (false);
+
+  Crosshair.On = true;
+
+  notify_crosshair_change (true);
+  if (Marked.status)
+    notify_mark_change (true);
 }
 
 /* ---------------------------------------------------------------------------
@@ -796,12 +766,18 @@ CrosshairOn (void)
 void
 CrosshairOff (void)
 {
-  if (Crosshair.On)
-    {
-      DrawAttached ();
-      DrawMark ();
-      Crosshair.On = false;
-    }
+  if (!Crosshair.On)
+    return;
+
+  notify_crosshair_change (false);
+  if (Marked.status)
+    notify_mark_change (false);
+
+  Crosshair.On = false;
+
+  notify_crosshair_change (true);
+  if (Marked.status)
+    notify_mark_change (true);
 }
 
 /* ---------------------------------------------------------------------------
@@ -1184,8 +1160,7 @@ SetCrosshairRange (LocationType MinX, LocationType MinY, LocationType MaxX,
 
 /* ---------------------------------------------------------------------------
  * initializes crosshair stuff
- * clears the struct, allocates to graphical contexts and
- * initializes the stack
+ * clears the struct, allocates to graphical contexts
  */
 void
 InitCrosshair (void)
@@ -1197,9 +1172,6 @@ InitCrosshair (void)
   gui->set_line_cap (Crosshair.GC, Trace_Cap);
   gui->set_line_width (Crosshair.GC, 1);
 
-  /* fake a crosshair off entry on stack */
-  CrosshairStackLocation = 0;
-  CrosshairStack[CrosshairStackLocation++] = true;
   Crosshair.On = true;
 
   /* set initial shape */
diff --git a/src/hid.h b/src/hid.h
index 0a81ddd..36aca75 100644
--- a/src/hid.h
+++ b/src/hid.h
@@ -298,6 +298,8 @@ typedef enum
     /* This may be called to ask the GUI to force a redraw of a given area */
     void (*invalidate_lr) (int left_, int right_, int top_, int bottom_);
     void (*invalidate_all) (void);
+    void (*notify_crosshair_change) (bool changes_complete);
+    void (*notify_mark_change) (bool changes_complete);
 
     /* During redraw or print/export cycles, this is called once per
        layer (or layer group, for copper layers).  If it returns false
diff --git a/src/hid/common/hidnogui.c b/src/hid/common/hidnogui.c
index 1568cd5..84ceda3 100644
--- a/src/hid/common/hidnogui.c
+++ b/src/hid/common/hidnogui.c
@@ -444,6 +444,8 @@ HID hid_nogui = {
   nogui_parse_arguments,
   nogui_invalidate_lr,
   nogui_invalidate_all,
+  0 /* nogui_notify_crosshair_change */ ,
+  0 /* nogui_notify_mark_change */ ,
   nogui_set_layer,
   nogui_make_gc,
   nogui_destroy_gc,
@@ -505,6 +507,8 @@ apply_default_hid (HID * d, HID * s)
   AD (parse_arguments);
   AD (invalidate_lr);
   AD (invalidate_all);
+  AD (notify_crosshair_change);
+  AD (notify_mark_change);
   AD (set_layer);
   AD (make_gc);
   AD (destroy_gc);
diff --git a/src/hid/gtk/gtkhid-gdk.c b/src/hid/gtk/gtkhid-gdk.c
index fa6dea0..bd6e035 100644
--- a/src/hid/gtk/gtkhid-gdk.c
+++ b/src/hid/gtk/gtkhid-gdk.c
@@ -34,6 +34,8 @@ typedef struct render_priv {
   GdkGC *mask_gc;
   GdkGC *u_gc;
   GdkGC *grid_gc;
+  int attached_invalidate_depth;
+  int mark_invalidate_depth;
 } render_priv;
 
 
@@ -709,6 +711,7 @@ ghid_invalidate_lr (int left, int right, int top, int bottom)
   ghid_invalidate_all ();
 }
 
+
 void
 ghid_invalidate_all ()
 {
@@ -771,11 +774,94 @@ ghid_invalidate_all ()
   hid_expose_callback (&ghid_hid, &region, 0);
   ghid_draw_grid ();
 
-  DrawAttached ();
-  DrawMark ();
+  /* In some cases we are called with the crosshair still off */
+  if (priv->attached_invalidate_depth == 0)
+    DrawAttached ();
+
+  /* In some cases we are called with the mark still off */
+  if (priv->mark_invalidate_depth == 0)
+    DrawMark ();
+
   ghid_screen_update ();
 }
 
+
+void
+ghid_notify_crosshair_change (bool changes_complete)
+{
+  render_priv *priv = gport->render_priv;
+
+  /* We sometimes get called before the GUI is up */
+  if (gport->drawing_area == NULL)
+    return;
+
+  if (changes_complete)
+    priv->attached_invalidate_depth --;
+
+  if (priv->attached_invalidate_depth < 0)
+    {
+      priv->attached_invalidate_depth = 0;
+      /* A mismatch of changes_complete == false and == true notifications
+       * is not expected to occur, but we will try to handle it gracefully.
+       * As we know the crosshair will have been shown already, we must
+       * repaint the entire view to be sure not to leave an artaefact.
+       */
+      ghid_invalidate_all ();
+      return;
+    }
+
+  if (priv->attached_invalidate_depth == 0)
+    DrawAttached ();
+
+  if (!changes_complete)
+    {
+      priv->attached_invalidate_depth ++;
+    }
+  else if (gport->drawing_area != NULL)
+    {
+      /* Queue a GTK expose when changes are complete */
+      ghid_draw_area_update (gport, NULL);
+    }
+}
+
+void
+ghid_notify_mark_change (bool changes_complete)
+{
+  render_priv *priv = gport->render_priv;
+
+  /* We sometimes get called before the GUI is up */
+  if (gport->drawing_area == NULL)
+    return;
+
+  if (changes_complete)
+    priv->mark_invalidate_depth --;
+
+  if (priv->mark_invalidate_depth < 0)
+    {
+      priv->mark_invalidate_depth = 0;
+      /* A mismatch of changes_complete == false and == true notifications
+       * is not expected to occur, but we will try to handle it gracefully.
+       * As we know the mark will have been shown already, we must
+       * repaint the entire view to be sure not to leave an artaefact.
+       */
+      ghid_invalidate_all ();
+      return;
+    }
+
+  if (priv->mark_invalidate_depth == 0)
+    DrawMark ();
+
+  if (!changes_complete)
+    {
+      priv->mark_invalidate_depth ++;
+    }
+  else if (gport->drawing_area != NULL)
+    {
+      /* Queue a GTK expose when changes are complete */
+      ghid_draw_area_update (gport, NULL);
+    }
+}
+
 static void
 draw_right_cross (GdkGC *xor_gc, gint x, gint y)
 {
diff --git a/src/hid/gtk/gtkhid-main.c b/src/hid/gtk/gtkhid-main.c
index 5037ff0..a51d167 100644
--- a/src/hid/gtk/gtkhid-main.c
+++ b/src/hid/gtk/gtkhid-main.c
@@ -2102,60 +2102,62 @@ hid_gtk_init ()
 
   common_draw_helpers_init (&ghid_hid);
 
-  ghid_hid.struct_size          = sizeof (HID);
-  ghid_hid.name                 = "gtk";
-  ghid_hid.description          = "Gtk - The Gimp Toolkit";
-  ghid_hid.gui                  = 1;
-  ghid_hid.poly_after           = 1;
-
-  ghid_hid.get_export_options   = ghid_get_export_options;
-  ghid_hid.do_export            = ghid_do_export;
-  ghid_hid.parse_arguments      = ghid_parse_arguments;
-  ghid_hid.invalidate_lr        = ghid_invalidate_lr;
-  ghid_hid.invalidate_all       = ghid_invalidate_all;
-  ghid_hid.set_layer            = ghid_set_layer;
-  ghid_hid.make_gc              = ghid_make_gc;
-  ghid_hid.destroy_gc           = ghid_destroy_gc;
-  ghid_hid.use_mask             = ghid_use_mask;
-  ghid_hid.set_color            = ghid_set_color;
-  ghid_hid.set_line_cap         = ghid_set_line_cap;
-  ghid_hid.set_line_width       = ghid_set_line_width;
-  ghid_hid.set_draw_xor         = ghid_set_draw_xor;
-  ghid_hid.set_draw_faded       = ghid_set_draw_faded;
-  ghid_hid.set_line_cap_angle   = ghid_set_line_cap_angle;
-  ghid_hid.draw_line            = ghid_draw_line;
-  ghid_hid.draw_arc             = ghid_draw_arc;
-  ghid_hid.draw_rect            = ghid_draw_rect;
-  ghid_hid.fill_circle          = ghid_fill_circle;
-  ghid_hid.fill_polygon         = ghid_fill_polygon;
-  ghid_hid.fill_rect            = ghid_fill_rect;
-
-  ghid_hid.calibrate            = ghid_calibrate;
-  ghid_hid.shift_is_pressed     = ghid_shift_is_pressed;
-  ghid_hid.control_is_pressed   = ghid_control_is_pressed;
-  ghid_hid.mod1_is_pressed      = ghid_mod1_is_pressed,
-  ghid_hid.get_coords           = ghid_get_coords;
-  ghid_hid.set_crosshair        = ghid_set_crosshair;
-  ghid_hid.add_timer            = ghid_add_timer;
-  ghid_hid.stop_timer           = ghid_stop_timer;
-  ghid_hid.watch_file           = ghid_watch_file;
-  ghid_hid.unwatch_file         = ghid_unwatch_file;
-  ghid_hid.add_block_hook       = ghid_add_block_hook;
-  ghid_hid.stop_block_hook      = ghid_stop_block_hook;
-
-  ghid_hid.log                  = ghid_log;
-  ghid_hid.logv                 = ghid_logv;
-  ghid_hid.confirm_dialog       = ghid_confirm_dialog;
-  ghid_hid.close_confirm_dialog = ghid_close_confirm_dialog;
-  ghid_hid.report_dialog        = ghid_report_dialog;
-  ghid_hid.prompt_for           = ghid_prompt_for;
-  ghid_hid.fileselect           = ghid_fileselect;
-  ghid_hid.attribute_dialog     = ghid_attribute_dialog;
-  ghid_hid.show_item            = ghid_show_item;
-  ghid_hid.beep                 = ghid_beep;
-  ghid_hid.progress             = ghid_progress;
-  ghid_hid.drc_gui              = &ghid_drc_gui,
-  ghid_hid.edit_attributes      = ghid_attributes;
+  ghid_hid.struct_size              = sizeof (HID);
+  ghid_hid.name                     = "gtk";
+  ghid_hid.description              = "Gtk - The Gimp Toolkit";
+  ghid_hid.gui                      = 1;
+  ghid_hid.poly_after               = 1;
+
+  ghid_hid.get_export_options       = ghid_get_export_options;
+  ghid_hid.do_export                = ghid_do_export;
+  ghid_hid.parse_arguments          = ghid_parse_arguments;
+  ghid_hid.invalidate_lr            = ghid_invalidate_lr;
+  ghid_hid.invalidate_all           = ghid_invalidate_all;
+  ghid_hid.notify_crosshair_change  = ghid_notify_crosshair_change;
+  ghid_hid.notify_mark_change       = ghid_notify_mark_change;
+  ghid_hid.set_layer                = ghid_set_layer;
+  ghid_hid.make_gc                  = ghid_make_gc;
+  ghid_hid.destroy_gc               = ghid_destroy_gc;
+  ghid_hid.use_mask                 = ghid_use_mask;
+  ghid_hid.set_color                = ghid_set_color;
+  ghid_hid.set_line_cap             = ghid_set_line_cap;
+  ghid_hid.set_line_width           = ghid_set_line_width;
+  ghid_hid.set_draw_xor             = ghid_set_draw_xor;
+  ghid_hid.set_draw_faded           = ghid_set_draw_faded;
+  ghid_hid.set_line_cap_angle       = ghid_set_line_cap_angle;
+  ghid_hid.draw_line                = ghid_draw_line;
+  ghid_hid.draw_arc                 = ghid_draw_arc;
+  ghid_hid.draw_rect                = ghid_draw_rect;
+  ghid_hid.fill_circle              = ghid_fill_circle;
+  ghid_hid.fill_polygon             = ghid_fill_polygon;
+  ghid_hid.fill_rect                = ghid_fill_rect;
+
+  ghid_hid.calibrate                = ghid_calibrate;
+  ghid_hid.shift_is_pressed         = ghid_shift_is_pressed;
+  ghid_hid.control_is_pressed       = ghid_control_is_pressed;
+  ghid_hid.mod1_is_pressed          = ghid_mod1_is_pressed,
+  ghid_hid.get_coords               = ghid_get_coords;
+  ghid_hid.set_crosshair            = ghid_set_crosshair;
+  ghid_hid.add_timer                = ghid_add_timer;
+  ghid_hid.stop_timer               = ghid_stop_timer;
+  ghid_hid.watch_file               = ghid_watch_file;
+  ghid_hid.unwatch_file             = ghid_unwatch_file;
+  ghid_hid.add_block_hook           = ghid_add_block_hook;
+  ghid_hid.stop_block_hook          = ghid_stop_block_hook;
+
+  ghid_hid.log                      = ghid_log;
+  ghid_hid.logv                     = ghid_logv;
+  ghid_hid.confirm_dialog           = ghid_confirm_dialog;
+  ghid_hid.close_confirm_dialog     = ghid_close_confirm_dialog;
+  ghid_hid.report_dialog            = ghid_report_dialog;
+  ghid_hid.prompt_for               = ghid_prompt_for;
+  ghid_hid.fileselect               = ghid_fileselect;
+  ghid_hid.attribute_dialog         = ghid_attribute_dialog;
+  ghid_hid.show_item                = ghid_show_item;
+  ghid_hid.beep                     = ghid_beep;
+  ghid_hid.progress                 = ghid_progress;
+  ghid_hid.drc_gui                  = &ghid_drc_gui,
+  ghid_hid.edit_attributes          = ghid_attributes;
 
   hid_register_hid (&ghid_hid);
 #include "gtk_lists.h"
diff --git a/src/hid/gtk/gui.h b/src/hid/gtk/gui.h
index 180e58c..5616489 100644
--- a/src/hid/gtk/gui.h
+++ b/src/hid/gtk/gui.h
@@ -493,6 +493,8 @@ void ghid_fill_polygon (hidGC gc, int n_coords, int *x, int *y);
 void ghid_fill_rect (hidGC gc, int x1, int y1, int x2, int y2);
 void ghid_invalidate_lr (int left, int right, int top, int bottom);
 void ghid_invalidate_all ();
+void ghid_notify_crosshair_change (bool changes_complete);
+void ghid_notify_mark_change (bool changes_complete);
 void ghid_show_crosshair (gboolean show);
 void ghid_init_renderer (int *, char ***, GHidPort *);
 void ghid_init_drawing_widget (GtkWidget *widget, GHidPort *);
diff --git a/src/hid/lesstif/main.c b/src/hid/lesstif/main.c
index 75c295e..703da61 100644
--- a/src/hid/lesstif/main.c
+++ b/src/hid/lesstif/main.c
@@ -2878,6 +2878,60 @@ lesstif_invalidate_all (void)
   lesstif_invalidate_lr (0, PCB->MaxWidth, 0, PCB->MaxHeight);
 }
 
+static void
+lesstif_notify_crosshair_change (bool changes_complete)
+{
+  static int invalidate_depth = 0;
+
+  if (changes_complete)
+    invalidate_depth --;
+
+  if (invalidate_depth < 0)
+    {
+      invalidate_depth = 0;
+      /* A mismatch of changes_complete == false and == true notifications
+       * is not expected to occur, but we will try to handle it gracefully.
+       * As we know the crosshair will have been shown already, we must
+       * repaint the entire view to be sure not to leave an artaefact.
+       */
+      need_idle_proc ();
+      return;
+    }
+
+  if (invalidate_depth == 0)
+    DrawAttached ();
+
+  if (!changes_complete)
+    invalidate_depth ++;
+}
+
+static void
+lesstif_notify_mark_change (bool changes_complete)
+{
+  static int invalidate_depth = 0;
+
+  if (changes_complete)
+    invalidate_depth --;
+
+  if (invalidate_depth < 0)
+    {
+      invalidate_depth = 0;
+      /* A mismatch of changes_complete == false and == true notifications
+       * is not expected to occur, but we will try to handle it gracefully.
+       * As we know the mark will have been shown already, we must
+       * repaint the entire view to be sure not to leave an artaefact.
+       */
+      need_idle_proc ();
+      return;
+    }
+
+  if (invalidate_depth == 0)
+    DrawMark ();
+
+  if (!changes_complete)
+    invalidate_depth ++;
+}
+
 static int
 lesstif_set_layer (const char *name, int group, int empty)
 {
@@ -3804,59 +3858,61 @@ hid_lesstif_init ()
 
   common_draw_helpers_init (&lesstif_hid);
 
-  lesstif_hid.struct_size           = sizeof (HID);
-  lesstif_hid.name                  = "lesstif";
-  lesstif_hid.description           = "LessTif - a Motif clone for X/Unix";
-  lesstif_hid.gui                   = 1;
-  lesstif_hid.poly_before           = 1;
-
-  lesstif_hid.get_export_options    = lesstif_get_export_options;
-  lesstif_hid.do_export             = lesstif_do_export;
-  lesstif_hid.parse_arguments       = lesstif_parse_arguments;
-  lesstif_hid.invalidate_lr         = lesstif_invalidate_lr;
-  lesstif_hid.invalidate_all        = lesstif_invalidate_all;
-  lesstif_hid.set_layer             = lesstif_set_layer;
-  lesstif_hid.make_gc               = lesstif_make_gc;
-  lesstif_hid.destroy_gc            = lesstif_destroy_gc;
-  lesstif_hid.use_mask              = lesstif_use_mask;
-  lesstif_hid.set_color             = lesstif_set_color;
-  lesstif_hid.set_line_cap          = lesstif_set_line_cap;
-  lesstif_hid.set_line_width        = lesstif_set_line_width;
-  lesstif_hid.set_draw_xor          = lesstif_set_draw_xor;
-  lesstif_hid.set_draw_faded        = lesstif_set_draw_faded;
-  lesstif_hid.set_line_cap_angle    = lesstif_set_line_cap_angle;
-  lesstif_hid.draw_line             = lesstif_draw_line;
-  lesstif_hid.draw_arc              = lesstif_draw_arc;
-  lesstif_hid.draw_rect             = lesstif_draw_rect;
-  lesstif_hid.fill_circle           = lesstif_fill_circle;
-  lesstif_hid.fill_polygon          = lesstif_fill_polygon;
-  lesstif_hid.fill_rect             = lesstif_fill_rect;
-
-  lesstif_hid.calibrate             = lesstif_calibrate;
-  lesstif_hid.shift_is_pressed      = lesstif_shift_is_pressed;
-  lesstif_hid.control_is_pressed    = lesstif_control_is_pressed;
-  lesstif_hid.mod1_is_pressed       = lesstif_mod1_is_pressed;
-  lesstif_hid.get_coords            = lesstif_get_coords;
-  lesstif_hid.set_crosshair         = lesstif_set_crosshair;
-  lesstif_hid.add_timer             = lesstif_add_timer;
-  lesstif_hid.stop_timer            = lesstif_stop_timer;
-  lesstif_hid.watch_file            = lesstif_watch_file;
-  lesstif_hid.unwatch_file          = lesstif_unwatch_file;
-  lesstif_hid.add_block_hook        = lesstif_add_block_hook;
-  lesstif_hid.stop_block_hook       = lesstif_stop_block_hook;
-
-  lesstif_hid.log                   = lesstif_log;
-  lesstif_hid.logv                  = lesstif_logv;
-  lesstif_hid.confirm_dialog        = lesstif_confirm_dialog;
-  lesstif_hid.close_confirm_dialog  = lesstif_close_confirm_dialog;
-  lesstif_hid.report_dialog         = lesstif_report_dialog;
-  lesstif_hid.prompt_for            = lesstif_prompt_for;
-  lesstif_hid.fileselect            = lesstif_fileselect;
-  lesstif_hid.attribute_dialog      = lesstif_attribute_dialog;
-  lesstif_hid.show_item             = lesstif_show_item;
-  lesstif_hid.beep                  = lesstif_beep;
-  lesstif_hid.progress              = lesstif_progress;
-  lesstif_hid.edit_attributes       = lesstif_attributes_dialog;
+  lesstif_hid.struct_size             = sizeof (HID);
+  lesstif_hid.name                    = "lesstif";
+  lesstif_hid.description             = "LessTif - a Motif clone for X/Unix";
+  lesstif_hid.gui                     = 1;
+  lesstif_hid.poly_before             = 1;
+
+  lesstif_hid.get_export_options      = lesstif_get_export_options;
+  lesstif_hid.do_export               = lesstif_do_export;
+  lesstif_hid.parse_arguments         = lesstif_parse_arguments;
+  lesstif_hid.invalidate_lr           = lesstif_invalidate_lr;
+  lesstif_hid.invalidate_all          = lesstif_invalidate_all;
+  lesstif_hid.notify_crosshair_change = lesstif_notify_crosshair_change;
+  lesstif_hid.notify_mark_change      = lesstif_notify_mark_change;
+  lesstif_hid.set_layer               = lesstif_set_layer;
+  lesstif_hid.make_gc                 = lesstif_make_gc;
+  lesstif_hid.destroy_gc              = lesstif_destroy_gc;
+  lesstif_hid.use_mask                = lesstif_use_mask;
+  lesstif_hid.set_color               = lesstif_set_color;
+  lesstif_hid.set_line_cap            = lesstif_set_line_cap;
+  lesstif_hid.set_line_width          = lesstif_set_line_width;
+  lesstif_hid.set_draw_xor            = lesstif_set_draw_xor;
+  lesstif_hid.set_draw_faded          = lesstif_set_draw_faded;
+  lesstif_hid.set_line_cap_angle      = lesstif_set_line_cap_angle;
+  lesstif_hid.draw_line               = lesstif_draw_line;
+  lesstif_hid.draw_arc                = lesstif_draw_arc;
+  lesstif_hid.draw_rect               = lesstif_draw_rect;
+  lesstif_hid.fill_circle             = lesstif_fill_circle;
+  lesstif_hid.fill_polygon            = lesstif_fill_polygon;
+  lesstif_hid.fill_rect               = lesstif_fill_rect;
+
+  lesstif_hid.calibrate               = lesstif_calibrate;
+  lesstif_hid.shift_is_pressed        = lesstif_shift_is_pressed;
+  lesstif_hid.control_is_pressed      = lesstif_control_is_pressed;
+  lesstif_hid.mod1_is_pressed         = lesstif_mod1_is_pressed;
+  lesstif_hid.get_coords              = lesstif_get_coords;
+  lesstif_hid.set_crosshair           = lesstif_set_crosshair;
+  lesstif_hid.add_timer               = lesstif_add_timer;
+  lesstif_hid.stop_timer              = lesstif_stop_timer;
+  lesstif_hid.watch_file              = lesstif_watch_file;
+  lesstif_hid.unwatch_file            = lesstif_unwatch_file;
+  lesstif_hid.add_block_hook          = lesstif_add_block_hook;
+  lesstif_hid.stop_block_hook         = lesstif_stop_block_hook;
+
+  lesstif_hid.log                     = lesstif_log;
+  lesstif_hid.logv                    = lesstif_logv;
+  lesstif_hid.confirm_dialog          = lesstif_confirm_dialog;
+  lesstif_hid.close_confirm_dialog    = lesstif_close_confirm_dialog;
+  lesstif_hid.report_dialog           = lesstif_report_dialog;
+  lesstif_hid.prompt_for              = lesstif_prompt_for;
+  lesstif_hid.fileselect              = lesstif_fileselect;
+  lesstif_hid.attribute_dialog        = lesstif_attribute_dialog;
+  lesstif_hid.show_item               = lesstif_show_item;
+  lesstif_hid.beep                    = lesstif_beep;
+  lesstif_hid.progress                = lesstif_progress;
+  lesstif_hid.edit_attributes         = lesstif_attributes_dialog;
 
   hid_register_hid (&lesstif_hid);
 #include "lesstif_lists.h"




_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs