From 0bc5d04b67a63df706accb9b476d523063e06920 Mon Sep 17 00:00:00 2001 From: edgrif <edgrif> Date: Mon, 18 May 2009 14:55:05 +0000 Subject: [PATCH] add assembly path colours to style. --- src/include/ZMap/zmapStyle.h | 8 +- src/zmapFeature/zmapFeatureTypes.c | 10 ++- src/zmapFeature/zmapStyle.c | 131 ++++++++++++++++++++++++++++- src/zmapFeature/zmapStyleUtils.c | 13 ++- src/zmapFeature/zmapStyle_I.h | 22 ++++- 5 files changed, 172 insertions(+), 12 deletions(-) diff --git a/src/include/ZMap/zmapStyle.h b/src/include/ZMap/zmapStyle.h index 9c2403009..8b51f071e 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: May 15 11:29 2009 (edgrif) + * Last edited: May 18 15:17 2009 (edgrif) * Created: Mon Feb 26 09:28:26 2007 (edgrif) - * CVS info: $Id: zmapStyle.h,v 1.38 2009-05-15 15:28:06 edgrif Exp $ + * CVS info: $Id: zmapStyle.h,v 1.39 2009-05-18 14:55:05 edgrif Exp $ *------------------------------------------------------------------- */ #ifndef ZMAP_STYLE_H @@ -109,6 +109,9 @@ /* Text properties */ #define ZMAPSTYLE_PROPERTY_TEXT_FONT "text-font" +/* Assembly path properties */ +#define ZMAPSTYLE_PROPERTY_ASSEMBLY_PATH_NON_COLOURS "non-assembly-colours" + /* * The following are a series of enums that define various properties of a style. * NOTE that it is imperative that each enum type has as it's first member @@ -229,6 +232,7 @@ _(ZMAPSTYLE_COLOURTARGET_FRAME0, , "frame0", "Frame 1 colour ", "") \ _(ZMAPSTYLE_COLOURTARGET_FRAME1, , "frame1", "Frame 2 colour ", "") \ _(ZMAPSTYLE_COLOURTARGET_FRAME2, , "frame2", "Frame 3 colour ", "") \ _(ZMAPSTYLE_COLOURTARGET_CDS, , "cds", "Colour to apply to CDS ", "") \ +_(ZMAPSTYLE_COLOURTARGET_NON_ASSEMBLY_PATH, , "non-assembly_path", "Colour to non-path sections of assembly ", "") \ _(ZMAPSTYLE_COLOURTARGET_STRAND, , "strand", "Colour to apply to Strand ", "") ZMAP_DEFINE_ENUM(ZMapStyleColourTarget, ZMAP_STYLE_COLOUR_TARGET_LIST) ; diff --git a/src/zmapFeature/zmapFeatureTypes.c b/src/zmapFeature/zmapFeatureTypes.c index ede790a28..282d20bbe 100755 --- a/src/zmapFeature/zmapFeatureTypes.c +++ b/src/zmapFeature/zmapFeatureTypes.c @@ -27,9 +27,9 @@ * * Exported functions: See ZMap/zmapFeature.h * HISTORY: - * Last edited: Apr 28 14:24 2009 (edgrif) + * Last edited: May 18 13:11 2009 (edgrif) * Created: Tue Dec 14 13:15:11 2004 (edgrif) - * CVS info: $Id: zmapFeatureTypes.c,v 1.80 2009-04-28 14:29:49 edgrif Exp $ + * CVS info: $Id: zmapFeatureTypes.c,v 1.81 2009-05-18 14:55:05 edgrif Exp $ *------------------------------------------------------------------- */ @@ -1206,10 +1206,11 @@ GData *zMapStyleGetAllPredefined(void) curr = zMapStyleCreate(ZMAP_FIXED_STYLE_ASSEMBLY_PATH_NAME, ZMAP_FIXED_STYLE_ASSEMBLY_PATH_TEXT) ; { - char *colours = "normal fill blue ; normal draw black ; selected fill red ; selected draw black" ; + char *colours = "normal fill blue ; normal border black ; selected fill red ; selected border black" ; + char *non_path_colours = "normal fill yellow ; normal border black ; selected fill red ; selected border black" ; g_object_set(G_OBJECT(curr), - ZMAPSTYLE_PROPERTY_MODE, ZMAPSTYLE_MODE_BASIC, + ZMAPSTYLE_PROPERTY_MODE, ZMAPSTYLE_MODE_ASSEMBLY_PATH, ZMAPSTYLE_PROPERTY_DISPLAYABLE, TRUE, ZMAPSTYLE_PROPERTY_DISPLAY_MODE, ZMAPSTYLE_COLDISPLAY_SHOW, ZMAPSTYLE_PROPERTY_WIDTH, 10.0, @@ -1217,6 +1218,7 @@ GData *zMapStyleGetAllPredefined(void) ZMAPSTYLE_PROPERTY_DEFAULT_BUMP_MODE, ZMAPBUMP_ALTERNATING, ZMAPSTYLE_PROPERTY_BUMP_FIXED, TRUE, ZMAPSTYLE_PROPERTY_COLOURS, colours, + ZMAPSTYLE_PROPERTY_ASSEMBLY_PATH_NON_COLOURS, non_path_colours, NULL); } g_datalist_id_set_data(&style_list, curr->unique_id, curr); diff --git a/src/zmapFeature/zmapStyle.c b/src/zmapFeature/zmapStyle.c index 41532bbba..87df5a357 100755 --- a/src/zmapFeature/zmapStyle.c +++ b/src/zmapFeature/zmapStyle.c @@ -28,9 +28,9 @@ * * Exported functions: See ZMap/zmapStyle.h * HISTORY: - * Last edited: May 8 14:59 2009 (rds) + * Last edited: May 18 15:17 2009 (edgrif) * Created: Mon Feb 26 09:12:18 2007 (edgrif) - * CVS info: $Id: zmapStyle.c,v 1.32 2009-05-08 14:21:15 rds Exp $ + * CVS info: $Id: zmapStyle.c,v 1.33 2009-05-18 14:55:05 edgrif Exp $ *------------------------------------------------------------------- */ @@ -39,6 +39,20 @@ #include <zmapStyle_P.h> +/* + * PLEASE READ THIS...... + * + * The g_object/paramspec stuff all needs redoing so that it's table driven + * otherwise we will all go mad.....it is way too error prone...... + * + * but it needs to be done carefully, we need the "set" flags to support + * inheritance....and they g_object copy/set/get code in glib all expects + * paramspecs etc so it's not straight forward... + * + */ + + + enum { @@ -107,6 +121,9 @@ enum STYLE_PROP_ALIGNMENT_NONCOLINEAR_COLOURS, STYLE_PROP_TRANSCRIPT_CDS_COLOURS, + + STYLE_PROP_ASSEMBLY_PATH_NON_COLOURS, + STYLE_PROP_TEXT_FONT, }; @@ -645,6 +662,12 @@ gboolean zMapStyleIsPropertySet(ZMapFeatureTypeStyle style, char *property_name, break; } + case STYLE_PROP_ASSEMBLY_PATH_NON_COLOURS: + { + is_set = isColourSet(style, pspec->param_id, property_subpart) ; + + break; + } default: { G_OBJECT_WARN_INVALID_PROPERTY_ID(style, pspec->param_id, pspec); @@ -780,6 +803,7 @@ gboolean zMapStyleIsTrueFeature(ZMapFeatureTypeStyle style) case ZMAPSTYLE_MODE_ALIGNMENT: case ZMAPSTYLE_MODE_RAW_SEQUENCE: case ZMAPSTYLE_MODE_PEP_SEQUENCE: + case ZMAPSTYLE_MODE_ASSEMBLY_PATH: { valid = TRUE ; break ; @@ -845,6 +869,7 @@ gboolean zMapStyleIsDrawable(ZMapFeatureTypeStyle style, GError **error) case ZMAPSTYLE_MODE_BASIC: case ZMAPSTYLE_MODE_TRANSCRIPT: case ZMAPSTYLE_MODE_ALIGNMENT: + case ZMAPSTYLE_MODE_ASSEMBLY_PATH: case ZMAPSTYLE_MODE_RAW_SEQUENCE: case ZMAPSTYLE_MODE_PEP_SEQUENCE: { @@ -902,6 +927,7 @@ gboolean zMapStyleIsDrawable(ZMapFeatureTypeStyle style, GError **error) case ZMAPSTYLE_MODE_BASIC: case ZMAPSTYLE_MODE_TRANSCRIPT: case ZMAPSTYLE_MODE_ALIGNMENT: + case ZMAPSTYLE_MODE_ASSEMBLY_PATH: { if (!(style->colours.normal.fields_set.fill) && !(style->colours.normal.fields_set.border)) { @@ -1049,6 +1075,7 @@ gboolean zMapStyleMakeDrawable(ZMapFeatureTypeStyle style) switch (style->mode) { + case ZMAPSTYLE_MODE_ASSEMBLY_PATH: case ZMAPSTYLE_MODE_PEP_SEQUENCE: case ZMAPSTYLE_MODE_RAW_SEQUENCE: case ZMAPSTYLE_MODE_TEXT: @@ -1203,6 +1230,9 @@ gboolean zMapStyleSetColours(ZMapFeatureTypeStyle style, ZMapStyleColourTarget t case ZMAPSTYLE_COLOURTARGET_CDS: full_colour = &(style->mode_data.transcript.CDS_colours) ; break ; + case ZMAPSTYLE_COLOURTARGET_NON_ASSEMBLY_PATH: + full_colour = &(style->mode_data.assembly_path.non_path_colours) ; + break ; case ZMAPSTYLE_COLOURTARGET_STRAND: full_colour = &(style->strand_rev_colours); break; @@ -1265,6 +1295,9 @@ gboolean zMapStyleGetColours(ZMapFeatureTypeStyle style, ZMapStyleColourTarget t case ZMAPSTYLE_COLOURTARGET_CDS: full_colour = &(style->mode_data.transcript.CDS_colours) ; break ; + case ZMAPSTYLE_COLOURTARGET_NON_ASSEMBLY_PATH: + full_colour = &(style->mode_data.assembly_path.non_path_colours) ; + break ; case ZMAPSTYLE_COLOURTARGET_STRAND: full_colour = &(style->strand_rev_colours) ; break ; @@ -1997,6 +2030,10 @@ static void set_implied_mode(ZMapFeatureTypeStyle style, guint param_id) if(style->implied_mode == ZMAPSTYLE_MODE_INVALID) style->implied_mode = ZMAPSTYLE_MODE_TRANSCRIPT; break; + case STYLE_PROP_ASSEMBLY_PATH_NON_COLOURS: + if(style->implied_mode == ZMAPSTYLE_MODE_INVALID) + style->implied_mode = ZMAPSTYLE_MODE_ASSEMBLY_PATH; + break; default: break; } @@ -2371,6 +2408,13 @@ static void zmap_feature_type_style_class_init(ZMapFeatureTypeStyleClass style_c "Colour used to CDS section of a transcript.", "", ZMAP_PARAM_STATIC_RW)); + /* Assembly path colours. */ + g_object_class_install_property(gobject_class, + STYLE_PROP_ASSEMBLY_PATH_NON_COLOURS, + g_param_spec_string(ZMAPSTYLE_PROPERTY_ASSEMBLY_PATH_NON_COLOURS, "non-path colours", + "Colour used for unused part of an assembly path sequence.", + "", ZMAP_PARAM_STATIC_RW)); + /* Text Font. */ g_object_class_install_property(gobject_class, STYLE_PROP_TEXT_FONT, @@ -2934,6 +2978,38 @@ static void zmap_feature_type_style_set_property(GObject *gobject, } /* case STYLE_PROP_ALIGNMENT_PARSE_GAPS..STYLE_PROP_ALIGNMENT_NONCOLINEAR_COLOURS */ + case STYLE_PROP_ASSEMBLY_PATH_NON_COLOURS: + { + /* Handle all assembly path specific options. */ + + if (style->implied_mode != ZMAPSTYLE_MODE_ASSEMBLY_PATH) + { + if (!copy_style) + { + badPropertyForMode(style, ZMAPSTYLE_MODE_ASSEMBLY_PATH, "set", pspec) ; + result = FALSE ; + } + } + else + { + switch(param_id) + { + case STYLE_PROP_ASSEMBLY_PATH_NON_COLOURS: + result = parseColours(style, copy_style, param_id, (GValue *)value) ; + + break ; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, param_id, pspec); + result = FALSE ; + + break; + } + } + + break; + } + case STYLE_PROP_TRANSCRIPT_CDS_COLOURS: { /* Handle all transcript specific options. */ @@ -3633,6 +3709,52 @@ static void zmap_feature_type_style_get_property(GObject *gobject, } break; } + + /* assembly path mode_data access */ + case STYLE_PROP_ASSEMBLY_PATH_NON_COLOURS: + { + /* Handle all assembly path specific options. */ + + if (style->implied_mode != ZMAPSTYLE_MODE_ASSEMBLY_PATH) + { + if (!copy) + { + badPropertyForMode(style, ZMAPSTYLE_MODE_ASSEMBLY_PATH, "get", pspec) ; + result = FALSE ; + } + } + else + { + /* We allocate memory here to hold the colour string, it's g_object_get caller's + * responsibility to g_free the string... */ + ZMapStyleFullColour this_colour = NULL ; + GString *colour_string = NULL ; + + colour_string = g_string_sized_new(500) ; + + switch(param_id) + { + case STYLE_PROP_ASSEMBLY_PATH_NON_COLOURS: + this_colour = &(style->mode_data.assembly_path.non_path_colours) ; + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, param_id, pspec); + break; + } + + formatColours(colour_string, "normal", &(this_colour->normal)) ; + formatColours(colour_string, "selected", &(this_colour->selected)) ; + + if (colour_string->len) + g_value_set_string(value, g_string_free(colour_string, FALSE)) ; + else + { + g_string_free(colour_string, TRUE) ; + result = FALSE ; + } + } + break; + } case STYLE_PROP_TEXT_FONT: { /* Handle all text specific options. */ @@ -3810,6 +3932,11 @@ static gboolean parseColours(ZMapFeatureTypeStyle style, ZMapFeatureTypeStyle co if (copy_style) copy_full_colour = &(copy_style->mode_data.transcript.CDS_colours) ; break; + case STYLE_PROP_ASSEMBLY_PATH_NON_COLOURS: + full_colour = &(style->mode_data.assembly_path.non_path_colours) ; + if (copy_style) + copy_full_colour = &(copy_style->mode_data.assembly_path.non_path_colours) ; + break; default: zMapAssertNotReached() ; break; diff --git a/src/zmapFeature/zmapStyleUtils.c b/src/zmapFeature/zmapStyleUtils.c index cfb42c111..16d94e18d 100755 --- a/src/zmapFeature/zmapStyleUtils.c +++ b/src/zmapFeature/zmapStyleUtils.c @@ -28,9 +28,9 @@ * Exported functions: See ZMap/zmapStyle.h * * HISTORY: - * Last edited: Apr 27 14:10 2009 (edgrif) + * Last edited: May 18 14:53 2009 (edgrif) * Created: Thu Oct 30 10:24:35 2008 (edgrif) - * CVS info: $Id: zmapStyleUtils.c,v 1.4 2009-04-28 14:29:49 edgrif Exp $ + * CVS info: $Id: zmapStyleUtils.c,v 1.5 2009-05-18 14:55:05 edgrif Exp $ *------------------------------------------------------------------- */ @@ -491,6 +491,15 @@ void zMapStylePrint(ZMapIOOut dest, ZMapFeatureTypeStyle style, char *prefix, gb indent = "\t\t" ; PRINTFULLCOLOUR(dest, mode_data.transcript.CDS_colours, "CDS") ; + break ; + } + case ZMAPSTYLE_MODE_ASSEMBLY_PATH: + { + zMapOutWriteFormat(dest, "%sAssembly_path Mode -\n", indent) ; + + indent = "\t\t" ; + PRINTFULLCOLOUR(dest, mode_data.assembly_path.non_path_colours, "Non-assembly") ; + break ; } default: diff --git a/src/zmapFeature/zmapStyle_I.h b/src/zmapFeature/zmapStyle_I.h index f44e40a88..f95d9f0a7 100755 --- a/src/zmapFeature/zmapStyle_I.h +++ b/src/zmapFeature/zmapStyle_I.h @@ -26,9 +26,9 @@ * Description: Private header for style. * * HISTORY: - * Last edited: Apr 27 14:30 2009 (edgrif) + * Last edited: May 18 14:48 2009 (edgrif) * Created: Mon Feb 26 09:13:30 2007 (edgrif) - * CVS info: $Id: zmapStyle_I.h,v 1.10 2009-04-28 14:29:49 edgrif Exp $ + * CVS info: $Id: zmapStyle_I.h,v 1.11 2009-05-18 14:55:05 edgrif Exp $ *------------------------------------------------------------------- */ @@ -253,6 +253,23 @@ typedef struct } ZMapStyleTranscriptStruct, *ZMapStyleTranscript ; +/*! @struct ZMapStyleAssemblyPath zmapStyle_P.h + * @brief AssemblyPath feature + * + * Draws an assembly path as a series of boxes placed alternately to form a tiling path. */ +typedef struct +{ + struct + { + unsigned int unused : 1 ; + } fields_set ; /*!< Fields set. */ + + + ZMapStyleFullColourStruct non_path_colours ; /*!< Colour for non-assembly part of feature. */ + +} ZMapStyleAssemblyPathStruct, *ZMapStyleAssemblyPath ; + + /* THIS STRUCT NEEDS A MAGIC PTR, ONCE IT HAS ONE THEN ADD A TEST TO zmapStyleIsValid() FOR IT.... */ /*! @struct ZMapFeatureTypeStyle zmapStyle_P.h @@ -414,6 +431,7 @@ typedef struct _zmapFeatureTypeStyleStruct ZMapStyleSequenceStruct sequence ; ZMapStyleTextStruct text ; ZMapStyleTranscriptStruct transcript ; + ZMapStyleAssemblyPathStruct assembly_path ; ZMapStyleAlignmentStruct alignment ; ZMapStyleGraphStruct graph ; ZMapStyleGlyphStruct glyph ; -- GitLab