Source code for pygerber.API2D

# -*- coding: utf-8 -*-

from typing import Any, Dict

from PIL import Image

from pygerber.parser.pillow.parser import DEFAULT_COLOR_SET_GREEN, ColorSet

from .parser.pillow.api import PillowProjectSpec, _render_file


[docs]def render_from_spec(spec: Dict[str, Any]) -> Image.Image: """Render 2D image from specfile alike dictionary. :param spec: specfile parameters dictionary. :type spec: Dict :return: rendered and merged image. :rtype: Image.Image """ return PillowProjectSpec(spec).render()
[docs]def render_from_yaml(file_path: str) -> Image.Image: """Render 2D image from specfile written in yaml. :param file_path: yaml specfile path. :type file_path: str :return: rendered and merged image. :rtype: Image.Image """ return PillowProjectSpec.from_yaml(file_path).render()
[docs]def render_from_json(file_path: str) -> Image.Image: """Render 2D image from specfile written in json. :param file_path: json specfile path. :type file_path: str :return: rendered and merged image. :rtype: Image.Image """ return PillowProjectSpec.from_json(file_path).render()
[docs]def render_from_toml(file_path: str) -> Image.Image: """Render 2D image from specfile written in toml. :param file_path: toml specfile path. :type file_path: str :return: rendered and merged image. :rtype: Image.Image """ return PillowProjectSpec.from_toml(file_path).render()
[docs]def render_file_and_save( file_path: str, save_path: str, *, dpi: int = 600, colors: ColorSet = DEFAULT_COLOR_SET_GREEN, ignore_deprecated: bool = True, image_padding: int = 0, ): """Loads, parses, renders file from file_path and saves it in save_path. :param file_path: Path to gerber file. :type file_path: str :param save_path: Path to save render. :type save_path: str :param dpi: DPI of output image, defaults to 600 :type dpi: int, optional :param colors: Color set to use, defaults to DEFAULT_COLOR_SET_GREEN :type colors: ColorSet, optional :param ignore_deprecated: If true, causes parser to not stop when deprecated syntax is found, defaults to True :type ignore_deprecated: bool, optional :param image_padding: Additional pixel padding for image, defaults to 0 :type image_padding: int, optional """ image = render_file( file_path, dpi=dpi, colors=colors, ignore_deprecated=ignore_deprecated, image_padding=image_padding, ) image.save(save_path)
[docs]def render_file( file_path: str, *, dpi: int = 600, colors: ColorSet = DEFAULT_COLOR_SET_GREEN, ignore_deprecated: bool = True, image_padding: int = 0, ) -> Image.Image: """ Loads, parses and renders file from given path and returns its render as PIL.Image.Image. :param file_path: Path to gerber file to render. :type file_path: str :param dpi: Output image DPI, defaults to 600 :type dpi: int, optional :param colors: Color specification, defaults to DEFAULT_COLOR_SET_GREEN :type colors: ColorSet, optional :param ignore_deprecated: If false causes parser to stop when deprecated syntax is met, defaults to True :type ignore_deprecated: bool, optional :param image_padding: Additional image padding, defaults to 0 :type image_padding: int, optional :return: Output image. :rtype: Image.Image """ return _render_file( file_path, dpi, colors, ignore_deprecated, image_padding, )