/*
 * Java
 *
 * Copyright 2022-2024 MicroEJ Corp. All rights reserved.
 * This library is provided in source code for use, modification and test, subject to license terms.
 * Any modification of the source code will break MicroEJ Corp. warranties on the whole library.
 */
package ej.microvg;

import ej.microui.display.GraphicsContext;
import ej.microvg.VectorGraphicsPainter.FillType;

/**
 * @deprecated Use a {@link BufferedVectorImage} instead.
 */
@Deprecated
public class VectorImageBuilder {

	/**
	 * Creates a new builder for vector images.
	 *
	 * @param width
	 *            the width of the image
	 * @param height
	 *            the height of the image
	 * @throws IllegalArgumentException
	 *             if either <code>width</code> or <code>height</code> is negative or zero.
	 */
	public VectorImageBuilder(float width, float height) {
		throw new VectorGraphicsException();
	}

	/**
	 * Adds the given path with specified color and fill type.
	 *
	 * <p>
	 * The given color value is interpreted as a 32-bit ARGB color, where the high-order byte is the alpha channel and
	 * the remaining bytes contain the red, green and blue channels, respectively. A fully opaque color will have an
	 * alpha of {@code 255}, while a fully transparent color will have an alpha of {@code 0}. For example, passing the
	 * color {@code 0xff0000ff} to this method results in a path with an opaque blue fill.
	 *
	 * <p>
	 * If the specified color is fully transparent ({@code 0x00} for the alpha channel), the path is not added.
	 *
	 * @param path
	 *            the path to add
	 * @param color
	 *            the color to fill the path with
	 * @param fillType
	 *            the fill type to use
	 * @return the builder instance.
	 * @see GraphicsContext#OPAQUE
	 * @see GraphicsContext#TRANSPARENT
	 */
	public VectorImageBuilder addPath(Path path, int color, FillType fillType) {
		throw new VectorGraphicsException();
	}

	/**
	 * Adds the given path with specified gradient and fill type.
	 *
	 * <p>
	 * The colors of the gradient are interpreted as 32-bit ARGB colors, where the high-order byte is the alpha channel
	 * and the remaining bytes contain the red, green and blue channels, respectively. A fully opaque color will have an
	 * alpha of {@code 255}, while a fully transparent color will have an alpha of {@code 0}. For example, the color
	 * {@code 0xff0000ff} results in an opaque blue.
	 *
	 * @param path
	 *            the path to add
	 * @param gradient
	 *            the gradient to fill the path with
	 * @param fillType
	 *            the fill type to use
	 * @return the builder instance.
	 * @see GraphicsContext#OPAQUE
	 * @see GraphicsContext#TRANSPARENT
	 */
	public VectorImageBuilder addGradientPath(Path path, LinearGradient gradient, FillType fillType) {
		throw new VectorGraphicsException();
	}

	/**
	 * Creates the vector image from the builder state.
	 * <p>
	 * The returned image is allocated dynamically and must be closed explicitly.
	 *
	 * @return a vector image
	 */
	public ResourceVectorImage build() {
		throw new VectorGraphicsException();
	}
}
