Skip to main content
Skip table of contents

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() and renderScreenedToFrameBuffers().

  • Rather than only offer predefined EDS screens, the class allows the user to specify parameters that modify the algorithm.

💪 Usage

Floyd-Steinberg

CPP
// 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;

makologo.png 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

EdsTestHarness.cpp

EDSWorkbench.exe

☑️ 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.


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.