package org.broad.igv.feature.basepair;
import org.apache.log4j.Logger;
import org.broad.igv.feature.genome.*;
import org.broad.igv.renderer.*;
import org.broad.igv.track.AbstractTrack;
import org.broad.igv.track.RenderContext;
import org.broad.igv.ui.panel.ReferenceFrame;
import org.broad.igv.util.ResourceLocator;
import java.awt.*;
/**
* Show base-pairing arcs
*
* @author sbusan
*/
public class BasePairTrack extends AbstractTrack {
private static Logger log = Logger.getLogger(BasePairTrack.class);
private BasePairRenderer basePairRenderer = new BasePairRenderer();
private BasePairData basePairData;
Genome genome;
public BasePairTrack(ResourceLocator locator, String id, String name, Genome genome) {
super(locator, id, name);
this.genome = genome;
}
@Override
public boolean isReadyToPaint(ReferenceFrame frame) {
return basePairData != null;
}
@Override
public void load(ReferenceFrame frame) {
basePairData = BasePairFileParser.loadData(this.getResourceLocator(), genome);
}
public void render(RenderContext context, Rectangle rect) {
basePairRenderer.draw(basePairData, context, rect);
}
public void checkHeight(RenderContext context, Rectangle rect) {
java.util.List<BasePairFeature> featureList = basePairData.getFeatures(context.getChr());
if (featureList != null) {
int maxL = 0;
for (BasePairFeature feature : featureList) {
//if(feature.startLeft > context.getEndLocation()) break;
//else if(feature.endRight < context.getOrigin()) continue;
maxL = Math.max(maxL, feature.getEndRight() - feature.getStartLeft());
}
int height = (int) (maxL / (2 * context.getScale()));
setHeight(height, true);
}
}
public Renderer getRenderer() {
return null;
}
public int getDirection() {
return basePairRenderer.getDirection();
}
public void setDirection(int d) {
basePairRenderer.setDirection(d);
}
}