📄 qedit.idl
字号:
//------------------------------------------------------------------------------
// File: QEdit.idl
//
// Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "oaidl.idl";
import "ocidl.idl";
import "dxtrans.idl";
import "amstream.idl";
import "msxml.idl";
//
// forward declare
//
interface IAMTimelineGroup;
interface IAMTimelineObj;
interface IAMTimelineEffect;
interface IAMTimelineTrans;
interface IAMTimelineSrc;
interface IAMTimeline;
interface IAMErrorLog;
interface ISampleGrabber;
interface IPropertySetter;
// used by DEXTER_VALUE's dwInterp var
typedef enum
{
DEXTERF_JUMP,
DEXTERF_INTERPOLATE
} DEXTERF;
// used to set values on the property setter
typedef struct
{
BSTR Name;
DISPID dispID;
LONG nValues;
} DEXTER_PARAM;
// used to set values on the property setter
typedef struct
{
VARIANT v;
REFERENCE_TIME rt;
DWORD dwInterp; // one of the DEXTERF_ flags
} DEXTER_VALUE;
// used by bMethod directly below
enum
{
DEXTER_AUDIO_JUMP,
DEXTER_AUDIO_INTERPOLATE
};
// used to set volumes on the mixer and mixer pins
typedef struct
{
REFERENCE_TIME rtEnd; //end Time
double dLevel; //end Volume Level
BOOL bMethod; //jump or interpolate
} DEXTER_AUDIO_VOLUMEENVELOPE ;
// used in IAMTimeline::Get(Set)InsertMode
enum
{
TIMELINE_INSERT_MODE_INSERT = 1,
TIMELINE_INSERT_MODE_OVERLAY = 2
};
//
// define what main 'things' can be put into the timeline tree.
// these values are used quite a bit with timeline access
// (bitmap mask flags)
typedef enum
{
TIMELINE_MAJOR_TYPE_COMPOSITE = 1,
TIMELINE_MAJOR_TYPE_TRACK = 2,
TIMELINE_MAJOR_TYPE_SOURCE = 4,
TIMELINE_MAJOR_TYPE_TRANSITION = 8,
TIMELINE_MAJOR_TYPE_EFFECT = 16,
TIMELINE_MAJOR_TYPE_GROUP = 128
} TIMELINE_MAJOR_TYPE;
// used in various IAMTimelineXXX "search" functions. Look in this
// file for "SearchDirection" to see where it's used. I didn't want
// to use an enum as an interface param type, so I used a long.
typedef enum
{
DEXTERF_BOUNDING = -1, // finds any source whose start <= Time and stop > Time
DEXTERF_EXACTLY_AT = 0, // finds any source that starts exactly at Time
DEXTERF_FORWARDS = 1 // finds any source that starts at or after Time
} DEXTERF_TRACK_SEARCH_FLAGS;
// right now, the media type in the group contains enough information about
// how we want to recompress. This might not be enough information in the
// future, so we define a structure we can get and set to the group.
//
typedef struct _SCompFmt0
{
long nFormatId;
AM_MEDIA_TYPE MediaType;
} SCompFmt0;
// used in IAMTimelineSrc::Get(Set)StretchMode
//
enum
{
RESIZEF_STRETCH,
RESIZEF_CROP,
RESIZEF_PRESERVEASPECTRATIO,
RESIZEF_PRESERVEASPECTRATIO_NOLETTERBOX
};
// used in IRenderEngine::SetDynamicReconnectLevel
// (bitmap mask flags)
enum
{
CONNECTF_DYNAMIC_NONE = 0x00000000,
CONNECTF_DYNAMIC_SOURCES = 0x00000001,
CONNECTF_DYNAMIC_EFFECTS = 0x00000002
};
// used in
// IMediaLocator::FindMediaFile
// IRenderEngine::SetSourceNameValidation
// IAMTimeline::ValidateSourceNames
// (bitmap mask flags)
enum
{
SFN_VALIDATEF_CHECK = 0x00000001, // do a check. Without this set, no check will be done.
SFN_VALIDATEF_POPUP = 0x00000002, // should UI popup show if not found
SFN_VALIDATEF_TELLME = 0x00000004, // warn user about replaced files
SFN_VALIDATEF_REPLACE = 0x00000008, // should it replace names in the tldb if found
SFN_VALIDATEF_USELOCAL = 0x000000010, // use local media preferrably over networked media
SFN_VALIDATEF_NOFIND = 0x000000020, // never find filenames, always use UI popup to find.,
// when used, _POPUP must be used as well
SFN_VALIDATEF_IGNOREMUTED = 0x000000040, // ignore muted files in the tldb
SFN_VALIDATEF_END
};
// key transitions types
enum
{
DXTKEY_RGB,
DXTKEY_NONRED,
DXTKEY_LUMINANCE,
DXTKEY_ALPHA,
DXTKEY_HUE
};
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
// New Property setting Interfaces
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
// interface for objects which can save/load IDispatch-able properties
[
object,
uuid(AE9472BD-B0C3-11D2-8D24-00A0C9441E20),
helpstring("IPropertySetter Interface"),
pointer_default(unique)
]
interface IPropertySetter : IUnknown // IPersist?
{
// for loading and saving through XML
HRESULT LoadXML([in] IUnknown * pxml);
// !!! doesn't work HRESULT LoadXML([in] IXMLElement * pxml);
HRESULT PrintXML([out] char *pszXML, [in] int cbXML, [out] int *pcbPrinted,[in] int indent);
// for cloning a portion of the props when splitting the object
//AUTOMATE
HRESULT CloneProps([out] IPropertySetter **ppSetter,
[in] REFERENCE_TIME rtStart,
[in] REFERENCE_TIME rtStop);
// for loading and saving programmatically
// caller must call this in pre-sorted order, this time must be > all
// previous times
//AUTOMATE
HRESULT AddProp([in] DEXTER_PARAM Param,
[in] DEXTER_VALUE *paValue);
//AUTOMATE
HRESULT GetProps([out] LONG *pcParams,
[out] DEXTER_PARAM **paParam,
[out] DEXTER_VALUE **paValue);
// after calling GetProps, you must call FreeProps to free resources
//AUTOMATE
HRESULT FreeProps([in] LONG cParams,
[in] DEXTER_PARAM *paParam,
[in] DEXTER_VALUE *paValue);
// to empty to property setter, so you can start over again
HRESULT ClearProps();
// for persisting
HRESULT SaveToBlob([out] LONG *pcSize, [out] BYTE **ppb);
HRESULT LoadFromBlob([in] LONG cSize, [in] BYTE *pb);
// to program the object that supports IDispatch with the props
// call with rtNow == -1 to set Static Props when your object instantiates
// errors will be logged, if a log is provided
//AUTOMATE
HRESULT SetProps([in] IUnknown *pTarget,
[in] REFERENCE_TIME rtNow);
// unicode version
HRESULT PrintXMLW([out] WCHAR *pszXML, [in] int cchXML, [out] int *pcchPrinted,[in] int indent);
};
// supported by our DxtCompositor class, this allows us to draw whatever comes in
// upon only a portion of the output bitmap
[
object,
uuid(BB44391E-6ABD-422f-9E2E-385C9DFF51FC),
dual,
helpstring("IDxtCompositor Interface"),
pointer_default(unique)
]
interface IDxtCompositor : IDXEffect
{
[propget, id(1), helpstring("property OffsetX")] HRESULT OffsetX([out, retval] long *pVal);
[propput, id(1), helpstring("property OffsetX")] HRESULT OffsetX([in] long newVal);
[propget, id(2), helpstring("property OffsetY")] HRESULT OffsetY([out, retval] long *pVal);
[propput, id(2), helpstring("property OffsetY")] HRESULT OffsetY([in] long newVal);
[propget, id(3), helpstring("property Width")] HRESULT Width([out, retval] long *pVal);
[propput, id(3), helpstring("property Width")] HRESULT Width([in] long newVal);
[propget, id(4), helpstring("property Height")] HRESULT Height([out, retval] long *pVal);
[propput, id(4), helpstring("property Height")] HRESULT Height([in] long newVal);
[propget, id(5), helpstring("property SrcOffsetX")] HRESULT SrcOffsetX([out, retval] long *pVal);
[propput, id(5), helpstring("property SrcOffsetX")] HRESULT SrcOffsetX([in] long newVal);
[propget, id(6), helpstring("property SrcOffsetY")] HRESULT SrcOffsetY([out, retval] long *pVal);
[propput, id(6), helpstring("property SrcOffsetY")] HRESULT SrcOffsetY([in] long newVal);
[propget, id(7), helpstring("property SrcWidth")] HRESULT SrcWidth([out, retval] long *pVal);
[propput, id(7), helpstring("property SrcWidth")] HRESULT SrcWidth([in] long newVal);
[propget, id(8), helpstring("property SrcHeight")] HRESULT SrcHeight([out, retval] long *pVal);
[propput, id(8), helpstring("property SrcHeight")] HRESULT SrcHeight([in] long newVal);
};
[
object,
uuid(4EE9EAD9-DA4D-43d0-9383-06B90C08B12B),
dual,
helpstring("IDxtAlphaSetter Interface"),
pointer_default(unique)
]
interface IDxtAlphaSetter : IDXEffect
{
// set the alpha to a particular number
[propget, id(1), helpstring("property Alpha")] HRESULT Alpha([out, retval] long *pVal);
[propput, id(1), helpstring("property Alpha")] HRESULT Alpha([in] long newVal);
// set the alpha to a percentage of it's full value
[propget, id(2), helpstring("property AlphaRamp")] HRESULT AlphaRamp([out, retval] double *pVal);
[propput, id(2), helpstring("property AlphaRamp")] HRESULT AlphaRamp([in] double newVal);
};
// Supported by our JPEG DXT, that can do any wipe based on a bitmap
//
[
object,
uuid(DE75D011-7A65-11D2-8CEA-00A0C9441E20),
dual,
helpstring("IDxtJpeg Interface"),
pointer_default(unique)
]
interface IDxtJpeg : IDXEffect
{
[propget, id(1), helpstring("property MaskNum")] HRESULT MaskNum([out, retval] long *);
[propput, id(1), helpstring("property MaskNum")] HRESULT MaskNum([in] long);
[propget, id(2), helpstring("property MaskName")] HRESULT MaskName([out, retval] BSTR *pVal);
[propput, id(2), helpstring("property MaskName")] HRESULT MaskName([in] BSTR newVal);
[propget, id(3), helpstring("property ScaleX")] HRESULT ScaleX([out, retval] double *);
[propput, id(3), helpstring("property ScaleX")] HRESULT ScaleX([in] double);
[propget, id(4), helpstring("property ScaleY")] HRESULT ScaleY([out, retval] double *);
[propput, id(4), helpstring("property ScaleY")] HRESULT ScaleY([in] double);
[propget, id(5), helpstring("property OffsetX")] HRESULT OffsetX([out, retval] long *);
[propput, id(5), helpstring("property OffsetX")] HRESULT OffsetX([in] long);
[propget, id(6), helpstring("property OffsetY")] HRESULT OffsetY([out, retval] long *);
[propput, id(6), helpstring("property OffsetY")] HRESULT OffsetY([in] long);
[propget, id(7), helpstring("property ReplicateX")] HRESULT ReplicateX([out, retval] long *pVal);
[propput, id(7), helpstring("property ReplicateX")] HRESULT ReplicateX([in] long newVal);
[propget, id(8), helpstring("property ReplicateY")] HRESULT ReplicateY([out, retval] long *pVal);
[propput, id(8), helpstring("property ReplicateY")] HRESULT ReplicateY([in] long newVal);
[propget, id(9), helpstring("property BorderColor")] HRESULT BorderColor([out, retval] long *pVal);
[propput, id(9), helpstring("property BorderColor")] HRESULT BorderColor([in] long newVal);
[propget, id(10), helpstring("property BorderWidth")] HRESULT BorderWidth([out, retval] long *pVal);
[propput, id(10), helpstring("property BorderWidth")] HRESULT BorderWidth([in] long newVal);
[propget, id(11), helpstring("property BorderSoftness")] HRESULT BorderSoftness([out, retval] long *pVal);
[propput, id(11), helpstring("property BorderSoftness")] HRESULT BorderSoftness([in] long newVal);
HRESULT ApplyChanges();
HRESULT LoadDefSettings();
};
// key
[
object,
uuid(3255de56-38fb-4901-b980-94b438010d7b),
dual,
helpstring("IDxtKey Interface"),
pointer_default(unique)
]
interface IDxtKey : IDXEffect
{
[propget, id(1), helpstring("property KeyType")] HRESULT KeyType([out, retval] int *);
[propput, id(1), helpstring("property Keytype")] HRESULT KeyType([in] int);
[propget, id(2), helpstring("property Hue")] HRESULT Hue([out, retval] int *);
[propput, id(2), helpstring("property Hue")] HRESULT Hue([in] int );
[propget, id(3), helpstring("property Luminance")] HRESULT Luminance([out, retval] int *);
[propput, id(3), helpstring("property Luminance")] HRESULT Luminance([in] int );
[propget, id(4), helpstring("property RGB")] HRESULT RGB([out, retval] DWORD *);
[propput, id(4), helpstring("property RGB")] HRESULT RGB([in] DWORD );
[propget, id(5), helpstring("property Similarity")] HRESULT Similarity([out,retval] int * );
[propput, id(5), helpstring("property Similarity")] HRESULT Similarity([in] int );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -