/* * 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