diff --git a/include/Makefile.in b/include/Makefile.in index 596c0c9f158..8283616102c 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -137,6 +137,7 @@ IDL_SRCS = \ servprov.idl \ sesprp.idl \ shdeprecated.idl \ + shimgdata.idl \ shldisp.idl \ shobjidl.idl \ shtypes.idl \ diff --git a/include/shimgdata.idl b/include/shimgdata.idl new file mode 100644 index 00000000000..2e8429880a4 --- /dev/null +++ b/include/shimgdata.idl @@ -0,0 +1,93 @@ +/* + * Copyright 2016 Nikolay Sivov For CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; +import "propidl.idl"; + +cpp_quote("#ifndef _GDIPLUSPIXELFORMATS_H") +typedef DWORD PixelFormat; +cpp_quote("#endif") + +cpp_quote("#ifndef _GDIPLUSENUMS_H") +typedef DWORD InterpolationMode; +cpp_quote("#endif") + +cpp_quote("#ifndef _GDIPLUSHEADERS_H") +typedef BYTE EncoderParameters; +typedef BYTE Image; +cpp_quote("#endif") + +[ + object, + uuid(53fb8e58-50c0-4003-b4aa-0c8df28e7f3a) +] +interface IShellImageDataAbort : IUnknown +{ + HRESULT QueryAbort(); +} + +[ + object, + local, + uuid(bfdeec12-8040-4403-a5ea-9e07dafcf530) +] +interface IShellImageData : IUnknown +{ + HRESULT Decode([in] DWORD flags, [in] ULONG cx_desired, [in] ULONG cy_desired); + HRESULT Draw([in] HDC hdc, [in] RECT *dest, [in] RECT *src); + HRESULT NextFrame(); + HRESULT NextPage(); + HRESULT PrevPage(); + HRESULT IsTransparent(); + HRESULT IsAnimated(); + HRESULT IsVector(); + HRESULT IsMultipage(); + HRESULT IsEditable(); + HRESULT IsPrintable(); + HRESULT IsDecoded(); + HRESULT GetCurrentPage([out] ULONG *page); + HRESULT GetPageCount([out] ULONG *count); + HRESULT SelectPage([in] ULONG page); + HRESULT GetSize([out] SIZE *size); + HRESULT GetRawDataFormat([out] GUID *format); + HRESULT GetPixelFormat([out] PixelFormat *format); + HRESULT GetDelay([out] DWORD *delay); + HRESULT GetProperties([in] DWORD mode, [out] IPropertySetStorage **props); + HRESULT Rotate([in] DWORD angle); + HRESULT Scale([in] ULONG cx, [in] ULONG cy, [in] InterpolationMode mode); + HRESULT DiscardEdit(); + HRESULT SetEncoderParams([in] IPropertyBag *params); + HRESULT DisplayName([size_is(count), in, out] LPWSTR name, UINT count); + HRESULT GetResolution([out] ULONG *res_x, [out] ULONG *res_y); + HRESULT GetEncoderParams([in] GUID *format, [out] EncoderParameters **params); + HRESULT RegisterAbort([in] IShellImageDataAbort *abort, [out] IShellImageDataAbort **prev); + HRESULT CloneFrame([out] Image **frame); + HRESULT ReplaceFrame([in] Image *frame); +} + +[ + object, + uuid(9be8ed5c-edab-4d75-90f3-bd5bdbb21c82) +] +interface IShellImageDataFactory : IUnknown +{ + HRESULT CreateIShellImageData([out] IShellImageData **data); + HRESULT CreateImageFromFile([in] LPCWSTR path, [out] IShellImageData **data); + HRESULT CreateImageFromStream([in] IStream *stream, [out] IShellImageData **data); + HRESULT GetDataFormatFromPath([in] LPCWSTR path, [out] GUID *format); +}