/* * Copyright 2021 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 "oaidl.idl"; [ object, uuid(1b8efec4-3019-4c27-964e-367202156906), ] interface IPrintDocumentPackageTarget : IUnknown { HRESULT GetPackageTargetTypes( [out] UINT32 *targetCount, [out, size_is(, *targetCount)] GUID **targetTypes ); HRESULT GetPackageTarget( [in] REFGUID guidTargetType, [in] REFIID riid, [out, iid_is(riid)] void **ppvTarget ); HRESULT Cancel(); } typedef [v1_enum] enum PrintDocumentPackageCompletion { PrintDocumentPackageCompletion_InProgress, PrintDocumentPackageCompletion_Completed, PrintDocumentPackageCompletion_Canceled, PrintDocumentPackageCompletion_Failed } PrintDocumentPackageCompletion; typedef struct { UINT32 JobId; INT32 CurrentDocument; INT32 CurrentPage; INT32 CurrentPageTotal; PrintDocumentPackageCompletion Completion; HRESULT PackageStatus; } PrintDocumentPackageStatus; [ object, dual, nonextensible, uuid(ed90c8ad-5c34-4d05-a1ec-0e8a9b3ad7af), ] interface IPrintDocumentPackageStatusEvent : IDispatch { [id(1)] HRESULT PackageStatusUpdated( [in] PrintDocumentPackageStatus *packageStatus ); } [ object, uuid(d2959bf7-b31b-4a3d-9600-712eb1335ba4), ] interface IPrintDocumentPackageTargetFactory : IUnknown { HRESULT CreateDocumentPackageTargetForPrintJob( [in, string] LPCWSTR printerName, [in, string] LPCWSTR jobName, [in] IStream *jobOutputStream, [in] IStream *jobPrintTicketStream, [out] IPrintDocumentPackageTarget **docPackageTarget ); } [ version(1.0), uuid(410d76f7-8bb5-4a7d-9d37-9c71b1b14d14), ] library PrintDocumentTargetLib { [ noncreatable, uuid(4842669e-9947-46ea-8ba2-d8cce432c2ca), ] coclass PrintDocumentPackageTarget { [default] interface IPrintDocumentPackageTarget; [source] dispinterface IPrintDocumentPackageStatusEvent; } [ uuid(348ef17d-6c81-4982-92b4-ee188a43867a) ] coclass PrintDocumentPackageTargetFactory { [default] interface IPrintDocumentPackageTargetFactory; } } /* library */ cpp_quote("DEFINE_GUID(ID_DOCUMENTPACKAGETARGET_MSXPS, 0x9cae40a8, 0xded1, 0x41c9, 0xa9, 0xfd, 0xd7, 0x35, 0xef, 0x33, 0xae, 0xda);") cpp_quote("DEFINE_GUID(ID_DOCUMENTPACKAGETARGET_OPENXPS, 0x0056bb72, 0x8c9c, 0x4612, 0xbd, 0x0f, 0x93, 0x01, 0x2a, 0x87, 0x09, 0x9d);") cpp_quote("DEFINE_GUID(ID_DOCUMENTPACKAGETARGET_OPENXPS_WITH_3D, 0x63dbd720, 0x8b14, 0x4577, 0xb0, 0x74, 0x7b, 0xb1, 0x1b, 0x59, 0x6d, 0x28);")