{========================================================================} {= (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