Blame xdao/TrackManager.h

Packit Service 3e823c
/*  cdrdao - write audio CD-Rs in disc-at-once mode
Packit Service 3e823c
 *
Packit Service 3e823c
 *  Copyright (C) 1998  Andreas Mueller <mueller@daneb.ping.de>
Packit Service 3e823c
 *
Packit Service 3e823c
 *  This program is free software; you can redistribute it and/or modify
Packit Service 3e823c
 *  it under the terms of the GNU General Public License as published by
Packit Service 3e823c
 *  the Free Software Foundation; either version 2 of the License, or
Packit Service 3e823c
 *  (at your option) any later version.
Packit Service 3e823c
 *
Packit Service 3e823c
 *  This program is distributed in the hope that it will be useful,
Packit Service 3e823c
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 3e823c
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 3e823c
 *  GNU General Public License for more details.
Packit Service 3e823c
 *
Packit Service 3e823c
 *  You should have received a copy of the GNU General Public License
Packit Service 3e823c
 *  along with this program; if not, write to the Free Software
Packit Service 3e823c
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Packit Service 3e823c
 */
Packit Service 3e823c
/*
Packit Service 3e823c
 * $Log: TrackManager.h,v $
Packit Service 3e823c
 * Revision 1.2  2004/02/12 01:13:32  poolshark
Packit Service 3e823c
 * Merge from gnome2 branch
Packit Service 3e823c
 *
Packit Service 3e823c
 * Revision 1.1.1.1.6.1  2004/01/05 00:34:03  poolshark
Packit Service 3e823c
 * First checking of gnome2 port
Packit Service 3e823c
 *
Packit Service 3e823c
 * Revision 1.1.1.1  2003/12/09 05:32:28  denis
Packit Service 3e823c
 * Fooya
Packit Service 3e823c
 *
Packit Service 3e823c
 * Revision 1.1.1.1  2000/02/05 01:38:55  llanero
Packit Service 3e823c
 * Uploaded cdrdao 1.1.3 with pre10 patch applied.
Packit Service 3e823c
 *
Packit Service 3e823c
 * Revision 1.1  1998/11/20 18:56:46  mueller
Packit Service 3e823c
 * Initial revision
Packit Service 3e823c
 *
Packit Service 3e823c
 */
Packit Service 3e823c
Packit Service 3e823c
#ifndef __TRACK_MANAGER_H
Packit Service 3e823c
#define __TRACK_MANAGER_H
Packit Service 3e823c
Packit Service 3e823c
#include <glib.h>
Packit Service 3e823c
Packit Service 3e823c
class Toc;
Packit Service 3e823c
class Track;
Packit Service 3e823c
Packit Service 3e823c
class TrackManager {
Packit Service 3e823c
public:
Packit Service 3e823c
  struct Entry {
Packit Service 3e823c
    Entry(const Track *t, int tn, int in, gint x) {
Packit Service 3e823c
      track = t; trackNr = tn; indexNr = in; xpos = x;
Packit Service 3e823c
      extend = 0; drawn = 1; selected = 0;
Packit Service 3e823c
    }
Packit Service 3e823c
    const Track *track;
Packit Service 3e823c
    int trackNr;
Packit Service 3e823c
    int indexNr;
Packit Service 3e823c
    gint xpos;
Packit Service 3e823c
    unsigned int extend : 1;
Packit Service 3e823c
    unsigned int drawn : 1;
Packit Service 3e823c
    unsigned int selected : 1;
Packit Service 3e823c
  };
Packit Service 3e823c
Packit Service 3e823c
  TrackManager(gint trackMarkerWidth);
Packit Service 3e823c
  ~TrackManager();
Packit Service 3e823c
Packit Service 3e823c
  void update(const Toc *, unsigned long start, unsigned long end, gint width);
Packit Service 3e823c
Packit Service 3e823c
  // returns entry that is picked at given x-postion
Packit Service 3e823c
  const Entry *pick(gint x, gint *stopXMin, gint *stopXMax); 
Packit Service 3e823c
Packit Service 3e823c
  // selects given entry, use 'NULL' to unselect all
Packit Service 3e823c
  void select(const Entry *);
Packit Service 3e823c
Packit Service 3e823c
  // selected entry with specified track/index
Packit Service 3e823c
  void select(int trackNr, int indexNr);
Packit Service 3e823c
Packit Service 3e823c
  // iterates entries
Packit Service 3e823c
  const Entry *first();
Packit Service 3e823c
  const Entry *next();
Packit Service 3e823c
Packit Service 3e823c
Packit Service 3e823c
private:
Packit Service 3e823c
  struct EntryList {
Packit Service 3e823c
    Entry *ent;
Packit Service 3e823c
    EntryList *next;
Packit Service 3e823c
  };
Packit Service 3e823c
Packit Service 3e823c
  gint trackMarkerWidth_;
Packit Service 3e823c
  gint width_;
Packit Service 3e823c
  EntryList *entries_;
Packit Service 3e823c
  EntryList *lastEntry_;
Packit Service 3e823c
  EntryList *iterator_;
Packit Service 3e823c
Packit Service 3e823c
  void clear();
Packit Service 3e823c
  void append(Entry *);
Packit Service 3e823c
};
Packit Service 3e823c
Packit Service 3e823c
#endif