From: gmungoc Date: Wed, 22 Mar 2017 16:46:57 +0000 (+0000) Subject: Merge branch 'develop' into features/JAL-2446NCList X-Git-Tag: Release_2_10_3b1~338 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=2642dbd0c2c9515c66da193ebcebf72bc82a54d3;p=jalview.git Merge branch 'develop' into features/JAL-2446NCList Conflicts: src/jalview/gui/SeqCanvas.java src/jalview/renderer/seqfeatures/FeatureRenderer.java --- 2642dbd0c2c9515c66da193ebcebf72bc82a54d3 diff --cc src/jalview/gui/OverviewPanel.java index 67cdbc2,c530fdc..19158fd --- a/src/jalview/gui/OverviewPanel.java +++ b/src/jalview/gui/OverviewPanel.java @@@ -198,9 -201,11 +201,12 @@@ public class OverviewPanel extends JPan float sampleCol = alwidth / (float) od.getWidth(); float sampleRow = alheight / (float) od.getSequencesHeight(); ++ long start = System.currentTimeMillis(); buildImage(sampleRow, sampleCol); - if (av.isShowAnnotation()) + // check for conservation annotation to make sure overview works for DNA too + if (av.isShowAnnotation() + && (av.getAlignmentConservationAnnotation() != null)) { renderer.updateFromAlignViewport(av); for (int col = 0; col < od.getWidth() && !resizeAgain; col++) @@@ -214,6 -219,6 +220,8 @@@ } } ++ System.out.println("Overview took " ++ + (System.currentTimeMillis() - start) + "ms"); System.gc(); resizing = false; diff --cc src/jalview/renderer/seqfeatures/FeatureRenderer.java index 32a0cbb,72ac2c8..705ea12 --- a/src/jalview/renderer/seqfeatures/FeatureRenderer.java +++ b/src/jalview/renderer/seqfeatures/FeatureRenderer.java @@@ -30,8 -31,6 +31,7 @@@ import java.awt.Color import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; - import java.awt.image.BufferedImage; +import java.util.List; public class FeatureRenderer extends FeatureRendererModel { @@@ -324,13 -284,15 +285,14 @@@ transparency)); } - if (!offscreenRender) - { - spos = lastSeq.findPosition(start); - epos = lastSeq.findPosition(end); - } + int startPos = seq.findPosition(start); + int endPos = seq.findPosition(end); + - int sfSize = sequenceFeatures.length; + Color drawnColour = null; - sfSize = lastSequenceFeatures.length; + /* + * iterate over features in ordering of their rendering (last is on top) + */ for (int renderIndex = 0; renderIndex < renderOrder.length; renderIndex++) { String type = renderOrder[renderIndex]; @@@ -339,34 -301,21 +301,14 @@@ continue; } -- // loop through all features in sequence to find -- // current feature to render - // for (sfindex = 0; sfindex < sfSize; sfindex++) - // { - // final SequenceFeature sequenceFeature = lastSequenceFeatures[sfindex]; - int from = offscreenRender ? start : spos; - int to = offscreenRender ? start : epos; - List overlaps = seq.findFeatures(type, from, to); - for (int sfindex = 0; sfindex < sfSize; sfindex++) ++ List overlaps = seq.findFeatures(type, startPos, endPos); + for (SequenceFeature sequenceFeature : overlaps) { - if (!sequenceFeature.type.equals(type)) - { - continue; - } - - if (featureGroupNotShown(sequenceFeature)) - { - continue; - } - - final SequenceFeature sequenceFeature = sequenceFeatures[sfindex]; - if (!sequenceFeature.type.equals(type)) - { - continue; - } - /* - * check feature overlaps the visible part of the alignment, - * unless doing offscreenRender (to the Overview window or a - * structure viewer) which is not limited + * a feature type may be flagged as shown but the group + * an instance of it belongs to may be hidden */ - if (!offscreenRender - && (sequenceFeature.getBegin() > epos || sequenceFeature - .getEnd() < spos)) + if (featureGroupNotShown(sequenceFeature)) { continue; } @@@ -412,21 -350,30 +333,35 @@@ } else if (showFeature(sequenceFeature)) { - if (av_isShowSeqFeatureHeight ++ /* ++ * showing feature score by height of colour ++ * is not implemented as a selectable option ++ * + if (av.isShowSequenceFeaturesHeight() && !Float.isNaN(sequenceFeature.score)) { - renderScoreFeature(g, seq, + boolean drawn = renderScoreFeature(g, seq, seq.findIndex(sequenceFeature.begin) - 1, - seq.findIndex(sequenceFeature.end) - 1, - featureColour, start, end, y1, - normaliseScore(sequenceFeature)); + seq.findIndex(sequenceFeature.end) - 1, featureColour, + start, end, y1, normaliseScore(sequenceFeature), + colourOnly); + if (drawn) + { + drawnColour = featureColour; + } } else { - renderFeature(g, seq, seq.findIndex(sequenceFeature.begin) - 1, - seq.findIndex(sequenceFeature.end) - 1, - featureColour, start, end, y1); - } ++ */ + boolean drawn = renderFeature(g, seq, + seq.findIndex(sequenceFeature.begin) - 1, + seq.findIndex(sequenceFeature.end) - 1, featureColour, + start, end, y1, colourOnly); + if (drawn) + { + drawnColour = featureColour; + } - } ++ /*}*/ } } } diff --cc src/jalview/viewmodel/seqfeatures/FeatureRendererModel.java index 8468329,84c9477..68febb9 --- a/src/jalview/viewmodel/seqfeatures/FeatureRendererModel.java +++ b/src/jalview/viewmodel/seqfeatures/FeatureRendererModel.java @@@ -562,6 -564,6 +564,13 @@@ public abstract class FeatureRendererMo return fc.getColor(feature); } ++ /** ++ * Answers true unless the feature has a graduated colour scheme and the ++ * feature value lies outside the current threshold for display ++ * ++ * @param sequenceFeature ++ * @return ++ */ protected boolean showFeature(SequenceFeature sequenceFeature) { FeatureColourI fc = getFeatureStyle(sequenceFeature.type);