| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- {========================================================================}
- {= (c) 1995-98 SwiftSoft Ronald Dittrich =}
- {========================================================================}
- {= All Rights Reserved =}
- {========================================================================}
- {= D 01099 Dresden = Tel.: +0351-8012255 =}
- {= Loewenstr.7a = info@swiftsoft.de =}
- {========================================================================}
- {= Actual versions on http://www.swiftsoft.de/mmtools.html =}
- {========================================================================}
- {= This code is for reference purposes only and may not be copied or =}
- {= distributed in any format electronic or otherwise except one copy =}
- {= for backup purposes. =}
- {= =}
- {= No Delphi Component Kit or Component individually or in a collection=}
- {= subclassed or otherwise from the code in this unit, or associated =}
- {= .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed =}
- {= without express permission from SwiftSoft. =}
- {= =}
- {= For more licence informations please refer to the associated =}
- {= HelpFile. =}
- {========================================================================}
- {= $Date: 20.01.1998 - 18:00:00 $ =}
- {========================================================================}
- unit MMWPanel;
- {$I COMPILER.INC}
- interface
- uses
- SysUtils,
- Windows,
- Messages,
- Classes,
- Graphics,
- Controls,
- Forms,
- Dialogs,
- ExtCtrls,
- Menus,
- MMObj,
- MMUtils,
- MMMPanel,
- MMWave,
- MMACMSup,
- MMPCMSup,
- MMRegs,
- MMWaveIO,
- MMMulDiv,
- MMDIBCv,
- MMWDisp,
- MMFade,
- MMLoop;
- const
- knob = 10;
- Griff = knob div 2;
- PointSize = 6;
- var
- CanPopUp: Boolean;
- type
- TMMWavePanel = class;
- {-- TMMSample --------------------------------------------------------}
- TMMSample = class(TMMWave) { Sample-Object }
- public
- constructor Create; override;
- destructor Destroy; override;
- function RealSamplesToSamples(aValue: Longint): Longint;
- function SamplesToRealSamples(aValue: Longint): Longint;
- procedure BuildLoop;
- procedure InitPlayFadeList(Playing: Boolean);
- procedure UpdatePlayFadeList;
- procedure Assign(Source: TPersistent); override;
- procedure SetAllTimes(Start, FadeIn, FadeOut, Ende: Longint);
- procedure ShiftSample(Offset: Longint);
- property Owner: TMMWavePanel read FOwner write FOwner;
- property Open: Boolean read FOpen write SetOpen;
- property CanConvert: Boolean read FCanConvert;
- property PlayBackRate: Longint read FPlayRate write FPlayRate;
- property Volume: integer read FVolume write SetVolume;
- property Panning: integer read FPanning write SetPanning;
- property StartTime: Longint read FStartTime write SetStartTime;
- property EndTime: Longint read GetEndTime write SetEndTime;
- property FadeInTime: Longint read FFadeInTime write SetFadeInTime;
- property FadeOutTime: Longint read FFadeOutTime write SetFadeOutTime;
- property PlayFadeList: TMMFadeList read FPlayFadeList;
- property FadeList: TMMFadeList read FFadeList write SetFadeList;
- property LoopList: TMMLoopList read FLoopList write SetLoopList;
- property GroupIndex: Smallint read FGroupIndex write FGroupIndex;
- property Looped: Boolean read GetLooped;
- property Muted: Boolean read FMuted write SetMuted;
- property Selected: Boolean read FSelected write FSelected;
- property Freezed: Boolean read FFreezed write FFreezed;
- property Title: string read FTitle write FTitle;
- property WaveForm: Boolean read FWaveForm write SetWaveForm;
- end;
- TMMSampleShift = (smNone,
- smAll,
- smStart,
- smStartFadeIn,
- smFadeIn,
- smFadeInOut,
- smFadeOut,
- smFadeOutEnd,
- smEnd,
- smPolyMove,
- smCrossFade);
- {-- TMMWavePanel ------------------------------------------------------}
- TMMWavePanel = class(TMMMediaPanel)
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Clear; override;
- procedure SelectItem(Nr: integer; State: Boolean); override;
- procedure SelectGroup(Index : integer; State: Boolean); override;
- procedure SelectAll(State: Boolean; Ignore: integer); override;
- procedure SelectRange(min, max: longint); override;
- procedure SelectRangeFinal(min, max: longint); override;
- procedure GetMaxShiftRange(Nr: integer; var lo, hi: Longint);
- procedure QueryPolyMove(var cnt: integer; var dmin,dmax: longint); override;
- procedure PolyShift(Diff: longint); override;
- function IsGridX(X: integer; var Value: Longint): Boolean; override;
- function AddSample(Sample: TMMSample): Boolean;
- procedure DeleteItem(Nr : integer); override;
- procedure DelSample(Nr: integer);
- function LocateSample(T: Longint): integer;
- function FindSample(T: Longint): integer;
- function QuerySample(Sample: TMMSample): Boolean;
- procedure PaintOneSample(Sample: TMMSample);
- procedure PaintTrack(min, max: longint);
- property Count: integer read GetCount;
- property Sample[Nr: integer]: TMMSample read GetSample;
- property Mute[Nr: integer]: Boolean read GetMute write SetMute;
- property WaveDisplay[Nr: integer]: Boolean read GetWaveDisplay write SetWaveDisplay;
- property StartTime[Nr: integer]: Longint read GetStartTime;
- property EndTime[Nr: integer]: Longint read GetEndTime;
- property FadeInTime[Nr: integer]: Longint read GetFadeInTime;
- property FadeOutTime[Nr: integer]: Longint read GetFadeOutTime;
- { some usefull routines for edit mode }
- function FadeFindPointAtPos(Nr, X, Y: integer): integer;
- procedure FadeSelectAll(Nr: integer; State: Boolean);
- procedure FadeSelectRange(Nr: integer; idxA, idxB: integer; State: Boolean);
- procedure FadeSelectArea(Nr: integer; Area: TRect; State: Boolean);
- procedure FadeQueryPolyMove(Nr: integer; var minX, maxX, minY, maxY: Longint);
- procedure FadePolyShift(Nr: integer; DiffX, DiffY: Longint);
- function FadeSelectedCount(Nr: integer): integer;
- procedure FadeDeleteSelected(Nr: integer);
- procedure FadeDeletePoint(Nr,index: integer);
- procedure FadeReset(Nr: integer);
- procedure FadeClear(Nr: integer);
- procedure UpdateFades(Nr: integer);
- published
- property OnTimeInfo : TMMTimeInfoEvent read FOnTimeInfo write FOnTimeInfo;
- property OnVolumeInfo : TMMVolumeInfoEvent read FOnVolumeInfo write FOnVolumeInfo;
- property OnDataGenerate: TMMGenerateEvent read FOnDataGenerate write FOnDataGenerate;
- property ShowHint;
- property ParentShowHint;
- property Color default clBlack;
- property PopupMenuSample: TPopupMenu read FSamplePopup write FSamplePopup;
- property SnapToMarker: Boolean read FSnapToMarker write FSnapToMarker;
- property SnapToSample: Boolean read FSnapToSample write FSnapToSample;
- property DrawGridX: Boolean read GetDrawGridX write SetDrawGridX;
- property GridWidthX: Float read GetGridWidthX write SetGridWidthX;
- property WaveForm: Boolean read FWaveForm write SetWaveForm;
- property VolumeCurve: Boolean read FVolumeCurve write SetVolumeCurve;
- property Spikes: Boolean read FSpikes write SetSpikes;
- property Alpin: Boolean read FAlpin write SetAlpin;
- property Muted: Boolean read FMuted write SetMuted;
- property Solo: Boolean read FSolo write SetSolo;
- property Volume: integer index 0 read FVolume write SetVolumes;
- property Panning: integer index 1 read FPanning write SetVolumes;
- // TODO: was passiert wenn mitten drin die Sample Rate geändert wird ?
- property SampleRate: TMMSampleRate read GetSampleRate write SetSampleRate;
- property Title: String read FTitle write SetTitle;
- property DrawTitle: Boolean read FDrawTitle write SetDrawTitle;
- property EditMode: Boolean read FEditMode write SetEditMode;
- end;
- implementation
|