Mako 8.2.0 API
MakoCore SDK API Documentation
Loading...
Searching...
No Matches
apexeval.h File Reference

A compatibility header that presents the same API as IJawsRenderer, but internally will use Apex. This is useful for evaluation purposes only and in general it will be best to use Apex directly. In addition to the restrictions noted below, Apex offers additional features that are not available through this evaluation method. More...

Include dependency graph for apexeval.h:

Go to the source code of this file.

Namespaces

namespace  JawsMako

Functions

JAWSMAKO_API IJawsRendererPtr JawsMako::createApexEvalRenderer (const IJawsMakoPtr &jawsMako)

Detailed Description

A compatibility header that presents the same API as IJawsRenderer, but internally will use Apex. This is useful for evaluation purposes only and in general it will be best to use Apex directly. In addition to the restrictions noted below, Apex offers additional features that are not available through this evaluation method.

Please note that in general Apex will be more performant when rendering to frame buffers, as there are more opportunities for parallelism.

Please note that it is common in some use cases to create multiple IJawsRenderer instances to take advantage of parallel rendering on multiple threads to exploit multicore CPUs.

This, while good for the Jaws renderer, is generally bad for Apex or GPU renderers in general, in particular as some objects may be repeatedly uploaded to GPU memory needlessly, and GPU memory is a finite resource. Apex itself is reentrant, and while a GPU may only work on a single render at a time (though parts of renders will be interleaved), Apex can prepare content for the GPU in parallel, and this helps ensure the GPU is well utilized. As a result, this evaluation class will create a single Apex renderer internally and all instances of this class will issue renders to just that one shared instance of Apex.

As a result, some settings applied to instances of this class may not be handled correctly if different instances are applying different settings. In particular, setBlackPreservation() and setIgnoreMatchingDeviceIntercept() may be unevenly handled if multiple instances have different settings.

Note that not all APIs are supported, and not all parameters for all render functions are supported. In particular the following are not supported:

  • IJawsRenderer::render() does not support maskToInterestingNodes being set to true.
  • Images returned by render APIs will have a resolution of 96dpi, however the images will have correct pixel dimensions.
  • IJawsRenderer::renderSeparations() and IJawsRenderer::renderSeparationsToFrameBuffers() bandMemorySize parameter is ignored.
  • IJawsRenderer::renderSeparations() and IJawsRenderer::renderSeparationsToFrameBuffers() processColorNames parameter is ignored. Instead, the ICC profile of any extended gamut target color space is consulted, and that profile must have a colorant (clrt) table describing the colorants. Further, if an extended gamut color space is used, rendering will be performed via CMYK before expanding to the final color space. For extended gamut rendering, it is best to use the Apex renderer directly and configure appropriately.
  • IJawsRenderer::renderSeparations() and IJawsRenderer::renderSeparationsToFrameBuffers() do not support anti aliased values greater than 4.
  • IJawsRenderer::renderSeparationsToFrameBuffers() bandMemorySize parameter is ignored.
  • IJawsRenderer::renderAntiAliased() supports a maximum quality of 3.