diff --git a/src/zmapWindow/zmapWindowItemFactory.c b/src/zmapWindow/zmapWindowItemFactory.c index 4b6e5423f69043253bafb00844a7c1f68020a7c6..42c7b08ff5abb5a8def2c7e923ddc942dcca9220 100755 --- a/src/zmapWindow/zmapWindowItemFactory.c +++ b/src/zmapWindow/zmapWindowItemFactory.c @@ -28,9 +28,9 @@ * * Exported functions: See zmapWindowItemFactory.h * HISTORY: - * Last edited: Oct 7 11:58 2008 (rds) + * Last edited: Oct 28 13:01 2008 (edgrif) * Created: Mon Sep 25 09:09:52 2006 (rds) - * CVS info: $Id: zmapWindowItemFactory.c,v 1.53 2008-10-07 12:28:07 rds Exp $ + * CVS info: $Id: zmapWindowItemFactory.c,v 1.54 2008-10-29 16:13:59 edgrif Exp $ *------------------------------------------------------------------- */ @@ -120,6 +120,10 @@ static FooCanvasItem *drawSimpleFeature(RunSet run_data, ZMapFeature feature, double feature_offset, double x1, double y1, double x2, double y2, ZMapFeatureTypeStyle style); +static FooCanvasItem *drawGlyphFeature(RunSet run_data, ZMapFeature feature, + double feature_offset, + double x1, double y1, double x2, double y2, + ZMapFeatureTypeStyle style); static FooCanvasItem *drawAlignFeature(RunSet run_data, ZMapFeature feature, double feature_offset, double x1, double y1, double x2, double y2, @@ -186,10 +190,10 @@ const static ZMapWindowFToIFactoryMethodsStruct factory_methods_G[] = { {ZMAPSTYLE_MODE_TRANSCRIPT, drawTranscriptFeature}, {ZMAPSTYLE_MODE_RAW_SEQUENCE, drawSeqFeature}, {ZMAPSTYLE_MODE_PEP_SEQUENCE, drawPepFeature}, - {ZMAPSTYLE_MODE_TEXT, drawSimpleAsTextFeature}, - {ZMAPSTYLE_MODE_GRAPH, drawSimpleGraphFeature}, - {ZMAPSTYLE_MODE_GLYPH, drawSimpleFeature}, - {-1, NULL} + {ZMAPSTYLE_MODE_TEXT, drawSimpleAsTextFeature}, + {ZMAPSTYLE_MODE_GRAPH, drawSimpleGraphFeature}, + {ZMAPSTYLE_MODE_GLYPH, drawGlyphFeature}, + {-1, NULL} }; const static ZMapWindowFToIFactoryMethodsStruct factory_text_methods_G[] = { @@ -199,10 +203,10 @@ const static ZMapWindowFToIFactoryMethodsStruct factory_text_methods_G[] = { {ZMAPSTYLE_MODE_TRANSCRIPT, drawTranscriptFeature}, {ZMAPSTYLE_MODE_RAW_SEQUENCE, drawSeqFeature}, {ZMAPSTYLE_MODE_PEP_SEQUENCE, drawPepFeature}, - {ZMAPSTYLE_MODE_TEXT, drawSimpleAsTextFeature}, - {ZMAPSTYLE_MODE_GRAPH, drawSimpleGraphFeature}, - {ZMAPSTYLE_MODE_GLYPH, drawSimpleFeature}, - {-1, NULL} + {ZMAPSTYLE_MODE_TEXT, drawSimpleAsTextFeature}, + {ZMAPSTYLE_MODE_GRAPH, drawSimpleGraphFeature}, + {ZMAPSTYLE_MODE_GLYPH, drawGlyphFeature}, + {-1, NULL} }; const static ZMapWindowFToIFactoryMethodsStruct factory_graph_methods_G[] = { @@ -212,10 +216,10 @@ const static ZMapWindowFToIFactoryMethodsStruct factory_graph_methods_G[] = { {ZMAPSTYLE_MODE_TRANSCRIPT, drawSimpleGraphFeature}, {ZMAPSTYLE_MODE_RAW_SEQUENCE, drawSimpleGraphFeature}, {ZMAPSTYLE_MODE_PEP_SEQUENCE, drawSimpleGraphFeature}, - {ZMAPSTYLE_MODE_TEXT, drawSimpleAsTextFeature}, - {ZMAPSTYLE_MODE_GRAPH, drawSimpleGraphFeature}, - {ZMAPSTYLE_MODE_GLYPH, drawSimpleFeature}, - {-1, NULL} + {ZMAPSTYLE_MODE_TEXT, drawSimpleAsTextFeature}, + {ZMAPSTYLE_MODE_GRAPH, drawSimpleGraphFeature}, + {ZMAPSTYLE_MODE_GLYPH, drawGlyphFeature}, + {-1, NULL} }; const static ZMapWindowFToIFactoryMethodsStruct factory_basic_methods_G[] = { @@ -225,10 +229,10 @@ const static ZMapWindowFToIFactoryMethodsStruct factory_basic_methods_G[] = { {ZMAPSTYLE_MODE_TRANSCRIPT, drawSimpleFeature}, {ZMAPSTYLE_MODE_RAW_SEQUENCE, drawSimpleFeature}, {ZMAPSTYLE_MODE_PEP_SEQUENCE, drawSimpleFeature}, - {ZMAPSTYLE_MODE_TEXT, drawSimpleAsTextFeature}, - {ZMAPSTYLE_MODE_GRAPH, drawSimpleGraphFeature}, - {ZMAPSTYLE_MODE_GLYPH, drawSimpleFeature}, - {-1, NULL} + {ZMAPSTYLE_MODE_TEXT, drawSimpleAsTextFeature}, + {ZMAPSTYLE_MODE_GRAPH, drawSimpleGraphFeature}, + {ZMAPSTYLE_MODE_GLYPH, drawGlyphFeature}, + {-1, NULL} }; @@ -781,11 +785,50 @@ static FooCanvasItem *drawSimpleFeature(RunSet run_data, ZMapFeature feature, FooCanvasItem *feature_item ; GdkColor *outline = NULL, *foreground = NULL, *background = NULL ; guint line_width; + gboolean status ; line_width = factory->line_width; zmapWindowSeq2CanOffset(&y1, &y2, feature_offset) ; /* Make sure we cover the whole last base. */ + if(feature->strand == ZMAPSTRAND_REVERSE && + zMapStyleColourByStrand(style)) + status = zMapStyleGetColours(style, ZMAPSTYLE_COLOURTARGET_STRAND, ZMAPSTYLE_COLOURTYPE_NORMAL, + &background, &foreground, &outline) ; + else + status = zMapStyleGetColours(style, ZMAPSTYLE_COLOURTARGET_NORMAL, ZMAPSTYLE_COLOURTYPE_NORMAL, + &background, &foreground, &outline) ; + zMapAssert(status) ; + + feature_item = zMapDrawBox(parent, + x1, y1, x2, y2, + outline, background, line_width) ; + + callItemHandler(factory, feature_item, + ITEM_FEATURE_SIMPLE, + feature, NULL, y1, y2); + + + return feature_item ; +} + + +static FooCanvasItem *drawGlyphFeature(RunSet run_data, ZMapFeature feature, + double feature_offset, + double x1, double y1, double x2, double y2, + ZMapFeatureTypeStyle style) +{ + ZMapWindowFToIFactory factory = run_data->factory; + FooCanvasGroup *parent = run_data->container; + FooCanvasItem *feature_item ; + guint line_width; + + line_width = factory->line_width; + + zmapWindowSeq2CanOffset(&y1, &y2, feature_offset) ; /* Make sure we cover the whole last base. */ + + + /* There will be other alternatives to splice once we add them to the the canvas. */ if (feature->flags.has_boundary) { GdkColor *splice_background ; @@ -863,23 +906,6 @@ static FooCanvasItem *drawSimpleFeature(RunSet run_data, ZMapFeature feature, glyph_type, splice_background, width, 2) ; } - else - { - gboolean status ; - - if(feature->strand == ZMAPSTRAND_REVERSE && - zMapStyleColourByStrand(style)) - status = zMapStyleGetColours(style, ZMAPSTYLE_COLOURTARGET_STRAND, ZMAPSTYLE_COLOURTYPE_NORMAL, - &background, &foreground, &outline) ; - else - status = zMapStyleGetColours(style, ZMAPSTYLE_COLOURTARGET_NORMAL, ZMAPSTYLE_COLOURTYPE_NORMAL, - &background, &foreground, &outline) ; - zMapAssert(status) ; - - feature_item = zMapDrawBox(parent, - x1, y1, x2, y2, - outline, background, line_width) ; - } callItemHandler(factory, feature_item, ITEM_FEATURE_SIMPLE, @@ -889,6 +915,9 @@ static FooCanvasItem *drawSimpleFeature(RunSet run_data, ZMapFeature feature, return feature_item ; } + + + /* Reduce the number of variables in drawAlignFeature slightly */ typedef struct {