Merged o_cue_undraw() and o_cue_undraw_complex(). Also added
documentation.
---
 gschem/include/prototype.h |    1 -
 gschem/src/o_cue.c         |   75 +++++++++++++++++++++-----------------------
 gschem/src/o_delete.c      |    2 +-
 3 files changed, 37 insertions(+), 41 deletions(-)

diff --git a/gschem/include/prototype.h b/gschem/include/prototype.h
index 718c530..1bdc549 100644
--- a/gschem/include/prototype.h
+++ b/gschem/include/prototype.h
@@ -562,7 +562,6 @@ void o_cue_draw_lowlevel_midpoints(GSCHEM_TOPLEVEL 
*w_current, OBJECT *object);
 void o_cue_draw_single(GSCHEM_TOPLEVEL *w_current, OBJECT *object);
 void o_cue_erase_single(GSCHEM_TOPLEVEL *w_current, OBJECT *object);
 void o_cue_undraw(GSCHEM_TOPLEVEL *w_current, OBJECT *object);
-void o_cue_undraw_complex(GSCHEM_TOPLEVEL *w_current, OBJECT *object);
 void o_cue_draw_list(GSCHEM_TOPLEVEL *w_current, GList *object_list);
 void o_cue_undraw_list(GSCHEM_TOPLEVEL *w_current, GList *object_list);
 void o_cue_undraw_objects(GSCHEM_TOPLEVEL *w_current, OBJECT *list);
diff --git a/gschem/src/o_cue.c b/gschem/src/o_cue.c
index 99c5fec..547d9e9 100644
--- a/gschem/src/o_cue.c
+++ b/gschem/src/o_cue.c
@@ -432,18 +432,21 @@ void o_cue_erase_single(GSCHEM_TOPLEVEL *w_current, 
OBJECT *object)
   }
 }
 
-/*! \todo Finish function documentation!!!
- *  \brief
+/*! \brief Erase the cues of an object and redraw connected objects.
  *  \par Function Description
+ *  This function erases the cues on object \a object. It then redraws
+ *  the cues of its connected objects.
  *
+ *  \param [in] w_current The GSCHEM_TOPLEVEL object.
+ *  \param [in] object    The object to redraw with no cue.
  */
-void o_cue_undraw(GSCHEM_TOPLEVEL *w_current, OBJECT *object)
+static void o_cue_undraw_lowlevel(GSCHEM_TOPLEVEL *w_current, OBJECT *object)
 {
   GList *cl_current;
   CONN *conn;
-
+  
   o_cue_erase_single(w_current, object);
-
+  
   cl_current = object->conn_list;
   while(cl_current != NULL) {
     conn = (CONN *) cl_current->data;
@@ -454,49 +457,43 @@ void o_cue_undraw(GSCHEM_TOPLEVEL *w_current, OBJECT 
*object)
 
     cl_current = g_list_next(cl_current);
   }
-
-  o_redraw_single(w_current, object);
 }
 
-/*! \brief Undraw complex OBJECT.
+/*! \brief Hide the cues of an object.
  *  \par Function Description
- *  This function undraws complex objects (pass in the GSCHEM_TOPLEVEL object)
+ *  This function takes an object and redraws it without its cues. It
+ *  also manages the redraw of connected objects.
  *
- *  \param [in] w_current  The GSCHEM_TOPLEVEL object.
- *  \param [in] object     OBJECT to undraw.
+ *  \note
+ *  The connections of the object are unchanged by this function.
+ *
+ *  \param [in] w_current The GSCHEM_TOPLEVEL object.
+ *  \param [in] object    The object to redraw with no cue.
  */
-void o_cue_undraw_complex(GSCHEM_TOPLEVEL *w_current, OBJECT *object)
+void o_cue_undraw(GSCHEM_TOPLEVEL *w_current, OBJECT *object)
 {
-  GList *cl_current;
-  CONN *conn;
-  OBJECT *o_current;
-
-  if (object->type != OBJ_COMPLEX && object->type != OBJ_PLACEHOLDER) {
-    return;
-  }
-
-  o_current = object->complex->prim_objs;
-  while(o_current != NULL) {
-
-    if (o_current->type == OBJ_PIN || o_current->type == OBJ_NET ||
-        o_current->type == OBJ_BUS) {
-      
-      o_cue_erase_single(w_current, o_current);
-      
-      cl_current = o_current->conn_list;
-      while(cl_current != NULL) {
-        conn = (CONN *) cl_current->data;
-
-        if (conn->other_object) {
-          o_redraw_single(w_current, conn->other_object);
+  switch (object->type) {
+      case OBJ_PIN:
+      case OBJ_NET:
+      case OBJ_BUS:
+        o_cue_undraw_lowlevel (w_current, object);
+        break;
+      case OBJ_COMPLEX:
+      case OBJ_PLACEHOLDER:
+      {
+        OBJECT *o_current;
+        for (o_current = object->complex->prim_objs;
+             o_current != NULL;
+             o_current = o_current->next) {
+          if (o_current->type == OBJ_PIN ||
+              o_current->type == OBJ_NET ||
+              o_current->type == OBJ_BUS) {
+            o_cue_undraw_lowlevel (w_current, o_current);
+          }
         }
-
-        cl_current = g_list_next(cl_current);
       }
-    }
-    o_current = o_current->next;
   }
-
+  
   o_redraw_single(w_current, object);
 }
 
diff --git a/gschem/src/o_delete.c b/gschem/src/o_delete.c
index 9d9b2dd..3103ef3 100644
--- a/gschem/src/o_delete.c
+++ b/gschem/src/o_delete.c
@@ -121,7 +121,7 @@ void o_delete_complex(GSCHEM_TOPLEVEL *w_current, OBJECT 
*obj)
   TOPLEVEL *toplevel = w_current->toplevel;
   GList *other_objects = NULL;
 
-  o_cue_undraw_complex(w_current, obj);
+  o_cue_undraw(w_current, obj);
   o_erase_single(w_current, obj);
 
   other_objects = s_conn_return_complex_others(other_objects, obj);
-- 
1.5.6




_______________________________________________
geda-dev mailing list
[email protected]
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev

Reply via email to