File: TrackArtist.h

package info (click to toggle)
audacity 0.98-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 2,896 kB
  • ctags: 4,089
  • sloc: cpp: 26,099; ansic: 4,961; sh: 2,465; makefile: 156; perl: 23
file content (88 lines) | stat: -rw-r--r-- 2,413 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**********************************************************************

  Audacity: A Digital Audio Editor

  TrackArtist.h

  Dominic Mazzoni

  This singleton class handles the actual rendering of WaveTracks
  (both waveforms and spectra), NoteTracks, and LabelTracks.

  It's actually a little harder than it looks, because for
  waveforms at least it needs to cache the samples that are
  currently on-screen.

**********************************************************************/

#ifndef __AUDACITY_TRACKARTIST__
#define __AUDACITY_TRACKARTIST__

class VTrack;
class WaveTrack;
class NoteTrack;
class LabelTrack;
struct TrackInfoCache;

#include "TrackPanel.h"

class TrackArtist {

 public:
   TrackArtist();
   ~TrackArtist();

   void DrawTracks(TrackList * tracks,
                   wxDC & dc, wxRect & r,
                   wxRect & clip, ViewInfo * viewInfo, bool drawEnvelope);

   void DrawVRuler(VTrack * t, wxDC * dc, wxRect & r);

   void SetInset(int left, int top, int right, int bottom);

 private:
    wxHashTable * mTrackHash;

   int mInsetLeft;
   int mInsetTop;
   int mInsetRight;
   int mInsetBottom;

   wxBrush blankBrush;
   wxBrush unselectedBrush;
   wxBrush selectedBrush;
   wxBrush sampleBrush;
   wxBrush selsampleBrush;
   wxPen blankPen;
   wxPen unselectedPen;
   wxPen selectedPen;
   wxPen samplePen;
   wxPen selsamplePen;
   wxPen shadowPen;

   void PrepareCacheWaveform(TrackInfoCache * cache,
                             double start, double pps, int screenWidth);

   int GetWaveYPos(float value, int height, bool dB);

   void DrawWaveform(TrackInfoCache * cache,
                     wxDC & dc, wxRect & r,
                     ViewInfo * viewInfo, bool drawEnvelope, bool dB);

   void PrepareCacheSpectrum(TrackInfoCache * cache,
                             double start, double pps,
                             int screenWidth, int screenHeight,
                             bool autocorrelation);

   void DrawSpectrum(TrackInfoCache * cache,
                     wxDC & dc, wxRect & r,
                     ViewInfo * viewInfo, bool autocorrelation);

   void DrawNoteTrack(TrackInfoCache * cache,
                      wxDC & dc, wxRect & r, ViewInfo * viewInfo);

   void DrawLabelTrack(TrackInfoCache * cache,
                       wxDC & dc, wxRect & r, ViewInfo * viewInfo);
};

#endif                          // define __AUDACITY_TRACKARTIST__