X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSequenceRenderer.java;fp=src%2Fjalview%2Fappletgui%2FSequenceRenderer.java;h=e55f2a529b458f14e5ede202cc835dbcbeeaf35e;hb=72cf0003490f887c3bc8fe0dfea8ac9d48c53eed;hp=a382c604a4937f0d54a03395780236d15c6cb6d0;hpb=78747ed6d00faabd0dddb8562bdefaf31c4bea4f;p=jalview.git diff --git a/src/jalview/appletgui/SequenceRenderer.java b/src/jalview/appletgui/SequenceRenderer.java index a382c60..e55f2a5 100755 --- a/src/jalview/appletgui/SequenceRenderer.java +++ b/src/jalview/appletgui/SequenceRenderer.java @@ -22,7 +22,7 @@ package jalview.appletgui; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; -import jalview.renderer.ResidueShaderI; +import jalview.renderer.ResidueColourFinder; import jalview.renderer.seqfeatures.FeatureColourFinder; import java.awt.Color; @@ -40,19 +40,18 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer boolean renderGaps = true; - SequenceGroup currentSequenceGroup = null; - SequenceGroup[] allGroups = null; Color resBoxColour; Graphics graphics; - boolean forOverview = false; + ResidueColourFinder resColourFinder; public SequenceRenderer(AlignViewport av) { this.av = av; + resColourFinder = new ResidueColourFinder(); } /** @@ -69,25 +68,6 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer this.renderGaps = renderGaps; } - protected Color getResidueBoxColour(SequenceI seq, int i) - { - allGroups = av.getAlignment().findAllGroups(seq); - - if (inCurrentSequenceGroup(i)) - { - if (currentSequenceGroup.getDisplayBoxes()) - { - getBoxColour(currentSequenceGroup.getGroupColourScheme(), seq, i); - } - } - else if (av.getShowBoxes()) - { - getBoxColour(av.getResidueShading(), seq, i); - } - - return resBoxColour; - } - /** * Get the residue colour at the given sequence position - as determined by * the sequence group colour (if any), else the colour scheme, possibly @@ -104,31 +84,9 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer { // TODO replace 8 or so code duplications with calls to this method // (refactored as needed) - Color col = getResidueBoxColour(seq, position); - - if (finder != null) - { - col = finder.findFeatureColour(col, seq, position); - } - return col; - } - - void getBoxColour(ResidueShaderI shader, SequenceI seq, int i) - { - if (shader.getColourScheme() != null) - { - resBoxColour = shader.findColour(seq.getCharAt(i), i, seq); - } - else if (forOverview - && !jalview.util.Comparison.isGap(seq.getCharAt(i))) - { - resBoxColour = Color.lightGray; - } - else - { - resBoxColour = Color.white; - } - + return resColourFinder.getResidueColour(av.getShowBoxes(), + av.getResidueShading(), + allGroups, seq, position, finder); } public Color findSequenceColour(SequenceI seq, int i) @@ -165,23 +123,28 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer int curWidth = av.getCharWidth(), avCharWidth = av.getCharWidth(), avCharHeight = av.getCharHeight(); + Color resBoxColour = Color.white; Color tempColour = null; while (i <= end) { resBoxColour = Color.white; if (i < length) { - if (inCurrentSequenceGroup(i)) + SequenceGroup currentSequenceGroup = resColourFinder + .getCurrentSequenceGroup(allGroups, i); + if (currentSequenceGroup != null) { if (currentSequenceGroup.getDisplayBoxes()) { - getBoxColour(currentSequenceGroup.getGroupColourScheme(), seq, + resBoxColour = resColourFinder.getBoxColour( + currentSequenceGroup.getGroupColourScheme(), seq, i); } } else if (av.getShowBoxes()) { - getBoxColour(av.getResidueShading(), seq, i); + resBoxColour = resColourFinder + .getBoxColour(av.getResidueShading(), seq, i); } } @@ -245,7 +208,9 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer continue; } - if (inCurrentSequenceGroup(i)) + SequenceGroup currentSequenceGroup = resColourFinder + .getCurrentSequenceGroup(allGroups, i); + if (currentSequenceGroup != null) { if (!currentSequenceGroup.getDisplayText()) { @@ -254,7 +219,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer if (currentSequenceGroup.getColourText()) { - getBoxColour(currentSequenceGroup.getGroupColourScheme(), seq, i); + resBoxColour = resColourFinder.getBoxColour( + currentSequenceGroup.getGroupColourScheme(), seq, i); graphics.setColor(resBoxColour.darker()); } if (currentSequenceGroup.getShowNonconserved()) @@ -271,7 +237,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer if (av.getColourText()) { - getBoxColour(av.getResidueShading(), seq, i); + resBoxColour = resColourFinder + .getBoxColour(av.getResidueShading(), seq, i); if (av.getShowBoxes()) { graphics.setColor(resBoxColour.darker()); @@ -358,28 +325,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer return sequenceChar; } - boolean inCurrentSequenceGroup(int res) - { - if (allGroups == null) - { - return false; - } - - for (int i = 0; i < allGroups.length; i++) - { - if (allGroups[i].getStartRes() <= res - && allGroups[i].getEndRes() >= res) - { - currentSequenceGroup = allGroups[i]; - return true; - } - } - - return false; - } - - public void drawHighlightedText(SequenceI seq, int start, int end, int x1, - int y1) + public void drawHighlightedText(SequenceI seq, int start, int end, + int x1, int y1) { int avCharWidth = av.getCharWidth(), avCharHeight = av.getCharHeight(); int pady = avCharHeight / 5;