# Autogenerated canvas methods as globals to trick the linter

def set_color_scale():
    """Set color scale, e.g. if we want to specify colors in the `0`-`255` range, scale would be `255`,
or if the colors are in the `0`-`1` range, scale will be `1` """
    pass  # Dummy method for linter

def rect_mode():
    """Set the mode for drawing rectangles.
param mode: string, can be one of 'corner', 'center', 'radius' """
    pass  # Dummy method for linter

def cur_fill():
    pass  # Dummy method for linter

def cur_fill():
    pass  # Dummy method for linter

def cur_stroke():
    pass  # Dummy method for linter

def cur_stroke():
    pass  # Dummy method for linter

def get_stroke_or_fill_color():
    """Get the current stroke color if set, the fill color otherwise
returns the current stroke or fill color as a numpy array, or None if no color is set """
    pass  # Dummy method for linter

def center():
    """Center of the canvas """
    pass  # Dummy method for linter

def width():
    """Width of canvas """
    pass  # Dummy method for linter

def height():
    """Height of canvas """
    pass  # Dummy method for linter

def surface():
    pass  # Dummy method for linter

def no_fill():
    pass  # Dummy method for linter

def no_stroke():
    pass  # Dummy method for linter

def color_mode():
    """Set the color mode for the canvas

param mode: string, can be one of 'rgb', 'hsv'
param scale: float, the scale for the color values (e.g. 255 for 0-255 range, 1 for 0-1 range) """
    pass  # Dummy method for linter

def fill():
    pass  # Dummy method for linter

def stroke():
    pass  # Dummy method for linter

def stroke_weight():
    """Set the line width """
    pass  # Dummy method for linter

def line_join():
    """Specify the 'join' for polylines.
Args:
join (string): can be one of "miter", "bevel" or "round" """
    pass  # Dummy method for linter

def blend_mode():
    pass  # Dummy method for linter

def line_cap():
    """Specify the 'cap' for lines.
Args:
cap (string): can be one of "butt", "round" or "square" """
    pass  # Dummy method for linter

def text_size():
    pass  # Dummy method for linter

def text_font():
    pass  # Dummy method for linter

def push():
    pass  # Dummy method for linter

def pop():
    pass  # Dummy method for linter

def translate():
    """Translate by specifying `x` and `y` offset.

Args:
    The offset can be specified as an array/list (e.g `c.translate([x,y])`
    or as single arguments (e.g. `c.translate(x, y)`)
Returns:
    Nothing """
    pass  # Dummy method for linter

def scale():
    """Apply a scaling transformation.

Args:
Providing a single number will apply a uniform transformation.
Providing a pair of number will scale in the x and y directions.
The scale can be specified as an array/list (e.g `c.scale([x,y])`
or as single arguments (e.g. `c.scale(x, y)`)'''

Returns:
type: nothing """
    pass  # Dummy method for linter

def rotate():
    """Rotate by `theta` radians """
    pass  # Dummy method for linter

def apply_matrix():
    pass  # Dummy method for linter

def rotate_deg():
    """Rotate using degrees """
    pass  # Dummy method for linter

def hsv():
    pass  # Dummy method for linter

def rectangle():
    """Draw a rectangle given top-left corner, width and heght.

Args:
Input arguments can be in the following formats:
 - `[topleft_x, topleft_y], [width, height]`,
 - `[topleft_x, topleft_y], width, height`,
 - `topleft_x, topleft_y, width, height`
 - '[[topleft_x, topleft_y], [bottomright_x, bottomright_y]]' """
    pass  # Dummy method for linter

def rect():
    """Draw a rectangle given top-left corner, width and heght.

Args:
Input arguments can be in the following formats:
 - `[topleft_x, topleft_y], [width, height]`,
 - `[topleft_x, topleft_y], width, height`,
 - `topleft_x, topleft_y, width, height` """
    pass  # Dummy method for linter

def quad():
    """Draws a quadrangle given four points

Args:
Input arguments can be in the following formats:
 - `a, b, c, d` (Four points specified as lists/tuples/numpy arrays
 - `x1, y1, x2, y2, x3, y3, x4, y4` """
    pass  # Dummy method for linter

def line():
    pass  # Dummy method for linter

def arrow():
    pass  # Dummy method for linter

def triangle():
    """Draws a triangle given three points

Args:
Input arguments can be in the following formats:
 - `a, b, c` (Four points specified as lists/tuples/numpy arrays
 - `x1, y1, x2, y2, x3, y3` """
    pass  # Dummy method for linter

def circle():
    """Draw a circle given center and radius

Args:
Input arguments can be in the following formats:
- `[center_x, center_y], radius`,
- `center_x, center_y, raidus` """
    pass  # Dummy method for linter

def ellipse():
    """Draw an ellipse with center, width and height.

Args:
Input arguments can be in the following formats:
- `[center_x, center_y], [width, height]`,
- `[center_x, center_y], width, height`,
- `center_x, center_y, width, height` """
    pass  # Dummy method for linter

def arc():
    """Draw an arc given the center of the ellipse `x, y`
the size of the ellipse `w, h` and the initial and final angles
in radians  `start, stop`.

Args:
  Input arguments can be in the following formats:
  -`x, y, w, h, start, stop`
  -`[x, y]', '[w, h]', '[start, stop]'
  -`[x, y]', w, h, start, stop` """
    pass  # Dummy method for linter

def clear_segments():
    pass  # Dummy method for linter

def begin_shape():
    """Begin drawing a compound shape """
    pass  # Dummy method for linter

def end_shape():
    """End drawing a compound shape """
    pass  # Dummy method for linter

def begin_contour():
    """Begin drawing a contour """
    pass  # Dummy method for linter

def end_contour():
    """End drawing a contour """
    pass  # Dummy method for linter

def vertex():
    """Add a vertex to current contour
Args:
Input arguments can be in the following formats:
 `[x, y]'
 `x, y` """
    pass  # Dummy method for linter

def curve_vertex():
    """Add a curved vertex to current contour
Args:
Input arguments can be in the following formats:
 `[x, y]'
 `x, y` """
    pass  # Dummy method for linter

def load_image():
    """Load an image from disk. Currently only supports png! Use external
loading into NumPy instead """
    pass  # Dummy method for linter

def image():
    """Draw an image at position with (optional) size and (optional) opacity

Args:
img: The input image. Can be either a numpy array or a pyCairo surface (e.g. another canvas).
*args: position and size can be specified with the following formats:
    `x, y`:  position only
    `x, y, w, h`: position and size
    `[x, y]`: position only (also a numpy array or tuple are valid)
    `[x, y], [w, h]`: position and size
if the position is not specified, the original image dimensions will be used

`opacity`: a value between 0 and 1 specifying image opacity. """
    pass  # Dummy method for linter

def shape():
    """Draw a shape represented as a list of polylines, see the ~polyline~
method for the format of each polyline """
    pass  # Dummy method for linter

def text():
    """Draw text at a given position

Args:
    if center=True the text will be horizontally centered """
    pass  # Dummy method for linter

def polygon():
    """Draw a *closed* polygon
The polyline is specified as either:
- a list of `[x,y]` pairs (e.g. `[[0, 100], [200, 100], [200, 200]]`)
- a numpy array with shape `(n, 2)`, representing `n` points (a point for each row and a coordinate for each column) """
    pass  # Dummy method for linter

def polyline():
    """Draw a polyline. 
The polyline is specified as either:
- a list of `[x,y]` pairs (e.g. `[[0, 100], [200, 100], [200, 200]]`)
- a numpy array with shape `(n, 2)`, representing `n` points (a point for each row and a coordinate for each column)

To close the polyline set the named closed argument to `True`, e.g. `c.polyline(points, closed=True)`. """
    pass  # Dummy method for linter

def identity():
    pass  # Dummy method for linter

def background():
    """Clear the canvas with a given color  """
    pass  # Dummy method for linter

def get_buffer():
    pass  # Dummy method for linter

def get_image():
    """Get canvas image as a numpy array  """
    pass  # Dummy method for linter

def get_image_grayscale():
    """Returns the canvas image as a grayscale numpy array (in 0-1 range) """
    pass  # Dummy method for linter

def save_image():
    """Save the canvas to an image """
    pass  # Dummy method for linter

def save_svg():
    """Save the canvas to an svg file """
    pass  # Dummy method for linter

def save_pdf():
    """Save the canvas to an svg file """
    pass  # Dummy method for linter

def Image():
    pass  # Dummy method for linter

def save():
    """Save the canvas to an image """
    pass  # Dummy method for linter

def show():
    pass  # Dummy method for linter

