Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
41
Src/Plugins/Input/in_swf/ExtendedFileInfo.cpp
Normal file
41
Src/Plugins/Input/in_swf/ExtendedFileInfo.cpp
Normal file
|
@ -0,0 +1,41 @@
|
|||
#include "main.h"
|
||||
#include "resource.h"
|
||||
#include <shlwapi.h>
|
||||
#include <strsafe.h>
|
||||
#include "api.h"
|
||||
|
||||
#define TESTKEYWORD(__keyword, __string)\
|
||||
(CSTR_EQUAL == CompareStringA(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT),\
|
||||
NORM_IGNORECASE, (__keyword), -1, (__string), -1))
|
||||
|
||||
extern "C" __declspec( dllexport ) int winampGetExtendedFileInfoW(const wchar_t *fn, const char *data, wchar_t *dest, int destlen)
|
||||
{
|
||||
if (TESTKEYWORD("type", data))
|
||||
{
|
||||
if (NULL != dest)
|
||||
{
|
||||
int index = 0;
|
||||
if (destlen > 1)
|
||||
dest[index++] = L'1';
|
||||
dest[index] = L'\0';
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
else if (TESTKEYWORD("family", data))
|
||||
{
|
||||
LPCWSTR e, p(NULL);
|
||||
e = PathFindExtensionW(fn);
|
||||
if (L'.' != *e) return 0;
|
||||
e++;
|
||||
|
||||
if (CSTR_EQUAL == CompareStringW(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT),
|
||||
NORM_IGNORECASE, e, -1, L"SWF", -1))
|
||||
{
|
||||
if (S_OK == StringCchCopyW(dest, destlen, WASABI_API_LNGSTRINGW(IDS_FAMILY_STRING))) return 1;
|
||||
//p = L"Shockwave Flash";
|
||||
}
|
||||
//if (p && S_OK == StringCchCopyW(dest, destlen, p)) return 1;
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
75
Src/Plugins/Input/in_swf/FLVExternalInterface.cpp
Normal file
75
Src/Plugins/Input/in_swf/FLVExternalInterface.cpp
Normal file
|
@ -0,0 +1,75 @@
|
|||
#include "FLVExternalInterface.h"
|
||||
#include "../xml/obj_xml.h"
|
||||
#include "api.h"
|
||||
#include "SWFParameters.h"
|
||||
#include "../Winamp/wa_ipc.h"
|
||||
#include "main.h"
|
||||
#include <api/service/waServiceFactory.h>
|
||||
#include <strsafe.h>
|
||||
|
||||
BSTR FLVExternalInterface::ExternalInterface_call(BSTR xml)
|
||||
{
|
||||
obj_xml *parser=0;
|
||||
waServiceFactory *parserFactory = plugin.service->service_getServiceByGuid(obj_xmlGUID);
|
||||
if (parserFactory)
|
||||
parser = (obj_xml *)parserFactory->getInterface();
|
||||
|
||||
if (parser)
|
||||
{
|
||||
{ // artificial scope for SWFParameters
|
||||
SWFParameters parameters(parser);
|
||||
parser->xmlreader_open();
|
||||
parser->xmlreader_setEncoding(L"UTF-16");
|
||||
parser->xmlreader_feed(xml, wcslen(xml)*sizeof(*xml));
|
||||
parser->xmlreader_feed(0, 0);
|
||||
parser->xmlreader_close();
|
||||
if (parameters.functionName)
|
||||
{
|
||||
if (!wcscmp(parameters.functionName, L"Benski"))
|
||||
{
|
||||
}
|
||||
else if (!wcscmp(parameters.functionName, L"Ready"))
|
||||
{
|
||||
unsigned int width, height;
|
||||
if (parameters.GetUnsigned(0, &width) && parameters.GetUnsigned(1, &height))
|
||||
videoOutput->open(width, height, 0, 1.0f /*(double)x/(double)y*/, VIDEO_MAKETYPE('N','O','N','E'));
|
||||
// TODO:
|
||||
// Play (if not paused during buffering)
|
||||
}
|
||||
else if (!wcscmp(parameters.functionName, L"Complete"))
|
||||
{
|
||||
PostMessage(plugin.hMainWindow, WM_WA_MPEG_EOF, 0, 0);
|
||||
}
|
||||
else if (!wcscmp(parameters.functionName, L"Metadata"))
|
||||
{
|
||||
// MessageBox(NULL, xml, L"Flash ExternalInterface.call()", MB_OK);
|
||||
double duration;
|
||||
if (parameters.GetDouble(0, &duration))
|
||||
playLength = (int)(duration * 1000.0);
|
||||
|
||||
}
|
||||
else if (!wcscmp(parameters.functionName, L"Buffering"))
|
||||
{
|
||||
Nullsoft::Utility::AutoLock autolock(statusGuard);
|
||||
StringCchCopy(status, 256, L"buffering");
|
||||
PostMessage(plugin.hMainWindow, WM_USER, 0, IPC_UPDTITLE);
|
||||
}
|
||||
else if (!wcscmp(parameters.functionName, L"Playing"))
|
||||
{
|
||||
Nullsoft::Utility::AutoLock autolock(statusGuard);
|
||||
status[0]=0;
|
||||
PostMessage(plugin.hMainWindow, WM_USER, 0, IPC_UPDTITLE);
|
||||
}
|
||||
else if (!wcscmp(parameters.functionName, L"Playhead"))
|
||||
{
|
||||
double playhead;
|
||||
if (parameters.GetDouble(0, &playhead))
|
||||
playPosition = (int)(playhead * 1000.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
parserFactory->releaseInterface(parser);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
8
Src/Plugins/Input/in_swf/FLVExternalInterface.h
Normal file
8
Src/Plugins/Input/in_swf/FLVExternalInterface.h
Normal file
|
@ -0,0 +1,8 @@
|
|||
#pragma once
|
||||
#include "FlashDispInterface.h"
|
||||
|
||||
class FLVExternalInterface : public FlashDispInterface
|
||||
{
|
||||
private:
|
||||
BSTR ExternalInterface_call(BSTR xml);
|
||||
};
|
7
Src/Plugins/Input/in_swf/FlashDispInterface.h
Normal file
7
Src/Plugins/Input/in_swf/FlashDispInterface.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
#include <wtypes.h>
|
||||
class FlashDispInterface
|
||||
{
|
||||
public:
|
||||
virtual BSTR ExternalInterface_call(BSTR xml) = 0;
|
||||
};
|
574
Src/Plugins/Input/in_swf/SWFContainer.cpp
Normal file
574
Src/Plugins/Input/in_swf/SWFContainer.cpp
Normal file
|
@ -0,0 +1,574 @@
|
|||
#include "SWFContainer.h"
|
||||
|
||||
#include <strsafe.h>
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
IConnectionPoint *SWFContainer::GetConnectionPoint (REFIID riid)
|
||||
{
|
||||
IUnknown *punk = getUnknown ();
|
||||
if (!punk)
|
||||
return 0;
|
||||
|
||||
IConnectionPointContainer *pcpc;
|
||||
IConnectionPoint *pcp = 0;
|
||||
|
||||
HRESULT hr = punk->QueryInterface (IID_IConnectionPointContainer, (void **) & pcpc);
|
||||
if (SUCCEEDED (hr))
|
||||
{
|
||||
pcpc->FindConnectionPoint (riid, &pcp);
|
||||
pcpc->Release();
|
||||
}
|
||||
punk->Release();
|
||||
return pcp;
|
||||
}
|
||||
|
||||
void SWFContainer::SyncSizeToWindow(HWND hwnd)
|
||||
{
|
||||
RECT rect;
|
||||
GetClientRect(hwnd, &rect);
|
||||
int height = (rect.bottom - rect.top);
|
||||
|
||||
// if we get a null height then hide the html control (after limiting to 1px)
|
||||
// and also hide it's parent window - is mainly for ml_wire to prevent display
|
||||
// glitches when resizing the bottom segment all the way to the bottom
|
||||
//ShowWindow(m_hwnd,height?SW_SHOWNA:SW_HIDE);
|
||||
//ShowWindow(hwnd,height?SW_SHOWNA:SW_HIDE);
|
||||
setLocation(0, 0, rect.right - rect.left, height?height:1);
|
||||
}
|
||||
|
||||
SWFContainer::SWFContainer(HWND hwnd)
|
||||
: flash (0), m_cRefs(1), m_hwnd(hwnd), m_punk(NULL),
|
||||
externalInterface(0)
|
||||
{
|
||||
|
||||
bInitialized = (S_OK == CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)) ? true : false;
|
||||
|
||||
memset(&m_rect, 0, sizeof(m_rect));
|
||||
add(ShockwaveFlashObjects::CLSID_ShockwaveFlash);
|
||||
|
||||
IUnknown *punk = getUnknown();
|
||||
if (punk)
|
||||
{
|
||||
|
||||
if (SUCCEEDED(punk->QueryInterface (ShockwaveFlashObjects::IID_IShockwaveFlash, (void **) & flash)))
|
||||
{
|
||||
IConnectionPoint *icp = GetConnectionPoint(ShockwaveFlashObjects::DIID__IShockwaveFlashEvents);
|
||||
if (icp)
|
||||
{
|
||||
m_dwCookie = 0;
|
||||
HRESULT hr = icp->Advise(static_cast<IDispatch *>(this), &m_dwCookie);
|
||||
icp->Release();
|
||||
}
|
||||
}
|
||||
else
|
||||
flash=0;
|
||||
punk->Release();
|
||||
}
|
||||
}
|
||||
|
||||
SWFContainer::~SWFContainer()
|
||||
{
|
||||
close();
|
||||
|
||||
if (bInitialized) CoUninitialize();
|
||||
}
|
||||
|
||||
void SWFContainer::close()
|
||||
{
|
||||
IOleObject *pioo;
|
||||
if ( m_punk )
|
||||
{
|
||||
HRESULT hr = m_punk->QueryInterface(IID_IOleObject, (PVOID *) & pioo);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
pioo->Close(OLECLOSE_NOSAVE);
|
||||
pioo->Release();
|
||||
}
|
||||
}
|
||||
|
||||
if (m_punk)
|
||||
{
|
||||
m_punk->Release();
|
||||
m_punk = NULL;
|
||||
}
|
||||
|
||||
if (flash)
|
||||
{
|
||||
flash->Stop();
|
||||
flash->Release();
|
||||
flash = 0;
|
||||
}
|
||||
}
|
||||
|
||||
STDMETHODIMP SWFContainer::QueryInterface(REFIID riid, PVOID *ppvObject)
|
||||
{
|
||||
if (!ppvObject)
|
||||
return E_POINTER;
|
||||
|
||||
if (IsEqualIID(riid, IID_IOleClientSite))
|
||||
*ppvObject = (IOleClientSite *)this;
|
||||
else if (IsEqualIID(riid, IID_IOleInPlaceSite))
|
||||
*ppvObject = (IOleInPlaceSite *)this;
|
||||
else if (IsEqualIID(riid, IID_IOleInPlaceFrame))
|
||||
*ppvObject = (IOleInPlaceFrame *)this;
|
||||
else if (IsEqualIID(riid, IID_IOleInPlaceUIWindow))
|
||||
*ppvObject = (IOleInPlaceUIWindow *)this;
|
||||
// else if (IsEqualIID(riid, IID_IOleControlSite))
|
||||
// *ppvObject = (IOleControlSite *)this;
|
||||
else if (IsEqualIID(riid, IID_IOleWindow))
|
||||
*ppvObject = this;
|
||||
else if (IsEqualIID(riid, IID_IDispatch))
|
||||
*ppvObject = (IDispatch *)this;
|
||||
else if (IsEqualIID(riid, IID_IUnknown))
|
||||
*ppvObject = this;
|
||||
else if (IsEqualIID(riid, __uuidof(ShockwaveFlashObjects::_IShockwaveFlashEvents)))
|
||||
*ppvObject = (IDispatch *)this;
|
||||
else
|
||||
{
|
||||
*ppvObject = NULL;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
AddRef();
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
ULONG SWFContainer::AddRef(void)
|
||||
{
|
||||
return ++m_cRefs;
|
||||
}
|
||||
|
||||
ULONG SWFContainer::Release(void)
|
||||
{
|
||||
if (--m_cRefs)
|
||||
return m_cRefs;
|
||||
|
||||
// PostQuitMessage(0);
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::SaveObject()
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, LPMONIKER * ppMk)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::GetContainer(LPOLECONTAINER * ppContainer)
|
||||
{
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::ShowObject()
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::OnShowWindow(BOOL fShow)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::RequestNewObjectLayout()
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::GetWindow(HWND * lphwnd)
|
||||
{
|
||||
if (!IsWindow(m_hwnd))
|
||||
return S_FALSE;
|
||||
|
||||
*lphwnd = m_hwnd;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::ContextSensitiveHelp(BOOL fEnterMode)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::CanInPlaceActivate(void)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::OnInPlaceActivate(void)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::OnUIActivate(void)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::GetWindowContext(IOleInPlaceFrame ** ppFrame, IOleInPlaceUIWindow ** ppIIPUIWin,
|
||||
LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo)
|
||||
{
|
||||
*ppFrame = (IOleInPlaceFrame *)this;
|
||||
*ppIIPUIWin = NULL;
|
||||
|
||||
RECT rect;
|
||||
GetClientRect(m_hwnd, &rect);
|
||||
lprcPosRect->left = 0;
|
||||
lprcPosRect->top = 0;
|
||||
lprcPosRect->right = rect.right;
|
||||
lprcPosRect->bottom = rect.bottom;
|
||||
|
||||
CopyRect(lprcClipRect, lprcPosRect);
|
||||
|
||||
lpFrameInfo->cb = sizeof(OLEINPLACEFRAMEINFO);
|
||||
lpFrameInfo->fMDIApp = FALSE;
|
||||
lpFrameInfo->hwndFrame = m_hwnd;
|
||||
lpFrameInfo->haccel = 0;
|
||||
lpFrameInfo->cAccelEntries = 0;
|
||||
|
||||
(*ppFrame)->AddRef();
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::Scroll(SIZE scrollExtent)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::OnUIDeactivate(BOOL fUndoable)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::OnInPlaceDeactivate(void)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::DiscardUndoState(void)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::DeactivateAndUndo(void)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::OnPosRectChange(LPCRECT lprcPosRect)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::InsertMenus(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::SetMenu(HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::RemoveMenus(HMENU hmenuShared)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::SetStatusText(LPCOLESTR pszStatusText)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::TranslateAccelerator(LPMSG lpmsg, WORD wID)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::EnableModeless(BOOL fEnable)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::OnControlInfoChanged()
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::LockInPlaceActive(BOOL fLock)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::GetExtendedControl(IDispatch **ppDisp)
|
||||
{
|
||||
if (ppDisp == NULL)
|
||||
return E_INVALIDARG;
|
||||
|
||||
*ppDisp = (IDispatch *)this;
|
||||
(*ppDisp)->AddRef();
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::TransformCoords(POINTL *pptlHimetric, POINTF *pptfContainer, DWORD dwFlags)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::TranslateAccelerator(LPMSG pMsg, DWORD grfModifiers)
|
||||
{
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::OnFocus(BOOL fGotFocus)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::ShowPropertyFrame(void)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::GetIDsOfNames(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgdispid)
|
||||
{
|
||||
*rgdispid = DISPID_UNKNOWN;
|
||||
return DISP_E_UNKNOWNNAME;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::GetTypeInfo(unsigned int itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::GetTypeInfoCount(unsigned int FAR * pctinfo)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
#define GET_SAFE_DISP_BSTR(_val) ((_val.pvarVal && VT_BSTR == _val.pvarVal->vt) ? _val.pvarVal->bstrVal : NULL)
|
||||
#define GET_SAFE_DISP_I4(_val) ((_val.pvarVal && VT_I4 == _val.pvarVal->vt) ? _val.pvarVal->intVal : 0)
|
||||
|
||||
|
||||
|
||||
void SWFContainer::add(CLSID clsid)
|
||||
{
|
||||
HRESULT hr; // return code
|
||||
|
||||
CoCreateInstance(clsid,
|
||||
NULL,
|
||||
CLSCTX_INPROC_SERVER/* | CLSCTX_LOCAL_SERVER*/,
|
||||
IID_IUnknown,
|
||||
(PVOID *)&m_punk);
|
||||
|
||||
if (!m_punk)
|
||||
return ;
|
||||
|
||||
IOleObject *pioo;
|
||||
hr = m_punk->QueryInterface(IID_IOleObject, (PVOID *) & pioo);
|
||||
if (FAILED(hr))
|
||||
return ;
|
||||
|
||||
pioo->SetClientSite(this);
|
||||
pioo->Release();
|
||||
|
||||
IPersistStreamInit *ppsi;
|
||||
hr = m_punk->QueryInterface(IID_IPersistStreamInit, (PVOID *) & ppsi);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ppsi->InitNew();
|
||||
ppsi->Release();
|
||||
}
|
||||
}
|
||||
|
||||
void SWFContainer::remove()
|
||||
{
|
||||
if (!m_punk)
|
||||
return ;
|
||||
|
||||
HRESULT hr;
|
||||
IOleObject *pioo;
|
||||
IOleInPlaceObject *pipo;
|
||||
|
||||
/*
|
||||
benski> enabling this makes everything lock up!
|
||||
IConnectionPoint *icp = GetConnectionPoint(DIID_DWebBrowserEvents2);
|
||||
if (icp)
|
||||
{
|
||||
// m_dwCookie = 0;
|
||||
HRESULT hr = icp->Unadvise(m_dwCookie);
|
||||
icp->Release();
|
||||
}
|
||||
*/
|
||||
|
||||
hr = m_punk->QueryInterface(IID_IOleObject, (PVOID *) & pioo);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
pioo->Close(OLECLOSE_NOSAVE);
|
||||
pioo->SetClientSite(NULL);
|
||||
pioo->Release();
|
||||
}
|
||||
|
||||
hr = m_punk->QueryInterface(IID_IOleInPlaceObject, (PVOID *) & pipo);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
pipo->UIDeactivate();
|
||||
pipo->InPlaceDeactivate();
|
||||
pipo->Release();
|
||||
}
|
||||
|
||||
m_punk->Release();
|
||||
m_punk = NULL;
|
||||
}
|
||||
|
||||
|
||||
void SWFContainer::setLocation(int x, int y, int width, int height)
|
||||
{
|
||||
m_rect.left = x;
|
||||
m_rect.top = y;
|
||||
m_rect.right = x + width;
|
||||
m_rect.bottom = y + height;
|
||||
|
||||
if (!m_punk)
|
||||
return ;
|
||||
|
||||
HRESULT hr;
|
||||
IOleInPlaceObject *pipo;
|
||||
|
||||
hr = m_punk->QueryInterface(IID_IOleInPlaceObject, (PVOID *) & pipo);
|
||||
if (FAILED(hr))
|
||||
return ;
|
||||
|
||||
pipo->SetObjectRects(&m_rect, &m_rect);
|
||||
pipo->Release();
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::GetBorder(LPRECT lprectBorder)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::RequestBorderSpace(LPCBORDERWIDTHS lpborderwidths)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::SetBorderSpace(LPCBORDERWIDTHS lpborderwidths)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT SWFContainer::SetActiveObject(IOleInPlaceActiveObject * pActiveObject, LPCOLESTR lpszObjName)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
void SWFContainer::setVisible(BOOL fVisible)
|
||||
{
|
||||
if (!m_punk)
|
||||
return ;
|
||||
|
||||
HRESULT hr;
|
||||
IOleObject *pioo;
|
||||
|
||||
hr = m_punk->QueryInterface(IID_IOleObject, (PVOID *) & pioo);
|
||||
if (FAILED(hr))
|
||||
return ;
|
||||
|
||||
if (fVisible)
|
||||
{
|
||||
pioo->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, this, 0, m_hwnd, &m_rect);
|
||||
pioo->DoVerb(OLEIVERB_SHOW, NULL, this, 0, m_hwnd, &m_rect);
|
||||
}
|
||||
else
|
||||
pioo->DoVerb(OLEIVERB_HIDE, NULL, this, 0, m_hwnd, NULL);
|
||||
|
||||
pioo->Release();
|
||||
}
|
||||
|
||||
void SWFContainer::setFocus(BOOL fFocus)
|
||||
{
|
||||
if (!m_punk)
|
||||
return ;
|
||||
|
||||
HRESULT hr;
|
||||
IOleObject *pioo;
|
||||
|
||||
if (fFocus)
|
||||
{
|
||||
hr = m_punk->QueryInterface(IID_IOleObject, (PVOID *) & pioo);
|
||||
if (FAILED(hr))
|
||||
return ;
|
||||
|
||||
pioo->DoVerb(OLEIVERB_UIACTIVATE, NULL, this, 0, m_hwnd, &m_rect);
|
||||
pioo->Release();
|
||||
}
|
||||
}
|
||||
|
||||
bool SWFContainer::translateKey(LPMSG pMsg)
|
||||
{
|
||||
if (!m_punk)
|
||||
return false;
|
||||
|
||||
HRESULT hr;
|
||||
IOleInPlaceActiveObject *pao;
|
||||
|
||||
hr = m_punk->QueryInterface(IID_IOleInPlaceActiveObject, (PVOID *) & pao);
|
||||
if (FAILED(hr))
|
||||
return false;
|
||||
|
||||
HRESULT res = pao->TranslateAccelerator(pMsg);
|
||||
pao->Release();
|
||||
return res == S_OK;
|
||||
}
|
||||
enum
|
||||
{
|
||||
FLASH_DISPID_EXTERNALINTERFACE_CALL = 197,
|
||||
};
|
||||
|
||||
HRESULT SWFContainer::Invoke(
|
||||
/* [in] */ DISPID dispIdMember,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [in] */ LCID lcid,
|
||||
/* [in] */ WORD wFlags,
|
||||
/* [out][in] */ DISPPARAMS *pDispParams,
|
||||
/* [out] */ VARIANT *pVarResult,
|
||||
/* [out] */ EXCEPINFO *pExcepInfo,
|
||||
/* [out] */ UINT *puArgErr)
|
||||
{
|
||||
switch (dispIdMember)
|
||||
{
|
||||
case 0x000007a6 : // OnProgress
|
||||
break;
|
||||
|
||||
case 0x00000096 : // FSCommand
|
||||
break;
|
||||
|
||||
case FLASH_DISPID_EXTERNALINTERFACE_CALL : // ExternalInterface.call()
|
||||
{
|
||||
if (externalInterface)
|
||||
externalInterface->ExternalInterface_call(pDispParams->rgvarg[0].bstrVal);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return DISP_E_MEMBERNOTFOUND;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
|
||||
* adContainer::getUnknown()
|
||||
|
||||
**************************************************************************/
|
||||
|
||||
IUnknown * SWFContainer::getUnknown()
|
||||
{
|
||||
if (!m_punk)
|
||||
return NULL;
|
||||
|
||||
m_punk->AddRef();
|
||||
return m_punk;
|
||||
}
|
144
Src/Plugins/Input/in_swf/SWFContainer.h
Normal file
144
Src/Plugins/Input/in_swf/SWFContainer.h
Normal file
|
@ -0,0 +1,144 @@
|
|||
#ifndef NULLSOFT_HTMLCONTAINERH
|
||||
#define NULLSOFT_HTMLCONTAINERH
|
||||
|
||||
#include <oleidl.h>
|
||||
#include <ocidl.h>
|
||||
//#import <system32/macromed/Flash/Flash9e.ocx> /*no_namespace, */named_guids, raw_interfaces_only, exclude("IServiceProvider")
|
||||
#include "Flash9e.tlh"
|
||||
#include "FlashDispInterface.h"
|
||||
//#include <shlobj.h>
|
||||
|
||||
/**************************************************************************
|
||||
class definitions
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
#ifndef DOCHOSTUIFLAG_HOST_NAVIGATES
|
||||
#define DOCHOSTUIFLAG_HOST_NAVIGATES 0x02000000
|
||||
#endif
|
||||
#ifndef DOCHOSTUIFLAG_ENABLE_REDIRECT_NOTIFICATION
|
||||
#define DOCHOSTUIFLAG_ENABLE_REDIRECT_NOTIFICATION 0x04000000
|
||||
#endif
|
||||
#ifndef DOCHOSTUIFLAG_USE_WINDOWLESS_SELECTCONTROL
|
||||
#define DOCHOSTUIFLAG_USE_WINDOWLESS_SELECTCONTROL 0x08000000
|
||||
#endif
|
||||
#ifndef DOCHOSTUIFLAG_USE_WINDOWED_SELECTCONTROL
|
||||
#define DOCHOSTUIFLAG_USE_WINDOWED_SELECTCONTROL 0x10000000
|
||||
#endif
|
||||
#ifndef DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE
|
||||
#define DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE 0x20000000
|
||||
#endif
|
||||
|
||||
|
||||
class SWFContainer : public IOleClientSite,
|
||||
public IOleInPlaceSite,
|
||||
public IOleInPlaceFrame,
|
||||
public IOleControlSite,
|
||||
public IDispatch
|
||||
{
|
||||
protected:
|
||||
ULONG m_cRefs; // ref count
|
||||
|
||||
IUnknown *m_punk; // IUnknown of contained object
|
||||
RECT m_rect; // size of control
|
||||
|
||||
bool bInitialized;
|
||||
public:
|
||||
HWND m_hwnd; // window handle of the container
|
||||
SWFContainer(HWND hwnd);
|
||||
virtual ~SWFContainer();
|
||||
|
||||
public:
|
||||
// *** IUnknown Methods ***
|
||||
STDMETHOD(QueryInterface)(REFIID riid, PVOID *ppvObject);
|
||||
STDMETHOD_(ULONG, AddRef)(void);
|
||||
STDMETHOD_(ULONG, Release)(void);
|
||||
|
||||
// *** IOleInPlaceUIWindow Methods ***
|
||||
STDMETHOD (GetBorder)(LPRECT lprectBorder);
|
||||
STDMETHOD (RequestBorderSpace)(LPCBORDERWIDTHS lpborderwidths);
|
||||
STDMETHOD (SetBorderSpace)(LPCBORDERWIDTHS lpborderwidths);
|
||||
STDMETHOD (SetActiveObject)(IOleInPlaceActiveObject * pActiveObject,
|
||||
LPCOLESTR lpszObjName);
|
||||
// *** IOleClientSite Methods ***
|
||||
STDMETHOD (SaveObject)();
|
||||
STDMETHOD (GetMoniker)(DWORD dwAssign, DWORD dwWhichMoniker, LPMONIKER *ppMk);
|
||||
STDMETHOD (GetContainer)(LPOLECONTAINER *ppContainer);
|
||||
STDMETHOD (ShowObject)();
|
||||
STDMETHOD (OnShowWindow)(BOOL fShow);
|
||||
STDMETHOD (RequestNewObjectLayout)();
|
||||
|
||||
// *** IOleWindow Methods ***
|
||||
STDMETHOD (GetWindow) (HWND * phwnd);
|
||||
STDMETHOD (ContextSensitiveHelp) (BOOL fEnterMode);
|
||||
|
||||
// *** IOleInPlaceSite Methods ***
|
||||
STDMETHOD (CanInPlaceActivate) (void);
|
||||
STDMETHOD (OnInPlaceActivate) (void);
|
||||
STDMETHOD (OnUIActivate) (void);
|
||||
STDMETHOD (GetWindowContext) (IOleInPlaceFrame ** ppFrame, IOleInPlaceUIWindow ** ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo);
|
||||
STDMETHOD (Scroll) (SIZE scrollExtent);
|
||||
STDMETHOD (OnUIDeactivate) (BOOL fUndoable);
|
||||
STDMETHOD (OnInPlaceDeactivate) (void);
|
||||
STDMETHOD (DiscardUndoState) (void);
|
||||
STDMETHOD (DeactivateAndUndo) (void);
|
||||
STDMETHOD (OnPosRectChange) (LPCRECT lprcPosRect);
|
||||
|
||||
|
||||
// *** IOleInPlaceFrame Methods ***
|
||||
STDMETHOD (InsertMenus)(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths);
|
||||
STDMETHOD (SetMenu)(HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject);
|
||||
STDMETHOD (RemoveMenus)(HMENU hmenuShared);
|
||||
STDMETHOD (SetStatusText)(LPCOLESTR pszStatusText);
|
||||
STDMETHOD (EnableModeless)(BOOL fEnable);
|
||||
STDMETHOD (TranslateAccelerator)(LPMSG lpmsg, WORD wID);
|
||||
|
||||
// *** IOleControlSite Methods ***
|
||||
STDMETHOD (OnControlInfoChanged)(void);
|
||||
STDMETHOD (LockInPlaceActive)(BOOL fLock);
|
||||
STDMETHOD (GetExtendedControl)(IDispatch **ppDisp);
|
||||
STDMETHOD (TransformCoords)(POINTL *pptlHimetric, POINTF *pptfContainer, DWORD dwFlags);
|
||||
STDMETHOD (TranslateAccelerator)(LPMSG pMsg, DWORD grfModifiers);
|
||||
STDMETHOD (OnFocus)(BOOL fGotFocus);
|
||||
STDMETHOD (ShowPropertyFrame)(void);
|
||||
|
||||
// *** IDispatch Methods ***
|
||||
STDMETHOD (GetIDsOfNames)(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgdispid);
|
||||
STDMETHOD (GetTypeInfo)(unsigned int itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo);
|
||||
STDMETHOD (GetTypeInfoCount)(unsigned int FAR * pctinfo);
|
||||
STDMETHOD (Invoke) (
|
||||
/* [in] */ DISPID dispIdMember,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [in] */ LCID lcid,
|
||||
/* [in] */ WORD wFlags,
|
||||
/* [out][in] */ DISPPARAMS *pDispParams,
|
||||
/* [out] */ VARIANT *pVarResult,
|
||||
/* [out] */ EXCEPINFO *pExcepInfo,
|
||||
/* [out] */ UINT *puArgErr);
|
||||
|
||||
|
||||
public:
|
||||
void add(CLSID clsid);
|
||||
void remove();
|
||||
|
||||
void setLocation(int x, int y, int width, int height);
|
||||
void setVisible(BOOL fVisible);
|
||||
void setFocus(BOOL fFocus);
|
||||
void setStatusWindow(HWND hwndStatus);
|
||||
bool translateKey(LPMSG pMsg);
|
||||
|
||||
|
||||
void close();
|
||||
|
||||
IUnknown * getUnknown();
|
||||
void SyncSizeToWindow(HWND window);
|
||||
IConnectionPoint *GetConnectionPoint(REFIID riid);
|
||||
DWORD m_dwCookie;
|
||||
struct ShockwaveFlashObjects::IShockwaveFlash *flash;
|
||||
FlashDispInterface *externalInterface;
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
104
Src/Plugins/Input/in_swf/SWFParameters.cpp
Normal file
104
Src/Plugins/Input/in_swf/SWFParameters.cpp
Normal file
|
@ -0,0 +1,104 @@
|
|||
#include "SWFParameters.h"
|
||||
#include "../xml/obj_xml.h"
|
||||
#include <locale.h>
|
||||
|
||||
/*
|
||||
example:
|
||||
<invoke name="Benski" returntype="xml">
|
||||
<arguments>
|
||||
</arguments>
|
||||
</invoke>
|
||||
*/
|
||||
|
||||
SWFParameters::SWFParameters(obj_xml *_parser)
|
||||
{
|
||||
parser = _parser;
|
||||
parser->xmlreader_setCaseSensitive();
|
||||
parser->xmlreader_registerCallback(L"invoke", this);
|
||||
parser->xmlreader_registerCallback(L"invoke\farguments\f*", this);
|
||||
parser->xmlreader_registerCallback(L"invoke\farguments\f*", ¤tParameter);
|
||||
functionName=0;
|
||||
C_locale = _create_locale(LC_NUMERIC, "C");
|
||||
}
|
||||
|
||||
SWFParameters::~SWFParameters()
|
||||
{
|
||||
for (ArgumentList::iterator itr=arguments.begin();itr!=arguments.end();itr++)
|
||||
{
|
||||
SWFArgument *argument = *itr;
|
||||
free(argument->type);
|
||||
free(argument->value);
|
||||
free(argument);
|
||||
}
|
||||
arguments.clear();
|
||||
parser->xmlreader_unregisterCallback(this);
|
||||
parser->xmlreader_unregisterCallback(¤tParameter);
|
||||
}
|
||||
|
||||
void SWFParameters::StartTag(const wchar_t *xmlpath, const wchar_t *xmltag, ifc_xmlreaderparams *params)
|
||||
{
|
||||
if (!wcscmp(xmlpath, L"invoke"))
|
||||
{
|
||||
const wchar_t *name = params->getItemValue(L"name");
|
||||
if (name)
|
||||
functionName = _wcsdup(name);
|
||||
}
|
||||
}
|
||||
|
||||
void SWFParameters::EndTag(const wchar_t *xmlpath, const wchar_t *xmltag)
|
||||
{
|
||||
if (!wcsncmp(xmlpath, L"invoke\farguments\f", 6 /*invoke*/+ 1/*\f*/ + 9/*arguments*/ + 1/*\f*/))
|
||||
{
|
||||
SWFArgument *argument = new SWFArgument;
|
||||
argument->type = _wcsdup(xmltag);
|
||||
const wchar_t *value = currentParameter.GetString();
|
||||
if (value)
|
||||
argument->value = _wcsdup(value);
|
||||
else
|
||||
argument->value = 0;
|
||||
arguments.push_back(argument);
|
||||
}
|
||||
}
|
||||
|
||||
bool SWFParameters::GetUnsigned(size_t index, unsigned int *value)
|
||||
{
|
||||
if (index < arguments.size())
|
||||
{
|
||||
SWFArgument *argument = arguments[index];
|
||||
if (argument && argument->type && !wcscmp(argument->type, L"number"))
|
||||
{
|
||||
const wchar_t *val = argument->value;
|
||||
if (val)
|
||||
{
|
||||
*value = wcstoul(val, 0, 10);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SWFParameters::GetDouble(size_t index, double *value)
|
||||
{
|
||||
if (index < arguments.size())
|
||||
{
|
||||
SWFArgument *argument = arguments[index];
|
||||
if (argument && argument->type && !wcscmp(argument->type, L"number"))
|
||||
{
|
||||
const wchar_t *val = argument->value;
|
||||
if (val)
|
||||
{
|
||||
*value = _wtof_l(val, C_locale);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#define CBCLASS SWFParameters
|
||||
START_DISPATCH;
|
||||
VCB(ONSTARTELEMENT, StartTag)
|
||||
VCB(ONENDELEMENT, EndTag)
|
||||
END_DISPATCH;
|
||||
#undef CBCLASS
|
37
Src/Plugins/Input/in_swf/SWFParameters.h
Normal file
37
Src/Plugins/Input/in_swf/SWFParameters.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
#pragma once
|
||||
#include "../xml/ifc_xmlreadercallback.h"
|
||||
#include "XMLString.h"
|
||||
#include <vector>
|
||||
#include <crtdefs.h>
|
||||
|
||||
class obj_xml;
|
||||
|
||||
struct SWFArgument
|
||||
{
|
||||
wchar_t *type;
|
||||
wchar_t *value;
|
||||
};
|
||||
|
||||
class SWFParameters : public ifc_xmlreadercallback
|
||||
{
|
||||
public:
|
||||
typedef std::vector<SWFArgument*> ArgumentList;
|
||||
|
||||
SWFParameters(obj_xml *_parser);
|
||||
~SWFParameters();
|
||||
|
||||
wchar_t *functionName;
|
||||
|
||||
bool GetUnsigned(size_t index, unsigned int *value);
|
||||
bool GetDouble(size_t index, double *value);
|
||||
private:
|
||||
void StartTag(const wchar_t *xmlpath, const wchar_t *xmltag, ifc_xmlreaderparams *params);
|
||||
void EndTag(const wchar_t *xmlpath, const wchar_t *xmltag);
|
||||
XMLString currentParameter;
|
||||
ArgumentList arguments;
|
||||
|
||||
_locale_t C_locale;
|
||||
obj_xml *parser;
|
||||
protected:
|
||||
RECVS_DISPATCH;
|
||||
};
|
26
Src/Plugins/Input/in_swf/SWFThread.cpp
Normal file
26
Src/Plugins/Input/in_swf/SWFThread.cpp
Normal file
|
@ -0,0 +1,26 @@
|
|||
#include "main.h"
|
||||
#include "api.h"
|
||||
#include "SWFContainer.h"
|
||||
|
||||
SWFContainer *activeContainer=0;
|
||||
WNDPROC oldVidProc=0;
|
||||
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
PAINTSTRUCT ps;
|
||||
HDC hdc;
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case WM_SIZE:
|
||||
activeContainer->SyncSizeToWindow(hWnd);
|
||||
break;
|
||||
case WM_ERASEBKGND:
|
||||
return 1;
|
||||
case WM_PAINT:
|
||||
hdc = BeginPaint(hWnd, &ps);
|
||||
EndPaint(hWnd, &ps);
|
||||
break;
|
||||
}
|
||||
return CallWindowProc(oldVidProc, hWnd, message, wParam, lParam);
|
||||
}
|
||||
|
52
Src/Plugins/Input/in_swf/XMLString.cpp
Normal file
52
Src/Plugins/Input/in_swf/XMLString.cpp
Normal file
|
@ -0,0 +1,52 @@
|
|||
/** (c) Nullsoft, Inc. C O N F I D E N T I A L
|
||||
** Filename:
|
||||
** Project:
|
||||
** Description:
|
||||
** Author: Ben Allison benski@nullsoft.com
|
||||
** Created:
|
||||
**/
|
||||
#include "main.h"
|
||||
#include "XMLString.h"
|
||||
#include <strsafe.h>
|
||||
|
||||
XMLString::XMLString()
|
||||
{
|
||||
data[0]=0;
|
||||
}
|
||||
|
||||
void XMLString::Reset()
|
||||
{
|
||||
data[0]=0;
|
||||
}
|
||||
|
||||
const wchar_t *XMLString::GetString()
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
void XMLString::StartTag(const wchar_t *xmlpath, const wchar_t *xmltag, ifc_xmlreaderparams *params)
|
||||
{
|
||||
data[0]=0;
|
||||
}
|
||||
|
||||
|
||||
void XMLString::TextHandler(const wchar_t *xmlpath, const wchar_t *xmltag, const wchar_t *str)
|
||||
{
|
||||
StringCchCatW(data, XMLSTRING_SIZE, str);
|
||||
}
|
||||
|
||||
|
||||
void XMLString::ManualSet(const wchar_t *string)
|
||||
{
|
||||
StringCchCatW(data, XMLSTRING_SIZE, string);
|
||||
}
|
||||
|
||||
#ifdef CBCLASS
|
||||
#undef CBCLASS
|
||||
#endif
|
||||
|
||||
#define CBCLASS XMLString
|
||||
START_DISPATCH;
|
||||
VCB(ONSTARTELEMENT, StartTag)
|
||||
VCB(ONCHARDATA, TextHandler)
|
||||
END_DISPATCH;
|
29
Src/Plugins/Input/in_swf/XMLString.h
Normal file
29
Src/Plugins/Input/in_swf/XMLString.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
#ifndef NULLSOFT_WINAMP_XMLSTRING_H
|
||||
#define NULLSOFT_WINAMP_XMLSTRING_H
|
||||
|
||||
|
||||
#include "../xml/ifc_xmlreadercallback.h"
|
||||
/*
|
||||
this one is an xml callback that just saves the last encountered string
|
||||
*/
|
||||
|
||||
#define XMLSTRING_SIZE 1024
|
||||
class XMLString : public ifc_xmlreadercallback
|
||||
{
|
||||
public:
|
||||
XMLString();
|
||||
void Reset();
|
||||
const wchar_t *GetString();
|
||||
void ManualSet(const wchar_t *string);
|
||||
private:
|
||||
/* XML callbacks */
|
||||
void StartTag(const wchar_t *xmlpath, const wchar_t *xmltag, ifc_xmlreaderparams *params);
|
||||
void EndTag(const wchar_t *xmlpath, const wchar_t *xmltag);
|
||||
void TextHandler(const wchar_t *xmlpath, const wchar_t *xmltag, const wchar_t *str);
|
||||
|
||||
wchar_t data[XMLSTRING_SIZE]; // for now, we'll make it dynamic later
|
||||
|
||||
RECVS_DISPATCH;
|
||||
};
|
||||
|
||||
#endif
|
6
Src/Plugins/Input/in_swf/api.h
Normal file
6
Src/Plugins/Input/in_swf/api.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <api/application/api_application.h>
|
||||
#define WASABI_API_APP applicationApi
|
||||
|
||||
#include "../Agave/Language/api_language.h"
|
347
Src/Plugins/Input/in_swf/flash9e.tlh
Normal file
347
Src/Plugins/Input/in_swf/flash9e.tlh
Normal file
|
@ -0,0 +1,347 @@
|
|||
// Created by Microsoft (R) C/C++ Compiler Version 13.10.6030 (0c25145a).
|
||||
//
|
||||
// e:\nullsoft\in_swf\release\flash9e.tlh
|
||||
//
|
||||
// C++ source equivalent of Win32 type library C:/windows/system32/macromed/Flash/Flash9e.ocx
|
||||
// compiler-generated file created 04/17/08 at 15:29:08 - DO NOT EDIT!
|
||||
|
||||
#pragma once
|
||||
#pragma pack(push, 8)
|
||||
|
||||
#include <comdef.h>
|
||||
|
||||
namespace ShockwaveFlashObjects {
|
||||
|
||||
//
|
||||
// Forward references and typedefs
|
||||
//
|
||||
|
||||
struct __declspec(uuid("d27cdb6b-ae6d-11cf-96b8-444553540000"))
|
||||
/* LIBID */ __ShockwaveFlashObjects;
|
||||
struct __declspec(uuid("d27cdb6c-ae6d-11cf-96b8-444553540000"))
|
||||
/* dual interface */ IShockwaveFlash;
|
||||
struct __declspec(uuid("d27cdb6d-ae6d-11cf-96b8-444553540000"))
|
||||
/* dispinterface */ _IShockwaveFlashEvents;
|
||||
struct /* coclass */ ShockwaveFlash;
|
||||
struct __declspec(uuid("d27cdb70-ae6d-11cf-96b8-444553540000"))
|
||||
/* interface */ IFlashFactory;
|
||||
struct __declspec(uuid("d27cdb72-ae6d-11cf-96b8-444553540000"))
|
||||
/* interface */ IFlashObjectInterface;
|
||||
struct __declspec(uuid("a6ef9860-c720-11d0-9337-00a0c90dcaa9"))
|
||||
/* interface */ IDispatchEx;
|
||||
struct /* coclass */ FlashObjectInterface;
|
||||
|
||||
//
|
||||
// Smart pointer typedef declarations
|
||||
//
|
||||
|
||||
_COM_SMARTPTR_TYPEDEF(IShockwaveFlash, __uuidof(IShockwaveFlash));
|
||||
_COM_SMARTPTR_TYPEDEF(_IShockwaveFlashEvents, __uuidof(_IShockwaveFlashEvents));
|
||||
_COM_SMARTPTR_TYPEDEF(IFlashFactory, __uuidof(IFlashFactory));
|
||||
_COM_SMARTPTR_TYPEDEF(IDispatchEx, __uuidof(IDispatchEx));
|
||||
_COM_SMARTPTR_TYPEDEF(IFlashObjectInterface, __uuidof(IFlashObjectInterface));
|
||||
|
||||
//
|
||||
// Type library items
|
||||
//
|
||||
|
||||
struct __declspec(uuid("d27cdb6c-ae6d-11cf-96b8-444553540000"))
|
||||
IShockwaveFlash : IDispatch
|
||||
{
|
||||
//
|
||||
// Raw methods provided by interface
|
||||
//
|
||||
|
||||
virtual HRESULT __stdcall get_ReadyState (
|
||||
/*[out,retval]*/ long * pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_TotalFrames (
|
||||
/*[out,retval]*/ long * pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_Playing (
|
||||
/*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_Playing (
|
||||
/*[in]*/ VARIANT_BOOL pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_Quality (
|
||||
/*[out,retval]*/ int * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_Quality (
|
||||
/*[in]*/ int pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_ScaleMode (
|
||||
/*[out,retval]*/ int * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_ScaleMode (
|
||||
/*[in]*/ int pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_AlignMode (
|
||||
/*[out,retval]*/ int * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_AlignMode (
|
||||
/*[in]*/ int pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_BackgroundColor (
|
||||
/*[out,retval]*/ long * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_BackgroundColor (
|
||||
/*[in]*/ long pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_Loop (
|
||||
/*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_Loop (
|
||||
/*[in]*/ VARIANT_BOOL pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_Movie (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_Movie (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_FrameNum (
|
||||
/*[out,retval]*/ long * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_FrameNum (
|
||||
/*[in]*/ long pVal ) = 0;
|
||||
virtual HRESULT __stdcall SetZoomRect (
|
||||
/*[in]*/ long left,
|
||||
/*[in]*/ long top,
|
||||
/*[in]*/ long right,
|
||||
/*[in]*/ long bottom ) = 0;
|
||||
virtual HRESULT __stdcall Zoom (
|
||||
/*[in]*/ int factor ) = 0;
|
||||
virtual HRESULT __stdcall Pan (
|
||||
/*[in]*/ long x,
|
||||
/*[in]*/ long y,
|
||||
/*[in]*/ int mode ) = 0;
|
||||
virtual HRESULT __stdcall Play ( ) = 0;
|
||||
virtual HRESULT __stdcall Stop ( ) = 0;
|
||||
virtual HRESULT __stdcall Back ( ) = 0;
|
||||
virtual HRESULT __stdcall Forward ( ) = 0;
|
||||
virtual HRESULT __stdcall Rewind ( ) = 0;
|
||||
virtual HRESULT __stdcall StopPlay ( ) = 0;
|
||||
virtual HRESULT __stdcall GotoFrame (
|
||||
/*[in]*/ long FrameNum ) = 0;
|
||||
virtual HRESULT __stdcall CurrentFrame (
|
||||
/*[out,retval]*/ long * FrameNum ) = 0;
|
||||
virtual HRESULT __stdcall IsPlaying (
|
||||
/*[out,retval]*/ VARIANT_BOOL * Playing ) = 0;
|
||||
virtual HRESULT __stdcall PercentLoaded (
|
||||
/*[out,retval]*/ long * percent ) = 0;
|
||||
virtual HRESULT __stdcall FrameLoaded (
|
||||
/*[in]*/ long FrameNum,
|
||||
/*[out,retval]*/ VARIANT_BOOL * loaded ) = 0;
|
||||
virtual HRESULT __stdcall FlashVersion (
|
||||
/*[out,retval]*/ long * version ) = 0;
|
||||
virtual HRESULT __stdcall get_WMode (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_WMode (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_SAlign (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_SAlign (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_Menu (
|
||||
/*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_Menu (
|
||||
/*[in]*/ VARIANT_BOOL pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_Base (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_Base (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_Scale (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_Scale (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_DeviceFont (
|
||||
/*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_DeviceFont (
|
||||
/*[in]*/ VARIANT_BOOL pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_EmbedMovie (
|
||||
/*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_EmbedMovie (
|
||||
/*[in]*/ VARIANT_BOOL pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_BGColor (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_BGColor (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_Quality2 (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_Quality2 (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall LoadMovie (
|
||||
/*[in]*/ int layer,
|
||||
/*[in]*/ BSTR url ) = 0;
|
||||
virtual HRESULT __stdcall TGotoFrame (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[in]*/ long FrameNum ) = 0;
|
||||
virtual HRESULT __stdcall TGotoLabel (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[in]*/ BSTR label ) = 0;
|
||||
virtual HRESULT __stdcall TCurrentFrame (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[out,retval]*/ long * FrameNum ) = 0;
|
||||
virtual HRESULT __stdcall TCurrentLabel (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall TPlay (
|
||||
/*[in]*/ BSTR target ) = 0;
|
||||
virtual HRESULT __stdcall TStopPlay (
|
||||
/*[in]*/ BSTR target ) = 0;
|
||||
virtual HRESULT __stdcall SetVariable (
|
||||
/*[in]*/ BSTR name,
|
||||
/*[in]*/ BSTR value ) = 0;
|
||||
virtual HRESULT __stdcall GetVariable (
|
||||
/*[in]*/ BSTR name,
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall TSetProperty (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[in]*/ int property,
|
||||
/*[in]*/ BSTR value ) = 0;
|
||||
virtual HRESULT __stdcall TGetProperty (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[in]*/ int property,
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall TCallFrame (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[in]*/ int FrameNum ) = 0;
|
||||
virtual HRESULT __stdcall TCallLabel (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[in]*/ BSTR label ) = 0;
|
||||
virtual HRESULT __stdcall TSetPropertyNum (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[in]*/ int property,
|
||||
/*[in]*/ double value ) = 0;
|
||||
virtual HRESULT __stdcall TGetPropertyNum (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[in]*/ int property,
|
||||
/*[out,retval]*/ double * pVal ) = 0;
|
||||
virtual HRESULT __stdcall TGetPropertyAsNumber (
|
||||
/*[in]*/ BSTR target,
|
||||
/*[in]*/ int property,
|
||||
/*[out,retval]*/ double * pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_SWRemote (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_SWRemote (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_FlashVars (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_FlashVars (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_AllowScriptAccess (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_AllowScriptAccess (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_MovieData (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_MovieData (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_InlineData (
|
||||
/*[out,retval]*/ IUnknown * * ppIUnknown ) = 0;
|
||||
virtual HRESULT __stdcall put_InlineData (
|
||||
/*[in]*/ IUnknown * ppIUnknown ) = 0;
|
||||
virtual HRESULT __stdcall get_SeamlessTabbing (
|
||||
/*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_SeamlessTabbing (
|
||||
/*[in]*/ VARIANT_BOOL pVal ) = 0;
|
||||
virtual HRESULT __stdcall EnforceLocalSecurity ( ) = 0;
|
||||
virtual HRESULT __stdcall get_Profile (
|
||||
/*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_Profile (
|
||||
/*[in]*/ VARIANT_BOOL pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_ProfileAddress (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_ProfileAddress (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_ProfilePort (
|
||||
/*[out,retval]*/ long * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_ProfilePort (
|
||||
/*[in]*/ long pVal ) = 0;
|
||||
virtual HRESULT __stdcall CallFunction (
|
||||
/*[in]*/ BSTR request,
|
||||
/*[out,retval]*/ BSTR * response ) = 0;
|
||||
virtual HRESULT __stdcall SetReturnValue (
|
||||
/*[in]*/ BSTR returnValue ) = 0;
|
||||
virtual HRESULT __stdcall DisableLocalSecurity ( ) = 0;
|
||||
virtual HRESULT __stdcall get_AllowNetworking (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_AllowNetworking (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
virtual HRESULT __stdcall get_AllowFullScreen (
|
||||
/*[out,retval]*/ BSTR * pVal ) = 0;
|
||||
virtual HRESULT __stdcall put_AllowFullScreen (
|
||||
/*[in]*/ BSTR pVal ) = 0;
|
||||
};
|
||||
|
||||
struct __declspec(uuid("d27cdb6d-ae6d-11cf-96b8-444553540000"))
|
||||
_IShockwaveFlashEvents : IDispatch
|
||||
{};
|
||||
|
||||
struct __declspec(uuid("d27cdb6e-ae6d-11cf-96b8-444553540000"))
|
||||
ShockwaveFlash;
|
||||
// [ default ] interface IShockwaveFlash
|
||||
// [ default, source ] dispinterface _IShockwaveFlashEvents
|
||||
|
||||
struct __declspec(uuid("d27cdb70-ae6d-11cf-96b8-444553540000"))
|
||||
IFlashFactory : IUnknown
|
||||
{};
|
||||
|
||||
struct __declspec(uuid("a6ef9860-c720-11d0-9337-00a0c90dcaa9"))
|
||||
IDispatchEx : IDispatch
|
||||
{
|
||||
//
|
||||
// Raw methods provided by interface
|
||||
//
|
||||
|
||||
virtual HRESULT __stdcall GetDispID (
|
||||
/*[in]*/ BSTR bstrName,
|
||||
/*[in]*/ unsigned long grfdex,
|
||||
/*[out]*/ long * pid ) = 0;
|
||||
virtual HRESULT __stdcall RemoteInvokeEx (
|
||||
/*[in]*/ long id,
|
||||
/*[in]*/ unsigned long lcid,
|
||||
/*[in]*/ unsigned long dwFlags,
|
||||
/*[in]*/ struct DISPPARAMS * pdp,
|
||||
/*[out]*/ VARIANT * pvarRes,
|
||||
/*[out]*/ struct EXCEPINFO * pei,
|
||||
/*[in]*/ struct IServiceProvider * pspCaller,
|
||||
/*[in]*/ unsigned int cvarRefArg,
|
||||
/*[in]*/ unsigned int * rgiRefArg,
|
||||
/*[in,out]*/ VARIANT * rgvarRefArg ) = 0;
|
||||
virtual HRESULT __stdcall DeleteMemberByName (
|
||||
/*[in]*/ BSTR bstrName,
|
||||
/*[in]*/ unsigned long grfdex ) = 0;
|
||||
virtual HRESULT __stdcall DeleteMemberByDispID (
|
||||
/*[in]*/ long id ) = 0;
|
||||
virtual HRESULT __stdcall GetMemberProperties (
|
||||
/*[in]*/ long id,
|
||||
/*[in]*/ unsigned long grfdexFetch,
|
||||
/*[out]*/ unsigned long * pgrfdex ) = 0;
|
||||
virtual HRESULT __stdcall GetMemberName (
|
||||
/*[in]*/ long id,
|
||||
/*[out]*/ BSTR * pbstrName ) = 0;
|
||||
virtual HRESULT __stdcall GetNextDispID (
|
||||
/*[in]*/ unsigned long grfdex,
|
||||
/*[in]*/ long id,
|
||||
/*[out]*/ long * pid ) = 0;
|
||||
virtual HRESULT __stdcall GetNameSpaceParent (
|
||||
/*[out]*/ IUnknown * * ppunk ) = 0;
|
||||
};
|
||||
|
||||
struct __declspec(uuid("d27cdb72-ae6d-11cf-96b8-444553540000"))
|
||||
IFlashObjectInterface : IDispatchEx
|
||||
{};
|
||||
|
||||
struct __declspec(uuid("d27cdb71-ae6d-11cf-96b8-444553540000"))
|
||||
FlashObjectInterface;
|
||||
// [ default ] interface IFlashObjectInterface
|
||||
|
||||
//
|
||||
// Named GUID constants initializations
|
||||
//
|
||||
|
||||
extern "C" const GUID __declspec(selectany) LIBID_ShockwaveFlashObjects =
|
||||
{0xd27cdb6b,0xae6d,0x11cf,{0x96,0xb8,0x44,0x45,0x53,0x54,0x00,0x00}};
|
||||
extern "C" const GUID __declspec(selectany) IID_IShockwaveFlash =
|
||||
{0xd27cdb6c,0xae6d,0x11cf,{0x96,0xb8,0x44,0x45,0x53,0x54,0x00,0x00}};
|
||||
extern "C" const GUID __declspec(selectany) DIID__IShockwaveFlashEvents =
|
||||
{0xd27cdb6d,0xae6d,0x11cf,{0x96,0xb8,0x44,0x45,0x53,0x54,0x00,0x00}};
|
||||
extern "C" const GUID __declspec(selectany) CLSID_ShockwaveFlash =
|
||||
{0xd27cdb6e,0xae6d,0x11cf,{0x96,0xb8,0x44,0x45,0x53,0x54,0x00,0x00}};
|
||||
extern "C" const GUID __declspec(selectany) IID_IFlashFactory =
|
||||
{0xd27cdb70,0xae6d,0x11cf,{0x96,0xb8,0x44,0x45,0x53,0x54,0x00,0x00}};
|
||||
extern "C" const GUID __declspec(selectany) IID_IDispatchEx =
|
||||
{0xa6ef9860,0xc720,0x11d0,{0x93,0x37,0x00,0xa0,0xc9,0x0d,0xca,0xa9}};
|
||||
extern "C" const GUID __declspec(selectany) IID_IFlashObjectInterface =
|
||||
{0xd27cdb72,0xae6d,0x11cf,{0x96,0xb8,0x44,0x45,0x53,0x54,0x00,0x00}};
|
||||
extern "C" const GUID __declspec(selectany) CLSID_FlashObjectInterface =
|
||||
{0xd27cdb71,0xae6d,0x11cf,{0x96,0xb8,0x44,0x45,0x53,0x54,0x00,0x00}};
|
||||
|
||||
} // namespace ShockwaveFlashObjects
|
||||
|
||||
#pragma pack(pop)
|
83
Src/Plugins/Input/in_swf/in_swf.rc
Normal file
83
Src/Plugins/Input/in_swf/in_swf.rc
Normal file
|
@ -0,0 +1,83 @@
|
|||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""version.rc2""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_NULLSOFT_SWF "Nullsoft Flash Control Playback v%s"
|
||||
65535 "{2430A7AC-317D-4d64-B33C-E1452A6384A2}"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_NULLSOFT_SWF_OLD "Nullsoft Flash Control Playback"
|
||||
IDS_SWF_FILES "Shockwave Flash Files"
|
||||
IDS_FAMILY_STRING "Shockwave Flash"
|
||||
IDS_ABOUT_TEXT "%s\n© 2008-2023 Winamp SA\nWritten by: Ben Allison\nBuild date: %s"
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#include "version.rc2"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
30
Src/Plugins/Input/in_swf/in_swf.sln
Normal file
30
Src/Plugins/Input/in_swf/in_swf.sln
Normal file
|
@ -0,0 +1,30 @@
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29609.76
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "in_swf", "in_swf.vcxproj", "{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}.Debug|x64.Build.0 = Debug|x64
|
||||
{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}.Release|Win32.Build.0 = Release|Win32
|
||||
{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}.Release|x64.ActiveCfg = Release|x64
|
||||
{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {C5DFAD3B-75E6-460A-A5E4-65E1C3027572}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
258
Src/Plugins/Input/in_swf/in_swf.vcxproj
Normal file
258
Src/Plugins/Input/in_swf/in_swf.vcxproj
Normal file
|
@ -0,0 +1,258 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{2B5561EC-78EC-4FA2-A76E-BEBEF3830E80}</ProjectGuid>
|
||||
<RootNamespace>in_swf</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
<IncludePath>$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
<IncludePath>$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg">
|
||||
<VcpkgEnabled>false</VcpkgEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<VcpkgConfiguration>Debug</VcpkgConfiguration>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<VcpkgConfiguration>Debug</VcpkgConfiguration>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IN_SWF_EXPORTS;UNICODE_INPUT_PLUGIN;_WIN32_DCOM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\
|
||||
xcopy /Y /D $(IntDir)$(TargetName).pdb ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;IN_SWF_EXPORTS;UNICODE_INPUT_PLUGIN;_WIN32_DCOM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\
|
||||
xcopy /Y /D $(IntDir)$(TargetName).pdb ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>..\..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;IN_SWF_EXPORTS;UNICODE_INPUT_PLUGIN;_WIN32_DCOM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>..\..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;_USRDLL;IN_SWF_EXPORTS;UNICODE_INPUT_PLUGIN;_WIN32_DCOM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\Winamp\strutil.h" />
|
||||
<ClInclude Include="api.h" />
|
||||
<ClInclude Include="FlashDispInterface.h" />
|
||||
<ClInclude Include="FLVExternalInterface.h" />
|
||||
<ClInclude Include="main.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="SWFContainer.h" />
|
||||
<ClInclude Include="SWFParameters.h" />
|
||||
<ClInclude Include="XMLString.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\Winamp\strutil.cpp" />
|
||||
<ClCompile Include="ExtendedFileInfo.cpp" />
|
||||
<ClCompile Include="FLVExternalInterface.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="SWFContainer.cpp" />
|
||||
<ClCompile Include="SWFParameters.cpp" />
|
||||
<ClCompile Include="SWFThread.cpp" />
|
||||
<ClCompile Include="XMLString.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="in_swf.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Wasabi\Wasabi.vcxproj">
|
||||
<Project>{3e0bfa8a-b86a-42e9-a33f-ec294f823f7f}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
74
Src/Plugins/Input/in_swf/in_swf.vcxproj.filters
Normal file
74
Src/Plugins/Input/in_swf/in_swf.vcxproj.filters
Normal file
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ExtendedFileInfo.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="FLVExternalInterface.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SWFContainer.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SWFParameters.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SWFThread.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="XMLString.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Winamp\strutil.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="XMLString.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SWFParameters.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SWFContainer.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="main.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FLVExternalInterface.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FlashDispInterface.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="api.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Winamp\strutil.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{0f49deee-ec41-4975-9692-7c014e9aa506}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Ressource Files">
|
||||
<UniqueIdentifier>{3afcd986-d90d-4cb4-bbea-d20056ada52e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{3008776d-78c5-48f4-ade1-2aa45acd6338}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="in_swf.rc">
|
||||
<Filter>Ressource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
447
Src/Plugins/Input/in_swf/main.cpp
Normal file
447
Src/Plugins/Input/in_swf/main.cpp
Normal file
|
@ -0,0 +1,447 @@
|
|||
#include "main.h"
|
||||
#include "api.h"
|
||||
#include "../Winamp/wa_ipc.h"
|
||||
#include "../Winamp/strutil.h"
|
||||
#include <shlwapi.h>
|
||||
#include "FLVExternalInterface.h"
|
||||
#include <api/service/waServiceFactory.h>
|
||||
#include <strsafe.h>
|
||||
#include "resource.h"
|
||||
|
||||
#define SWF_PLUGIN_VERSION L"1.15"
|
||||
|
||||
FLVExternalInterface flashExternalInterface;
|
||||
IVideoOutput *videoOutput=0;
|
||||
int playPosition=0;
|
||||
int playLength=-1000;
|
||||
api_application *WASABI_API_APP = 0;
|
||||
api_language *WASABI_API_LNG = 0;
|
||||
HINSTANCE WASABI_API_LNG_HINST = 0, WASABI_API_ORIG_HINST = 0;
|
||||
wchar_t pluginName[256] = {0}, status[256] = {0};
|
||||
Nullsoft::Utility::LockGuard statusGuard;
|
||||
|
||||
template <class api_T>
|
||||
static void ServiceBuild(api_T *&api_t, GUID factoryGUID_t)
|
||||
{
|
||||
if (plugin.service)
|
||||
{
|
||||
waServiceFactory *factory = plugin.service->service_getServiceByGuid(factoryGUID_t);
|
||||
if (factory)
|
||||
api_t = reinterpret_cast<api_T *>( factory->getInterface() );
|
||||
}
|
||||
}
|
||||
|
||||
template <class api_T>
|
||||
static void ServiceRelease(api_T *api_t, GUID factoryGUID_t)
|
||||
{
|
||||
if (plugin.service)
|
||||
{
|
||||
waServiceFactory *factory = plugin.service->service_getServiceByGuid(factoryGUID_t);
|
||||
if (factory)
|
||||
factory->releaseInterface(api_t);
|
||||
}
|
||||
api_t = NULL;
|
||||
}
|
||||
|
||||
void SetFileExtensions(void)
|
||||
{
|
||||
static char fileExtensionsString[1200] = {0}; // "SWF\0Shockwave Flash Files\0"
|
||||
char* end = 0;
|
||||
StringCchCopyExA(fileExtensionsString, 1200, "SWF", &end, 0, 0);
|
||||
StringCchCopyExA(end+1, 1200, WASABI_API_LNGSTRING(IDS_SWF_FILES), 0, 0, 0);
|
||||
plugin.FileExtensions = fileExtensionsString;
|
||||
}
|
||||
|
||||
int Init()
|
||||
{
|
||||
if (!IsWindow(plugin.hMainWindow))
|
||||
return IN_INIT_FAILURE;
|
||||
|
||||
ServiceBuild(WASABI_API_APP, applicationApiServiceGuid);
|
||||
ServiceBuild(WASABI_API_LNG, languageApiGUID);
|
||||
|
||||
WASABI_API_START_LANG(plugin.hDllInstance,InSwfLangGUID);
|
||||
StringCchPrintfW(pluginName,256,WASABI_API_LNGSTRINGW(IDS_NULLSOFT_SWF),SWF_PLUGIN_VERSION);
|
||||
plugin.description = (char*)pluginName;
|
||||
SetFileExtensions();
|
||||
|
||||
return IN_INIT_SUCCESS;
|
||||
}
|
||||
|
||||
void Quit()
|
||||
{
|
||||
ServiceRelease(WASABI_API_APP, applicationApiServiceGuid);
|
||||
ServiceRelease(WASABI_API_LNG, languageApiGUID);
|
||||
}
|
||||
|
||||
void GetFileInfo(const in_char *file, in_char *title, int *length_in_ms)
|
||||
{
|
||||
if (length_in_ms)
|
||||
{
|
||||
if (file && *file)
|
||||
*length_in_ms=-1000;
|
||||
else
|
||||
*length_in_ms = playLength;
|
||||
}
|
||||
|
||||
if (title)
|
||||
{
|
||||
if (file && *file)
|
||||
*title=0;
|
||||
else
|
||||
{
|
||||
Nullsoft::Utility::AutoLock autolock(statusGuard);
|
||||
if (status[0])
|
||||
StringCchPrintf(title, GETFILEINFO_TITLE_LENGTH, L"[%s]", status);
|
||||
else
|
||||
*title=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int InfoBox(const in_char *file, HWND hwndParent)
|
||||
{
|
||||
return INFOBOX_UNCHANGED;
|
||||
}
|
||||
|
||||
int IsOurFile(const in_char *fn)
|
||||
{
|
||||
if (!_wcsnicmp(fn, L"rtmp://", 7))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool isFLV = false;
|
||||
static int PlaySWF(BSTR filename)
|
||||
{
|
||||
#ifdef WIN64
|
||||
if (!activeContainer || (unsigned long long)activeContainer < 65536)
|
||||
{
|
||||
isFLV = false;
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
if (!activeContainer || (unsigned long)activeContainer < 65536)
|
||||
{
|
||||
isFLV = false;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
isFLV = false;
|
||||
activeContainer->externalInterface = &flashExternalInterface;
|
||||
activeContainer->flash->DisableLocalSecurity();
|
||||
activeContainer->flash->put_BackgroundColor(0);
|
||||
activeContainer->flash->put_EmbedMovie(FALSE);
|
||||
activeContainer->flash->put_Scale(L"showAll");
|
||||
activeContainer->flash->put_AllowScriptAccess(L"always");
|
||||
|
||||
HRESULT hr = activeContainer->flash->LoadMovie(0, filename);
|
||||
|
||||
activeContainer->setVisible(TRUE);
|
||||
|
||||
plugin.is_seekable = 0; // not seekable to start, we'll find out after opening if it's really seekable or not
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int PlayFLV(const wchar_t *filename)
|
||||
{
|
||||
#ifdef WIN64
|
||||
if (!activeContainer || (unsigned long long)activeContainer < 65536)
|
||||
{
|
||||
isFLV = false;
|
||||
return 1;
|
||||
}
|
||||
# else
|
||||
if (!activeContainer || (unsigned long)activeContainer < 65536)
|
||||
{
|
||||
isFLV = false;
|
||||
return 1;
|
||||
}
|
||||
#endif //
|
||||
|
||||
// if (!activeContainer || (unsigned long)activeContainer < 65536)
|
||||
// {
|
||||
// isFLV = false;
|
||||
// return 1;
|
||||
// }
|
||||
|
||||
isFLV = true;
|
||||
activeContainer->externalInterface = &flashExternalInterface;
|
||||
activeContainer->flash->DisableLocalSecurity();
|
||||
activeContainer->flash->put_BackgroundColor(0);
|
||||
activeContainer->flash->put_EmbedMovie(FALSE);
|
||||
activeContainer->flash->put_Scale(L"showAll");
|
||||
activeContainer->flash->put_AllowScriptAccess(L"always");
|
||||
|
||||
static wchar_t pluginPath[MAX_PATH] = {0}, swfPath[MAX_PATH+7] = {0};
|
||||
if (!pluginPath[0] && !swfPath[0])
|
||||
{
|
||||
lstrcpynW(pluginPath, (wchar_t*)SendMessage(plugin.hMainWindow, WM_WA_IPC, 0, IPC_GETPLUGINDIRECTORYW), MAX_PATH);
|
||||
PathAppend(pluginPath, L"winampFLV.swf");
|
||||
for (wchar_t *itr = pluginPath; *itr; itr++)
|
||||
{
|
||||
if (*itr == '\\')
|
||||
*itr = '/';
|
||||
}
|
||||
StringCchPrintf(swfPath, MAX_PATH+7, L"file://%s", pluginPath);
|
||||
}
|
||||
|
||||
HRESULT hr = activeContainer->flash->LoadMovie(0, swfPath);
|
||||
|
||||
activeContainer->setVisible(TRUE);
|
||||
|
||||
// TODO: make filename XML-safe
|
||||
wchar_t funcCall[1024] = {0};
|
||||
StringCchPrintf(funcCall, 1024, L"<invoke name=\"PlayFLV\" returntype=\"xml\"><arguments><string>%s</string></arguments></invoke>", filename);
|
||||
BSTR bstr_ret = 0;
|
||||
activeContainer->flash->CallFunction(funcCall, &bstr_ret);
|
||||
SetVolume(volume);
|
||||
SetPan(pan);
|
||||
|
||||
plugin.is_seekable = 1; // not seekable to start, we'll find out after opening if it's really seekable or not
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Play(const in_char *filename)
|
||||
{
|
||||
status[0]=0;
|
||||
playPosition=0;
|
||||
playLength=-1000;
|
||||
|
||||
if (!filename || !*filename)
|
||||
return 1;
|
||||
|
||||
if (!videoOutput)
|
||||
videoOutput = (IVideoOutput *)SendMessage(plugin.hMainWindow,WM_WA_IPC,0,IPC_GET_IVIDEOOUTPUT);
|
||||
|
||||
if (!videoOutput)
|
||||
return 1;
|
||||
|
||||
HWND videoWnd = (HWND)videoOutput->extended(VIDUSER_GET_VIDEOHWND, 0, 0); // ask for the video hwnd
|
||||
|
||||
wchar_t *mangledFilename = 0;
|
||||
if (PathIsURL(filename))
|
||||
mangledFilename = const_cast<wchar_t *>(filename);
|
||||
else
|
||||
{
|
||||
mangledFilename = (wchar_t *)malloc((MAX_PATH + 7)*sizeof(wchar_t));
|
||||
StringCchPrintf(mangledFilename, MAX_PATH+7, L"file://%s", filename);
|
||||
}
|
||||
videoOutput->open(0, 0, 0, 1.0, 'ENON');
|
||||
activeContainer = new SWFContainer(videoWnd);
|
||||
if (!activeContainer->flash)
|
||||
{
|
||||
delete activeContainer;
|
||||
activeContainer=0;
|
||||
if (mangledFilename != filename)
|
||||
free(mangledFilename);
|
||||
return 1; // failed
|
||||
}
|
||||
|
||||
oldVidProc = (WNDPROC)(LONG_PTR)SetWindowLongPtr(videoWnd, GWLP_WNDPROC, (LONG)(LONG_PTR)WndProc);
|
||||
|
||||
wchar_t ext[16]=L"";
|
||||
extension_exW(filename, ext, 16);
|
||||
if (!_wcsicmp(ext, L"swf"))
|
||||
{
|
||||
if (PlaySWF(mangledFilename))
|
||||
{
|
||||
return 1; // failed
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (PlayFLV(mangledFilename))
|
||||
{
|
||||
return 1; // failed
|
||||
}
|
||||
}
|
||||
|
||||
HRESULT hr = activeContainer->flash->Play();
|
||||
|
||||
if (mangledFilename != filename)
|
||||
free(mangledFilename);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int localPause=0;
|
||||
void Pause()
|
||||
{
|
||||
localPause=1;
|
||||
|
||||
if (isFLV)
|
||||
{
|
||||
BSTR bstr_ret;
|
||||
activeContainer->flash->CallFunction(L"<invoke name=\"Pause\" returntype=\"xml\"><arguments></arguments></invoke>", &bstr_ret);
|
||||
}
|
||||
}
|
||||
|
||||
void UnPause()
|
||||
{
|
||||
localPause=0;
|
||||
if (isFLV)
|
||||
{
|
||||
BSTR bstr_ret;
|
||||
activeContainer->flash->CallFunction(L"<invoke name=\"Resume\" returntype=\"xml\"><arguments></arguments></invoke>", &bstr_ret);
|
||||
}
|
||||
}
|
||||
|
||||
int IsPaused()
|
||||
{
|
||||
return localPause;
|
||||
}
|
||||
|
||||
void Stop()
|
||||
{
|
||||
videoOutput->close();
|
||||
HWND videoWnd = (HWND)videoOutput->extended(VIDUSER_GET_VIDEOHWND, 0, 0); // ask for the video hwnd
|
||||
SetWindowLongPtr(videoWnd, GWLP_WNDPROC, (LONG)(LONG_PTR)oldVidProc);
|
||||
activeContainer->close();
|
||||
activeContainer->Release();
|
||||
activeContainer=0;
|
||||
}
|
||||
|
||||
int GetLength()
|
||||
{
|
||||
return playLength;
|
||||
}
|
||||
|
||||
int GetOutputTime()
|
||||
{
|
||||
return playPosition;
|
||||
}
|
||||
|
||||
void SetOutputTime(int time_in_ms)
|
||||
{
|
||||
if (activeContainer)
|
||||
{
|
||||
if (isFLV)
|
||||
{
|
||||
double seconds = time_in_ms;
|
||||
seconds/=1000.0;
|
||||
|
||||
wchar_t funcCall[1024] = {0};
|
||||
StringCchPrintf(funcCall, 1024, L"<invoke name=\"Seek\" returntype=\"xml\"><arguments><number>%.3f</number></arguments></invoke>", seconds);
|
||||
BSTR bstr_ret;
|
||||
activeContainer->flash->CallFunction(funcCall, &bstr_ret);
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: maybe change the frame?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int pan = 0, volume = 255;
|
||||
void SetVolume(int _volume)
|
||||
{
|
||||
volume = _volume;
|
||||
if (activeContainer)
|
||||
{
|
||||
if (isFLV)
|
||||
{
|
||||
int newVolume = (volume * 100) / 255;
|
||||
|
||||
wchar_t funcCall[1024] = {0};
|
||||
StringCchPrintf(funcCall, 1024, L"<invoke name=\"SetVolume\" returntype=\"xml\"><arguments><number>%u</number></arguments></invoke>", newVolume);
|
||||
BSTR bstr_ret;
|
||||
activeContainer->flash->CallFunction(funcCall, &bstr_ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SetPan(int _pan)
|
||||
{
|
||||
pan = _pan;
|
||||
if (activeContainer)
|
||||
{
|
||||
if (isFLV)
|
||||
{
|
||||
int left = 100;
|
||||
int right = 100;
|
||||
if (pan < 0)
|
||||
left += (pan * 100)/127;
|
||||
if (pan>0)
|
||||
right-=(pan*100)/127;
|
||||
|
||||
wchar_t funcCall[1024] = {0};
|
||||
StringCchPrintf(funcCall, 1024, L"<invoke name=\"SetPan\" returntype=\"xml\"><arguments><number>%u</number><number>%u</number></arguments></invoke>", left, right);
|
||||
BSTR bstr_ret = 0;
|
||||
activeContainer->flash->CallFunction(funcCall, &bstr_ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EQSet(int on, char data[10], int preamp)
|
||||
{}
|
||||
|
||||
int DoAboutMessageBox(HWND parent, wchar_t* title, wchar_t* message)
|
||||
{
|
||||
MSGBOXPARAMS msgbx = {sizeof(MSGBOXPARAMS),0};
|
||||
msgbx.lpszText = message;
|
||||
msgbx.lpszCaption = title;
|
||||
msgbx.lpszIcon = MAKEINTRESOURCE(102);
|
||||
msgbx.hInstance = GetModuleHandle(0);
|
||||
msgbx.dwStyle = MB_USERICON;
|
||||
msgbx.hwndOwner = parent;
|
||||
return MessageBoxIndirect(&msgbx);
|
||||
}
|
||||
|
||||
void About(HWND hwndParent);
|
||||
In_Module plugin =
|
||||
{
|
||||
IN_VER_RET,
|
||||
"nullsoft(in_swf.dll)",
|
||||
0,
|
||||
0,
|
||||
0 /*"SWF\0Shockwave Flash Files\0"*/,
|
||||
1,
|
||||
1,
|
||||
About,
|
||||
About,
|
||||
Init,
|
||||
Quit,
|
||||
GetFileInfo,
|
||||
InfoBox,
|
||||
IsOurFile,
|
||||
Play,
|
||||
Pause,
|
||||
UnPause,
|
||||
IsPaused,
|
||||
Stop,
|
||||
GetLength,
|
||||
GetOutputTime,
|
||||
SetOutputTime,
|
||||
SetVolume,
|
||||
SetPan,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
EQSet,
|
||||
0,
|
||||
0
|
||||
};
|
||||
|
||||
void About(HWND hwndParent)
|
||||
{
|
||||
wchar_t message[1024] = {0}, text[1024] = {0};
|
||||
WASABI_API_LNGSTRINGW_BUF(IDS_NULLSOFT_SWF_OLD,text,1024);
|
||||
StringCchPrintf(message, 1024, WASABI_API_LNGSTRINGW(IDS_ABOUT_TEXT),
|
||||
plugin.description, TEXT(__DATE__));
|
||||
DoAboutMessageBox(hwndParent,text,message);
|
||||
}
|
||||
|
||||
extern "C" __declspec(dllexport) In_Module * winampGetInModule2()
|
||||
{
|
||||
return &plugin;
|
||||
}
|
24
Src/Plugins/Input/in_swf/main.h
Normal file
24
Src/Plugins/Input/in_swf/main.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
#pragma once
|
||||
|
||||
#include "../Winamp/in2.h"
|
||||
extern In_Module plugin;
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#include "../Winamp/wa_ipc.h"
|
||||
extern IVideoOutput *videoOutput;
|
||||
|
||||
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
extern WNDPROC oldVidProc;
|
||||
#include "SWFContainer.h"
|
||||
extern SWFContainer *activeContainer;
|
||||
|
||||
extern int playPosition;
|
||||
extern int playLength;
|
||||
extern int volume, pan;
|
||||
void SetVolume(int _volume);
|
||||
void SetPan(int _pan);
|
||||
|
||||
#include "../nu/AutoLock.h"
|
||||
extern Nullsoft::Utility::LockGuard statusGuard;
|
||||
extern wchar_t status[256];
|
20
Src/Plugins/Input/in_swf/resource.h
Normal file
20
Src/Plugins/Input/in_swf/resource.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by in_swf.rc
|
||||
//
|
||||
#define IDS_NULLSOFT_SWF_OLD 0
|
||||
#define IDS_SWF_FILES 1
|
||||
#define IDS_FAMILY_STRING 3
|
||||
#define IDS_ABOUT_TEXT 4
|
||||
#define IDS_NULLSOFT_SWF 65534
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 5
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
39
Src/Plugins/Input/in_swf/version.rc2
Normal file
39
Src/Plugins/Input/in_swf/version.rc2
Normal file
|
@ -0,0 +1,39 @@
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
#include "../../../Winamp/buildType.h"
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,15,0,0
|
||||
PRODUCTVERSION WINAMP_PRODUCTVER
|
||||
FILEFLAGSMASK 0x17L
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Winamp SA"
|
||||
VALUE "FileDescription", "Winamp Input Plug-in"
|
||||
VALUE "FileVersion", "1,15,0,0"
|
||||
VALUE "InternalName", "Nullsoft Flash Control Playback"
|
||||
VALUE "LegalCopyright", "Copyright © 2008-2023 Winamp SA"
|
||||
VALUE "LegalTrademarks", "Nullsoft and Winamp are trademarks of Winamp SA"
|
||||
VALUE "OriginalFilename", "in_swf.dll"
|
||||
VALUE "ProductName", "Winamp"
|
||||
VALUE "ProductVersion", STR_WINAMP_PRODUCTVER
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
BIN
Src/Plugins/Input/in_swf/winampFLV.fla
Normal file
BIN
Src/Plugins/Input/in_swf/winampFLV.fla
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue