MMWPANEL.INT 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. {========================================================================}
  2. {= (c) 1995-98 SwiftSoft Ronald Dittrich =}
  3. {========================================================================}
  4. {= All Rights Reserved =}
  5. {========================================================================}
  6. {= D 01099 Dresden = Tel.: +0351-8012255 =}
  7. {= Loewenstr.7a = info@swiftsoft.de =}
  8. {========================================================================}
  9. {= Actual versions on http://www.swiftsoft.de/mmtools.html =}
  10. {========================================================================}
  11. {= This code is for reference purposes only and may not be copied or =}
  12. {= distributed in any format electronic or otherwise except one copy =}
  13. {= for backup purposes. =}
  14. {= =}
  15. {= No Delphi Component Kit or Component individually or in a collection=}
  16. {= subclassed or otherwise from the code in this unit, or associated =}
  17. {= .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed =}
  18. {= without express permission from SwiftSoft. =}
  19. {= =}
  20. {= For more licence informations please refer to the associated =}
  21. {= HelpFile. =}
  22. {========================================================================}
  23. {= $Date: 20.01.1998 - 18:00:00 $ =}
  24. {========================================================================}
  25. unit MMWPanel;
  26. {$I COMPILER.INC}
  27. interface
  28. uses
  29. SysUtils,
  30. Windows,
  31. Messages,
  32. Classes,
  33. Graphics,
  34. Controls,
  35. Forms,
  36. Dialogs,
  37. ExtCtrls,
  38. Menus,
  39. MMObj,
  40. MMUtils,
  41. MMMPanel,
  42. MMWave,
  43. MMACMSup,
  44. MMPCMSup,
  45. MMRegs,
  46. MMWaveIO,
  47. MMMulDiv,
  48. MMDIBCv,
  49. MMWDisp,
  50. MMFade,
  51. MMLoop;
  52. const
  53. knob = 10;
  54. Griff = knob div 2;
  55. PointSize = 6;
  56. var
  57. CanPopUp: Boolean;
  58. type
  59. TMMWavePanel = class;
  60. {-- TMMSample --------------------------------------------------------}
  61. TMMSample = class(TMMWave) { Sample-Object }
  62. public
  63. constructor Create; override;
  64. destructor Destroy; override;
  65. function RealSamplesToSamples(aValue: Longint): Longint;
  66. function SamplesToRealSamples(aValue: Longint): Longint;
  67. procedure BuildLoop;
  68. procedure InitPlayFadeList(Playing: Boolean);
  69. procedure UpdatePlayFadeList;
  70. procedure Assign(Source: TPersistent); override;
  71. procedure SetAllTimes(Start, FadeIn, FadeOut, Ende: Longint);
  72. procedure ShiftSample(Offset: Longint);
  73. property Owner: TMMWavePanel read FOwner write FOwner;
  74. property Open: Boolean read FOpen write SetOpen;
  75. property CanConvert: Boolean read FCanConvert;
  76. property PlayBackRate: Longint read FPlayRate write FPlayRate;
  77. property Volume: integer read FVolume write SetVolume;
  78. property Panning: integer read FPanning write SetPanning;
  79. property StartTime: Longint read FStartTime write SetStartTime;
  80. property EndTime: Longint read GetEndTime write SetEndTime;
  81. property FadeInTime: Longint read FFadeInTime write SetFadeInTime;
  82. property FadeOutTime: Longint read FFadeOutTime write SetFadeOutTime;
  83. property PlayFadeList: TMMFadeList read FPlayFadeList;
  84. property FadeList: TMMFadeList read FFadeList write SetFadeList;
  85. property LoopList: TMMLoopList read FLoopList write SetLoopList;
  86. property GroupIndex: Smallint read FGroupIndex write FGroupIndex;
  87. property Looped: Boolean read GetLooped;
  88. property Muted: Boolean read FMuted write SetMuted;
  89. property Selected: Boolean read FSelected write FSelected;
  90. property Freezed: Boolean read FFreezed write FFreezed;
  91. property Title: string read FTitle write FTitle;
  92. property WaveForm: Boolean read FWaveForm write SetWaveForm;
  93. end;
  94. TMMSampleShift = (smNone,
  95. smAll,
  96. smStart,
  97. smStartFadeIn,
  98. smFadeIn,
  99. smFadeInOut,
  100. smFadeOut,
  101. smFadeOutEnd,
  102. smEnd,
  103. smPolyMove,
  104. smCrossFade);
  105. {-- TMMWavePanel ------------------------------------------------------}
  106. TMMWavePanel = class(TMMMediaPanel)
  107. public
  108. constructor Create(AOwner: TComponent); override;
  109. destructor Destroy; override;
  110. procedure Clear; override;
  111. procedure SelectItem(Nr: integer; State: Boolean); override;
  112. procedure SelectGroup(Index : integer; State: Boolean); override;
  113. procedure SelectAll(State: Boolean; Ignore: integer); override;
  114. procedure SelectRange(min, max: longint); override;
  115. procedure SelectRangeFinal(min, max: longint); override;
  116. procedure GetMaxShiftRange(Nr: integer; var lo, hi: Longint);
  117. procedure QueryPolyMove(var cnt: integer; var dmin,dmax: longint); override;
  118. procedure PolyShift(Diff: longint); override;
  119. function IsGridX(X: integer; var Value: Longint): Boolean; override;
  120. function AddSample(Sample: TMMSample): Boolean;
  121. procedure DeleteItem(Nr : integer); override;
  122. procedure DelSample(Nr: integer);
  123. function LocateSample(T: Longint): integer;
  124. function FindSample(T: Longint): integer;
  125. function QuerySample(Sample: TMMSample): Boolean;
  126. procedure PaintOneSample(Sample: TMMSample);
  127. procedure PaintTrack(min, max: longint);
  128. property Count: integer read GetCount;
  129. property Sample[Nr: integer]: TMMSample read GetSample;
  130. property Mute[Nr: integer]: Boolean read GetMute write SetMute;
  131. property WaveDisplay[Nr: integer]: Boolean read GetWaveDisplay write SetWaveDisplay;
  132. property StartTime[Nr: integer]: Longint read GetStartTime;
  133. property EndTime[Nr: integer]: Longint read GetEndTime;
  134. property FadeInTime[Nr: integer]: Longint read GetFadeInTime;
  135. property FadeOutTime[Nr: integer]: Longint read GetFadeOutTime;
  136. { some usefull routines for edit mode }
  137. function FadeFindPointAtPos(Nr, X, Y: integer): integer;
  138. procedure FadeSelectAll(Nr: integer; State: Boolean);
  139. procedure FadeSelectRange(Nr: integer; idxA, idxB: integer; State: Boolean);
  140. procedure FadeSelectArea(Nr: integer; Area: TRect; State: Boolean);
  141. procedure FadeQueryPolyMove(Nr: integer; var minX, maxX, minY, maxY: Longint);
  142. procedure FadePolyShift(Nr: integer; DiffX, DiffY: Longint);
  143. function FadeSelectedCount(Nr: integer): integer;
  144. procedure FadeDeleteSelected(Nr: integer);
  145. procedure FadeDeletePoint(Nr,index: integer);
  146. procedure FadeReset(Nr: integer);
  147. procedure FadeClear(Nr: integer);
  148. procedure UpdateFades(Nr: integer);
  149. published
  150. property OnTimeInfo : TMMTimeInfoEvent read FOnTimeInfo write FOnTimeInfo;
  151. property OnVolumeInfo : TMMVolumeInfoEvent read FOnVolumeInfo write FOnVolumeInfo;
  152. property OnDataGenerate: TMMGenerateEvent read FOnDataGenerate write FOnDataGenerate;
  153. property ShowHint;
  154. property ParentShowHint;
  155. property Color default clBlack;
  156. property PopupMenuSample: TPopupMenu read FSamplePopup write FSamplePopup;
  157. property SnapToMarker: Boolean read FSnapToMarker write FSnapToMarker;
  158. property SnapToSample: Boolean read FSnapToSample write FSnapToSample;
  159. property DrawGridX: Boolean read GetDrawGridX write SetDrawGridX;
  160. property GridWidthX: Float read GetGridWidthX write SetGridWidthX;
  161. property WaveForm: Boolean read FWaveForm write SetWaveForm;
  162. property VolumeCurve: Boolean read FVolumeCurve write SetVolumeCurve;
  163. property Spikes: Boolean read FSpikes write SetSpikes;
  164. property Alpin: Boolean read FAlpin write SetAlpin;
  165. property Muted: Boolean read FMuted write SetMuted;
  166. property Solo: Boolean read FSolo write SetSolo;
  167. property Volume: integer index 0 read FVolume write SetVolumes;
  168. property Panning: integer index 1 read FPanning write SetVolumes;
  169. // TODO: was passiert wenn mitten drin die Sample Rate geändert wird ?
  170. property SampleRate: TMMSampleRate read GetSampleRate write SetSampleRate;
  171. property Title: String read FTitle write SetTitle;
  172. property DrawTitle: Boolean read FDrawTitle write SetDrawTitle;
  173. property EditMode: Boolean read FEditMode write SetEditMode;
  174. end;
  175. implementation