Some "cast to pointer from integer of different size" warnings removed.
[AROS-Contrib.git] / MultiMedia / radium / common / gfx_wblocks.c
blob37d39938114ae4bd3aab06be56fc08ded4595619
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. */
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <string.h>
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"
42 void DrawUpLineNums(
43 struct Tracker_Windows *window,
44 struct WBlocks *wblock,
45 int start_realline,
46 int end_realline
48 int lokke;
49 int color;
50 struct LocalZooms *realline;
52 if(WBlock_legalizeStartEndReallines(wblock,&start_realline,&end_realline)==false){
53 return;
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);
62 }else{
63 if(realline->level==1){
64 color=1;
65 }else{
66 color=min(7,realline->level);
69 }else{
70 color=1;
73 if(realline->level>0){
74 SetTextNumLine(
75 window,
76 wblock,
77 color,
78 realline->level,
79 wblock->zoomlevelarea.width/window->fontwidth,
80 wblock->zoomlevelarea.x,
81 lokke,
82 false
85 SetTextNumLine(
86 window,
87 wblock,
88 color,
89 realline->zoomline,
90 // realline->Tline,
91 wblock->linenumarea.width/window->fontwidth,
92 wblock->linenumarea.x,
93 lokke,
94 false
98 Blt_markSTrack(window,LINENUMBTRACK,start_realline,end_realline);
101 void DrawTempos(
102 struct Tracker_Windows *window,
103 struct WBlocks *wblock,
104 int start_realline,
105 int end_realline
107 int lokke,tempo,type;
108 char *typetext=NULL;
110 if(WBlock_legalizeStartEndReallines(wblock,&start_realline,&end_realline)==false){
111 return;
114 for(lokke=start_realline;lokke<=end_realline;lokke++){
115 tempo=wblock->wtempos[lokke].tempo;
116 type=wblock->wtempos[lokke].type;
117 if(tempo!=0){
118 SetTextNumLine(
119 window,
120 wblock,
122 tempo,
123 wblock->tempoarea.width/window->fontwidth,
124 wblock->tempoarea.x,
125 lokke,
126 false
129 if(type!=TEMPO_NORMAL){
130 switch(type){
131 case TEMPO_BELOW:
132 typetext="d";
133 break;
134 case TEMPO_MUL:
135 typetext="m";
136 break;
138 SetTextLine(
139 window,
140 wblock,
142 typetext,
143 wblock->tempoTypearea.x,
144 lokke,
145 false
149 Blt_markSTrack(window,TEMPOTRACK,start_realline,end_realline);
153 void DrawLPBs(
154 struct Tracker_Windows *window,
155 struct WBlocks *wblock,
156 int start_realline,
157 int end_realline
159 int lokke,lpb,type;
160 char *typetext=NULL;
162 if(WBlock_legalizeStartEndReallines(wblock,&start_realline,&end_realline)==false){
163 return;
166 for(lokke=start_realline;lokke<=end_realline;lokke++){
167 lpb=wblock->wlpbs[lokke].lpb;
168 type=wblock->wlpbs[lokke].type;
169 if(lpb!=0){
170 SetTextNumLine(
171 window,
172 wblock,
174 lpb,
175 wblock->lpbarea.width/window->fontwidth,
176 wblock->lpbarea.x,
177 lokke,
178 false
181 if(type!=LPB_NORMAL){
182 switch(type){
183 case LPB_BELOW:
184 typetext="d";
185 break;
186 case LPB_MUL:
187 typetext="m";
188 break;
190 SetTextLine(
191 window,
192 wblock,
194 typetext,
195 wblock->lpbTypearea.x,
196 lokke,
197 false
201 Blt_markSTrack(window,LPBTRACK,start_realline,end_realline);
204 void DrawWTempoNodes(
205 struct Tracker_Windows *window,
206 struct WBlocks *wblock,
207 int start_realline,
208 int end_realline
210 int lokke;
211 WTempoNodes *wtemponode;
213 if(WBlock_legalizeStartEndReallines(wblock,&start_realline,&end_realline)==false){
214 return;
217 for(lokke=start_realline;lokke<=end_realline;lokke++){
218 wtemponode=wblock->wtemponodes[lokke];
220 GFX_FilledBox(
221 window,0,
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){
230 case TEMPONODE_LINE:
231 GFX_P_Line(
232 window,4,
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
238 break;
239 case TEMPONODE_NODE:
240 GFX_P_FilledBox(
241 window,6,
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
247 GFX_P_Box(
248 window,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,
264 int start_realline,
265 int end_realline
268 int y1,y2;
270 if(WBlock_legalizeStartEndReallines(wblock,&start_realline,&end_realline)==false){
271 return;
274 y1=GetReallineY1Pos(window,wblock,start_realline);
275 y2=GetReallineY2Pos(window,wblock,end_realline);
277 GFX_P_DrawTrackBorderDouble(
278 window,
279 wblock->zoomlevelarea.x2+1,
280 y1,y2
283 GFX_P_DrawTrackBorderDouble(
284 window,
285 wblock->linenumarea.x2+1,
286 y1,y2
289 GFX_P_DrawTrackBorderDouble(
290 window,
291 wblock->lpbarea.x2+1,
292 y1,y2
295 GFX_P_DrawTrackBorderSingle(
296 window,
297 wblock->tempoarea.x2+1,
298 y1,y2
301 GFX_P_DrawTrackBorderDouble(
302 window,
303 wblock->temponodearea.x2+1,
304 y1,y2
310 void DrawUpWTempoNodes(
311 struct Tracker_Windows *window,
312 struct WBlocks *wblock
315 GFX_P_FilledBox(
316 window,0,
317 wblock->temponodearea.x,
318 wblock->t.y1,
319 wblock->temponodearea.x2,
320 wblock->t.y2
323 DrawWTempoNodes(window,wblock,wblock->top_realline,wblock->bot_realline);
326 void DrawUpTempos(
327 struct Tracker_Windows *window,
328 struct WBlocks *wblock
331 GFX_P_FilledBox(
332 window,0,
333 wblock->tempoarea.x,
334 wblock->t.y1,
335 wblock->tempoarea.x2,
336 wblock->t.y2
339 DrawTempos(window,wblock,wblock->top_realline,wblock->bot_realline);
342 void DrawUpLPBs(
343 struct Tracker_Windows *window,
344 struct WBlocks *wblock
347 GFX_P_FilledBox(
348 window,0,
349 wblock->lpbarea.x,
350 wblock->t.y1,
351 wblock->lpbarea.x2,
352 wblock->t.y2
355 DrawLPBs(window,wblock,wblock->top_realline,wblock->bot_realline);
359 void DrawWBlockSpesific(
360 struct Tracker_Windows *window,
361 struct WBlocks *wblock,
362 int start_realline,
363 int end_realline
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(
383 window,
384 wblock->zoomlevelarea.x2+1,
385 wblock->t.y1,
386 wblock->a.y2
390 GFX_Line(
391 window,1,
393 wblock->t.y1-1,
394 wblock->linenumarea.x2,
395 wblock->t.y1-1
399 GFX_V_DrawTrackBorderDouble(
400 window,
401 wblock->linenumarea.x2+1,
402 wblock->a.y1,
403 wblock->a.y2
406 GFX_V_DrawTrackBorderDouble(
407 window,
408 wblock->lpbarea.x2+1,
409 wblock->a.y1,
410 wblock->a.y2
413 GFX_V_DrawTrackBorderSingle(
414 window,
415 wblock->tempoarea.x2+1,
416 wblock->a.y1,
417 wblock->a.y2
420 GFX_V_DrawTrackBorderDouble(
421 window,
422 wblock->temponodearea.x2+1,
423 wblock->a.y1,
424 wblock->a.y2
427 GFX_Line(
428 window,1,
429 wblock->linenumarea.x2+3,
430 wblock->t.y1-1,
431 wblock->temponodearea.x2,
432 wblock->t.y1-1
436 DrawWBlockSpesific(
437 window,
438 wblock,
439 wblock->top_realline,
440 wblock->bot_realline
444 UpdateAllWTracks(window,wblock,wblock->top_realline,wblock->bot_realline);
446 DrawAllWTracksBorders(window,wblock);
448 SetCursorPos(window);
450 DrawBottomSlider(window);
452 GFX_Line(
453 window,1,
454 wblock->a.x1,
455 wblock->t.y2+1,
456 window->bottomslider.x-1,
457 wblock->t.y2+1
460 DrawAllWTrackHeaders(window,wblock);
462 DrawBlockRelTempo(window,wblock);