home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibylft1.zip / DOC.DAT / DOC / SPCC / MMEDIA.PAS < prev    next >
Pascal/Delphi Source File  |  1997-04-07  |  24KB  |  558 lines

  1. {╔══════════════════════════════════════════════════════════════════════════╗
  2.  ║                                                                          ║
  3.  ║     Sibyl Portable Component Classes                                     ║
  4.  ║                                                                          ║
  5.  ║     Copyright (c) 1995,97 SpeedSoft Germany,   All rights reserved.      ║
  6.  ║                                                                          ║
  7.  ╚══════════════════════════════════════════════════════════════════════════╝}
  8.  
  9. UNIT MMedia;
  10.  
  11.  
  12. INTERFACE
  13.  
  14. {$r MMedia}
  15.  
  16. {$i StdBmpId.Inc}
  17.  
  18. {$IFDEF OS2}
  19. USES Os2Def,BseDos,PmWin,PmBitmap;
  20. {$ENDIF}
  21. {$IFDEF Win95}
  22. USES WinDef,WinBase,WinUser,MMSystem;
  23. {$ENDIF}
  24.  
  25. USES SysUtils,Messages,Classes,Forms,Graphics,StdCtrls,Dialogs,Buttons;
  26.  
  27.  
  28. TYPE
  29.     {$M+}
  30.     TMCIStatus=(mciPaused,mciPlaying,mciRewind,mciStopped,mciRecording,
  31.          mciNothing,mciError);
  32.  
  33.     TMCIDeviceMode=(dmNotReady,dmStopped,dmPlaying,dmSeeking,dmRecording,
  34.          dmPaused,dmOther,dmUnknown);
  35.  
  36.     TMCINotifyEvents=(mciNotifySuperseded,mciNotifyAborted,mciNotifySuccess,
  37.                       mciNotifyError,mciNotifyPositionChange,mciNotifyCuePoint);
  38.  
  39.     TChannel=(chLeft,chRight,chBoth);
  40.  
  41.     TTimeFormat=(tfMilliseconds,tfMMTime,tfMSF,tfTMSF,tfFrames,tfHMS,tfHMSF,tfBytes,tfSamples,
  42.                  tfSMPTE24,tfSMPTE25,tfSMPTE30,tfSP,tfUnknown);
  43.     TTimeFormats=SET OF TTimeFormat;
  44.     {$M-}
  45.  
  46.     TTimeInfo=RECORD
  47.          CASE Format:TTimeFormat OF
  48.            tfMilliSeconds:(MilliSeconds:LONGWORD);
  49.            tfMMTime:(MMTime:LONGWORD);
  50.            tfMSF:(msf_Minutes,msf_Seconds,msf_Frames,msf_Reserved:BYTE);
  51.            tfTMSF:(tmsf_Track,tmsf_Minutes,tmsf_Seconds,tmsf_Frames:BYTE);
  52.            tfFrames:(Frames:LONGWORD);
  53.            tfHMS:(hms_Hours,hms_Minutes,hms_Seconds,hms_reserved:BYTE);
  54.            tfHMSF:(hmsf_Hours,hmsf_Minutes,hmsf_Seconds,hmsf_Frames:BYTE);
  55.            tfBytes:(Bytes:LONGWORD);
  56.            tfSamples:(Samples:LONGWORD);
  57.            tfSMPTE24:(SMPTE24:LONGWORD);
  58.            tfSMPTE25:(SMPTE25:LONGWORD);
  59.            tfSMPTE30:(SMPTE30:LONGWORD);
  60.            tfSP:(SongPointer:LONGWORD);
  61.            tfUnknown:(Unknown:LONGWORD);
  62.     END;
  63.  
  64.     {$M+}
  65.     TMCIPositionChanged=PROCEDURE(Sender:TObject;CONST NewPosition:TTimeInfo) OF OBJECT;
  66.     TMCICuePointReached=PROCEDURE(Sender:TObject;CONST NewPosition:TTimeInfo;CuePointId:LONGWORD) OF OBJECT;
  67.     {$M-}
  68.  
  69.  
  70.     TCueTypes=(cuOutput,cuInput);
  71.  
  72.     TMCIDevice=CLASS(TComponent)
  73.       PRIVATE
  74.          FDeviceOpen:BOOLEAN;
  75.          FAliasName:PSTRING;
  76.          FDeviceName:PSTRING;
  77.          FStatus:TMCIStatus;
  78.          FNotifyStr:STRING[8];
  79.          FNotifyControl:TControl;
  80.          FFileLoaded:BOOLEAN;
  81.          FFileName:PString;
  82.          FFileNameRequired:BOOLEAN;
  83.          FLastMCIReturn:STRING;
  84.          FTimeFormatsAvailable:TTimeFormats;
  85.          FTimeFormat:TTimeFormat;
  86.          FDefaultTimeFormat:TTimeFormat;
  87.          FPositionAdvise:BOOLEAN;
  88.          FPositionAdviseUnits:TTimeInfo;
  89.          FCuePointCount:WORD;
  90.          FOnPlayingCompleted:TNotifyEvent;
  91.          FOnPlayingAborted:TNotifyEvent;
  92.          FOnPositionChanged:TMCIPositionChanged;
  93.          FOnCuePointReached:TMCICuePointReached;
  94.       PRIVATE
  95.          PROCEDURE ShowMCIError(Code:LONGWORD);
  96.          PROCEDURE SetDeviceName(NewName:STRING);
  97.          FUNCTION GetDeviceName:STRING;
  98.          PROCEDURE SetAliasName(NewName:STRING);
  99.          FUNCTION GetAliasName:STRING;
  100.          PROCEDURE SetTimeFormat(NewFormat:TTimeFormat);
  101.          FUNCTION TimeInfoStr(TimeInfo:TTimeInfo;SaveTime:TTimeFormat):STRING;
  102.  
  103.          FUNCTION GetMCIStatusNumber(CONST option:STRING):LONGINT;
  104.          FUNCTION GetMCIStatusBoolean(CONST option:STRING):BOOLEAN;
  105.          FUNCTION GetMCICapBoolean(CONST Option:STRING):BOOLEAN;
  106.          FUNCTION GetMCICapLong(CONST Option:STRING):LONGWORD;
  107.          FUNCTION GetMCITimeInfo(CONST option:STRING):TTimeInfo;
  108.  
  109.          FUNCTION GetChannels:LONGINT;
  110.          FUNCTION GetVolume(Channel:TChannel):LONGINT;
  111.          PROCEDURE SetVolume(Channel:TChannel;NewVolume:LONGINT);
  112.          FUNCTION GetCurrentTrack:LONGINT;
  113.          FUNCTION GetTrackLength(Track:LONGINT):TTimeInfo;
  114.          FUNCTION GetNumberOfTracks:LONGINT;
  115.          FUNCTION GetMediaPresent:BOOLEAN;
  116.          FUNCTION GetDeviceReady:BOOLEAN;
  117.          FUNCTION GetPosition:TTimeInfo;
  118.          FUNCTION GetMediaLength:TTimeInfo;
  119.          FUNCTION GetDeviceMode:TMCIDeviceMode;
  120.          FUNCTION GetDeviceId:LONGWORD;
  121.          PROCEDURE SetPositionAdvise(NewValue:BOOLEAN);
  122.          PROCEDURE SetPositionAdviseUnits(NewUnits:TTimeInfo);
  123.          PROCEDURE SetFileName(CONST NewValue:STRING);
  124.          FUNCTION GetFileName:STRING;
  125.       PROTECTED
  126.          PROCEDURE SetupComponent;OVERRIDE;
  127.          PROCEDURE HandleMCIError(CONST ErrorStr:STRING);VIRTUAL;
  128.          PROCEDURE MCIEvent(Event:TMCINotifyEvents;ulDeviceId,ulNotifyCode,ulUserCode:LONGWORD);VIRTUAL;
  129.          PROCEDURE PositionChanged(CONST NewPosition:TTimeInfo);VIRTUAL;
  130.          PROCEDURE CuePointReached(CONST CuePoint:TTimeInfo;CuePointId:LONGWORD);VIRTUAL;
  131.          PROCEDURE PlayingCompleted;VIRTUAL;
  132.          PROCEDURE PlayingAborted;VIRTUAL;
  133.       PROTECTED
  134.          PROPERTY NotifyControl:TControl read FNotifyControl;
  135.       PUBLIC
  136.          PROCEDURE GetDefaultFileExt(VAR Ext,Description:STRING);VIRTUAL;
  137.          PROCEDURE Load;VIRTUAL;
  138.          PROCEDURE Play;VIRTUAL;
  139.          PROCEDURE Pause;VIRTUAL;
  140.          PROCEDURE Stop;VIRTUAL;
  141.          PROCEDURE Resume;VIRTUAL;
  142.          PROCEDURE StartRecord;VIRTUAL;
  143.          PROCEDURE SeekToStart;VIRTUAL;
  144.          PROCEDURE SeekToEnd;VIRTUAL;
  145.          PROCEDURE Seek(NewPos:TTimeInfo);VIRTUAL;
  146.          PROCEDURE OpenTheDevice;VIRTUAL;
  147.          PROCEDURE CloseTheDevice;VIRTUAL;
  148.          PROCEDURE NextTrack;VIRTUAL;
  149.          PROCEDURE PreviousTrack;VIRTUAL;
  150.          DESTRUCTOR Destroy;OVERRIDE;
  151.          FUNCTION AddCuePoint(CONST CuePoint:TTimeInfo):LONGWORD;
  152.          FUNCTION DeleteCuePoint(CONST CuePoint:TTimeInfo):BOOLEAN;
  153.          FUNCTION SendString(CONST s:STRING;usUserParm:WORD):BOOLEAN;VIRTUAL;
  154.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  155.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  156.          FUNCTION Cue(CueFor:TCueTypes):BOOLEAN;
  157.       PUBLIC
  158.          PROPERTY Status:TMCIStatus read FStatus;
  159.          PROPERTY Channels:LONGINT read GetChannels;
  160.          PROPERTY Volume[Channel:TChannel]:LONGINT read GetVolume write SetVolume;
  161.          PROPERTY TimeFormat:TTimeFormat read FTimeFormat write SetTimeFormat;
  162.          PROPERTY CurrentTrack:LONGINT read GetCurrentTrack;
  163.          PROPERTY TrackLength[Track:LONGINT]:TTimeInfo read GetTrackLength;
  164.          PROPERTY NumberOfTracks:LONGINT read GetNumberOfTracks;
  165.          PROPERTY MediaPresent:BOOLEAN read GetMediaPresent;
  166.          PROPERTY DeviceReady:BOOLEAN read GetDeviceReady;
  167.          PROPERTY Position:TTimeInfo read GetPosition write Seek;
  168.          PROPERTY MediaLength:TTimeInfo read GetMediaLength;
  169.          PROPERTY DeviceMode:TMCIDeviceMode read GetDeviceMode;
  170.          PROPERTY DeviceId:LONGWORD read GetDeviceId;
  171.          PROPERTY PositionAdviseUnits:TTimeInfo read FPositionAdviseUnits write SetPositionAdviseUnits;
  172.          PROPERTY LastMCIReturn:STRING read FLastMCIReturn;
  173.          PROPERTY PositionAdvise:BOOLEAN read FPositionAdvise write SetPositionAdvise;
  174.          PROPERTY TimeFormatsAvailable:TTimeFormats read FTimeFormatsAvailable;
  175.          PROPERTY DefaultTimeFormat:TTimeFormat read FDefaultTimeFormat;
  176.          PROPERTY DeviceOpen:BOOLEAN read FDeviceOpen;
  177.       PUBLISHED
  178.          PROPERTY OnPlayingAborted:TNotifyEvent read FOnPlayingAborted write FOnPlayingAborted;
  179.          PROPERTY OnPlayingCompleted:TNotifyEvent read FOnPlayingCompleted write FOnPlayingCompleted;
  180.          PROPERTY OnPositionChanged:TMCIPositionChanged read FOnPositionChanged write FOnPositionChanged;
  181.          PROPERTY OnCuePointReached:TMCICuePointReached read FOnCuePointReached write FOnCuePointReached;
  182.          PROPERTY FileName:STRING read GetFileName write SetFileName;
  183.          PROPERTY DeviceName:STRING read GetDeviceName write SetDeviceName;
  184.          PROPERTY AliasName:STRING read GetAliasName write SetAliasName;
  185.     END;
  186.  
  187.     TVideoDeviceCapabilities=RECORD
  188.          CanDistort:BOOLEAN;
  189.          CanPlay:BOOLEAN;
  190.          CanProcessInternal:BOOLEAN;
  191.          CanRecord:BOOLEAN;
  192.          CanRecordInsert:BOOLEAN;
  193.          CanSetVolume:BOOLEAN;
  194.          CanStream:BOOLEAN;
  195.          CanStretch:BOOLEAN;
  196.          FastPlayRate:LONGWORD;
  197.          HasAudio:BOOLEAN;
  198.          HasTuner:BOOLEAN;
  199.          HorizontalVideoExtent:LONGWORD;
  200.          HorizontalImageExtent:LONGWORD;
  201.          NormalPlayRate:LONGWORD;
  202.          SlowPlayRate:LONGWORD;
  203.          VerticalImageExtent:LONGWORD;
  204.          VerticalVideoExtent:LONGWORD;
  205.     END;
  206.  
  207.  
  208.     TVideoDevice=CLASS(TMCIDevice)
  209.       PRIVATE
  210.          FVideoWindow:TControl;
  211.       PRIVATE
  212.          FUNCTION GetDeviceCapabilities:TVideoDeviceCapabilities;
  213.          FUNCTION GetBitsPerSample:LONGINT;
  214.          FUNCTION GetImageBitsPerPel:LONGINT;
  215.          FUNCTION GetImagePelFormat:STRING;
  216.          FUNCTION GetBrightness:LONGINT;
  217.          FUNCTION GetContrast:LONGINT;
  218.          FUNCTION GetHue:LONGINT;
  219.          FUNCTION GetClipBoardDataAvail:BOOLEAN;
  220.          FUNCTION GetSaturation:LONGINT;
  221.          FUNCTION GetSamplesPerSec:LONGINT;
  222.          FUNCTION GetTunerTVChannel:LONGINT;
  223.          FUNCTION GetTunerFineTune:LONGINT;
  224.          FUNCTION GetTunerFrequency:LONGINT;
  225.          FUNCTION GetValidSignal:BOOLEAN;
  226.          PROCEDURE SetBrightness(NewValue:LONGINT);
  227.          PROCEDURE SetContrast(NewValue:LONGINT);
  228.          PROCEDURE SetHue(NewValue:LONGINT);
  229.          PROCEDURE SetSaturation(NewValue:LONGINT);
  230.          PROCEDURE SetSamplesPerSec(NewValue:LONGINT);
  231.          PROCEDURE SetTunerTVChannel(NewValue:LONGINT);
  232.          PROCEDURE SetTunerFineTune(NewValue:LONGINT);
  233.          PROCEDURE SetTunerFrequency(NewValue:LONGINT);
  234.       PRIVATE
  235.          PROPERTY DeviceName;
  236.       PROTECTED
  237.          PROCEDURE SetupComponent;OVERRIDE;
  238.          PROCEDURE GetDefaultFileExt(VAR Ext,Description:STRING);OVERRIDE;
  239.       PUBLIC
  240.          PROCEDURE Seek(NewPos:TTimeInfo);OVERRIDE;
  241.          PROCEDURE SeekToStart;OVERRIDE;
  242.          PROCEDURE Load;OVERRIDE;
  243.          PROPERTY DeviceCapabilities:TVideoDeviceCapabilities read GetDeviceCapabilities;
  244.          PROPERTY BitsPerSample:LONGINT read GetBitsPerSample;
  245.          PROPERTY ImageBitsPerPel:LONGINT read GetImageBitsPerPel;
  246.          PROPERTY ImagePelFormat:STRING read GetImagePelFormat;
  247.          PROPERTY Brightness:LONGINT read GetBrightness write SetBrightness;
  248.          PROPERTY Contrast:LONGINT read GetContrast write SetContrast;
  249.          PROPERTY Hue:LONGINT read GetHue write SetHue;
  250.          PROPERTY ClipBoardDataAvail:BOOLEAN read GetClipBoardDataAvail;
  251.          PROPERTY Saturation:LONGINT read GetSaturation write SetSaturation;
  252.          PROPERTY SamplesPerSec:LONGINT read GetSamplesPerSec write SetSamplesPerSec;
  253.          PROPERTY TunerTVChannel:LONGINT read GetTunerTVChannel write SetTunerTVChannel;
  254.          PROPERTY TunerFineTune:LONGINT read GetTunerFineTune write SetTunerFineTune;
  255.          PROPERTY TunerFrequency:LONGINT read GetTunerFrequency write SetTunerFrequency;
  256.          PROPERTY ValidSignal:BOOLEAN read GetValidSignal;
  257.       PUBLIC
  258.          PROPERTY AliasName;
  259.     END;
  260.  
  261.  
  262.     TAudioDeviceCapabilities=RECORD
  263.          CanRecord:BOOLEAN;
  264.          CanSave:BOOLEAN;
  265.          CanSetVolume:BOOLEAN;
  266.     END;
  267.  
  268.     TAudioDevice=CLASS(TMCIDevice)
  269.       PRIVATE
  270.          FUNCTION GetDeviceCapabilities:TAudioDeviceCapabilities;
  271.          FUNCTION GetAlignment:LONGINT;
  272.          FUNCTION GetBitsPerSample:LONGINT;
  273.          FUNCTION GetBytesPerSec:LONGINT;
  274.          FUNCTION GetSamplesPerSec:LONGINT;
  275.          PROCEDURE SetBitsPerSample(NewValue:LONGINT);
  276.          PROCEDURE SetBytesPerSec(NewValue:LONGINT);
  277.          PROCEDURE SetSamplesPerSec(NewValue:LONGINT);
  278.       PRIVATE
  279.          PROPERTY DeviceName;
  280.       PROTECTED
  281.          PROCEDURE SetupComponent;OVERRIDE;
  282.          PROCEDURE GetDefaultFileExt(VAR Ext,Description:STRING);OVERRIDE;
  283.       PUBLIC
  284.          PROPERTY DeviceCapabilities:TAudioDeviceCapabilities read GetDeviceCapabilities;
  285.          PROPERTY Alignment:LONGINT read GetAlignment;
  286.          PROPERTY BitsPerSample:LONGINT read GetBitsPerSample write SetBitsPerSample;
  287.          PROPERTY BytesPerSec:LONGINT read GetBytesPerSec write SetBytesPerSec;
  288.          PROPERTY SamplesPerSec:LONGINT read GetSamplesPerSec write SetSamplesPerSec;
  289.       PUBLIC
  290.          PROPERTY AliasName;
  291.     END;
  292.  
  293.  
  294.     TCDMediaTypes=(mtAudio,mtData,mtOther,mtUnknown);
  295.  
  296.     TCDDeviceCapabilities=RECORD
  297.          CanEject:BOOLEAN;
  298.          CanLockEject:BOOLEAN;
  299.          CanPlay:BOOLEAN;
  300.          CanProcessInternal:BOOLEAN;
  301.          CanSetVolume:BOOLEAN;
  302.          CanStream:BOOLEAN;
  303.     END;
  304.  
  305.     TCDDevice=CLASS(TMCIDevice)
  306.       PRIVATE
  307.          FUNCTION GetTrackChannels(Track:LONGINT):LONGINT;
  308.          FUNCTION GetTrackPosition(Track:LONGINT):TTimeInfo;
  309.          FUNCTION GetPositionInTrack:TTimeInfo;
  310.          FUNCTION GetStartPosition:TTimeInfo;
  311.          FUNCTION GetMediaType:TCDMediaTypes;
  312.          FUNCTION GetTrackType(Track:LONGINT):TCDMediaTypes;
  313.          FUNCTION GetDeviceCapabilities:TCDDeviceCapabilities;
  314.       PRIVATE
  315.          PROPERTY DeviceName;
  316.          PROPERTY FileName;
  317.       PROTECTED
  318.          PROCEDURE SetupComponent;OVERRIDE;
  319.       PUBLIC
  320.          PROCEDURE OpenDoor;VIRTUAL;
  321.          PROCEDURE CloseDoor;VIRTUAL;
  322.          PROCEDURE LockDoor;VIRTUAL;
  323.          PROCEDURE UnlockDoor;VIRTUAL;
  324.          PROCEDURE NextTrack;OVERRIDE;
  325.          PROCEDURE PreviousTrack;OVERRIDE;
  326.       PUBLIC
  327.          PROPERTY TrackChannels[Track:LONGINT]:LONGINT read GetTrackChannels;
  328.          PROPERTY TrackPosition[Track:LONGINT]:TTimeInfo read GetTrackPosition;
  329.          PROPERTY PositionInTrack:TTimeInfo read GetPositionInTrack;
  330.          PROPERTY StartPosition:TTimeInfo read GetStartPosition;
  331.          PROPERTY MediaType:TCDMediaTypes read GetMediaType;
  332.          PROPERTY TrackType[Track:LONGINT]:TCDMediaTypes read GetTrackType;
  333.          PROPERTY DeviceCapabilities:TCDDeviceCapabilities read GetDeviceCapabilities;
  334.          PROPERTY AliasName;
  335.     END;
  336.  
  337.  
  338.     TVideoWindow=CLASS(TControl)
  339.       PRIVATE
  340.          FVideoDevice:TVideoDevice;
  341.          hwndFrame:HWND;
  342.          ulMovieWidth,ulMovieHeight,ulMovieLength:LONGWORD;
  343.          FOnPlayingCompleted:TNotifyEvent;
  344.          FOnPlayingAborted:TNotifyEvent;
  345.          FOnPositionChanged:TMCIPositionChanged;
  346.          FOnCuePointReached:TMCICuePointReached;
  347.       PRIVATE
  348.          FUNCTION DoesFileExist(pszFileName:STRING):BOOLEAN;
  349.          PROCEDURE SetVideoDevice(NewDevice:TVideoDevice);
  350.       PROTECTED
  351.          PROCEDURE SetupComponent;OVERRIDE;
  352.          PROCEDURE PositionChanged(CONST NewPosition:TTimeInfo);VIRTUAL;
  353.          PROCEDURE CuePointReached(CONST CuePoint:TTimeInfo;CuePointId:LONGWORD);VIRTUAL;
  354.          PROCEDURE PlayingCompleted;VIRTUAL;
  355.          PROCEDURE PlayingAborted;VIRTUAL;
  356.          PROCEDURE Notification(AComponent:TComponent;Operation:TOperation);OVERRIDE;
  357.          PROCEDURE MCIEvent(Event:TMCINotifyEvents;ulDeviceId,ulNotifyCode,ulUserCode:LONGWORD);VIRTUAL;
  358.       PUBLIC
  359.          PROCEDURE Redraw(CONST rc:TRect);OVERRIDE;
  360.          PROPERTY XAlign;
  361.          PROPERTY XStretch;
  362.          PROPERTY YAlign;
  363.          PROPERTY YStretch;
  364.       PUBLISHED
  365.          PROPERTY Align;
  366.          PROPERTY DragCursor;
  367.          PROPERTY DragMode;
  368.          PROPERTY Enabled;
  369.          PROPERTY ParentShowHint;
  370.          PROPERTY ShowHint;
  371.          PROPERTY VideoDevice:TVideoDevice read FVideoDevice write SetVideoDevice;
  372.          PROPERTY Visible;
  373.          PROPERTY ZOrder;
  374.  
  375.          PROPERTY OnCanDrag;
  376.          PROPERTY OnCuePointReached:TMCICuePointReached read FOnCuePointReached write FOnCuePointReached;
  377.          PROPERTY OnDragDrop;
  378.          PROPERTY OnDragOver;
  379.          PROPERTY OnEndDrag;
  380.          PROPERTY OnEnter;
  381.          PROPERTY OnExit;
  382.          PROPERTY OnMouseClick;
  383.          PROPERTY OnMouseDblClick;
  384.          PROPERTY OnMouseDown;
  385.          PROPERTY OnMouseMove;
  386.          PROPERTY OnMouseUp;
  387.          PROPERTY OnPlayingAborted:TNotifyEvent read FOnPlayingAborted write FOnPlayingAborted;
  388.          PROPERTY OnPlayingCompleted:TNotifyEvent read FOnPlayingCompleted write FOnPlayingCompleted;
  389.          PROPERTY OnPositionChanged:TMCIPositionChanged read FOnPositionChanged write FOnPositionChanged;
  390.          PROPERTY OnSetupShow;
  391.          PROPERTY OnStartDrag;
  392.     END;
  393.  
  394.     TVolumeControl=CLASS(TControl)
  395.       PRIVATE
  396.          FPosition:BYTE;
  397.          FTimerEndPos:LONGINT;
  398.          FAngleTimer:TTimer;
  399.          FHasCapture:BOOLEAN;
  400.          FOnPositionChanged:TNotifyEvent;
  401.          PROCEDURE DrawSlider;
  402.          PROCEDURE DrawBoxes;
  403.          PROCEDURE SetPosition(NewPosition:BYTE);
  404.          PROCEDURE GetCircleParams(VAR MiddleX,MiddleY,CircleRadius:LONGINT);
  405.          FUNCTION InsideCircle(MiddleX,MiddleY,Radius:LONGINT;CONST pt:TPoint;VAR Angle:LONGINT):BOOLEAN;
  406.          PROCEDURE EvTimer(Sender:TObject);
  407.       PROTECTED
  408.          PROCEDURE SetupComponent;OVERRIDE;
  409.          PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  410.          PROCEDURE MouseUp(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  411.          PROCEDURE MouseMove(ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  412.          PROCEDURE PositionChanged;VIRTUAL;
  413.          PROPERTY Cursor;
  414.       PUBLIC
  415.          PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
  416.          DESTRUCTOR Destroy;OVERRIDE;
  417.          PROPERTY XAlign;
  418.          PROPERTY XStretch;
  419.          PROPERTY YAlign;
  420.          PROPERTY YStretch;
  421.       PUBLISHED
  422.          PROPERTY Align;
  423.          PROPERTY Color;
  424.          PROPERTY PenColor;
  425.          PROPERTY DragCursor;
  426.          PROPERTY DragMode;
  427.          PROPERTY Enabled;
  428.          PROPERTY ParentColor;
  429.          PROPERTY ParentPenColor;
  430.          PROPERTY ParentShowHint;
  431.          PROPERTY Position:BYTE read FPosition write SetPosition;
  432.          PROPERTY ShowHint;
  433.          PROPERTY TabOrder;
  434.          PROPERTY TabStop;
  435.          PROPERTY Visible;
  436.          PROPERTY ZOrder;
  437.  
  438.          PROPERTY OnCanDrag;
  439.          PROPERTY OnDragDrop;
  440.          PROPERTY OnDragOver;
  441.          PROPERTY OnEndDrag;
  442.          PROPERTY OnEnter;
  443.          PROPERTY OnExit;
  444.          //PROPERTY OnMouseClick;
  445.          //PROPERTY OnMouseDblClick;
  446.          //PROPERTY OnMouseDown;
  447.          //PROPERTY OnMouseMove;
  448.          //PROPERTY OnMouseUp;
  449.          PROPERTY OnPositionChanged:TNotifyEvent read FOnPositionChanged write FOnPositionChanged;
  450.          //PROPERTY OnScan;
  451.          PROPERTY OnSetupShow;
  452.          PROPERTY OnStartDrag;
  453.     END;
  454.  
  455.     {$M+}
  456.     TMediaBtn=(btPlay, btPause, btStop, btNext, btPrev, btRecord, btRewind);
  457.     TMediaBtnSet=SET OF TMediaBtn;
  458.  
  459.     TMediaClick=PROCEDURE(Sender:TObject;Button:TMediaBtn) OF OBJECT;
  460.     {$M-}
  461.  
  462.     TMediaPlayer=CLASS(TControl)
  463.       PRIVATE
  464.          FButtons:ARRAY[TMediaBtn] OF TBitBtn;
  465.          FPlayButton:TAnimatedButton;
  466.          FRecordButton:TAnimatedButton;
  467.          FVisibleButtons:TMediaBtnSet;
  468.          FEnabledButtons:TMediaBtnSet;
  469.          FFileName:PString;
  470.          FUseAnimation:BOOLEAN;
  471.          FMCIDevice:TMCIDevice;
  472.          FOpened:BOOLEAN;
  473.          FOnMediaClick:TMediaClick;
  474.          FOnPlayingCompleted:TNotifyEvent;
  475.          FOnPlayingAborted:TNotifyEvent;
  476.          FOnPositionChanged:TMCIPositionChanged;
  477.          FOnCuePointReached:TMCICuePointReached;
  478.          PROCEDURE SetVisibleButtons(NewState:TMediaBtnSet);
  479.          PROCEDURE SetEnabledButtons(NewState:TMediaBtnSet);
  480.          FUNCTION GetFileToPlay:STRING;
  481.          PROCEDURE SetFileToPlay(NewName:STRING);
  482.          PROCEDURE SetMCIDevice(NewDevice:TMCIDevice);
  483.          FUNCTION GetButton(Index:TMediaBtn):TBitBtn;
  484.          PROCEDURE EvButtonClick(Sender:TObject);
  485.       PROTECTED
  486.          PROCEDURE SetupComponent;OVERRIDE;
  487.          PROCEDURE CreateWnd;OVERRIDE;
  488.          PROCEDURE RealignControls;OVERRIDE;
  489.          PROCEDURE CommandEvent(VAR Msg:TWMCommand;VAR Command:TCommand);OVERRIDE;
  490.          PROCEDURE PositionChanged(CONST NewPosition:TTimeInfo);VIRTUAL;
  491.          PROCEDURE CuePointReached(CONST CuePoint:TTimeInfo;CuePointId:LONGWORD);VIRTUAL;
  492.          PROCEDURE PlayingAborted;VIRTUAL;
  493.          PROCEDURE PlayingCompleted;VIRTUAL;
  494.          PROCEDURE Notification(AComponent:TComponent;Operation:TOperation);OVERRIDE;
  495.          PROCEDURE MCIEvent(Event:TMCINotifyEvents;ulDeviceId,ulNotifyCode,ulUserCode:LONGWORD);VIRTUAL;
  496.          PROPERTY Buttons[Index:TMediaBtn]:TBitBtn read GetButton;
  497.          PROPERTY Hint;
  498.          PROPERTY Cursor;
  499.       PUBLIC
  500.          DESTRUCTOR Destroy;OVERRIDE;
  501.          PROCEDURE Open;VIRTUAL;
  502.          PROCEDURE Play;VIRTUAL;
  503.          PROCEDURE StartRecord;VIRTUAL;
  504.          PROCEDURE Stop;VIRTUAL;
  505.          PROCEDURE Pause;VIRTUAL;
  506.          PROCEDURE Close;VIRTUAL;
  507.          PROCEDURE Rewind;VIRTUAL;
  508.          PROCEDURE NextTrack;VIRTUAL;
  509.          PROCEDURE PreviousTrack;VIRTUAL;
  510.          PROPERTY FileToPlay:STRING read GetFileToPlay write SetFileToPlay;
  511.          PROPERTY XAlign;
  512.          PROPERTY XStretch;
  513.          PROPERTY YAlign;
  514.          PROPERTY YStretch;
  515.       PUBLISHED
  516.          PROPERTY Align;
  517.          PROPERTY DragCursor;
  518.          PROPERTY DragMode;
  519.          PROPERTY Enabled;
  520.          PROPERTY EnabledButtons:TMediaBtnSet read FEnabledButtons write SetEnabledButtons;
  521.          PROPERTY MCIDevice:TMCIDevice read FMCIDevice write SetMCIDevice;
  522.          PROPERTY ParentShowHint;
  523.          PROPERTY ShowHint;
  524.          PROPERTY TabOrder;
  525.          PROPERTY TabStop;
  526.          PROPERTY UseAnimation:BOOLEAN read FUseAnimation write FUseAnimation;
  527.          PROPERTY Visible;
  528.          PROPERTY VisibleButtons:TMediaBtnSet read FVisibleButtons write SetVisibleButtons;
  529.          PROPERTY ZOrder;
  530.  
  531.          PROPERTY OnCanDrag;
  532.          PROPERTY OnClick:TMediaClick read FOnMediaClick write FOnMediaClick;
  533.          PROPERTY OnCuePointReached:TMCICuePointReached read FOnCuePointReached write FOnCuePointReached;
  534.          PROPERTY OnDragDrop;
  535.          PROPERTY OnDragOver;
  536.          PROPERTY OnEndDrag;
  537.          PROPERTY OnEnter;
  538.          PROPERTY OnExit;
  539.          //PROPERTY OnMouseMove;
  540.          PROPERTY OnPlayingAborted:TNotifyEvent read FOnPlayingAborted write FOnPlayingAborted;
  541.          PROPERTY OnPlayingCompleted:TNotifyEvent  read FOnPlayingCompleted write FOnPlayingCompleted;
  542.          PROPERTY OnPositionChanged:TMCIPositionChanged read FOnPositionChanged write FOnPositionChanged;
  543.          PROPERTY OnResize;
  544.          PROPERTY OnSetupShow;
  545.          PROPERTY OnStartDrag;
  546.     END;
  547.  
  548.  
  549. FUNCTION TimeFormatToString(tf:TTimeFormat):STRING;
  550. FUNCTION DeviceModeToString(dm:TMCIDeviceMode):STRING;
  551. FUNCTION MediaTypeToString(mt:TCDMediaTypes):STRING;
  552. FUNCTION ConvertTimeFormat(VAR Format:TTimeInfo;NewFormat:TTimeFormat):BOOLEAN;
  553. FUNCTION CompareTimeInfos(TimeInfo1,TimeInfo2:TTimeInfo):LONGINT;
  554. FUNCTION TimeInfoToString(CONST TimeInfo:TTimeInfo):STRING;
  555.  
  556. IMPLEMENTATION
  557.  
  558.