libHVD provides support for monitoring HVD events, tracking page and element composition, caching HVD elements, and compositing HVD elements. Using libHVD simplifies construction of raster backends that can output fully-composited eHVD pages. More...
Files | |
| file | hvdblit.h |
| Interface for HVD element blitters. | |
| file | hvdcache.h |
| eHVD cache for raster backends. | |
| file | hvdevmon.h |
| eHVD event monitor and responder. | |
| file | hvdlibinit.h |
| Functions for registering and deregistering the HVD cache implementations provided by eHVD support library. | |
| file | hvdpageoutput.h |
| HVD page output structure define. | |
| file | hvdtracker.h |
| HVD page and element define tracker. | |
| file | hvdutil.h |
| Utility functions for manipulating HVD elements. | |
Typedefs | |
| typedef struct HVD_cache | HVD_cache |
| An opaque typedef for the HVD cache instance. | |
| typedef struct HVD_cache_fns | HVD_cache_fns |
| Typedef for the HVD cache implementation functions. | |
| typedef struct HVD_tracker | HVD_tracker |
| An opaque typedef for the HVD tracker. | |
| typedef HqnResult | HVD_result |
| Type for return values from HVD functions. More... | |
| typedef int | HVD_recovery_reason |
Type for the reason parameter to the HVD_cache_fns::recovery_filter method. The core RIP will only use non-negative values for calls to HVD_cache_size() and HVD_cache_recover(). Values are combined bitmasks from the HVD_recovery_reason_values enumeration. | |
| typedef int | HVD_destroy_reason |
| Type of variables containing HVD_destroy_reason_values. | |
| typedef int | HVD_element_state |
| Type of variables containing HVD_element_state_values. | |
libHVD provides support for monitoring HVD events, tracking page and element composition, caching HVD elements, and compositing HVD elements. Using libHVD simplifies construction of raster backends that can output fully-composited eHVD pages.
There are four main components in libHVD:
The element cache declared in hvdcache.h. The element cache is responsible for managing eHVD elements: tracking creation, locking, unlocking, and hit counting on cached elements, purging unused elements to stay within specified storage limits, responding to cache size and purging requests, and responding to queries about elements present in the cache. The element cache may be specialised to use different storage methods for elements. Cache implementations are registered in RDR as named RDRs of class RDR_NAMES_LIBHVD_CACHE_API, and discovered and connected to HVD clients by event monitors. libHVD contains two built-in cache base classes:
Neither of these caches are instantiable. They must be discovered, copied, suitable raster storage methods implemented, and the modified cache registered in RDR in order to be usable by HVD event monitors. The Harlequin RIP SDK implements instantiable specializations of these caches:
libHVD itself does not implement a page output function, it leaves that for the application to provide. The Harlequin RIP SDK contains such an output function (declared in hvdoutput.h) that the application can used to composite eHVD elements and output the composed raster through the raster backend API. It allows the same raster backend implementation to be used for eHVD output as non-eHVD output. See Enabling eHVD in Raster output backends for details on how to enable eHVD output in raster output backends.
| typedef HqnResult HVD_result |
Type for return values from HVD functions.
HVD_result is a subclass of HqnResult that also supports some specific extra success and error codes generated and used in the libHVD library. Before assigning to values of HqnResult type or any of its other subclasses, HVD_result values must be converted using HVD_result_translate() to change the libHVD specific values to HQN_RESULT_SUCCESS or a monitor UID error code greater than MON_CLASS_ERROR.
| anonymous enum |
Values of HVD_result. These values are organised so a generic test for success can be made as less than or equal to HVD_SUCCESS, a generic test for failure is greater than HVD_SUCCESS.
Values greater than MON_CLASS_ERROR with a valid subclass, PS error type, and UID for an error may also be returned to give more specific error details. The subclass, PS error type, and UID for the error can be deconstructed using the macros in monevent.h.
Reasons for destroying libHVD objects. Values of the HVD_destroy_reason type.
Values for HVD element states, stored in the HVD_element_state type. These are used in multiple cache implementations.
Values of the HVD_recovery_reason type parameter reason of HVD_cache_fns::recovery_filter, also used by HVD_cache_size() and HVD_cache_recover(). This parameter can be used to exclude elements from low-memory recovery, if they do not contribute to the type of memory requested. The values may be combined in a bitmask for calls to HVD_cache_size() and HVD_cache_recover().
| Enumerator | |
|---|---|
| HVD_RECOVER_ALL | Recover elements from all memory types. Using this reason in HVD_cache_recover() or HVD_cache_size() bypasses calling the recovery filter function (so recovery filter functions will never be called with a zero reason code). |
| HVD_RECOVER_MPS_ARENA | Recover elements allocated from the RIP's MPS arena. This includes elements allocated using SwAlloc() or MemInit(). |
| HVD_RECOVER_MALLOC_FREE | Recover elements allocated using system malloc/free. |
| HVD_RECOVER_SHARED_MEMORY | Recover elements allocated using shared memory. |
| HVD_RECOVER_DISK | Recover elements in secondary storage. |
| HVD_COUNT_ALL | Count all memory in an eHVD cache, not just recoverable memory. This reason should not be used in HVD_cache_recover(). When used in HVD_cache_size(), it bypasses calling the recovery filter function, and counts the size of memory in all store types. |