Error Diffusion Screens (EDS)
📌 Overview
Mako's renderer offers error diffusion screening, using popular algorithms such as Floyd-Steinberg or Stucki. A class, IJawsRenderer::CEDSHalftone
enables images to be rendered using a halftone representing an error diffusion screen.
ℹ️ Key Concepts
IJawsRenderer::CEDSHalftone
allows the production of results containing a variable number of gray levels per channel, using a range of error diffusion screens.
This class may be used for both monochrome and color rendering with
renderScreened()
andrenderScreenedToFrameBuffers()
.Rather than only offer predefined EDS screens, the class allows the user to specify parameters that modify the algorithm.
💪 Usage
Floyd-Steinberg
// The halftone - this example is Floyd Steinberg with drop sizes of 3,
// serpentine enabled and no perturbation
IJawsRenderer::CEDSHalftone halftone;
halftone.dropSizes = 3;
halftone.rows = 2;
halftone.columns = 3;
halftone.pixelColumn = 1;
halftone.denominator = 16;
halftone.weights[0] = 0; halftone.weights[1] = 0; halftone.weights[2] = 7; halftone.weights[3] = 0; halftone.weights[4] = 0;
halftone.weights[5] = 3; halftone.weights[6] = 5; halftone.weights[7] = 1; halftone.weights[8] = 0; halftone.weights[9] = 0;
halftone.weights[10] = 0; halftone.weights[11] = 0; halftone.weights[12] = 0; halftone.weights[13] = 0; halftone.weights[14] = 0;
halftone.weights[15] = 0; halftone.weights[16] = 0; halftone.weights[17] = 0; halftone.weights[18] = 0; halftone.weights[19] = 0;
halftone.useSerpentine = true;
halftone.perturbation = 0.0;
EDS Workbench
A Windows-based utility is available that enables a user to load a file (image or PDF) and experiment with these values and see their effect immediately, on-screen.
It can also generate a code snippet for use with a Mako C++ project, or as parameters for Jaws RIP.
An installer can downloaded from the link on this page.

⌨️ Sample Code
Installer Downloads:
Test program | EDS Workbench Installer |
---|---|
☑️ Conclusion
Error Diffusion Screens (EDS) provide a versatile approach to rendering images with varying gray levels using popular algorithms like Floyd-Steinberg. By leveraging the IJawsRenderer::CEDSHalftone
class, users can customize their rendering process for both monochrome and color outputs. The EDS Workbench utility further enhances this capability by allowing real-time experimentation with parameters.
📚 Additional Resources
If you need additional help, see our API documentation for detailed information on class/method usage, or raise a support ticket via our customer portal.