#define DWRITE_CORE 1
#include "dwrite_3.h"
///
/// Creates a factory object that is used for subsequent creation of individual DWriteCore objects.
///
/// Identifies whether the factory object will be shared or isolated.
/// Identifies the DirectWrite factory interface, such as UUIDOF(IDWriteFactory).
/// Receives the DirectWrite factory object.
///
/// Standard HRESULT error code.
///
///
/// This is functionally the same as the DWriteCreateFactory function exported by the system version
/// of DirectWrite. The DWriteCore function has a different name to avoid ambiguity.
///
EXTERN_C HRESULT DWRITE_EXPORT DWriteCoreCreateFactory(
_In_ DWRITE_FACTORY_TYPE factoryType,
_In_ REFIID iid,
_COM_Outptr_ IUnknown** factory
);
///
/// Registers an object that receives internal DWriteCore events.
///
/// Event sink object to register.
/// Standard HRESULT error code.
/// This method does NOT add a reference to the event sink object.
/// The caller is expected to hold a reference to the event sink object until
/// it later unregisters it by calling DWriteUnregisterEventSink.
EXTERN_C HRESULT DWRITE_EXPORT DWriteCoreRegisterEventSink(
IDWriteEventSink* eventSink
);
///
/// Unregisters an event sink object that was previously registered
/// using DWriteCoreRegisterEventSink.
///
/// Event sink object to unregister.
/// Since DWriteCore does not hold a reference to the event sink, this
/// call can be made by the event sink object's destructor.
EXTERN_C void DWRITE_EXPORT DWriteCoreUnregisterEventSink(
IDWriteEventSink* eventSink
);