3 import jalview.datamodel.*;
\r
4 import jalview.schemes.*;
\r
5 import jalview.analysis.*;
\r
6 import jalview.util.*;
\r
10 public class BlockRenderer implements RendererI {
\r
11 protected Color color = Color.black;
\r
12 protected Color maroon = new Color(200,0,50);
\r
13 protected Color purple = new Color(255,100,255);
\r
15 public Color getResidueBoxColour(ColourSchemeI cs, SequenceI seq, int i) {
\r
16 Color c = cs.findColour(seq,seq.getSequence(i,i+1),i,null);
\r
20 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
23 int length = seq.getLength();
\r
25 Color currentColor = Color.white;
\r
26 Vector kmers = av.getKmers();
\r
28 g.setColor(Color.black);
\r
34 for (int ii = 0; ii < av.getAlignment().getHeight(); ii++) {
\r
35 if (av.getSelection().contains(av.getAlignment().getSequenceAt(ii))) {
\r
40 int blstart = start - 20;
\r
41 int blend = end + 20;
\r
47 if (blend > av.getAlignment().getWidth()) {
\r
48 blend = av.getAlignment().getWidth();
\r
51 Hashtable blocks = AAFrequency.findBlocks(av.getAlignment().getSequences(),
\r
54 av.getSelection().asVector());
\r
56 Hashtable hkmer = AlignmentUtil.findKmers(seq,blstart,blend,kmers);
\r
58 boolean inblock = false;
\r
66 // System.out.println("Rendering " + start + " " + end);
\r
68 while (i <= blend && i < length) {
\r
69 boolean foundblock = false;
\r
71 if (blocks.get(new Integer(i-blstart)) != null) {
\r
73 blen = ((Integer)blocks.get(new Integer(i-blstart))).intValue();
\r
77 block_end = i + blen-1;
\r
79 g.setColor(getColor(blen));
\r
80 g.fillRect(x1+(int)(width*(i-start)),y1,
\r
81 (int)width+1, height/2);
\r
84 boolean foundKmer = false;
\r
86 if (hkmer.get(new Integer(i-blstart)) != null) {
\r
89 klen = ((Integer)hkmer.get(new Integer(i-blstart))).intValue();
\r
91 // System.out.println("Got kmer " + i + " " + start + " kength " + klen);
\r
95 g.setColor(Color.lightGray);
\r
97 if ((int)width> 5) {
\r
98 g.fillRect(x1+(int)(width*(i-start)),y1+height/2,
\r
99 (int)(width*klen)+1, height/2);
\r
101 g.fillRect(x1+(int)(width*(i-start)),y1+height/2,
\r
102 (int)(width*klen)+1, height/2);
\r
109 g.setColor(Color.black);
\r
110 g.drawString(seq.getSequence().substring(i,i+1),x1+(int)(width*(i-start)),y1+height);
\r
116 public Color getColor(int blen) {
\r
122 }else if (blen > 10) {
\r
124 } else if (blen > 5) {
\r
126 } else if (blen > 2) {
\r
128 } else if (blen == 2) {
\r
132 bc = Color.lightGray;
\r