From e55d0bf18d8570b86a7a0390106f5aa92139d30c Mon Sep 17 00:00:00 2001
From: edgrif <edgrif>
Date: Thu, 16 Aug 2007 15:48:52 +0000
Subject: [PATCH] add a 'default's style + a current style to allowing default
 bumping at any time.

---
 src/include/ZMap/zmapStyle.h       |  8 ++-
 src/zmapFeature/zmapFeatureTypes.c | 78 +++++++++++++++++++-----------
 src/zmapFeature/zmapStyle_P.h      |  7 +--
 3 files changed, 59 insertions(+), 34 deletions(-)

diff --git a/src/include/ZMap/zmapStyle.h b/src/include/ZMap/zmapStyle.h
index 051f90561..1f0d8d0f4 100755
--- a/src/include/ZMap/zmapStyle.h
+++ b/src/include/ZMap/zmapStyle.h
@@ -26,9 +26,9 @@
  * Description: Style and Style set handling functions.
  *
  * HISTORY:
- * Last edited: Jun 19 13:52 2007 (edgrif)
+ * Last edited: Aug 15 17:59 2007 (edgrif)
  * Created: Mon Feb 26 09:28:26 2007 (edgrif)
- * CVS info:   $Id: zmapStyle.h,v 1.8 2007-06-21 12:26:45 edgrif Exp $
+ * CVS info:   $Id: zmapStyle.h,v 1.9 2007-08-16 15:48:52 edgrif Exp $
  *-------------------------------------------------------------------
  */
 #ifndef ZMAP_STYLE_H
@@ -289,9 +289,13 @@ GQuark zMapStyleGetID(ZMapFeatureTypeStyle style) ;
 void zMapFeatureTypeDestroy(ZMapFeatureTypeStyle type) ;
 ZMapFeatureTypeStyle zMapStyleGetPredefined(char *style_name) ;
 gboolean zMapFeatureTypeSetAugment(GData **current, GData **new) ;
+
+void zMapStyleInitOverlapMode(ZMapFeatureTypeStyle style, 
+			      ZMapStyleOverlapMode default_overlap_mode, ZMapStyleOverlapMode curr_overlap_mode) ;
 void zMapStyleSetBump(ZMapFeatureTypeStyle type, char *bump) ;
 ZMapStyleOverlapMode zMapStyleGetOverlapMode(ZMapFeatureTypeStyle style) ;
 void zMapStyleSetOverlapMode(ZMapFeatureTypeStyle style, ZMapStyleOverlapMode overlap_mode) ;
+ZMapStyleOverlapMode zMapStyleResetOverlapMode(ZMapFeatureTypeStyle style) ;
 
 ZMapFeatureTypeStyle zMapFeatureStyleCopy(ZMapFeatureTypeStyle style) ;
 gboolean zMapStyleMerge(ZMapFeatureTypeStyle curr_style, ZMapFeatureTypeStyle new_style) ;
diff --git a/src/zmapFeature/zmapFeatureTypes.c b/src/zmapFeature/zmapFeatureTypes.c
index 98fd239f3..2fe095aa6 100755
--- a/src/zmapFeature/zmapFeatureTypes.c
+++ b/src/zmapFeature/zmapFeatureTypes.c
@@ -27,9 +27,9 @@
  *              
  * Exported functions: See ZMap/zmapFeature.h
  * HISTORY:
- * Last edited: Jun 19 13:06 2007 (edgrif)
+ * Last edited: Aug 15 18:06 2007 (edgrif)
  * Created: Tue Dec 14 13:15:11 2004 (edgrif)
- * CVS info:   $Id: zmapFeatureTypes.c,v 1.53 2007-06-21 12:20:43 edgrif Exp $
+ * CVS info:   $Id: zmapFeatureTypes.c,v 1.54 2007-08-16 15:48:52 edgrif Exp $
  *-------------------------------------------------------------------
  */
 
@@ -282,22 +282,6 @@ ZMapFeatureTypeStyle zMapFeatureTypeCreate(char *name, char *description)
 
   new_type->min_mag = new_type->max_mag = 0.0 ;
 
-
-#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
-  /* By default we always parse homology gaps, important for stuff like passing this
-   * information to blixem. */
-  new_type->opts.parse_gaps = TRUE ;
-#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
-
-
-  /* I don't really want to do this but need to just to get stuff up and running.... */
-  new_type->overlap_mode = ZMAPOVERLAP_COMPLETE ;
-#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
-  new_type->fields_set.overlap_mode = TRUE ;
-#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
-
-  new_type->opts.hidden_always = new_type->opts.hidden_init = FALSE ;
-
   return new_type ;
 }
 
@@ -402,7 +386,8 @@ gboolean zMapStyleMerge(ZMapFeatureTypeStyle curr_style, ZMapFeatureTypeStyle ne
 
   if (new_style->fields_set.overlap_mode)
     {
-      curr_style->overlap_mode = new_style->overlap_mode ;
+      curr_style->default_overlap_mode = new_style->default_overlap_mode ;
+      curr_style->curr_overlap_mode = new_style->curr_overlap_mode ;
       curr_style->fields_set.overlap_mode = TRUE ;
     }
 
@@ -504,7 +489,11 @@ void zMapStylePrint(ZMapFeatureTypeStyle style, char *prefix)
     printf("\tMax mag: %g\n", style->max_mag) ;
 
   if (style->fields_set.overlap_mode)
-    printf("\tOverlap mode: %s\n", style_overlapmode_str_G[style->mode]) ;
+    {
+      printf("\tDefault overlap mode: %s\n", style_overlapmode_str_G[style->default_overlap_mode]) ;
+
+      printf("\tCurrent overlap mode: %s\n", style_overlapmode_str_G[style->curr_overlap_mode]) ;
+    }
 
   if (style->fields_set.bump_spacing)
     printf("\tBump width: %g\n", style->bump_spacing) ;
@@ -513,7 +502,7 @@ void zMapStylePrint(ZMapFeatureTypeStyle style, char *prefix)
     printf("\tWidth: %g\n", style->width) ;
 
   if (style->fields_set.score_mode)
-    printf("Score mode: %s\n", style_scoremode_str_G[style->mode]) ;
+    printf("Score mode: %s\n", style_scoremode_str_G[style->score_mode]) ;
 
   if (style->fields_set.min_score)
     printf("\tMin score: %g\n", style->min_score) ;
@@ -814,8 +803,6 @@ void zMapStyleSetBump(ZMapFeatureTypeStyle style, char *bump_str)
 {
   ZMapStyleOverlapMode bump = ZMAPOVERLAP_COMPLETE ;
 
-  zMapAssert(style) ;
-
   if (bump_str && *bump_str)
     {
       if (g_ascii_strcasecmp(bump_str, "complete") == 0)
@@ -836,21 +823,54 @@ void zMapStyleSetBump(ZMapFeatureTypeStyle style, char *bump_str)
 	bump = ZMAPOVERLAP_SIMPLE ;
     }
 
-  style->overlap_mode = bump ;
-  style->fields_set.overlap_mode = TRUE ;
+  zMapStyleSetOverlapMode(style, bump) ;
 
   return ;
 }
 
 
-
 void zMapStyleSetOverlapMode(ZMapFeatureTypeStyle style, ZMapStyleOverlapMode overlap_mode)
 {
-  zMapAssert(overlap_mode > ZMAPOVERLAP_START && overlap_mode < ZMAPOVERLAP_END) ;
+  zMapAssert(style && (overlap_mode > ZMAPOVERLAP_START && overlap_mode < ZMAPOVERLAP_END)) ;
+
+  if (!style->fields_set.overlap_mode)
+    {
+      style->fields_set.overlap_mode = TRUE ;
+      
+      style->default_overlap_mode = overlap_mode ;
+    }
+
+  style->curr_overlap_mode = overlap_mode ;
+
+  return ;
+}
+
+
+/* Reset overlap mode to default and returns the default mode. */
+ZMapStyleOverlapMode zMapStyleResetOverlapMode(ZMapFeatureTypeStyle style)
+{
+  zMapAssert(style && style->fields_set.overlap_mode) ;
+
+  style->curr_overlap_mode = style->default_overlap_mode ;
+
+  return style->curr_overlap_mode ;
+}
+
+
+/* Re/init overlap mode. */
+void zMapStyleInitOverlapMode(ZMapFeatureTypeStyle style,
+			      ZMapStyleOverlapMode default_overlap_mode, ZMapStyleOverlapMode curr_overlap_mode)
+{
+  zMapAssert(style
+	     && (default_overlap_mode > ZMAPOVERLAP_START && default_overlap_mode < ZMAPOVERLAP_END)
+	     && (curr_overlap_mode > ZMAPOVERLAP_START && curr_overlap_mode < ZMAPOVERLAP_END)) ;
 
-  style->overlap_mode = overlap_mode ;
   style->fields_set.overlap_mode = TRUE ;
 
+  style->default_overlap_mode = default_overlap_mode ;
+
+  style->curr_overlap_mode = curr_overlap_mode ;
+  
   return ;
 }
 
@@ -861,7 +881,7 @@ ZMapStyleOverlapMode zMapStyleGetOverlapMode(ZMapFeatureTypeStyle style)
 
   zMapAssert(style) ;
 
-  mode = style->overlap_mode ;
+  mode = style->curr_overlap_mode ;
 
   return mode;
 }
diff --git a/src/zmapFeature/zmapStyle_P.h b/src/zmapFeature/zmapStyle_P.h
index 2001e1dea..1a5e2101d 100755
--- a/src/zmapFeature/zmapStyle_P.h
+++ b/src/zmapFeature/zmapStyle_P.h
@@ -26,9 +26,9 @@
  * Description: Private header for style.
  *
  * HISTORY:
- * Last edited: Mar 21 13:32 2007 (edgrif)
+ * Last edited: Aug 15 11:24 2007 (edgrif)
  * Created: Mon Feb 26 09:13:30 2007 (edgrif)
- * CVS info:   $Id: zmapStyle_P.h,v 1.3 2007-03-28 16:34:38 edgrif Exp $
+ * CVS info:   $Id: zmapStyle_P.h,v 1.4 2007-08-16 15:48:52 edgrif Exp $
  *-------------------------------------------------------------------
  */
 #ifndef ZMAP_STYLE_P_H
@@ -199,7 +199,8 @@ typedef struct ZMapFeatureTypeStyleStruct_
   ZMapStyleFullColourStruct frame2_colours ;
 
 
-  ZMapStyleOverlapMode overlap_mode ;			    /* Controls how features are grouped
+  ZMapStyleOverlapMode default_overlap_mode ;		    /* Allows return to original bump mode. */
+  ZMapStyleOverlapMode curr_overlap_mode ;		    /* Controls how features are grouped
 							       into sub columns within a column. */
   double bump_spacing ;					    /* gap between bumped features. */
 
-- 
GitLab