X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2FContactMapRenderer.java;h=edf3ca2100011415f6159f898623b959e41878d6;hb=0b5e12b6e86604263fe6b45814b50d7ccc60d1ee;hp=a8f6c1b0644fbf4d2c5a1c96d0a7e6675cb8747f;hpb=beb2fee66dde629e3bbb7febb38d0116e1a64df2;p=jalview.git diff --git a/src/jalview/renderer/ContactMapRenderer.java b/src/jalview/renderer/ContactMapRenderer.java index a8f6c1b..edf3ca2 100644 --- a/src/jalview/renderer/ContactMapRenderer.java +++ b/src/jalview/renderer/ContactMapRenderer.java @@ -49,6 +49,15 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI */ Color selMinColor, selMaxColor; + /** + * + * @param no_data - colour when no data available + * @param hidden - colour if this row is hidden + * @param maxColor - colour for maximum value of contact + * @param minColor - colour for minimum value of contact + * @param selMinColor - min colour if the contact has been selected + * @param selMaxColor - max colour if contact is selected + */ public Shading(Color no_data, Color hidden, Color maxColor, Color minColor, Color selMinColor, Color selMaxColor) { @@ -79,8 +88,8 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI { return new Shading(Color.pink, Color.red, - new Color(246, 252, 243), new Color(0, 60, 26), - new Color(26, 0, 60), new Color(243, 246, 252)); + new Color(247, 252, 245), new Color(0, 68, 28), + new Color(28, 0, 68), new Color(245,247,252)); } }; } @@ -102,22 +111,27 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI HiddenColumns hiddenColumns, ColumnSelection columnSelection, AlignmentAnnotation _aa, Annotation[] aa_annotations, int sRes, int eRes, float min, float max, int y) - { + { if (sRes > aa_annotations.length) { return; } eRes = Math.min(eRes, aa_annotations.length); - int x = 0, y2 = y; - - g.setColor(shade.no_data); - - g.drawLine(x, y2, (eRes - sRes) * charWidth, y2); + int x = 0, topY = y; + // uncomment below to render whole area of matrix as pink + // g.setColor(shade.no_data); + // g.fillRect(x, topY-_aa.height, (eRes - sRes) * charWidth, _aa.graphHeight); + + boolean showGroups = _aa.isShowGroupsForContactMatrix(); int column; int aaMax = aa_annotations.length - 1; ContactMatrixI cm = viewport.getContactMatrix(_aa); + if (cm==null) + { + return; + } while (x < eRes - sRes) { column = sRes + x; @@ -165,17 +179,17 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI final ContactGeometry cgeom = new ContactGeometry(contacts, _aa.graphHeight); - for (int ht = y2, eht = y2 - - _aa.graphHeight; ht >= eht; ht -= cgeom.pixels_step) + for (int ht = 0, botY = topY + - _aa.height; ht < _aa.graphHeight; ht += cgeom.pixels_step) { - ContactGeometry.contactInterval ci = cgeom.mapFor(y2 - ht, - y2 - ht + cgeom.pixels_step); + ContactGeometry.contactInterval ci = cgeom.mapFor(ht); // cstart = (int) Math.floor(((double) y2 - ht) * contacts_per_pixel); // cend = (int) Math.min(contact_height, // Math.ceil(cstart + contacts_per_pixel * pixels_step)); Color col; - boolean rowsel = false, containsHidden = false; + boolean rowsel = false; + boolean containsHidden = false; if (columnSelection != null) { rowsel = cgeom.intersects(ci, columnSelection, hiddenColumns, @@ -204,7 +218,7 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI { col = shade.hidden; } - if (gpcol != null && gpcol != Color.white) + if (showGroups && gpcol != null && gpcol != Color.white) { // todo - could overlay group as a transparent rectangle ? col = new Color( @@ -216,11 +230,11 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI g.setColor(col); if (cgeom.pixels_step > 1) { - g.fillRect(x * charWidth, ht, charWidth, 1 + cgeom.pixels_step); + g.fillRect(x * charWidth, botY+ht, charWidth, cgeom.pixels_step); } else { - g.drawLine(x * charWidth, ht, (x + 1) * charWidth, ht); + g.drawLine(x * charWidth, botY+ht, (x + 1) * charWidth, botY+ht); } } x++; @@ -247,7 +261,7 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI { ContactRange cr = cl.getRangeFor(i, j); // average for moment - probably more interested in maxIntProj though - return jalview.util.ColorUtils.getGraduatedColour((float) cr.getMean(), + return jalview.util.ColorUtils.getGraduatedColour((float) cr.getMin(), 0, shade.selMinColor, max, shade.selMaxColor); }