Icons for Radium and Shellplayer.
[AROS-Contrib.git] / MultiMedia / radium / common / gfx_tempotrackheader.c
blobf1134db3dfb0ebe24cee006570bcceed96480fd0
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. */
23 #include "nsmtracker.h"
24 #include "visual_proc.h"
25 #include <string.h>
27 #include "gfx_tempotrackheader_proc.h"
29 extern struct Root *root;
31 void UpdateTempoTrackHeader_reltempo(
32 struct Tracker_Windows *window,
33 struct WBlocks *wblock,
34 int color
36 char temp[500];
37 char *name="RelTempoMax (RelTempoMin is 1/RelTempoMax)";
39 int numchars=(wblock->temponodearea.x2-wblock->temponodearea.x)/window->fontwidth;
40 int presicion;
42 char cuttemp=false;
43 bool cut=false;
45 if(numchars<=0) return;
47 presicion=numchars-(wblock->reltempomax>=10.0 ? 3:2);
49 if(presicion<0){
50 temp[0]='*';
51 temp[1]=0;
52 }else{
53 presicion=min(5,presicion);
54 sprintf(
55 temp,"%.*f",
56 presicion,
57 wblock->reltempomax
59 if(strlen(temp)>numchars){
60 temp[0]='*';
61 temp[1]=0;
65 GFX_All_FilledBox(
66 window,0,
67 wblock->temponodearea.x+1,
68 wblock->a.y1,
69 wblock->temponodearea.x2,
70 wblock->t.y1-2
73 GFX_Text(
74 window,color,temp,
75 wblock->temponodearea.x+1,
76 wblock->a.y1+window->org_fontheight,false
79 sprintf(temp,"%.*s",numchars,name);
80 if(numchars<strlen(name)-1){
81 cuttemp=temp[numchars];
82 temp[numchars]='\0';
83 cut=true;
86 GFX_Text(
87 window,1,temp,
88 wblock->temponodearea.x+1,
89 wblock->a.y1,false
92 if(cut){
93 temp[numchars]=cuttemp;
95 GFX_Line(window,1,wblock->temponodearea.x+1,wblock->t.y1-1,wblock->temponodearea.x2+1,wblock->t.y1-1);
98 void UpdateTempoTrackHeader_LPB(
99 struct Tracker_Windows *window,
100 struct WBlocks *wblock,
101 int color
103 char temp[50];
105 GFX_Text(
106 window,1,"LPB",
107 wblock->lpbTypearea.x+1,
108 wblock->a.y1,false
111 sprintf(temp,"%3d",root->lpb);
112 GFX_Text(
113 window,color,temp,
114 wblock->lpbTypearea.x+1,
115 wblock->a.y1+window->org_fontheight,false
120 void UpdateTempoTrackHeader_BPM(
121 struct Tracker_Windows *window,
122 struct WBlocks *wblock,
123 int color
125 char temp[50];
127 GFX_Text(
128 window,1,"BPM",
129 wblock->tempoTypearea.x+1,
130 wblock->a.y1,false
133 sprintf(temp,"%3d",root->tempo);
134 GFX_Text(
135 window,2,temp,
136 wblock->tempoTypearea.x+1,
137 wblock->a.y1+window->org_fontheight,false
142 void UpdateTempoTrackHeader(
143 struct Tracker_Windows *window,
144 struct WBlocks *wblock
146 UpdateTempoTrackHeader_LPB(window,wblock,2);
147 UpdateTempoTrackHeader_BPM(window,wblock,2);
148 UpdateTempoTrackHeader_reltempo(window,wblock,2);
151 void DrawTempoTrackHeader(
152 struct Tracker_Windows *window,
153 struct WBlocks *wblock
155 GFX_FilledBox(
156 window,0,
157 wblock->lpbTypearea.x+1,
158 wblock->a.y1,
159 wblock->temponodearea.x2+3,
160 wblock->t.y1-2
163 UpdateTempoTrackHeader_LPB(window,wblock,2);
164 UpdateTempoTrackHeader_BPM(window,wblock,2);
165 UpdateTempoTrackHeader_reltempo(window,wblock,2);