From a50364b26e0ab302562f6c99dcf29ccbe54aa67d Mon Sep 17 00:00:00 2001 From: James Procter Date: Tue, 18 Jul 2023 15:44:07 +0100 Subject: [PATCH] JAL-3858 flip diagonal so matrix visualisation is top left to bottom right --- src/jalview/gui/AnnotationPanel.java | 6 +++--- src/jalview/renderer/ContactMapRenderer.java | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index 8e04048..cf37e9e 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -1078,12 +1078,12 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, ContactGeometry lastXcgeom = new ContactGeometry(forFromX, cma.graphHeight); ContactGeometry.contactInterval lastXci = lastXcgeom - .mapFor(rowIndex[1], rowIndex[1] - deltaY); + .mapFor(rowIndex[1], rowIndex[1] + deltaY); ContactGeometry cXcgeom = new ContactGeometry(forToX, cma.graphHeight); ContactGeometry.contactInterval cXci = cXcgeom.mapFor(rowIndex[1], - rowIndex[1] - deltaY); + rowIndex[1] + deltaY); // mark rectangular region formed by drag jalview.bin.Console.trace("Matrix Selection from last(" + fromXc @@ -1247,7 +1247,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, { row = i; res[0] = row; - res[1] = height - yPos; + res[1] = yPos-lheight; break; } } diff --git a/src/jalview/renderer/ContactMapRenderer.java b/src/jalview/renderer/ContactMapRenderer.java index 8f38d02..0471145 100644 --- a/src/jalview/renderer/ContactMapRenderer.java +++ b/src/jalview/renderer/ContactMapRenderer.java @@ -109,11 +109,12 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI } eRes = Math.min(eRes, aa_annotations.length); - int x = 0, y2 = y; + int x = 0, topY = y; - g.setColor(shade.no_data); - - g.drawLine(x, y2, (eRes - sRes) * charWidth, y2); + // 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; @@ -165,11 +166,11 @@ 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, + ht + cgeom.pixels_step); // cstart = (int) Math.floor(((double) y2 - ht) * contacts_per_pixel); // cend = (int) Math.min(contact_height, // Math.ceil(cstart + contacts_per_pixel * pixels_step)); @@ -216,11 +217,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, 1 + 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++; -- 1.7.10.2