Aegisub/vsfilter/IDirectVobSub.h

292 lines
7.2 KiB
C

/*
* Copyright (C) 2003-2006 Gabest
* http://www.gabest.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GNU Make; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
* http://www.gnu.org/copyleft/gpl.html
*
*/
#pragma once
#include "subtitles/STS.h"
#ifdef __cplusplus
extern "C" {
#endif
[uuid("EBE1FB08-3957-47ca-AF13-5827E5442E56")]
interface IDirectVobSub : public IUnknown
{
STDMETHOD(get_FileName) (THIS_
WCHAR* fn // fn should point to a buffer allocated to at least the length of MAX_PATH (=260)
) PURE;
STDMETHOD(put_FileName) (THIS_
WCHAR* fn
) PURE;
STDMETHOD(get_LanguageCount) (THIS_
int* nLangs
) PURE;
STDMETHOD(get_LanguageName) (THIS_
int iLanguage,
WCHAR** ppName // the returned *ppName is allocated with CoTaskMemAlloc
) PURE;
STDMETHOD(get_SelectedLanguage) (THIS_
int* iSelected
) PURE;
STDMETHOD(put_SelectedLanguage) (THIS_
int iSelected
) PURE;
STDMETHOD(get_HideSubtitles) (THIS_
bool* fHideSubtitles
) PURE;
STDMETHOD(put_HideSubtitles) (THIS_
bool fHideSubtitles
) PURE;
STDMETHOD(get_PreBuffering) (THIS_
bool* fDoPreBuffering
) PURE;
STDMETHOD(put_PreBuffering) (THIS_
bool fDoPreBuffering
) PURE;
STDMETHOD(get_Placement) (THIS_
bool* fOverridePlacement,
int* xperc,
int* yperc
) PURE;
STDMETHOD(put_Placement) (THIS_
bool fOverridePlacement,
int xperc,
int yperc
) PURE;
STDMETHOD(get_VobSubSettings) (THIS_
bool* fBuffer,
bool* fOnlyShowForcedSubs,
bool* fPolygonize
) PURE;
STDMETHOD(put_VobSubSettings) (THIS_
bool fBuffer,
bool fOnlyShowForcedSubs,
bool fPolygonize
) PURE;
STDMETHOD(get_TextSettings) (THIS_
void* lf,
int lflen, // depending on lflen, lf must point to LOGFONTA or LOGFONTW
COLORREF* color,
bool* fShadow,
bool* fOutline,
bool* fAdvancedRenderer
) PURE;
STDMETHOD(put_TextSettings) (THIS_
void* lf,
int lflen,
COLORREF color,
bool fShadow,
bool fOutline,
bool fAdvancedRenderer
) PURE;
STDMETHOD(get_Flip) (THIS_
bool* fPicture,
bool* fSubtitles
) PURE;
STDMETHOD(put_Flip) (THIS_
bool fPicture,
bool fSubtitles
) PURE;
STDMETHOD(get_OSD) (THIS_
bool* fOSD
) PURE;
STDMETHOD(put_OSD) (THIS_
bool fOSD
) PURE;
STDMETHOD(get_SaveFullPath) (THIS_
bool* fSaveFullPath
) PURE;
STDMETHOD(put_SaveFullPath) (THIS_
bool fSaveFullPath
) PURE;
STDMETHOD(get_SubtitleTiming) (THIS_
int* delay,
int* speedmul,
int* speeddiv
) PURE;
STDMETHOD(put_SubtitleTiming) (THIS_
int delay,
int speedmul,
int speeddiv
) PURE;
STDMETHOD(get_MediaFPS) (THIS_
bool* fEnabled,
double* fps
) PURE;
STDMETHOD(put_MediaFPS) (THIS_
bool fEnabled,
double fps
) PURE;
// no longer supported
STDMETHOD(get_ColorFormat) (THIS_
int* iPosition
) PURE;
STDMETHOD(put_ColorFormat) (THIS_
int iPosition
) PURE;
//
STDMETHOD(get_ZoomRect) (THIS_
NORMALIZEDRECT* rect
) PURE;
STDMETHOD(put_ZoomRect) (THIS_
NORMALIZEDRECT* rect
) PURE;
//
STDMETHOD(UpdateRegistry) (THIS_
) PURE;
//
STDMETHOD(HasConfigDialog) (THIS_
int iSelected
) PURE;
STDMETHOD(ShowConfigDialog) (THIS_ // if available, this will popup a child dialog allowing the user to edit the style options
int iSelected,
HWND hWndParent
) PURE;
//
STDMETHOD(IsSubtitleReloaderLocked) (THIS_
bool* fLocked
) PURE;
STDMETHOD(LockSubtitleReloader) (THIS_
bool fLock
) PURE;
STDMETHOD(get_SubtitleReloader) (THIS_
bool* fDisabled
) PURE;
STDMETHOD(put_SubtitleReloader) (THIS_
bool fDisable
) PURE;
//
STDMETHOD(get_ExtendPicture) (THIS_
int* horizontal, // 0 - disabled, 1 - mod32 extension (width = (width+31)&~31)
int* vertical, // 0 - disabled, 1 - 16:9, 2 - 4:3, 0x80 - crop (use crop together with 16:9 or 4:3, eg 0x81 will crop to 16:9 if the picture was taller)
int* resx2, // 0 - disabled, 1 - enabled, 2 - depends on the original resolution
int* resx2minw, // resolution doubler will be used if width*height <= resx2minw*resx2minh (resx2minw*resx2minh equals to 384*288 by default)
int* resx2minh
) PURE;
STDMETHOD(put_ExtendPicture) (THIS_
int horizontal,
int vertical,
int resx2,
int resx2minw,
int resx2minh
) PURE;
STDMETHOD(get_LoadSettings) (THIS_
int* level, // 0 - when needed, 1 - always, 2 - disabled
bool* fExternalLoad,
bool* fWebLoad,
bool* fEmbeddedLoad
) PURE;
STDMETHOD(put_LoadSettings) (THIS_
int level,
bool fExternalLoad,
bool fWebLoad,
bool fEmbeddedLoad
) PURE;
};
[uuid("FE6EC6A0-21CA-4970-9EF0-B296F7F38AF0")]
interface ISubClock : public IUnknown
{
STDMETHOD(SetTime)(REFERENCE_TIME rt) PURE;
STDMETHOD_(REFERENCE_TIME, GetTime)() PURE;
};
[uuid("0665B760-FBC1-46C3-A35F-E471527C96A4")]
interface ISubClock2 : public ISubClock
{
STDMETHOD(SetAvgTimePerFrame)(REFERENCE_TIME rt) PURE;
STDMETHOD(GetAvgTimePerFrame)(REFERENCE_TIME* prt) PURE; // return S_OK only if *prt was set and is valid
};
[uuid("AB52FC9C-2415-4dca-BC1C-8DCC2EAE8150")]
interface IDirectVobSub2 : public IDirectVobSub
{
STDMETHOD(AdviseSubClock) (THIS_
ISubClock* pSubClock
) PURE;
STDMETHOD_(bool, get_Forced) (THIS_
) PURE;
STDMETHOD(put_Forced) (THIS_
bool fForced
) PURE;
STDMETHOD(get_TextSettings) (THIS_
STSStyle* pDefStyle
) PURE;
STDMETHOD(put_TextSettings) (THIS_
STSStyle* pDefStyle
) PURE;
};
#ifdef __cplusplus
}
#endif