2
* Created on 29-nov-2005
4
* TODO To change the template for this generated file go to
5
* Window - Preferences - Java - Code Style - Code Templates
7
package org.herac.tuxguitar.gui.editors.tab;
9
import java.util.ArrayList;
10
import java.util.Iterator;
11
import java.util.List;
13
import org.herac.tuxguitar.gui.editors.tab.layout.ViewLayout;
14
import org.herac.tuxguitar.song.managers.SongManager;
15
import org.herac.tuxguitar.song.models.Measure;
16
import org.herac.tuxguitar.song.models.SongTrack;
21
* TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
23
public class SongTrackCoords {
24
private Tablature tablature;
25
private SongManager songManager;
26
private SongTrack track;
27
private List measuresCoords;
28
private LyricPainter lyricPainter;
30
private int tabHeight;
31
private int scoreHeight;
33
public SongTrackCoords(Tablature tablature,SongManager songManager,SongTrack track,ViewLayout layout) {
34
this.tablature = tablature;
36
this.songManager = songManager;
37
this.measuresCoords = new ArrayList();
38
this.lyricPainter = new LyricPainter(this);
39
this.calculateTabHeight(layout);
40
this.calculateScoreHeight(layout);
45
* Calcula el el ancho de la tablatura
47
public void calculateTabHeight(ViewLayout layout) {
48
this.tabHeight = ((layout.isTablatureEnabled())?((getTrack().stringCount() - 1) * layout.getStringSpan()):0);
52
* Calcula el el ancho de la partitura
54
public void calculateScoreHeight(ViewLayout layout) {
55
this.scoreHeight = ((layout.isScoreEnabled())?(layout.getScoreLineSpan() * 5):0);
58
public List getMeasuresCoords(){
59
return this.measuresCoords;
62
public SongTrack getTrack(){
66
public MeasureCoords getFirstMeasure(){
67
MeasureCoords firstMeasure = null;
68
for(int measureIdx = 0;measureIdx < measuresCoords.size();measureIdx++){
69
MeasureCoords currMeasure = (MeasureCoords)measuresCoords.get(measureIdx);
70
if(firstMeasure == null || (currMeasure.getMeasure().getStart() < firstMeasure.getMeasure().getStart())){
71
firstMeasure = currMeasure;
77
public MeasureCoords getLastMeasure(){
78
int lastIndex = this.measuresCoords.size() - 1;
79
return (MeasureCoords)measuresCoords.get(lastIndex);
82
public MeasureCoords getPrevMeasure(MeasureCoords measureCoords){
83
int prevNumber = measureCoords.getMeasure().getNumber() - 1;
84
int prevIndex = prevNumber - 1;
86
return (MeasureCoords)measuresCoords.get(prevIndex);
91
public MeasureCoords getNextMeasure(MeasureCoords measureCoords){
92
int nextNumber = measureCoords.getMeasure().getNumber() + 1;
93
int nextIndex = nextNumber - 1;
94
if(nextIndex < measuresCoords.size()){
95
return (MeasureCoords)measuresCoords.get(nextIndex);
100
public MeasureCoords getMeasureCoords(long start){
101
MeasureCoords measureCoords = null;
102
for (int measureIdx = 0; measureIdx < this.measuresCoords.size(); measureIdx++) {
103
MeasureCoords measure = (MeasureCoords) this.measuresCoords.get(measureIdx);
104
long measureStart = measure.getMeasure().getStart();
105
long measureLength = measure.getMeasure().getLength();
106
if(start >= measureStart && start < measureStart + measureLength){
113
public MeasureCoords getMeasure(Measure measure){
114
MeasureCoords measureCoords = null;
115
for (int measureIdx = 0; measureIdx < this.measuresCoords.size(); measureIdx++) {
116
MeasureCoords currMeasure = (MeasureCoords) this.measuresCoords.get(measureIdx);
117
if(currMeasure.getMeasure().equals(measure)){
118
measureCoords = currMeasure;
122
return measureCoords;
125
public MeasureCoords getMeasureAt(int x,int y){
126
MeasureCoords measure = null;
127
int minorDistance = 0;
130
Iterator it = measuresCoords.iterator();
132
MeasureCoords m = (MeasureCoords)it.next();
133
if(!m.isOutOfBounds() && m.getTs() != null){
134
boolean isAtX = (x >= m.getPosX() && x <= m.getPosX() + m.getWidth() + m.getSpan());
136
int measureHeight = m.getTs().getSize();
137
int distanceY = Math.min(Math.abs(y - (m.getPosY())),Math.abs(y - ( m.getPosY() + measureHeight - 10)));
138
if(measure == null || distanceY < minorDistance){
140
minorDistance = distanceY;
149
public boolean hasCaret(){
150
return (this.equals(this.tablature.getCaret().getSongTrackCoords()));
153
public int getTabHeight() {
157
public int getScoreHeight() {
161
public void setTabHeight(int tabHeight) {
162
this.tabHeight = tabHeight;
165
public LyricPainter getLyricPainter(){
166
return this.lyricPainter;
b'\\ No newline at end of file'