1 /* Copyright 2000 Kjetil S. Matheussen
3 This program is free software; you can redistribute it and/or
4 modify it under the terms of the GNU General Public License
5 as published by the Free Software Foundation; either version 2
6 of the License, or (at your option) any later version.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
22 #include "nsmtracker.h"
23 #include "list_proc.h"
24 #include "visual_proc.h"
25 #include "common_proc.h"
26 #include "wblocks_proc.h"
27 #include "gfx_wtracks_proc.h"
28 #include "gfx_wtext_proc.h"
29 #include "cursor_proc.h"
30 #include "sliders_proc.h"
31 #include "gfx_wtrackheaders_proc.h"
32 #include "gfx_tempotrackheader_proc.h"
33 #include "gfx_upperleft_proc.h"
34 #include "gfx_window_title_proc.h"
35 #include "gfx_wblocks_reltempo_proc.h"
36 #include "blts_proc.h"
38 #include "gfx_wblocks_proc.h"
43 struct Tracker_Windows
*window
,
44 struct WBlocks
*wblock
,
50 struct LocalZooms
*realline
;
52 if(WBlock_legalizeStartEndReallines(wblock
,&start_realline
,&end_realline
)==false){
56 for(lokke
=start_realline
;lokke
<=end_realline
;lokke
++){
57 realline
= wblock
->reallines
[lokke
];
59 if(realline
->level
>0){
60 if(realline
->zoomline
>0){
61 color
=min(7,realline
->level
+1);
63 if(realline
->level
==1){
66 color
=min(7,realline
->level
);
73 if(realline
->level
>0){
79 wblock
->zoomlevelarea
.width
/window
->fontwidth
,
80 wblock
->zoomlevelarea
.x
,
91 wblock
->linenumarea
.width
/window
->fontwidth
,
92 wblock
->linenumarea
.x
,
98 Blt_markSTrack(window
,LINENUMBTRACK
,start_realline
,end_realline
);
102 struct Tracker_Windows
*window
,
103 struct WBlocks
*wblock
,
107 int lokke
,tempo
,type
;
110 if(WBlock_legalizeStartEndReallines(wblock
,&start_realline
,&end_realline
)==false){
114 for(lokke
=start_realline
;lokke
<=end_realline
;lokke
++){
115 tempo
=wblock
->wtempos
[lokke
].tempo
;
116 type
=wblock
->wtempos
[lokke
].type
;
123 wblock
->tempoarea
.width
/window
->fontwidth
,
129 if(type
!=TEMPO_NORMAL
){
143 wblock
->tempoTypearea
.x
,
149 Blt_markSTrack(window
,TEMPOTRACK
,start_realline
,end_realline
);
154 struct Tracker_Windows
*window
,
155 struct WBlocks
*wblock
,
162 if(WBlock_legalizeStartEndReallines(wblock
,&start_realline
,&end_realline
)==false){
166 for(lokke
=start_realline
;lokke
<=end_realline
;lokke
++){
167 lpb
=wblock
->wlpbs
[lokke
].lpb
;
168 type
=wblock
->wlpbs
[lokke
].type
;
175 wblock
->lpbarea
.width
/window
->fontwidth
,
181 if(type
!=LPB_NORMAL
){
195 wblock
->lpbTypearea
.x
,
201 Blt_markSTrack(window
,LPBTRACK
,start_realline
,end_realline
);
204 void DrawWTempoNodes(
205 struct Tracker_Windows
*window
,
206 struct WBlocks
*wblock
,
211 WTempoNodes
*wtemponode
;
213 if(WBlock_legalizeStartEndReallines(wblock
,&start_realline
,&end_realline
)==false){
217 for(lokke
=start_realline
;lokke
<=end_realline
;lokke
++){
218 wtemponode
=wblock
->wtemponodes
[lokke
];
222 wblock->temponodearea.x,
223 GetReallineY1Pos(window,wblock,lokke),
224 wblock->temponodearea.x2,
225 GetReallineY2Pos(window,wblock,lokke)
228 while(wtemponode
!=NULL
){
229 switch(wtemponode
->type
){
233 wblock
->temponodearea
.x
+wtemponode
->x1
,
234 GetReallineY1Pos(window
,wblock
,lokke
)+wtemponode
->y1
,
235 wblock
->temponodearea
.x
+wtemponode
->x2
,
236 GetReallineY1Pos(window
,wblock
,lokke
)+wtemponode
->y2
242 wblock
->temponodearea
.x
+wtemponode
->x1
+1,
243 GetReallineY1Pos(window
,wblock
,lokke
)+wtemponode
->y1
+1,
244 wblock
->temponodearea
.x
+wtemponode
->x2
-1,
245 GetReallineY1Pos(window
,wblock
,lokke
)+wtemponode
->y2
-1
249 wblock
->temponodearea
.x
+wtemponode
->x1
,
250 GetReallineY1Pos(window
,wblock
,lokke
)+wtemponode
->y1
,
251 wblock
->temponodearea
.x
+wtemponode
->x2
,
252 GetReallineY1Pos(window
,wblock
,lokke
)+wtemponode
->y2
255 wtemponode
=wtemponode
->next
;
258 Blt_markSTrack(window
,TEMPONODETRACK
,start_realline
,end_realline
);
261 void WBLOCK_DrawBorders(
262 struct Tracker_Windows
*window
,
263 struct WBlocks
*wblock
,
270 if(WBlock_legalizeStartEndReallines(wblock
,&start_realline
,&end_realline
)==false){
274 y1
=GetReallineY1Pos(window
,wblock
,start_realline
);
275 y2
=GetReallineY2Pos(window
,wblock
,end_realline
);
277 GFX_P_DrawTrackBorderDouble(
279 wblock
->zoomlevelarea
.x2
+1,
283 GFX_P_DrawTrackBorderDouble(
285 wblock
->linenumarea
.x2
+1,
289 GFX_P_DrawTrackBorderDouble(
291 wblock
->lpbarea
.x2
+1,
295 GFX_P_DrawTrackBorderSingle(
297 wblock
->tempoarea
.x2
+1,
301 GFX_P_DrawTrackBorderDouble(
303 wblock
->temponodearea
.x2
+1,
310 void DrawUpWTempoNodes(
311 struct Tracker_Windows
*window
,
312 struct WBlocks
*wblock
317 wblock
->temponodearea
.x
,
319 wblock
->temponodearea
.x2
,
323 DrawWTempoNodes(window
,wblock
,wblock
->top_realline
,wblock
->bot_realline
);
327 struct Tracker_Windows
*window
,
328 struct WBlocks
*wblock
335 wblock
->tempoarea
.x2
,
339 DrawTempos(window
,wblock
,wblock
->top_realline
,wblock
->bot_realline
);
343 struct Tracker_Windows
*window
,
344 struct WBlocks
*wblock
355 DrawLPBs(window
,wblock
,wblock
->top_realline
,wblock
->bot_realline
);
359 void DrawWBlockSpesific(
360 struct Tracker_Windows
*window
,
361 struct WBlocks
*wblock
,
365 DrawUpLineNums(window
,wblock
,start_realline
,end_realline
);
366 DrawTempos(window
,wblock
,start_realline
,end_realline
);
367 DrawLPBs(window
,wblock
,start_realline
,end_realline
);
368 DrawWTempoNodes(window
,wblock
,start_realline
,end_realline
);
369 WBLOCK_DrawBorders(window
,wblock
,start_realline
,end_realline
);
374 void DrawWBlock(struct Tracker_Windows
*window
,struct WBlocks
*wblock
){
376 GFX_DrawWindowTitle(window
,wblock
);
378 DrawTempoTrackHeader(window
,wblock
);
380 GFX_DrawUpLeft(window
,wblock
);
382 GFX_V_DrawTrackBorderDouble(
384 wblock
->zoomlevelarea
.x2
+1,
394 wblock->linenumarea.x2,
399 GFX_V_DrawTrackBorderDouble(
401 wblock
->linenumarea
.x2
+1,
406 GFX_V_DrawTrackBorderDouble(
408 wblock
->lpbarea
.x2
+1,
413 GFX_V_DrawTrackBorderSingle(
415 wblock
->tempoarea
.x2
+1,
420 GFX_V_DrawTrackBorderDouble(
422 wblock
->temponodearea
.x2
+1,
429 wblock
->linenumarea
.x2
+3,
431 wblock
->temponodearea
.x2
,
439 wblock
->top_realline
,
444 UpdateAllWTracks(window
,wblock
,wblock
->top_realline
,wblock
->bot_realline
);
446 DrawAllWTracksBorders(window
,wblock
);
448 SetCursorPos(window
);
450 DrawBottomSlider(window
);
456 window
->bottomslider
.x
-1,
460 DrawAllWTrackHeaders(window
,wblock
);
462 DrawBlockRelTempo(window
,wblock
);