2
* Created on 04-ene-2006
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.layout;
9
import java.util.ArrayList;
10
import java.util.List;
12
import org.eclipse.swt.graphics.GC;
13
import org.eclipse.swt.graphics.Rectangle;
14
import org.herac.tuxguitar.gui.editors.tab.MeasureCoords;
15
import org.herac.tuxguitar.gui.editors.tab.SongTrackCoords;
16
import org.herac.tuxguitar.gui.editors.tab.Tablature;
17
import org.herac.tuxguitar.song.managers.SongManager;
22
* TODO To change the template for this generated type comment go to
23
* Window - Preferences - Java - Code Style - Code Templates
25
public class LinearViewLayout extends ViewLayout{
27
public LinearViewLayout(Tablature tablature,SongManager songManager,boolean multitrack,boolean scoreEnabled,boolean tablatureEnabled){
28
super(tablature,songManager,multitrack,scoreEnabled,tablatureEnabled);
35
public void paintSong(GC gc,Rectangle clientArea,int fromX,int fromY){
36
clearTrackPositions();
38
paintTracks(getTablature().getCaret().getSongCoords().getTrackCoords(),gc,clientArea,fromX,fromY);
40
List tracksCoords = new ArrayList();
41
tracksCoords.add(getTablature().getCaret().getSongTrackCoords());
42
paintTracks(tracksCoords,gc,clientArea,fromX,fromY);
47
public void paintTracks(List tracksCoords,GC gc,Rectangle clientArea,int fromX,int fromY) {
48
int posY = fromY + getDefaultFirstTrackSpan();
49
int height = getDefaultFirstTrackSpan();
51
for (int trackIdx = 0; trackIdx < tracksCoords.size(); trackIdx++) {
52
SongTrackCoords trackCoords = (SongTrackCoords) tracksCoords.get(trackIdx);
53
TrackSpacing ts = new TrackSpacing(this) ;
54
ts.setSize(TrackSpacing.POSITION_SCORE_MIDDLE_LINES, ((isScoreEnabled())?( (DEFAULT_SCORE_LINE_SPAN * 5) ):0));
55
trackCoords.getLyricPainter().start();
57
//------AUTO_SPACING---------------------------------------
58
if(AUTO_SPACING_ENABLED){
61
for(int i = 0;i < trackCoords.getMeasuresCoords().size();i++){
62
MeasureCoords measure = (MeasureCoords)trackCoords.getMeasuresCoords().get(i);
63
maxY = (measure.getMaxY() > maxY)?measure.getMaxY():maxY;
64
minY = (measure.getMinY() < minY)?measure.getMinY():minY;
65
measure.registerEffects(ts);
67
ts.setSize(TrackSpacing.POSITION_SCORE_UP_LINES, ((isScoreEnabled())?Math.abs(minY):0));
68
if(isScoreEnabled() && maxY + MIN_SCORE_TAB_SPAN > DEFAULT_SCORE_SPAN){
69
ts.setSize(TrackSpacing.POSITION_SCORE_DOWN_LINES, (maxY - (getScoreLineSpan() * 4)) );
72
ts.setSize(TrackSpacing.POSITION_TABLATURE_TOP_SEPARATOR,(isScoreEnabled()?getMinScoreTabSpan():getStringSpan()));
73
ts.setSize(TrackSpacing.POSITION_TABLATURE, ( isTablatureEnabled()?(isScoreEnabled()?trackCoords.getTabHeight() + getStringSpan() +1:trackCoords.getTabHeight() + ((getStringSpan() / 2) * 5) +1 ) :0) );
74
ts.setSize(TrackSpacing.POSITION_LYRIC,10);
77
//----------------------------------------------------
78
paintMeasures(trackCoords,trackCoords.getMeasuresCoords(),gc,fromX,posY,ts,clientArea);
79
paintLines(trackCoords,ts,gc,fromX + (getWidth() + 2),posY,(clientArea.width - (fromX + getWidth()) ));
81
trackHeight = ts.getSize();
82
addTrackPosition((int)trackCoords.getTrack().getNumber(),posY,trackHeight);
84
posY += trackHeight + DEFAULT_TRACK_SPAN;
85
height += trackHeight + DEFAULT_TRACK_SPAN;
90
public void paintMeasures(SongTrackCoords trackCoords,List measuresCoords,GC gc,int fromX, int fromY,TrackSpacing ts,Rectangle clientArea) {
91
int posX = (fromX + DEFAULT_HORIZONTAL_SPAN);
94
for (int measureIdx = 0; measureIdx < measuresCoords.size(); measureIdx++) {
95
MeasureCoords measureCoords = (MeasureCoords) measuresCoords.get(measureIdx);
97
//asigno la posicion dentro del compas
98
measureCoords.setPosX(posX);
99
measureCoords.setPosY(posY);
100
measureCoords.setTs(ts);
102
trackCoords.getLyricPainter().setCurrentMeasure(measureCoords);
104
//Solo pinto lo que entre en pantalla
105
boolean isAtX = ((posX + measureCoords.getWidth()) > clientArea.x - 100 && posX < clientArea.x + clientArea.width + measureCoords.getWidth() + 100);
106
boolean isAtY = (posY + ts.getSize() > clientArea.y && posY < clientArea.y + clientArea.height + 80);
108
paintMeasure(measureCoords,gc,posX, posY,0,clientArea);
109
trackCoords.getLyricPainter().paintCurrentNoteBeats(gc,this,measureCoords,posX, posY);
111
measureCoords.setOutOfBounds(true);
113
posX += measureCoords.getWidth();
115
setWidth(posX + (-fromX));
118
public boolean followMeasure(MeasureCoords measure,boolean redraw){
119
return getTablature().moveScrollHorizontalTo(measure,DEFAULT_HORIZONTAL_SPAN,redraw);