mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-18 05:42:30 +02:00
* mmtk directory corrected to lowercase
This commit is contained in:
parent
4fadaff606
commit
302a815e70
File diff suppressed because it is too large
Load Diff
@ -1,25 +0,0 @@
|
|||||||
#
|
|
||||||
# Makefile.fpc for the Multimedia Toolkit (interface units for MMPM)
|
|
||||||
#
|
|
||||||
|
|
||||||
[package]
|
|
||||||
name=mmtk
|
|
||||||
version=1.0.6
|
|
||||||
|
|
||||||
[target]
|
|
||||||
units=mmbase sw dive mci mciapi mcidrv mmio
|
|
||||||
|
|
||||||
exampledirs=tests
|
|
||||||
|
|
||||||
[install]
|
|
||||||
fpcpackage=y
|
|
||||||
|
|
||||||
[default]
|
|
||||||
fpcdir=../../../..
|
|
||||||
|
|
||||||
[rules]
|
|
||||||
dive$(PPUEXT) : dive.pas mmbase$(PPUEXT)
|
|
||||||
|
|
||||||
mci$(PPUEXT) : mci.pas mmbase$(PPUEXT)
|
|
||||||
|
|
||||||
mmio$(PPUEXT) : mmio.pas mmbase$(PPUEXT)
|
|
@ -1,17 +0,0 @@
|
|||||||
Unit Buildall;
|
|
||||||
|
|
||||||
Interface
|
|
||||||
|
|
||||||
Uses
|
|
||||||
sw,
|
|
||||||
mmbase,
|
|
||||||
dive,
|
|
||||||
hwvideo,
|
|
||||||
mci,
|
|
||||||
mciapi,
|
|
||||||
mcidrv,
|
|
||||||
mmio;
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
|
|
||||||
End.
|
|
@ -1,335 +0,0 @@
|
|||||||
{****************************************************************************
|
|
||||||
|
|
||||||
$Id$
|
|
||||||
|
|
||||||
DIVE interface unit
|
|
||||||
FPC Pascal Runtime Library for OS/2
|
|
||||||
Copyright (c) 1999-2000 by Karoly Balogh (aka Charlie/INQ)
|
|
||||||
|
|
||||||
The FPC Pascal runtime library is distributed under the Library GNU Public
|
|
||||||
License v2. So is this unit. The Library GNU Public License requires you to
|
|
||||||
distribute the source code of this unit with any product that uses it.
|
|
||||||
Because the EMX library isn't under the LGPL, we grant you an exception to
|
|
||||||
this, and that is, when you compile a program with the Free Pascal Compiler,
|
|
||||||
you do not need to ship source code with that program, AS LONG AS YOU ARE
|
|
||||||
USING UNMODIFIED CODE! If you modify this code, you MUST change the next
|
|
||||||
line:
|
|
||||||
|
|
||||||
<This an official, unmodified Free Pascal source code file.>
|
|
||||||
|
|
||||||
Send us your modified files, we can work together if you want!
|
|
||||||
|
|
||||||
Free Pascal is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
Library GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the Library GNU General Public License
|
|
||||||
along with Free Pascal; see the file COPYING.LIB. If not, write to
|
|
||||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
****************************************************************************}
|
|
||||||
|
|
||||||
Unit DIVE;
|
|
||||||
|
|
||||||
{Warning: This code is alfa. Future versions of this unit will propably
|
|
||||||
not be compatible.}
|
|
||||||
|
|
||||||
Interface
|
|
||||||
|
|
||||||
Uses OS2Def, PMWin, MMBase;
|
|
||||||
|
|
||||||
Const Max_Dive_Instances = 64;
|
|
||||||
|
|
||||||
DIVE_Success = $00000000;
|
|
||||||
DIVE_Err_Invalid_Instance = $00001000;
|
|
||||||
DIVE_Err_Source_Format = $00001001;
|
|
||||||
DIVE_Err_Destination_Format = $00001002;
|
|
||||||
DIVE_Err_Blitter_Not_Setup = $00001003;
|
|
||||||
DIVE_Err_Insufficient_Length = $00001004;
|
|
||||||
DIVE_Err_Too_Many_Instances = $00001005;
|
|
||||||
DIVE_Err_No_Direct_Access = $00001006;
|
|
||||||
DIVE_Err_Not_Bank_Switched = $00001007;
|
|
||||||
DIVE_Err_Invalid_Bank_Number = $00001008;
|
|
||||||
DIVE_Err_FB_Not_Acquired = $00001009;
|
|
||||||
DIVE_Err_FB_Already_Acquired = $0000100A;
|
|
||||||
DIVE_Err_Acquire_Failed = $0000100B;
|
|
||||||
DIVE_Err_Bank_Switch_Failed = $0000100C;
|
|
||||||
DIVE_Err_Deacquire_Failed = $0000100D;
|
|
||||||
DIVE_Err_Invalid_Palette = $0000100E;
|
|
||||||
DIVE_Err_Invalid_Destination_RECTL = $0000100F;
|
|
||||||
DIVE_Err_Invalid_Buffer_Number = $00001010;
|
|
||||||
DIVE_Err_SSMDD_Not_Installed = $00001011;
|
|
||||||
DIVE_Err_Buffer_Already_Accessed = $00001012;
|
|
||||||
DIVE_Err_Buffer_Not_Accessed = $00001013;
|
|
||||||
DIVE_Err_Too_Many_Bufffers = $00001014;
|
|
||||||
DIVE_Err_Allocation_Error = $00001015;
|
|
||||||
DIVE_Err_Invalid_Linesize = $00001016;
|
|
||||||
DIVE_Err_Fatal_Exception = $00001017;
|
|
||||||
DIVE_Err_Invalid_Conversion = $00001018;
|
|
||||||
DIVE_Err_VSD_Error = $00001019;
|
|
||||||
DIVE_Err_Color_Support = $0000101A;
|
|
||||||
DIVE_Err_Out_Of_Range = $0000101B;
|
|
||||||
DIVE_Warn_No_Size = $00001100;
|
|
||||||
|
|
||||||
DIVE_Buffer_Screen = $00000000;
|
|
||||||
DIVE_Buffer_Graphics_Plane = $00000001;
|
|
||||||
DIVE_Buffer_Alternate_Plane = $00000002;
|
|
||||||
|
|
||||||
DIVE_Fully_Visible = $FFFFFFFF;
|
|
||||||
|
|
||||||
{ * Use either of the two defines as the bRGB2Entries pointer to have DIVE * }
|
|
||||||
{ * query and set the physical or default palette as source or destination. * }
|
|
||||||
|
|
||||||
DIVE_Palette_Physical = $00000000;
|
|
||||||
DIVE_Palette_Default = $FFFFFFFF;
|
|
||||||
|
|
||||||
Type HDIVE = cardinal;
|
|
||||||
|
|
||||||
{ * Blitter setup structures * }
|
|
||||||
TSetup_Blitter = Record
|
|
||||||
ulStructLen : cardinal; { * ulStructLen tells how much of the structure is used. * }
|
|
||||||
{ * Comments here show appropriate values, so don't count ;) * }
|
|
||||||
|
|
||||||
fInvert : cardinal; { * Image is inverted on blit * }
|
|
||||||
{ * fInvert use: * }
|
|
||||||
{ * %0001 = 01 = $01 horizontal flip * }
|
|
||||||
{ * %0010 = 02 = $02 vertical flip * }
|
|
||||||
|
|
||||||
{ * This is the mark for 8 bytes * }
|
|
||||||
|
|
||||||
fccSrcColorFormat : FourCC; { * Source data format * }
|
|
||||||
ulSrcWidth : cardinal; { * Width in pels * }
|
|
||||||
ulSrcHeight : cardinal; { * Height in pels * }
|
|
||||||
{ * The following are for displaying a sub-portion of the image. * }
|
|
||||||
ulSrcPosX : cardinal; { * X Position of source data * }
|
|
||||||
ulSrcPosY : cardinal; { * Y Position of source data * }
|
|
||||||
|
|
||||||
{ * This is the mark for 28 bytes * }
|
|
||||||
|
|
||||||
ulDitherType : cardinal; { * Dither type * }
|
|
||||||
|
|
||||||
{ * 32 byte mark * }
|
|
||||||
|
|
||||||
fccDstColorFormat : FourCC; { * Destination color format * }
|
|
||||||
ulDstWidth : cardinal; { * Destination width in pels * }
|
|
||||||
ulDstHeight : cardinal; { * Destination height in pels * }
|
|
||||||
lDstPosX : LongInt;
|
|
||||||
lDstPosY : LongInt;
|
|
||||||
|
|
||||||
{ * 52 byte mark * }
|
|
||||||
|
|
||||||
lScreenPosX : LongInt;
|
|
||||||
lScreenPosY : LongInt;
|
|
||||||
|
|
||||||
{ * 60 byte mark * }
|
|
||||||
|
|
||||||
ulNumDstRects : cardinal;
|
|
||||||
pVisDstRects : PRectl; { * This is a pointer to an array of visible rectangles. * }
|
|
||||||
|
|
||||||
{ * 68 bytes = fully used * }
|
|
||||||
End;
|
|
||||||
|
|
||||||
PSetup_Blitter = ^TSetup_Blitter;
|
|
||||||
|
|
||||||
{ * Stuff for DiveQueryCaps() * }
|
|
||||||
TDIVE_CAPS = Record
|
|
||||||
ulStructLen : cardinal; { * SizeOf(TDIVE_CAPS) * }
|
|
||||||
ulPlaneCount : cardinal; { * Number of defined planes * }
|
|
||||||
|
|
||||||
{ * Following info applies to ulPlaneID * }
|
|
||||||
fScreenDirect : Boolean; { * Direct screen access (was type BOOL in C) * }
|
|
||||||
fBankSwitched : Boolean; { * VRAM bank-switched? (was type BOOL in C) * }
|
|
||||||
ulDepth : cardinal; { * Number of bits per pixel * }
|
|
||||||
ulHorizontalResolution : cardinal;
|
|
||||||
ulVerticalResolution : cardinal;
|
|
||||||
ulScanLineBytes : cardinal;
|
|
||||||
fccColorEncoding : FourCC;
|
|
||||||
ulApertureSize : cardinal;
|
|
||||||
|
|
||||||
ulInputFormats : cardinal; { * Number of input color formats * }
|
|
||||||
ulOutputFormats : cardinal;
|
|
||||||
ulFormatLength : cardinal; { * Length of format buffer * }
|
|
||||||
pFormatData : Pointer; { * Pointer to format buffer of FOURCC's * }
|
|
||||||
End;
|
|
||||||
|
|
||||||
PDIVE_CAPS = ^TDIVE_CAPS;
|
|
||||||
|
|
||||||
Function DiveQueryCaps(DiveCaps: PDIVE_CAPS; ulPlaneBufNum : cardinal) : cardinal; cdecl;
|
|
||||||
|
|
||||||
Function DiveOpen(Var phDiveInst : cardinal; fNonScreenInstance : cardinal;
|
|
||||||
Var ppFrameBuffer : Pointer) : cardinal; cdecl;
|
|
||||||
Function DiveClose(hDiveInst : cardinal) : cardinal; cdecl;
|
|
||||||
|
|
||||||
Function DiveSetupBlitter(hDiveInst : cardinal; pSetupBlitter : PSetup_Blitter) : cardinal; cdecl;
|
|
||||||
Function DiveBlitImage(hDiveInst : cardinal; ulSrcBufNumber : cardinal; ulDstBufNumber : cardinal) : cardinal; cdecl;
|
|
||||||
|
|
||||||
Function DiveAcquireFrameBuffer(hDiveInst : cardinal; prectlDst : PRectl) : cardinal; cdecl;
|
|
||||||
Function DiveDeacquireFrameBuffer(hDiveInst : cardinal) : cardinal; cdecl;
|
|
||||||
Function DiveCalcFrameBufferAddress(hDiveInst : cardinal;
|
|
||||||
prectlDest : PRectl;
|
|
||||||
Var pDestinationAddress : Pointer;
|
|
||||||
Var ulBankNumber : cardinal;
|
|
||||||
Var ulRemLinesInBank : cardinal) : cardinal; cdecl;
|
|
||||||
Function DiveSwitchBank(hDiveInst : cardinal; ulBankNumber : cardinal) : cardinal; cdecl;
|
|
||||||
|
|
||||||
{ Notes on DiveAllocImageBuffer:
|
|
||||||
If pbImageBuffer is not NULL, the buffer is associated rather than
|
|
||||||
allocated. If pbImageBuffer is not NULL and the buffer number
|
|
||||||
pointed to by pulBufferNumber is non-zero, a new buffer pointer is
|
|
||||||
associated with the buffer number. Even though no memory is
|
|
||||||
allocated by DiveAllocImageBuffer when user-allocated buffers are
|
|
||||||
associated, DiveFreeImageBuffer should be called to release the
|
|
||||||
buffer association to avoid using up available buffer indexes.
|
|
||||||
The specified line size will be used if a buffer is allocated in
|
|
||||||
system memory, or if a user buffer is associated. If the
|
|
||||||
specified line size is zero, the allocated line size is rounded up
|
|
||||||
to the nearest DWORD boundry. }
|
|
||||||
|
|
||||||
Function DiveAllocImageBuffer(hDiveInst : cardinal;
|
|
||||||
Var ulBufferNumber : cardinal;
|
|
||||||
fccColorSpace : FourCC;
|
|
||||||
ulWidth : cardinal;
|
|
||||||
ulHeight : cardinal;
|
|
||||||
ulLineSizeBytes : cardinal;
|
|
||||||
Var bImageBuffer : Pointer) : cardinal; cdecl;
|
|
||||||
Function DiveFreeImageBuffer(hDiveInst : cardinal; ulBufferNumber : cardinal) : cardinal; cdecl;
|
|
||||||
|
|
||||||
Function DiveBeginImageBufferAccess(hDiveInst : cardinal;
|
|
||||||
ulBufferNumber : cardinal;
|
|
||||||
Var pbImageBuffer : Pointer;
|
|
||||||
Var ulBufferScanLineBytes : cardinal;
|
|
||||||
Var ulBufferScanLines : cardinal) : cardinal; cdecl;
|
|
||||||
Function DiveEndImageBufferAccess(hDiveInst : cardinal; ulBufferNumber : cardinal) : cardinal; cdecl;
|
|
||||||
|
|
||||||
|
|
||||||
{/* Notes on palettes:
|
|
||||||
Neither DiveSetSourcePalette nor DiveSetDestinationPalette API's will set
|
|
||||||
the physical palette. If your application MUST set the PHYSICAL palette,
|
|
||||||
try using no more than 236 entries (the middle 236: 10-245, thus leaving
|
|
||||||
the top and bottom 10 entries for the Workplace Shell). If your
|
|
||||||
application MUST use ALL 256 entries, it must do so as a full-screen
|
|
||||||
(i.e. maximized) application. Remember, No WM_REALIZEPALETTE message
|
|
||||||
will be sent to other running applications, meaning they will not redraw
|
|
||||||
and their colors will be all wrong. It is not recommended that a
|
|
||||||
developer use these commands:
|
|
||||||
|
|
||||||
To set physical palette, do the following:
|
|
||||||
hps = WinGetPS ( HWND_DESKTOP );
|
|
||||||
hdc = GpiQueryDevice ( hps );
|
|
||||||
GpiCreateLogColorTable ( hps, LCOL_PURECOLOR | LCOL_REALIZABLE,
|
|
||||||
LCOLF_CONSECRGB, 0, 256, (PLONG)plRGB2Entries );
|
|
||||||
Gre32EntrY3 ( hdc, 0L, 0x000060C6L );
|
|
||||||
WinInvalidateRect ( HWND_DESKTOP, (PRECTL)NULL, TRUE );
|
|
||||||
WinReleasePS ( hps );
|
|
||||||
|
|
||||||
To reset physical palette, do the following:
|
|
||||||
hps = WinGetPS ( HWND_DESKTOP );
|
|
||||||
hdc = GpiQueryDevice ( hps );
|
|
||||||
Gre32EntrY3 ( hdc, 0L, 0x000060C7L );
|
|
||||||
WinInvalidateRect ( HWND_DESKTOP, (PRECTL)NULL, TRUE );
|
|
||||||
WinReleasePS ( hps );
|
|
||||||
*/}
|
|
||||||
|
|
||||||
Function DiveSetDestinationPalette(hDiveInst : cardinal;
|
|
||||||
ulStartIndex : cardinal;
|
|
||||||
ulNumEntries : cardinal;
|
|
||||||
Var bRGB2Entries : Pointer) : cardinal; cdecl;
|
|
||||||
|
|
||||||
Function DiveSetSourcePalette(hDiveInst : cardinal;
|
|
||||||
ulStartIndex : cardinal;
|
|
||||||
ulNumEntries : cardinal;
|
|
||||||
Var bRGB2Entries : Pointer) : cardinal; cdecl;
|
|
||||||
|
|
||||||
Function DiveSetTransparentBlitMode(hDiveInst : cardinal;
|
|
||||||
ulStartIndex : cardinal;
|
|
||||||
ulValue1 : cardinal;
|
|
||||||
ulValue2 : cardinal) : cardinal; cdecl;
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
|
|
||||||
Function DiveQueryCaps(DiveCaps : PDIVE_CAPS; ulPlaneBufNum : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 1;
|
|
||||||
|
|
||||||
Function DiveOpen(Var phDiveInst : cardinal; fNonScreenInstance : cardinal; Var ppFrameBuffer : Pointer) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 2;
|
|
||||||
|
|
||||||
Function DiveClose(hDiveInst : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 3;
|
|
||||||
|
|
||||||
Function DiveSetupBlitter(hDiveInst : cardinal; pSetupBlitter : PSetup_Blitter) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 4;
|
|
||||||
|
|
||||||
Function DiveBlitImage(hDiveInst : cardinal; ulSrcBufNumber : cardinal; ulDstBufNumber : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 5;
|
|
||||||
|
|
||||||
Function DiveAcquireFrameBuffer(hDiveInst : cardinal; prectlDst : PRectl) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 6;
|
|
||||||
|
|
||||||
Function DiveDeacquireFrameBuffer(hDiveInst : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 8;
|
|
||||||
|
|
||||||
Function DiveCalcFrameBufferAddress(hDiveInst : cardinal;
|
|
||||||
prectlDest : PRectl;
|
|
||||||
Var pDestinationAddress : Pointer;
|
|
||||||
Var ulBankNumber : cardinal;
|
|
||||||
Var ulRemLinesInBank : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 11;
|
|
||||||
|
|
||||||
Function DiveSwitchBank(hDiveInst : cardinal; ulBankNumber : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 7;
|
|
||||||
|
|
||||||
|
|
||||||
Function DiveAllocImageBuffer(hDiveInst : cardinal;
|
|
||||||
Var ulBufferNumber : cardinal;
|
|
||||||
fccColorSpace : FourCC;
|
|
||||||
ulWidth : cardinal;
|
|
||||||
ulHeight : cardinal;
|
|
||||||
ulLineSizeBytes : cardinal;
|
|
||||||
Var bImageBuffer : Pointer) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 12;
|
|
||||||
|
|
||||||
Function DiveFreeImageBuffer(hDiveInst : cardinal;
|
|
||||||
ulBufferNumber : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 13;
|
|
||||||
|
|
||||||
Function DiveBeginImageBufferAccess(hDiveInst : cardinal;
|
|
||||||
ulBufferNumber : cardinal;
|
|
||||||
Var pbImageBuffer : Pointer;
|
|
||||||
Var ulBufferScanLineBytes : cardinal;
|
|
||||||
Var ulBufferScanLines : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 14;
|
|
||||||
|
|
||||||
Function DiveEndImageBufferAccess(hDiveInst : cardinal; ulBufferNumber : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 15;
|
|
||||||
|
|
||||||
Function DiveSetDestinationPalette(hDiveInst : cardinal;
|
|
||||||
ulStartIndex : cardinal;
|
|
||||||
ulNumEntries : cardinal;
|
|
||||||
Var bRGB2Entries : Pointer) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 9;
|
|
||||||
|
|
||||||
Function DiveSetSourcePalette(hDiveInst : cardinal;
|
|
||||||
ulStartIndex : cardinal;
|
|
||||||
ulNumEntries : cardinal;
|
|
||||||
Var bRGB2Entries : Pointer) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 10;
|
|
||||||
|
|
||||||
Function DiveSetTransparentBlitMode(hDiveInst : cardinal;
|
|
||||||
ulStartIndex : cardinal;
|
|
||||||
ulValue1 : cardinal;
|
|
||||||
ulValue2 : cardinal) : cardinal; cdecl;
|
|
||||||
External 'DIVE' Index 18;
|
|
||||||
|
|
||||||
End.
|
|
||||||
|
|
||||||
{
|
|
||||||
$Log$
|
|
||||||
Revision 1.1 2003-02-15 16:59:09 hajny
|
|
||||||
* mmtk directory corrected to lowercase
|
|
||||||
|
|
||||||
Revision 1.1 2003/02/09 13:49:06 hajny
|
|
||||||
+ mmtk added
|
|
||||||
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
@ -1,134 +0,0 @@
|
|||||||
{
|
|
||||||
$Id$
|
|
||||||
Copyright (c) 1992, 1993 by International Business Machines Corporation
|
|
||||||
Copyright (c) 2002 by Andry Svirgunov (cool2@ngs.ru)
|
|
||||||
Copyright (c) 2002-2003 by Yuri Prokushev (prokushev@freemail.ru)
|
|
||||||
|
|
||||||
High-Level MCI Interfaces of OS/2 Multimedia subsystem
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU Library General Public License (LGPL) as
|
|
||||||
published by the Free Software Foundation; either version 2 of the
|
|
||||||
License, or (at your option) any later version. This program is
|
|
||||||
distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU Library General Public License for more details. You should
|
|
||||||
have received a copy of the GNU Library General Public License along
|
|
||||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
**********************************************************************}
|
|
||||||
|
|
||||||
{
|
|
||||||
@abstract(High-Level MCI Interfaces of OS/2 Multimedia subsystem)
|
|
||||||
@author(Andry Svirgunov (cool2@ngs.ru))
|
|
||||||
@author(Yuri Prokushev (prokushev@freemail.ru))
|
|
||||||
@created(01 Oct 2002)
|
|
||||||
@lastmod(19 Jan 2003)
|
|
||||||
This is the High-Level Macro Service API Routines of OS/2 Multimedia subsystem.
|
|
||||||
All functions are from MCIAPI dll (which also contains REXX functions.
|
|
||||||
See "Multimedia with REXX" for more information.).
|
|
||||||
Warning: This code is alfa. Future versions of this unit will propably
|
|
||||||
not be compatible.
|
|
||||||
}
|
|
||||||
Unit mciapi;
|
|
||||||
|
|
||||||
{$MODE ObjFPC}
|
|
||||||
|
|
||||||
Interface
|
|
||||||
|
|
||||||
// Flags for mciPlayFile
|
|
||||||
Const
|
|
||||||
// digital and overlay
|
|
||||||
MCI_OWNERISPARENT = $0001;
|
|
||||||
// stop playing whatever is playing
|
|
||||||
MCI_STOPACTIVE = $0002;
|
|
||||||
// play and return immediately
|
|
||||||
MCI_ASYNCRENDEZVOUS = $0004;
|
|
||||||
// wait til prev is finished then play
|
|
||||||
MCI_RENDEZVOUS = $0008;
|
|
||||||
// no syncup will be done
|
|
||||||
MCI_ASYNC = $0010;
|
|
||||||
|
|
||||||
{
|
|
||||||
This function plays a multimedia data file (video, audio) using MCI commands.
|
|
||||||
hwndOwner is handle of owner window. If hwndOwner equial to zero used active
|
|
||||||
window.
|
|
||||||
pszFile is pointer to asciiz name of data file. For compound files can be
|
|
||||||
used 'filename+element'.
|
|
||||||
ulFlags is MCI_* flags.
|
|
||||||
pszTitle is title of generated window (e.g. for video). Ignored if not generated.
|
|
||||||
hwndViewport is handle of window for displaying video. If none, then default
|
|
||||||
window displayed.
|
|
||||||
}
|
|
||||||
Function mciPlayFile(hwndOwner: Cardinal; // Ownerwindow
|
|
||||||
pszFile: PChar; // File
|
|
||||||
ulFlags: Cardinal; // Flags
|
|
||||||
pszTitle: PChar; // Title
|
|
||||||
hwndViewport: Cardinal): // Viewport Window
|
|
||||||
Cardinal; cdecl;
|
|
||||||
|
|
||||||
Function mciPlayResource(hwndOwner: Cardinal; // Owner Window
|
|
||||||
hmod: LongInt; // Module
|
|
||||||
resType: LongInt; // Resource Type
|
|
||||||
resID: LongInt; // Resource ID
|
|
||||||
ulFlags: Cardinal; // Flags
|
|
||||||
pszTitle: PChar; // Title
|
|
||||||
hwndViewport: Cardinal): // Viewport Window
|
|
||||||
Cardinal; cdecl;
|
|
||||||
|
|
||||||
Function mciRecordAudioFile(hwndOwner: Cardinal;
|
|
||||||
pszFile,
|
|
||||||
pszTitle: PChar;
|
|
||||||
ulFlags: Cardinal):
|
|
||||||
Cardinal; cdecl;
|
|
||||||
|
|
||||||
// Audio Macro Service Constants and Routines
|
|
||||||
|
|
||||||
Const
|
|
||||||
MMIO_FE_FINDFIRST = 1;
|
|
||||||
MMIO_FE_FINDNEXT = 2;
|
|
||||||
MMIO_FE_FINDEND = 3;
|
|
||||||
MMIO_FE_FINDELEMENT = 4;
|
|
||||||
|
|
||||||
MMIO_RE_COMPACT = 1;
|
|
||||||
|
|
||||||
Function mmioRemoveElement(pszFileElement: pChar;
|
|
||||||
ulFlag: LongInt):
|
|
||||||
Cardinal; cdecl;
|
|
||||||
|
|
||||||
Function mmioFindElement(ulCode: LongInt; // Find Code
|
|
||||||
pszElement: PChar; // Element
|
|
||||||
ulElementLen: LongInt; // Element Buffer Length
|
|
||||||
pszFile: PChar;
|
|
||||||
ulReserved: LongInt): // Compound File
|
|
||||||
Cardinal; cdecl;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
|
|
||||||
Function mciPlayFile(hwndOwner: Cardinal; pszFile: PChar; ulFlags: Cardinal; pszTitle: PChar; hwndViewport: Cardinal): Cardinal; cdecl;
|
|
||||||
external 'MCIAPI' index 10;
|
|
||||||
Function mciPlayResource(hwndOwner: Cardinal; hmod: LongInt; resType: LongInt; resID: LongInt; ulFlags: Cardinal; pszTitle: PChar; hwndViewport: Cardinal): Cardinal; cdecl;
|
|
||||||
external 'MCIAPI' index 11;
|
|
||||||
Function mciRecordAudioFile(hwndOwner: Cardinal; pszFile, pszTitle: PChar; ulFlags: Cardinal): Cardinal; cdecl;
|
|
||||||
external 'MCIAPI' index 12;
|
|
||||||
Function mmioRemoveElement(pszFileElement: PChar; ulFlag: LongInt): Cardinal; cdecl;
|
|
||||||
external 'MCIAPI' index 16;
|
|
||||||
Function mmioFindElement(ulCode: LongInt; pszElement: PChar; ulElementLen: LongInt; pszFile: PChar; ulReserved: LongInt): Cardinal; cdecl;
|
|
||||||
external 'MCIAPI' index 18;
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
||||||
{
|
|
||||||
$Log$
|
|
||||||
Revision 1.1 2003-02-15 16:59:09 hajny
|
|
||||||
* mmtk directory corrected to lowercase
|
|
||||||
|
|
||||||
Revision 1.1 2003/02/09 13:49:06 hajny
|
|
||||||
+ mmtk added
|
|
||||||
|
|
||||||
}
|
|
@ -1,369 +0,0 @@
|
|||||||
{
|
|
||||||
$Id$
|
|
||||||
Copyright (c) 1991, 1992 by International Business Machines Corporation
|
|
||||||
Copyright (c) 2002 by Andry Svirgunov (cool2@ngs.ru)
|
|
||||||
Copyright (c) 2002-2003 by Yuri Prokushev (prokushev@freemail.ru)
|
|
||||||
|
|
||||||
MCI drivers interface
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU Library General Public License (LGPL) as
|
|
||||||
published by the Free Software Foundation; either version 2 of the
|
|
||||||
License, or (at your option) any later version. This program is
|
|
||||||
distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU Library General Public License for more details. You should
|
|
||||||
have received a copy of the GNU Library General Public License along
|
|
||||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
**********************************************************************}
|
|
||||||
|
|
||||||
{
|
|
||||||
@abstract(MCI drivers interface)
|
|
||||||
@author(Andry Svirgunov (cool2@ngs.ru))
|
|
||||||
@author(Yuri Prokushev (prokushev@freemail.ru))
|
|
||||||
@created(01 Oct 2002)
|
|
||||||
@lastmod(19 Jan 2003)
|
|
||||||
MCI drivers interface
|
|
||||||
Warning: This code is alfa. Future versions of this unit will propably
|
|
||||||
not be compatible.
|
|
||||||
}
|
|
||||||
Unit mcidrv;
|
|
||||||
|
|
||||||
Interface
|
|
||||||
|
|
||||||
Type
|
|
||||||
GID=Integer;
|
|
||||||
|
|
||||||
///**************************************************************************/
|
|
||||||
// MCI Driver message identifiers */
|
|
||||||
///**************************************************************************/
|
|
||||||
const
|
|
||||||
MCIDRV_SAVE = 900;
|
|
||||||
MCIDRV_RESTORE = 901;
|
|
||||||
MCIDRV_SYNC = 902;
|
|
||||||
MCIDRV_CHANGERESOURCE = 903;
|
|
||||||
MCIDRV_CONNECT = 904;
|
|
||||||
MCIDRV_ASSOCIATE = 905;
|
|
||||||
MCIDRV_DISCONNECT = 906;
|
|
||||||
MCIDRV_TEST_CONNECTION = 907;
|
|
||||||
MCIDRV_START = 908;
|
|
||||||
MCIDRV_SEEK = 909;
|
|
||||||
MCIDRV_STOP = 910;
|
|
||||||
MCIDRV_MODIFY_CONNECTION = 911;
|
|
||||||
MCIDRV_INIT_CONNECTION = 912;
|
|
||||||
MCIDRV_DEINIT_CONNECTION = 913;
|
|
||||||
MCIDRV_ENABLE_EVENT = 915;
|
|
||||||
MCIDRV_GETTIME = 917;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// The following messages are used by the MCIDRV_CONNECT message */
|
|
||||||
///*******************************************************************/
|
|
||||||
|
|
||||||
MCIDRV_CONNECT_TARGET = $00010000;
|
|
||||||
MCIDRV_CONNECT_SOURCE = $00020000;
|
|
||||||
MCIDRV_SET_CONNNECTOR_TYPE = $00040000;
|
|
||||||
MCIDRV_CHANGE_SEM = $00080000;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// The following messages are used by MCIDRV_MODIFY_CONNECTION */
|
|
||||||
///*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
MCIDRV_MODIFY_10 =$00100000; // back level MCI driver.
|
|
||||||
MCIDRV_MIX_STANDALONE =$00200000;
|
|
||||||
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// The following messages are used by MCIDRV_START */
|
|
||||||
///*******************************************************************/
|
|
||||||
|
|
||||||
MCIDRV_CUE_PLAYBACK = $00010000;
|
|
||||||
MCIDRV_CUE_RECORD = $00020000;
|
|
||||||
MCIDRV_START_PLAYBACK = $00040000;
|
|
||||||
MCIDRV_START_RECORD = $00080000;
|
|
||||||
MCIDRV_START_PREROLL = $00100000;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// The following messages are used by MCIDRV_ASSOCIATE */
|
|
||||||
///*******************************************************************/
|
|
||||||
|
|
||||||
MCIDRV_OUTPUT = $00010000;
|
|
||||||
MCIDRV_INPUT = $00020000;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// The following messages are used by MCIDRV_STOP */
|
|
||||||
///*******************************************************************/
|
|
||||||
|
|
||||||
MCIDRV_PAUSE_STREAM_NETWORK = $00010000;
|
|
||||||
MCIDRV_FLUSH_STREAM_NETWORK = $00020000;
|
|
||||||
MCIDRV_DISCARD_STREAM_NETWORK = $00040000;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// The following messages are used by MCIDRV_DEINIT_CONNECTION */
|
|
||||||
///*******************************************************************/
|
|
||||||
|
|
||||||
MCIDRV_MODIFY_HANDLER =$00010000;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// The following range of message ID's are reserved for internal use */
|
|
||||||
// by MCI drivers */
|
|
||||||
///*******************************************************************/
|
|
||||||
MCI_INTERNAL_MESSAGES_START = 1000;
|
|
||||||
MCI_INTERNAL_MESSAGES_END = 1999;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// Flags used by the string parser for command tables */
|
|
||||||
// NOTE: All flags must have an "L" suffix in order to be parsed as */
|
|
||||||
// DWORDs by the resource compiler */
|
|
||||||
///*******************************************************************/
|
|
||||||
MCI_COMMAND_HEAD = $00000001;
|
|
||||||
MCI_END_COMMAND = $00000002;
|
|
||||||
MCI_END_COMMAND_LIST = $00000003;
|
|
||||||
MCI_RETURN = $00000004;
|
|
||||||
MCI_STRING = $00000005;
|
|
||||||
MCI_FLAG = $00000006;
|
|
||||||
MCI_INTEGER = $00000007;
|
|
||||||
MCI_CONSTANT = $00000008;
|
|
||||||
MCI_CONSTANT_INTEGER = $00000009;
|
|
||||||
MCI_CONSTANT_STRING = $0000000A;
|
|
||||||
MCI_END_CONSTANT = $0000000B;
|
|
||||||
MCI_DEFAULT_STRING = $0000000C;
|
|
||||||
MCI_DEFAULT_INTEGER = $0000000D;
|
|
||||||
MCI_RETURN_TYPE = $0000000E;
|
|
||||||
MCI_RETURN_TYPE_STRING = $0000000F;
|
|
||||||
MCI_END_RETURN_TYPE = $00000010;
|
|
||||||
MCI_CONSTANT_2 = $00000011;
|
|
||||||
MCI_END_CONSTANT_2 = $00000012;
|
|
||||||
MCI_CONSTANT_PAIR = $00000013;
|
|
||||||
MCI_END_CONSTANT_PAIR = $00000014;
|
|
||||||
MCI_CONSTANT_INTEGER_PAIR = $00000015;
|
|
||||||
MCI_CONSTANT_STRING_PAIR = $00000016;
|
|
||||||
MCI_RECTL = $00000017;
|
|
||||||
MCI_CONSTANT_4 = $00000018;
|
|
||||||
MCI_END_CONSTANT_4 = $00000019;
|
|
||||||
MCI_FOURCC = $0000001A;
|
|
||||||
MCI_OR = $0000001B;
|
|
||||||
MCI_END_OR = $0000001C;
|
|
||||||
MCI_STRING_LIST = $0000001D;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// Return types supported by mciSendString */
|
|
||||||
// Values 0x0000 -> 0xFF00 are reserved by MMPM2 */
|
|
||||||
// Values 0xFF01 -> 0xFFFF are user definable */
|
|
||||||
///*******************************************************************/
|
|
||||||
MCI_INTEGER_RETURNED = $1000;
|
|
||||||
MCI_COLONIZED2_RETURN = $2000;
|
|
||||||
MCI_COLONIZED3_RETURN = $3000;
|
|
||||||
MCI_COLONIZED4_RETURN = $4000;
|
|
||||||
MCI_TRUE_FALSE_RETURN = $5000;
|
|
||||||
MCI_ON_OFF_RETURN = $6000;
|
|
||||||
MCI_DEVICENAME_RETURN = $7000;
|
|
||||||
MCI_TIME_FORMAT_RETURN = $8000;
|
|
||||||
MCI_SPEED_FORMAT_RETURN = $9000;
|
|
||||||
MCI_MODE_RETURN = $A000;
|
|
||||||
MCI_MEDIA_TYPE_RETURN = $B000;
|
|
||||||
MCI_TRACK_TYPE_RETURN = $C000;
|
|
||||||
MCI_CONNECTOR_TYPE_RETURN = $D000;
|
|
||||||
MCI_CDXA_CHANNEL_DESTINATION_RETURN = $E000;
|
|
||||||
MCI_PREROLL_TYPE_RETURN = $F000;
|
|
||||||
MCI_FORMAT_TAG_RETURN = $F100;
|
|
||||||
MCI_SEQ_SYNCHRONIZATION_RETURN = $F200;
|
|
||||||
MCI_VIDEO_QUALITY_RETURN = $F300;
|
|
||||||
MCI_AUDIO_QUALITY_RETURN = $F400;
|
|
||||||
MCI_IMAGE_QUALITY_RETURN = $F500;
|
|
||||||
MCI_VIDEO_COMPRESSION_RETURN = $F600;
|
|
||||||
MCI_AUDIO_COMPRESSION_RETURN = $F700;
|
|
||||||
MCI_IMAGE_COMPRESSION_RETURN = $F800;
|
|
||||||
MCI_RECTL_RETURN = $F900;
|
|
||||||
MCI_FOURCC_RETURN = $FA00;
|
|
||||||
MCI_IMAGE_PELFORMAT_RETURN = $FB00;
|
|
||||||
MCI_DIRECTION_RETURN = $FC00;
|
|
||||||
MCI_SIGNED_INTEGER_RETURN = $FD00;
|
|
||||||
|
|
||||||
MCI_USER_RETURN = $FF01;
|
|
||||||
///*******************************************************************/
|
|
||||||
// End of msg text used by mciGetErrorString */
|
|
||||||
///*******************************************************************/
|
|
||||||
MCIERR_BASE = 5000;
|
|
||||||
MCIERR_MSG_TABLE_END = MCIERR_BASE + 7000;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// */
|
|
||||||
// MCI DEVICE shareability categories */
|
|
||||||
// */
|
|
||||||
///*******************************************************************/
|
|
||||||
FIXEDSINGLECONTEXT = $0001;
|
|
||||||
DYNAMICSINGLECONTEXT = $0002;
|
|
||||||
LIMITEDMULTIPLECONTEXT = $0003;
|
|
||||||
UNLIMITEDMULTIPLECONTEXT = $0004;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// MCI driver flag for close during exit list processing */
|
|
||||||
///*******************************************************************/
|
|
||||||
MCI_CLOSE_EXIT = $10000000;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// MCI driver specific error table resource number base */
|
|
||||||
///*******************************************************************/
|
|
||||||
MMERROR_TABLE_BASE = 500;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// */
|
|
||||||
// MCIDRV_CHANGERESOURCE message flags */
|
|
||||||
// */
|
|
||||||
///*******************************************************************/
|
|
||||||
|
|
||||||
Type
|
|
||||||
mciDrv_ChangeResource_Parms = record
|
|
||||||
pInstance : Pointer; // pointer to device instance
|
|
||||||
usResourceUnits : Integer; // required resource units
|
|
||||||
usResourceClass : Integer; // resource class
|
|
||||||
usResourcePriority : Integer; // resource priority
|
|
||||||
end;
|
|
||||||
pmciDrv_ChangeResource_Parms = ^mciDrv_ChangeResource_Parms;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// */
|
|
||||||
// MCIDRV_ENABLE_EVENT message flags */
|
|
||||||
// */
|
|
||||||
///*******************************************************************/
|
|
||||||
|
|
||||||
Type
|
|
||||||
HSTREAM=LongInt;
|
|
||||||
hID=LongInt;
|
|
||||||
hEvent = LongInt; // Event Handle
|
|
||||||
phEvent = ^hEvent; // Pointer to Event Handle
|
|
||||||
HWND = LongInt;
|
|
||||||
MMTIME = LongInt;
|
|
||||||
Type
|
|
||||||
evcb = record
|
|
||||||
ulType : LongInt; // Event type (input)
|
|
||||||
ulSubType : LongInt; // Event SubType (input)
|
|
||||||
ulFlags : LongInt; // 0 (Input), status (Output)
|
|
||||||
hstream : HSTREAM; // handle to stream for this event
|
|
||||||
hid : hID; // handler Id (input/output)
|
|
||||||
ulStatus : LongInt; // Event status (output)
|
|
||||||
ulEventParm1 : LongInt; // Event parameters (input), hID if implicit event
|
|
||||||
ulEventParm2 : LongInt; // Event parameters (input)
|
|
||||||
ulEventParm3 : LongInt; // Event parameters (input)
|
|
||||||
end;
|
|
||||||
pevcb = ^evcb;
|
|
||||||
|
|
||||||
Type
|
|
||||||
MCIDRV_EVENT_PARMS = record
|
|
||||||
ulLength:LongInt; // Length of event parms */
|
|
||||||
pevcb:PEVCB; // pointer to event control block */
|
|
||||||
phevent:PHEVENT; // pointer to the event to enable in network */
|
|
||||||
end;
|
|
||||||
PMCIDRV_EVENT_PARMS=^MCIDRV_EVENT_PARMS;
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// */
|
|
||||||
// MCIDRV_SYNC message flags */
|
|
||||||
// */
|
|
||||||
///*******************************************************************/
|
|
||||||
Const
|
|
||||||
MCIDRV_SYNC_ENABLE = $00000100;
|
|
||||||
MCIDRV_SYNC_DISABLE = $00000200;
|
|
||||||
MCIDRV_SYNC_REC_PULSE = $00000400;
|
|
||||||
MCIDRV_SYNC_MASTER = $00000800;
|
|
||||||
MCIDRV_SYNC_SET_MASTER = $00001000;
|
|
||||||
|
|
||||||
Type
|
|
||||||
sync_evcb = record
|
|
||||||
ulType : LongInt; // Event_SYNC
|
|
||||||
ulSubType : LongInt; // Not used
|
|
||||||
ulSyncFlags : LongInt; // 0 (input),status (output)
|
|
||||||
hstream : HStream; // handle to stream for this event
|
|
||||||
hid : hID; // Handler id
|
|
||||||
ulStatus : LongInt; // Event status (output)
|
|
||||||
mmtimeStart : mmTime; // Filled in by Sync/Stream manager
|
|
||||||
// at SpiEnableSync time. (input)
|
|
||||||
mmtimeMaster : mmTime; // Filled in by Master SH (input)
|
|
||||||
mmtimeSlave : mmTime; // Filled in by slave SH. (output)
|
|
||||||
end;
|
|
||||||
pSync_evcb = ^sync_Evcb;
|
|
||||||
|
|
||||||
Type
|
|
||||||
mciDrv_Sync_Parms = record
|
|
||||||
hStreams : ^hStream; // Pointer to list of stream IDs
|
|
||||||
ulNumStreams : LongInt; // number of stream IDs
|
|
||||||
mmTime : mmTime; // Sync Pulse Time
|
|
||||||
NonStreamMaster : Boolean; // TRUE if this device can be master
|
|
||||||
pevcbSyncPulse : pSync_evcb; // pointer to EVCB address (output)
|
|
||||||
hidMaster : hID; // Master NULL sh ID (valid only on
|
|
||||||
// MCIDRV_SYNC_MASTER
|
|
||||||
ulReserved1 : LongInt; // Reserved field
|
|
||||||
ulReserved2 : LongInt; // Reserved field
|
|
||||||
end;
|
|
||||||
pmciDrv_Sync_Parms = ^mciDrv_Sync_Parms;
|
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************/
|
|
||||||
// contains information for open message for MCI drivers */
|
|
||||||
//*******************************************************************/
|
|
||||||
Type
|
|
||||||
mmDrv_Open_Parms = record
|
|
||||||
hwndCallback : hwnd; // call back handle
|
|
||||||
usDeviceID : Integer; // The device ID assigned to this instance
|
|
||||||
usDeviceType : Integer; // The device type number
|
|
||||||
usDeviceOrd : Integer; // The device ordinal number
|
|
||||||
pInstance : Pointer; // pointer to the instance structure allocated
|
|
||||||
// initialized by the driver. The MCI driver
|
|
||||||
// will fill in this parameter.
|
|
||||||
szDevDLLName : Array[0..259] of Char; // Character string containing the device
|
|
||||||
// specific DLL name to call for the open.
|
|
||||||
// (ie. ACPA.DLL)
|
|
||||||
pszElementName : pChar; // typically a file name or NULL
|
|
||||||
usDevParmLen : Integer; // Device parameters data block length.
|
|
||||||
pDevParm : Pointer; // Device parameters data block. This data
|
|
||||||
// block is unique to each type of device.
|
|
||||||
// (ie. LVD "COM1 9600 N 7 1").
|
|
||||||
Reserved0 : Pointer;
|
|
||||||
usResourceUnitsRequired : Integer; // number of resource units this instance
|
|
||||||
// requires.
|
|
||||||
usResourceClass : Integer; // resource class this instance belongs to
|
|
||||||
usResourcePriority : Integer; // resource priority for this instance
|
|
||||||
ulParam2 : LongInt; // Pointer to MCI_OPEN structure
|
|
||||||
end;
|
|
||||||
pmmDrv_Open_Parms = ^mmDrv_Open_Parms;
|
|
||||||
|
|
||||||
|
|
||||||
///*******************************************************************/
|
|
||||||
// */
|
|
||||||
// MCIDRV_RESTORE message flags */
|
|
||||||
// */
|
|
||||||
///*******************************************************************/
|
|
||||||
|
|
||||||
Type
|
|
||||||
MCIDRV_RESTORE_PARMS = record
|
|
||||||
ulLength:longint; // Length of restore parms */
|
|
||||||
ulMasterVolume:longint; // Master volume value */
|
|
||||||
end;
|
|
||||||
PMCIDRV_RESTORE_PARMS=^MCIDRV_RESTORE_PARMS;
|
|
||||||
|
|
||||||
function mdmDriverNotify( usDeviceID: Integer; wnd: Hwnd; usMsgType: Integer;
|
|
||||||
usUserParm: Integer; ulMsgParm: LongInt): LongInt; cdecl;
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
|
|
||||||
function mdmDriverNotify( usDeviceID: Integer; wnd: Hwnd; usMsgType: Integer;
|
|
||||||
usUserParm: Integer; ulMsgParm: LongInt): LongInt; cdecl; external 'MDM' index 17;
|
|
||||||
|
|
||||||
End.
|
|
||||||
|
|
||||||
{
|
|
||||||
$Log$
|
|
||||||
Revision 1.1 2003-02-15 16:59:09 hajny
|
|
||||||
* mmtk directory corrected to lowercase
|
|
||||||
|
|
||||||
Revision 1.1 2003/02/09 13:49:06 hajny
|
|
||||||
+ mmtk added
|
|
||||||
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,91 +0,0 @@
|
|||||||
OS/2 Multimedia Toolkit
|
|
||||||
=======================
|
|
||||||
|
|
||||||
OS/2 Multimedia toolkit is set of units to manage various parts of multimedia
|
|
||||||
subsystem of OS/2. Not a part of standard OS/2 Multimedia:
|
|
||||||
|
|
||||||
a) WarpOverlay! library interface (hwvideo.pas)
|
|
||||||
|
|
||||||
MMPM/2 Documentation
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
OS/2 Multimedia Subsystem Programming Guide
|
|
||||||
Provides guidelines for developing multimedia subsystems. Each subsystem
|
|
||||||
component is described in detail in individual chapters. Models are used
|
|
||||||
to complement the information provided by component sample program templates.
|
|
||||||
|
|
||||||
OS/2 Multimedia Application Programming Guide
|
|
||||||
Provides advisory information on application interfaces to help you select
|
|
||||||
and implement functions for your OS/2 multimedia applications. Code examples
|
|
||||||
from fully documented sample programs accompany the descriptions of the
|
|
||||||
functions.
|
|
||||||
|
|
||||||
OS/2 Multimedia Programming Reference
|
|
||||||
Provides detailed information on multimedia functions, messages, and data
|
|
||||||
structures to enable you to write code for your multimedia application
|
|
||||||
programs and subsystems.
|
|
||||||
|
|
||||||
The MMPM/2 Device Driver Reference for OS/2
|
|
||||||
It is for subsystem developers who want to write their own physical
|
|
||||||
device drivers (and associated virtual device drivers) to support audio
|
|
||||||
and video adapters in the Multimedia Presentation Manager/2 system.
|
|
||||||
|
|
||||||
Multimedia REXX
|
|
||||||
Describes REXX functions that enable media control interface string commands
|
|
||||||
to be sent from an OS/2 command file to control multimedia devices. This
|
|
||||||
online book is provided with OS/2 multimedia.
|
|
||||||
|
|
||||||
Guide to Multimedia User Interface Design - (41G2922)
|
|
||||||
Describes design concepts to be considered when designing a CUA multimedia
|
|
||||||
interface that is consistent within a particular multimedia product and
|
|
||||||
across other products.
|
|
||||||
|
|
||||||
WarpOverlay!
|
|
||||||
------------
|
|
||||||
|
|
||||||
WarpOverlay! is video acceleration driver. This is original readme.txt
|
|
||||||
(BEWARE! Most probably, Valery don't know about this port):
|
|
||||||
|
|
||||||
-Begin-
|
|
||||||
Short overview:
|
|
||||||
hwvideo.h is a main header for use WarpOverlay! video acceleration driver.
|
|
||||||
There are no more or less suitable SDK yet, I am to lazy :(
|
|
||||||
|
|
||||||
|
|
||||||
DEMO - small stupid example of using WarpOverlay!, currently it does not sup-
|
|
||||||
port many features of WarpOverlay!, only basic functionality.
|
|
||||||
it just tried to load file demo.mpg and cyclically play it.
|
|
||||||
Used mpeg1 decoder pretty unstable and very unoptimal. This is just example.
|
|
||||||
Many of MPEG files can crush decoder. I am not very fimilar with different
|
|
||||||
MPEG aspects and do not want to mess with it, sorry.
|
|
||||||
I just included one small MPEG1 file, which work well.
|
|
||||||
|
|
||||||
RGB - example of using RGB (FOURCC_R565) overlay. Attention! RGB overlay
|
|
||||||
not supported for NVidia chips and for Matrox G200.
|
|
||||||
Known worked RGB overlay: Rage128, Radeon, i740, Savages.
|
|
||||||
|
|
||||||
|
|
||||||
Please contact me, if you have questions/troubles with this example or with
|
|
||||||
WarpOverlay! usage.
|
|
||||||
|
|
||||||
Valery Gaynullin
|
|
||||||
|
|
||||||
MPEG decoding engine based on the Berkeley MPEG (mpegplay).
|
|
||||||
-End-
|
|
||||||
|
|
||||||
Longterm plans
|
|
||||||
--------------
|
|
||||||
|
|
||||||
a) Fix lot of bugs ;)
|
|
||||||
b) Add support for IBM Multimedia Classes and CWMM Classes for WPS (as fast as
|
|
||||||
SOM and WPS toolkits will be presented)
|
|
||||||
c) SEAL library interface (seal.pas) www.netlabs.org/hobbes.nmsu.edu
|
|
||||||
SEAL is module player library. At the present time SEAL not developing
|
|
||||||
anymore (for all platforms), but still very usefull for mudule music fans.
|
|
||||||
d) DualMode Library (dual.pas) www.netlabs.org
|
|
||||||
DualMode library allows to use common access method as for fullscreen (MGL)
|
|
||||||
as for windowed (DIVE) video modes.
|
|
||||||
e) Examples, examples, examples (tests as well)
|
|
||||||
|
|
||||||
CU!
|
|
||||||
Yuri & Andry
|
|
@ -1,542 +0,0 @@
|
|||||||
{
|
|
||||||
$Id$
|
|
||||||
Copyright (c) 1990-1991 International Business Machines Corporation
|
|
||||||
Copyright (c) 2003 by Yuri Prokushev (prokushev@freemail.ru)
|
|
||||||
|
|
||||||
This is the multimedia unit file that has the typedefs, defines and
|
|
||||||
function prototypes for Multimedia Applets.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU Library General Public License (LGPL) as
|
|
||||||
published by the Free Software Foundation; either version 2 of the
|
|
||||||
License, or (at your option) any later version. This program is
|
|
||||||
distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU Library General Public License for more details. You should
|
|
||||||
have received a copy of the GNU Library General Public License along
|
|
||||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
**********************************************************************}
|
|
||||||
|
|
||||||
{
|
|
||||||
@abstract(OS/2 Multimedia Applets)
|
|
||||||
@author(Yuri Prokushev (prokushev@freemail.ru))
|
|
||||||
@created(19 Jan 2003)
|
|
||||||
@lastmod(23 Jan 2003)
|
|
||||||
This is the multimedia unit file that has the typedefs, defines and
|
|
||||||
function prototypes for Multimedia Applets.
|
|
||||||
Warning: This code is alfa. Future versions of this unit will propably
|
|
||||||
not be compatible.
|
|
||||||
}
|
|
||||||
Unit SW;
|
|
||||||
|
|
||||||
Interface
|
|
||||||
|
|
||||||
Uses
|
|
||||||
Os2Def,
|
|
||||||
PmWin;
|
|
||||||
|
|
||||||
Const
|
|
||||||
MAX_SMBDTEXT=35;
|
|
||||||
|
|
||||||
MB_ICONCUSTOM=$0001;
|
|
||||||
|
|
||||||
SC_DEFAULTSIZE=$c000; // WM_COMMAND from SysMenu
|
|
||||||
|
|
||||||
WM_INITSECONDARYWINDOW=$0519; // MP1: NULL, MP2: CreateParams
|
|
||||||
|
|
||||||
QS_FRAME=$1; // Flag set to query frame
|
|
||||||
QS_DIALOG=$2; // Flag set to query dialog
|
|
||||||
|
|
||||||
// #pragma pack(4)
|
|
||||||
|
|
||||||
Type
|
|
||||||
TSMBD=record
|
|
||||||
achText: Array[0..MAX_SMBDTEXT + 1] of Char; // Text of the button. eg. "~Cancel"
|
|
||||||
idButton: Cardinal; // Button ID returned when user chooses
|
|
||||||
flStyle: Longint; // Button style or'ed with internal
|
|
||||||
end;
|
|
||||||
PSMBD=^TSMBD;
|
|
||||||
|
|
||||||
TSMBINFO=record
|
|
||||||
hIcon: Cardinal; // Icon handle
|
|
||||||
cButtons: Cardinal; // Number of buttons
|
|
||||||
flStyle: Cardinal; // Icon style flags (MB_ICONQUESTION, etc...)
|
|
||||||
hwndNotify: HWND; // Reserved
|
|
||||||
smbd: PSMBD; // Array of button definitions
|
|
||||||
end;
|
|
||||||
PSMBINFO=^TSMBINFO;
|
|
||||||
|
|
||||||
// #pragma pack()
|
|
||||||
|
|
||||||
// Analogous to WinDlgBox
|
|
||||||
function WinSecondaryWindow(hwndParent: hwnd; hwndOwner: hwnd;
|
|
||||||
pfnDlgProc: proc; hmod: Cardinal; idDlg: Cardinal; pCreateParams: Pointer): Cardinal; cdecl;
|
|
||||||
|
|
||||||
// Analogous to WinLoadDlg
|
|
||||||
function WinLoadSecondaryWindow(hwndParent: hwnd; hwndOwner: hwnd;
|
|
||||||
pfnDlgProc: proc; hmod: Cardinal; idDlg: Cardinal; pCreateParams: Cardinal): hwnd; cdecl;
|
|
||||||
|
|
||||||
// Analogous to WinProcessDlg
|
|
||||||
function WinProcessSecondaryWindow(hwndSW: hwnd): Cardinal; cdecl;
|
|
||||||
|
|
||||||
// Analogous to WinCreateDlg
|
|
||||||
function WinCreateSecondaryWindow(hwndParent: hwnd; hwndOwner: hwnd;
|
|
||||||
pfnDlgProc: proc; idDlg: Cardinal; pCreateParams: Pointer): hwnd; cdecl;
|
|
||||||
|
|
||||||
function WinDefaultSize(Wnd: hwnd): Longbool; cdecl;
|
|
||||||
|
|
||||||
function WinInsertDefaultSize(Wnd: hwnd; pszDefaultSize: pChar): Longbool; cdecl;
|
|
||||||
|
|
||||||
function WinQuerySecondaryhwnd(Wnd: hwnd; ulFlag: Cardinal): hwnd; cdecl;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* WinSecondaryMessageBox */
|
|
||||||
//* */
|
|
||||||
//* Parameters: HWND hwndParent - handle of the parent window. */
|
|
||||||
//* HWND hwndOwner - handle of the owner window. */
|
|
||||||
//* PSZ pszText - message text. */
|
|
||||||
//* PSZ pszCaption - title of the message box. */
|
|
||||||
//* ULONG idWindow - Message box id */
|
|
||||||
//* PSMBINFO psmbinfo - pointer to button/icon info */
|
|
||||||
//************************************************************************/
|
|
||||||
function WinSecondaryMessageBox(hwndParent: hwnd; hwndOwner: hwnd;
|
|
||||||
pszText: pChar; pszCaption: pChar; idWindow: Cardinal; smb: psmbinfo): Cardinal; cdecl;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* WinDismissSecondaryWindow */
|
|
||||||
//* */
|
|
||||||
//* This function should be called from within the dlg proc. The hwnd */
|
|
||||||
//* passed in MUST be the handle to the actual dialog. */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
function WinDismissSecondaryWindow(hwndDlg: hwnd; ulResult: Cardinal): Longbool; cdecl;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* The parameter hwnd can be either the secondary window or the actual */
|
|
||||||
//* dialog. */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
function WinDestroySecondaryWindow(Wnd: hwnd): Longbool; cdecl;
|
|
||||||
|
|
||||||
function WinDefSecondaryWindowProc(Wnd: hwnd; msg: Cardinal;
|
|
||||||
mp1: mParam; mp2: mParam): mResult; cdecl;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Graphic Buttons */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Notes on Using GraphicButtons */
|
|
||||||
//* */
|
|
||||||
//* GraphicButton CONTROL DATA */
|
|
||||||
//* */
|
|
||||||
//* The format of the control data for GraphicButtons is */
|
|
||||||
//* "button Text, number of bitmaps, bitmap resource id's ..." */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//* Following are two example window templates of GraphicButtons: */
|
|
||||||
//* */
|
|
||||||
//* 1) CONTROL "", IDD_MP_REV, 120, 10, TS_PB_WIDTH, TS_PB_HEIGHT,*/
|
|
||||||
//* WC_GRAPHICBUTTON, */
|
|
||||||
//* GBS_TWOSTATE | GBS_HILITEBITMAP | */
|
|
||||||
//* WS_VISIBLE | WS_TABSTOP */
|
|
||||||
//* CTLDATA GB_RESOURCE,"~REV", 2, ID_MP_REV1, ID_MP_REV0*/
|
|
||||||
//* */
|
|
||||||
//* The above graphicbutton has id IDD_MP_REV and is of type */
|
|
||||||
//* GBS_TWOSTATE and GBS_HILITEBITMAP. The GBS_HILITEBITMAP allows */
|
|
||||||
//* a different bitmap to be displayed when the button is in the */
|
|
||||||
//* hilite state. The graphicbutton will be displayed with text */
|
|
||||||
//* "REV" and has "R" as the mnemonic. It has 2 bitmaps associated */
|
|
||||||
//* with it. Their resource id are ID_MP_REV1 and ID_MP_REV0. */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//* 2) CONTROL "", IDD_MP_PLAY, 175, 10, TS_PB_WIDTH, */
|
|
||||||
//* TS_PB_HEIGHT, WC_GRAPHICBUTTON, */
|
|
||||||
//* GBS_AUTOTWOSTATE | GBS_AUTOANIMATION | */
|
|
||||||
//* WS_VISIBLE | WS_TABSTOP */
|
|
||||||
//* CTLDATA GB_RESOURCE, "~PLAY", 9, */
|
|
||||||
//* ID_MP_STOP0, ID_MP_PLAY1, ID_MP_PLAY2,*/
|
|
||||||
//* ID_MP_PLAY3, ID_MP_PLAY4, ID_MP_PLAY5,*/
|
|
||||||
//* ID_MP_PLAY6, ID_MP_PLAY7, ID_MP_REV1 */
|
|
||||||
//* */
|
|
||||||
//* The above graphicbutton has id IDD_MP_PLAY and is of type */
|
|
||||||
//* GBS_AUTOTWOSTATE and GBS_AUTOANIMATE. When clicked upon, */
|
|
||||||
//* the button will automatically toggle the state and animation. */
|
|
||||||
//* The graphicbutton will be displayed with text "PLAY" */
|
|
||||||
//* and mnemonic "P". It has 9 bitmaps associated with it. */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//* GraphicButton Painting */
|
|
||||||
//* */
|
|
||||||
//* Due to the PM design, whenever a graphicbutton is clicked, */
|
|
||||||
//* it is sent a BN_PAINT (to paint a non-hilite state) and then */
|
|
||||||
//* BN_CLICKED. Thus, for GBS_AUTO* style graphicbuttons, a paint */
|
|
||||||
//* request is generated before the button has a chance to change */
|
|
||||||
//* its state (BN_CLICKED). To avoid this premature painting, */
|
|
||||||
//* code was inserted to delay the painting of graphicbuttons */
|
|
||||||
//* GB_PAINT_RESOLUTION milliseconds whenever the button is switching */
|
|
||||||
//* FROM the hilite paint state. */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
Function WinRegisterGraphicButton: Longbool; cdecl;
|
|
||||||
|
|
||||||
Const
|
|
||||||
WC_GRAPHICBUTTON=PChar($ffff0040);
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GraphicButton Animation/TwoState constants */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Graphic Button Style bits */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBS_TWOSTATE = $1000; // indicates TwoState button
|
|
||||||
GBS_AUTOTWOSTATE = $2000; // will auto toggle state up/down
|
|
||||||
GBS_ANIMATION = $4000; // indicates Animatable button
|
|
||||||
GBS_AUTOANIMATION = $8000; // will auto toggle anim. on/off
|
|
||||||
GBS_DISABLEBITMAP = $0010; // allows a diff. bitmap when disabled
|
|
||||||
GBS_HILITEBITMAP = $0020; // allows a diff. bitmap when hilited
|
|
||||||
GBS_3D_TEXTRECESSED = $0040; // display text in 3-D recessed
|
|
||||||
GBS_3D_TEXTRAISED = $0080; // display text in 3-D raised
|
|
||||||
GBS_MINIBUTTON = $0001; // mini button style
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Graphic Button User Constants */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Codes to reference allowed GraphicButton states (or paint states) */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GB_ERROR = -1; // GraphicButton Error
|
|
||||||
GB_UP = 1; // GraphicButton up (and paint) state
|
|
||||||
GB_DOWN = 2; // GraphicButton down (and paint) state
|
|
||||||
GB_DISABLE = 3; // GraphicButton disabled state
|
|
||||||
GB_HILITE = 4; // GraphicButton paint state only
|
|
||||||
GB_OUTOFHILITE = 5; // Changing out of hilite paint state
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Codes for various GraphicButton message function parameters */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GB_TOGGLE = 10; // GraphicButton toggle
|
|
||||||
GB_CURRENTSTATE = 11; // GraphicButton's current state
|
|
||||||
GB_ANIMATIONBEGIN = 12; // when refering to index of anim start
|
|
||||||
GB_ANIMATIONEND = 13; // when refering to index of anim end
|
|
||||||
GB_MAXINDEX = 14; // GraphicButton max. index
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Codes to set/query text position relative to the bitmap */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GB_TEXTBELOW = 1; // place text below bitmap
|
|
||||||
GB_TEXTABOVE = 2; // place text above bitmap
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Codes used to set the animation frame with message GBM_SETBITMAPINDEX*/
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GB_INDEX_FORWARD = -1; // advance one frame foward
|
|
||||||
GB_INDEX_BACKWARD = -2; // advance one frame backwards
|
|
||||||
GB_INDEX_FIRST = -3; // set to first frame of sequence
|
|
||||||
GB_INDEX_LAST = -4; // set to last frame of sequence
|
|
||||||
|
|
||||||
// #pragma pack(1)
|
|
||||||
|
|
||||||
type
|
|
||||||
TgbtnCdata = packed record
|
|
||||||
usReserved: Word;
|
|
||||||
pszText: PChar;
|
|
||||||
hmod: Cardinal;
|
|
||||||
cBitmaps: Word;
|
|
||||||
aidBitmap: Array[0..1] of Word;
|
|
||||||
end;
|
|
||||||
pgbtnCdata = ^TgbtnCdata;
|
|
||||||
|
|
||||||
//#pragma pack()
|
|
||||||
|
|
||||||
const
|
|
||||||
GB_RESOURCE = 1;
|
|
||||||
GB_STRUCTURE = 0;
|
|
||||||
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Notification Messages received by GraphicButton Parent */
|
|
||||||
//***********************************************************************/
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBN_BUTTONDOWN, GBN_BUTTONUP, and GBN_BUTTONHILITE */
|
|
||||||
//* */
|
|
||||||
//* The notification messages are passed as part of the WM_CONTROL */
|
|
||||||
//* message. */
|
|
||||||
//* */
|
|
||||||
//* msg = WM_CONTROL */
|
|
||||||
//* mp1 = MPFROM2SHORT(gpb_id, button_state) */
|
|
||||||
//* gpd_id = identity of the displayed graphic pushbutton */
|
|
||||||
//* button_state = GBN_BUTTONUP, GBN_BUTTONDOWN, or */
|
|
||||||
//* GBN_BUTTONHILITE */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBN_BUTTONUP = $0524;
|
|
||||||
GBN_BUTTONDOWN = $0525;
|
|
||||||
GBN_BUTTONHILITE = $0526;
|
|
||||||
GBN_SETFOCUS = $0527; // mp2 TRUE for gaining focus
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* Messages to GraphicButton Windows */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_SETGRAPHICDATA */
|
|
||||||
//************************************************************************/
|
|
||||||
//* mp1 = MPFROMP((PGBTNCDATA)&gbtncdata); Graphic button control data*/
|
|
||||||
//* mp2 = NULL; not used */
|
|
||||||
//* */
|
|
||||||
//* WARNING: This message resets all button parameters. */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_SETGRAPHICDATA = $052A;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_ANIMATE */
|
|
||||||
//************************************************************************/
|
|
||||||
//* mp1 = MPFROMSHORT(fStart) TRUE to start animation, FALSE to stop*/
|
|
||||||
//* mp2 = MPFROMSHORT(fContinue) TRUE continue anim. at currently */
|
|
||||||
//* displayed bitmap, FALSE restart at */
|
|
||||||
//* the beginning. */
|
|
||||||
//* */
|
|
||||||
//* Returns TRUE on Success */
|
|
||||||
//* FALSE on Failure */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_ANIMATE = $052B;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_SETANIMATIONRATE */
|
|
||||||
//************************************************************************/
|
|
||||||
//* mp1 = MPFROMSHORT(ULmIL); Animation rate in milliseconds */
|
|
||||||
//* mp2 = NULL not used */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//* Returns TRUE on Success */
|
|
||||||
//* FALSE on Failure */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_SETANIMATIONRATE = $052C;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_QUERYANIMATIONACTIVE */
|
|
||||||
//************************************************************************/
|
|
||||||
//* mp1 = NULL; not used */
|
|
||||||
//* mp2 = NULL; not used */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//* Returns TRUE if animation is active, else GB_ERROR */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_QUERYANIMATIONACTIVE = $052D;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_QUERYANIMATIONRATE */
|
|
||||||
//************************************************************************/
|
|
||||||
//* mp1 = NULL; not used */
|
|
||||||
//* mp2 = NULL; not used */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//* Returns ULONG sepcifying animation rate in milliseconds */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_QUERYANIMATIONRATE = $052E;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_SETBITMAPINDEX */
|
|
||||||
//************************************************************************/
|
|
||||||
//* mp1 = MPFROMSHORT(usGB_State) Bitmap index to change */
|
|
||||||
//* GB_UP, */
|
|
||||||
//* GB_DOWN, */
|
|
||||||
//* GB_DISABLE, */
|
|
||||||
//* GB_HILITE, */
|
|
||||||
//* GB_ANIMATIONBEGIN, */
|
|
||||||
//* GB_ANIMATIONEND, */
|
|
||||||
//* or GB_CURRENTSTATE chng current state (up or down) bitmap*/
|
|
||||||
//* mp2 = MPFROMSHORT(sFrameCode) Set according to code or frame desire */
|
|
||||||
//* GB_INDEX_FORWARD, chng to next bitmap in circular array */
|
|
||||||
//* GB_INDEX_BACKWARD, " " prev " " " " */
|
|
||||||
//* GB_INDEX_FIRST, " " first " " " " */
|
|
||||||
//* GB_INDEX_LAST, " " last " " " " */
|
|
||||||
//* or desired_bitmap otherwise desired bmp index specified */
|
|
||||||
//* */
|
|
||||||
//* Returns TRUE on Success, otherwise FALSE */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_SETBITMAPINDEX = $052F;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_QUERYBITMAPINDEX */
|
|
||||||
//************************************************************************/
|
|
||||||
//* mp1 = MPFROMSHORT(usGB_State) Query bitmap index */
|
|
||||||
//* GB_UP, */
|
|
||||||
//* GB_DOWN, */
|
|
||||||
//* GB_DISABLE, */
|
|
||||||
//* GB_HILITE, */
|
|
||||||
//* GB_ANIMATIONBEGIN, */
|
|
||||||
//* GB_ANIMATIONEND, */
|
|
||||||
//* or GB_CURRENTSTATE query current state (up or down) bitmap */
|
|
||||||
//* mp2 = NULL; not used */
|
|
||||||
//* */
|
|
||||||
//* Returns USHORT specifying the index */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_QUERYBITMAPINDEX = $0530;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_SETSTATE */
|
|
||||||
//************************************************************************/
|
|
||||||
//* mp1 = MPFROMSHORT(usStateCode) Set twostate button to specified */
|
|
||||||
//* state */
|
|
||||||
//* GB_UP, */
|
|
||||||
//* GB_DOWN, */
|
|
||||||
//* or GB_TOGGLE toggle (up/down) to (down/up) */
|
|
||||||
//* mp2 = MPFROMBOOL(fRepaint) TRUE - state changed and displayed */
|
|
||||||
//* FALSE - state changed, not displayed */
|
|
||||||
//* */
|
|
||||||
//* Returns TRUE on Success */
|
|
||||||
//* FALSE on Failure */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_SETSTATE = $0531;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_QUERYSTATE */
|
|
||||||
//************************************************************************/
|
|
||||||
//* */
|
|
||||||
//* mp1 = NULL not used */
|
|
||||||
//* mp2 = NULL not used */
|
|
||||||
//* */
|
|
||||||
//* Returns the state (GB_UP or GB_DOWN) else GB_ERROR. */
|
|
||||||
//* */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_QUERYSTATE = $0532;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_SETTEXTPOSITION */
|
|
||||||
//************************************************************************/
|
|
||||||
//* mp1 = MPFROMSHORT(usTextPos) How to position text relative to */
|
|
||||||
//* bitmap */
|
|
||||||
//* GB_TEXTBELOW, */
|
|
||||||
//* or GB_TEXTABOVE */
|
|
||||||
//* mp2 = NULL not used */
|
|
||||||
//* */
|
|
||||||
//* Returns TRUE on Success, otherwise FALSE */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_SETTEXTPOSITION = $0533;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GBM_QUERYTEXTPOSITION */
|
|
||||||
//************************************************************************/
|
|
||||||
//* */
|
|
||||||
//* mp1 = NULL not used */
|
|
||||||
//* mp2 = NULL not used */
|
|
||||||
//* */
|
|
||||||
//* Returns GB_TEXTBELOW, GB_TEXTABOVE, GB_TEXTRIGHT, GB_TEXTLEFT */
|
|
||||||
//* on success, otherwise FALSE */
|
|
||||||
//* */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
GBM_QUERYTEXTPOSITION = $0534;
|
|
||||||
|
|
||||||
//************************************************************************/
|
|
||||||
//* GraphicButton END */
|
|
||||||
//************************************************************************/
|
|
||||||
|
|
||||||
MM_TABHELP = $054C;
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
|
|
||||||
function WinSecondaryWindow(hwndParent: hwnd; hwndOwner: hwnd;
|
|
||||||
pfnDlgProc: proc; hmod: Cardinal; idDlg: Cardinal; pCreateParams: Pointer): Cardinal; cdecl;
|
|
||||||
external 'SW' index 1;
|
|
||||||
|
|
||||||
function WinLoadSecondaryWindow(hwndParent: hwnd; hwndOwner: hwnd;
|
|
||||||
pfnDlgProc: proc; hmod: Cardinal; idDlg: Cardinal; pCreateParams: Cardinal): hwnd; cdecl;
|
|
||||||
external 'SW' index 2;
|
|
||||||
|
|
||||||
function WinProcessSecondaryWindow(hwndSW: hwnd): Cardinal; cdecl;
|
|
||||||
external 'SW' index 3;
|
|
||||||
|
|
||||||
function WinCreateSecondaryWindow(hwndParent: hwnd; hwndOwner: hwnd;
|
|
||||||
pfnDlgProc: proc; idDlg: Cardinal; pCreateParams: Pointer): hwnd; cdecl;
|
|
||||||
external 'SW' index 4;
|
|
||||||
|
|
||||||
function WinDefaultSize(Wnd: hwnd): Longbool; cdecl;
|
|
||||||
external 'SW' index 11;
|
|
||||||
|
|
||||||
function WinInsertDefaultSize(Wnd: hwnd; pszDefaultSize: pChar): Longbool; cdecl;
|
|
||||||
external 'SW' index 12;
|
|
||||||
|
|
||||||
function WinQuerySecondaryhwnd(Wnd: hwnd; ulFlag: Cardinal): hwnd; cdecl;
|
|
||||||
external 'SW' index 52;
|
|
||||||
|
|
||||||
function WinSecondaryMessageBox(hwndParent: hwnd; hwndOwner: hwnd;
|
|
||||||
pszText: pChar; pszCaption: pChar; idWindow: Cardinal; smb: psmbinfo): Cardinal; cdecl;
|
|
||||||
external 'SW' index 5;
|
|
||||||
|
|
||||||
function WinDismissSecondaryWindow(hwndDlg: hwnd; ulResult: Cardinal): Longbool; cdecl;
|
|
||||||
external 'SW' index 6;
|
|
||||||
|
|
||||||
function WinDestroySecondaryWindow(Wnd: hwnd): Longbool; cdecl;
|
|
||||||
external 'SW' index 7;
|
|
||||||
|
|
||||||
function WinDefSecondaryWindowProc(Wnd: hwnd; msg: Cardinal;
|
|
||||||
mp1: mParam; mp2: mParam): mResult; cdecl;
|
|
||||||
external 'SW' index 8;
|
|
||||||
|
|
||||||
Function WinRegisterGraphicButton: Longbool; cdecl;
|
|
||||||
external 'SW' index 14;
|
|
||||||
|
|
||||||
End.
|
|
||||||
|
|
||||||
{
|
|
||||||
$Log$
|
|
||||||
Revision 1.1 2003-02-15 16:59:09 hajny
|
|
||||||
* mmtk directory corrected to lowercase
|
|
||||||
|
|
||||||
Revision 1.1 2003/02/09 13:49:06 hajny
|
|
||||||
+ mmtk added
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
{ No information about following functions
|
|
||||||
Index Name
|
|
||||||
³ 00009 ³ WinQuerySecondaryFrame
|
|
||||||
³ 00010 ³ WinQuerySecondaryDialog
|
|
||||||
³ 00013 ³ WinRegisterCircularSlider
|
|
||||||
³ 00053 ³ WinQueryDefaultSize
|
|
||||||
³ 00057 ³ WinSWAssocResModule
|
|
||||||
³ 00060 ³ WinReportMessage
|
|
||||||
³ 00061 ³ WinRegisterSelectionSlider
|
|
||||||
³ 00067 ³ WinRegisterCircularSlider2
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user