| /* |
| * 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 _GDIPLUSIMAGING_H") |
| typedef BYTE EncoderParameters; |
| cpp_quote("#endif") |
| |
| cpp_quote("#ifndef _GDIPLUSHEADERS_H") |
| typedef BYTE Image; |
| cpp_quote("#endif") |
| |
| cpp_quote("#define SHIMGDEC_DEFAULT 0x0") |
| cpp_quote("#define SHIMGDEC_THUMBNAIL 0x1") |
| cpp_quote("#define SHIMGDEC_LOADFULL 0x2") |
| |
| [ |
| 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); |
| } |