-package jalview.gui;\r
-\r
-import jalview.datamodel.*;\r
-import jalview.schemes.*;\r
-import jalview.util.*;\r
-\r
-import java.awt.*;\r
-import java.awt.geom.*;\r
-import java.util.*;\r
-\r
-public class GraphRenderer implements RendererI {\r
- protected Color color = Color.black;\r
- protected Color maroon = new Color(200,0,50);\r
-\r
- public Color getResidueBoxColour(ColourSchemeI cs, SequenceI seq, int i) {\r
- Color c = cs.findColour(seq,seq.getSequence(i,i+1),i,null);\r
- return c;\r
- }\r
-\r
- public void drawSequence(Graphics g,ColourSchemeI cs,SequenceI seq,int start, int end, int x1, int y1, double width, int height,boolean showScores, boolean displayBoxes, boolean displayText,Vector pid, int seqnum,AlignViewport av) {\r
-\r
- int i = start;\r
- int length = seq.getLength();\r
-\r
- Color currentColor = Color.white;\r
-\r
- g.setColor(Color.black);\r
-\r
- int prev = -1;\r
-\r
- while (i <= end && i < length) {\r
- char c = seq.getCharAt(i);\r
-\r
- if (c != '-') {\r
- Vector values = (Vector)pid.elementAt(i-start);\r
- int val = ((Integer)values.elementAt(seqnum)).intValue();\r
-\r
- int frac = (int)(100*val/(av.getPIDWindow()+1));\r
-\r
-// if (frac > 95) {\r
- // g.setColor(maroon);\r
- // } else if (frac > 90) {\r
-// g.setColor(Color.red);\r
-// } else if (frac > 80) {\r
-// g.setColor(Color.orange);\r
-// } else if (frac > 70) {\r
-// g.setColor(Color.pink);\r
-// } else if (frac > 50) {\r
-// g.setColor(Color.yellow);\r
-// } else if (frac > 30) {\r
-// g.setColor(Color.lightGray);\r
-// }\r
-\r
- int baseline = av.getPIDBaseline();\r
-\r
- frac -= baseline;\r
-\r
- if (frac < 0) {\r
- frac = 0;\r
- }\r
- if (baseline == 100) {\r
- baseline = 99;\r
- }\r
-\r
- Graphics2D g2d = (Graphics2D)g;\r
-\r
- g2d.setColor(new Color(255*frac/(100-baseline),50*frac/(100-baseline),50*frac/(100-baseline)));\r
-\r
- //g.setColor(new Color(255*frac/(100-baseline),50*frac/(100-baseline),255-50*frac/(100-baseline)));\r
- //g.fillRect(x1+(int)(width*(i-start)),y1+height - (int)(frac*height/(100-baseline)),\r
- //width, (int)(frac*height/(100-baseline)));\r
-\r
- int[] xpoints = new int[4];\r
- int[] ypoints = new int[4];\r
-\r
- if (prev == -1) {\r
- prev = y1 + height - (int)(frac*height/(100-baseline));\r
- }\r
-\r
- // 1----2\r
- // | |\r
- // 4----3\r
-\r
- xpoints[0] = (x1+ (int)(width*(i-start)));\r
- ypoints[0] = prev;\r
-\r
- xpoints[1] = (x1 + (int)(width*(i-start+1)));\r
- ypoints[1] = y1 + height - (int)(frac*height/(100-baseline));\r
-\r
- xpoints[3] = (x1 + (int)(width*(i-start)));;\r
- ypoints[3] = y1 + height;\r
-\r
- xpoints[2] = (x1 + (int)(width*(i-start+1)));\r
- ypoints[2] = y1 + height;\r
-\r
- Polygon poly = new Polygon();\r
-\r
- poly.xpoints = xpoints;\r
- poly.ypoints = ypoints;\r
- poly.npoints = 4;\r
-\r
- g2d.fill(poly);\r
-\r
- if (width > 5) {\r
- g.setColor(Color.black);\r
- g.drawString(seq.getSequence().substring(i,i+1),x1+(int)(width*(i-start)),y1+height);\r
- } else {\r
- g.setColor(Color.black);\r
-\r
- if (prev != -1) {\r
-\r
- g.drawLine(x1+(int)(width*(i-start)-width/2), prev,\r
- x1+(int)(width*(i-start+1)-width/2),y1+height - (int)(frac*height/(100-baseline)));\r
- } else {\r
- g.drawLine(x1+(int)(width*(i-start)), y1+height - (int)(frac*height/(100-baseline)),\r
- x1+(int)(width*(i-start+1)),y1+height - (int)(frac*height/(100-baseline)));\r
- }\r
-\r
- }\r
- prev = ypoints[1];\r
- } else {\r
- prev = -1;\r
- }\r
- i++;\r
- }\r
- }\r
-\r
-}\r