SampleDisplay.h
上传用户:weiliju62
上传日期:2007-01-06
资源大小:619k
文件大小:5k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  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: SampleDisplay.h,v $
  21.  * Revision 1.2  1999/01/30 15:11:13  mueller
  22.  * First released version. Compiles with Gtk-- 0.9.14.
  23.  *
  24.  * Revision 1.1  1998/11/20 18:55:22  mueller
  25.  * Initial revision
  26.  *
  27.  */
  28. #ifndef __SAMPLE_DISPLAY_H
  29. #define __SAMPLE_DISPLAY_H
  30. #include <gtk--.h>
  31. #include <gtk/gtk.h>
  32. #include "TrackManager.h"
  33. class Toc;
  34. class Sample;
  35. class TocEdit;
  36. class SampleDisplay : public Gtk_DrawingArea {
  37. private:
  38.   enum DragMode { DRAG_NONE, DRAG_SAMPLE_MARKER, DRAG_TRACK_MARKER };
  39.   Gtk_Adjustment *adjustment_;
  40.   Gdk_Pixmap *pixmap_;
  41.   Gdk_Pixmap *trackMarkerPixmap_;
  42.   Gdk_Pixmap *indexMarkerPixmap_;
  43.   Gdk_Pixmap *trackMarkerSelectedPixmap_;
  44.   Gdk_Pixmap *indexMarkerSelectedPixmap_;
  45.   Gdk_Pixmap *trackExtendPixmap_;
  46.   Gdk_Pixmap *indexExtendPixmap_;
  47.   Gdk_GC *drawGc_;
  48.   Gdk_Color sampleColor_;
  49.   Gdk_Color middleLineColor_;
  50.   Gdk_Color cursorColor_;
  51.   Gdk_Color markerColor_;
  52.   Gdk_Color selectionBackgroundColor_;
  53.   Gdk_Font *timeTickFont_;
  54.   gint width_;
  55.   gint height_;
  56.   gint timeLineHeight_;
  57.   gint timeLineY_;
  58.   gint timeTickWidth_;
  59.   gint timeTickSep_;
  60.   gint sampleStartX_;
  61.   gint sampleEndX_;
  62.   gint sampleWidthX_;
  63.   gint trackLineHeight_;
  64.   gint trackLineY_;
  65.   gint trackMarkerWidth_;
  66.   Gdk_Font *trackMarkerFont_;
  67.   const TrackManager::Entry *pickedTrackMarker_;
  68.   gint chanSep_;
  69.   gint chanHeight_;
  70.   gint lcenter_;
  71.   gint rcenter_;
  72.   TrackManager *trackManager_;
  73.   TocEdit *tocEdit_;
  74.   unsigned long minSample_;
  75.   unsigned long maxSample_;
  76.   unsigned long resolution_;
  77.   int cursorDrawn_;
  78.   gint cursorX_;
  79.   int cursorControlExtern_;
  80.   int markerSet_;
  81.   gint markerX_;
  82.   unsigned long markerSample_;
  83.   int selectionSet_;
  84.   unsigned long selectionStartSample_;
  85.   unsigned long selectionEndSample_;
  86.   gint selectionStart_;
  87.   gint selectionEnd_;
  88.   int regionSet_;
  89.   unsigned long regionStartSample_;
  90.   unsigned long regionEndSample_;
  91.   int selectedTrack_;
  92.   int selectedIndex_;
  93.   DragMode dragMode_;
  94.   gint dragStart_, dragEnd_;
  95.   gint dragStopMin_, dragStopMax_;
  96.   gint dragLastX_;
  97.   void scrollTo();
  98.   void redraw(gint x, gint y, gint width, gint height, int);
  99.   void readSamples(long startBlock, long endBlock);
  100.   void updateSamples();
  101.   void drawCursor(gint);
  102.   void undrawCursor();
  103.   void getColor(const char *, Gdk_Color *);
  104.   unsigned long pixel2sample(gint x);
  105.   gint sample2pixel(unsigned long);
  106.   void drawMarker();
  107.   void removeMarker();
  108.   void drawTimeTick(gint x, gint y, unsigned long sample);
  109.   gint timeTickWidth();
  110.   void drawTimeLine();
  111.   gint trackMarkerWidth();
  112.   void drawTrackMarker(int mode, gint x, int trackNr, int indexNr,
  113.        int selected, int extend);
  114.   void drawTrackLine();
  115. public:
  116.   SampleDisplay();
  117.   void setTocEdit(TocEdit *);
  118.   int getSelection(unsigned long *start, unsigned long *end);
  119.   void setSelectedTrackMarker(int trackNr, int indexNr);
  120.   void setMarker(unsigned long sample);
  121.   void clearMarker();
  122.   int getMarker(unsigned long *);
  123.   void setView(unsigned long start, unsigned long end);
  124.   void getView(unsigned long *start, unsigned long *end);
  125.   void setRegion(unsigned long start, unsigned long end);
  126.   int getRegion(unsigned long *start, unsigned long *end);
  127.   Gtk_Adjustment *getAdjustment() { return adjustment_; }
  128.   void updateTrackMarks();
  129.   void setCursor(int, unsigned long);
  130.   void updateToc();
  131.   Signal1<unsigned long> markerSet;
  132.   Signal1<unsigned long> cursorMoved;
  133.   Signal2<unsigned long, unsigned long> selectionSet;
  134.   Signal3<const Track *, int, int> trackMarkSelected;
  135.   Signal4<const Track *, int, int, unsigned long> trackMarkMoved;
  136.   
  137. protected:
  138.   int handle_configure_event (GdkEventConfigure *);
  139.   int handle_expose_event (GdkEventExpose *event);
  140.   int handle_motion_notify_event (GdkEventMotion *event);
  141.   int handleButtonPressEvent(GdkEventButton*);
  142.   int handleButtonReleaseEvent(GdkEventButton*);
  143.   int handleEnterEvent(GdkEventCrossing*);
  144.   int handleLeaveEvent(GdkEventCrossing*);
  145. };
  146. #endif