~ubuntu-branches/ubuntu/lucid/cdrdao/lucid

« back to all changes in this revision

Viewing changes to xdao/TrackManager.h

  • Committer: Bazaar Package Importer
  • Author(s): Andrew Suffield
  • Date: 2004-06-24 22:33:16 UTC
  • Revision ID: james.westby@ubuntu.com-20040624223316-534onzugaeeyq61j
Tags: upstream-1.1.9
ImportĀ upstreamĀ versionĀ 1.1.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*  cdrdao - write audio CD-Rs in disc-at-once mode
 
2
 *
 
3
 *  Copyright (C) 1998  Andreas Mueller <mueller@daneb.ping.de>
 
4
 *
 
5
 *  This program is free software; you can redistribute it and/or modify
 
6
 *  it under the terms of the GNU General Public License as published by
 
7
 *  the Free Software Foundation; either version 2 of the License, or
 
8
 *  (at your option) any later version.
 
9
 *
 
10
 *  This program is distributed in the hope that it will be useful,
 
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 *  GNU General Public License for more details.
 
14
 *
 
15
 *  You should have received a copy of the GNU General Public License
 
16
 *  along with this program; if not, write to the Free Software
 
17
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
18
 */
 
19
/*
 
20
 * $Log: TrackManager.h,v $
 
21
 * Revision 1.2  2004/02/12 01:13:32  poolshark
 
22
 * Merge from gnome2 branch
 
23
 *
 
24
 * Revision 1.1.1.1.6.1  2004/01/05 00:34:03  poolshark
 
25
 * First checking of gnome2 port
 
26
 *
 
27
 * Revision 1.1.1.1  2003/12/09 05:32:28  denis
 
28
 * Fooya
 
29
 *
 
30
 * Revision 1.1.1.1  2000/02/05 01:38:55  llanero
 
31
 * Uploaded cdrdao 1.1.3 with pre10 patch applied.
 
32
 *
 
33
 * Revision 1.1  1998/11/20 18:56:46  mueller
 
34
 * Initial revision
 
35
 *
 
36
 */
 
37
 
 
38
#ifndef __TRACK_MANAGER_H
 
39
#define __TRACK_MANAGER_H
 
40
 
 
41
#include <glib.h>
 
42
 
 
43
class Toc;
 
44
class Track;
 
45
 
 
46
class TrackManager {
 
47
public:
 
48
  struct Entry {
 
49
    Entry(const Track *t, int tn, int in, gint x) {
 
50
      track = t; trackNr = tn; indexNr = in; xpos = x;
 
51
      extend = 0; drawn = 1; selected = 0;
 
52
    }
 
53
    const Track *track;
 
54
    int trackNr;
 
55
    int indexNr;
 
56
    gint xpos;
 
57
    unsigned int extend : 1;
 
58
    unsigned int drawn : 1;
 
59
    unsigned int selected : 1;
 
60
  };
 
61
 
 
62
  TrackManager(gint trackMarkerWidth);
 
63
  ~TrackManager();
 
64
 
 
65
  void update(const Toc *, unsigned long start, unsigned long end, gint width);
 
66
 
 
67
  // returns entry that is picked at given x-postion
 
68
  const Entry *pick(gint x, gint *stopXMin, gint *stopXMax); 
 
69
 
 
70
  // selects given entry, use 'NULL' to unselect all
 
71
  void select(const Entry *);
 
72
 
 
73
  // selected entry with specified track/index
 
74
  void select(int trackNr, int indexNr);
 
75
 
 
76
  // iterates entries
 
77
  const Entry *first();
 
78
  const Entry *next();
 
79
 
 
80
 
 
81
private:
 
82
  struct EntryList {
 
83
    Entry *ent;
 
84
    EntryList *next;
 
85
  };
 
86
 
 
87
  gint trackMarkerWidth_;
 
88
  gint width_;
 
89
  EntryList *entries_;
 
90
  EntryList *lastEntry_;
 
91
  EntryList *iterator_;
 
92
 
 
93
  void clear();
 
94
  void append(Entry *);
 
95
};
 
96
 
 
97
#endif