Source code for pytamaro.fr.primitives

# pylint:disable=duplicate-code
"""
Fonctions pour créer des graphiques primitifs (formes et texte).
À moins d'être spécifié autrement, le point d'ancrage initial est le centre du
cadre de délimitation (bounding box) du graphique.
"""

from __future__ import annotations

from pytamaro.fr.color import Couleur
from pytamaro.fr.graphic import Graphique
from pytamaro.primitives import (circular_sector, empty_graphic, text)
from pytamaro.primitives import rectangle as en_rectangle
from pytamaro.primitives import ellipse as en_ellipse
from pytamaro.primitives import triangle as en_triangle


[docs]def rectangle(largeur: float, hauteur: float, couleur: Couleur) -> Graphique: """ Créé un rectangle de dimensions indiquées et rempli avec la couleur donnée. :param largeur: largeur du rectangle :param hauteur: hauteur du rectangle :param couleur: couleur qui remplira le rectangle :returns: un graphique avec le rectangle spécifié """ return en_rectangle(largeur, hauteur, couleur)
[docs]def graphique_vide() -> Graphique: """ Créé un graphique vide. Quand un graphique vide est composé avec n'importe quel autre graphique, il se comporte comme l'élément neutre: le résultat est toujours égal à l'autre graphique. :returns: un graphique vide (largeur et hauteur 0) """ return empty_graphic()
[docs]def ellipse(largeur: float, hauteur: float, couleur: Couleur) -> Graphique: """ Créé une ellipse avec les dimensions indiquées et rempli avec la couleur donnée. Lorsque la largeur et la hauteur coïncident, l'ellipse devient un cercle dont le diamètre est égal à la taille indiquée. :param largeur: largeur de l'ellipse :param hauteur: hauteur de l'ellipse :param couleur: couleur à utiliser pour remplir l'ellipse :returns: un graphique avec l'ellipse spécifié """ return en_ellipse(largeur, hauteur, couleur)
[docs]def secteur_circulaire(rayon: float, angle: float, couleur: Couleur) -> Graphique: """ Crée un secteur circulaire appartenant à un cercle du rayon indiqué, rempli d'une couleur. Un secteur circulaire est une portion de cercle comprise entre deux rayons et un arc. Si l'on considère le cercle comme une horloge, le premier rayon "pointe" dans la direction de 3 heures. L'`angle` détermine la position du deuxième rayon, calculée à partir de la position du premier rayon dans le sens inverse des aiguilles d'une montre. Un angle de 360 degrés correspond à un cercle complet. Le point d'ancrage se trouve au centre du cercle à partir duquel le secteur circulaire est pris. :param rayon: rayon du cercle duquel est pris le secteur circulaire :param angle: angle au centre, en degrés :param couleur: couleur à utiliser pour remplir le secteur circulaire :returns: un graphique avec le secteur circulaire spécifié """ return circular_sector(rayon, angle, couleur)
[docs]def triangle(cote1: float, cote2: float, angle: float, couleur: Couleur) -> Graphique: """ Crée un triangle en spécifiant deux côtés et l'angle qui les sépare, remplis d'une couleur. Le premier côté s'étend horizontalement vers la droite. L'angle spécifie la rotation du deuxième côté, dans le sens inverse des aiguilles d'une montre, par rapport au premier. Pour tous les triangles, à l'exception des triangles obtus, le point inférieur gauche du graphique résultant coïncide avec le sommet du triangle dont l'angle a été spécifié. Le point d'ancrage est le centroïde du triangle. :param cote1: longueur du premier côté (horizontal) du triangle :param cote2: longueur du second côté du triangle :param angle: angle compris entre les deux côté, en degrés :param couleur: couleur à utiliser pour remplir le secteur circulaire :returns: un graphique avec le triangle spécifié """ return en_triangle(cote1, cote2, angle, couleur)
[docs]def texte(contenu: str, police: str, points: float, couleur: Couleur) -> Graphique: """ Crée un graphique avec le texte rendu à l'aide de la police, de la taille et de la couleur spécifiées. Lorsque la police True-Type indiquée n'est pas disponible dans le système, une police très basilaire toujours disponible est utilisée à la place. Le graphique qui en résulte a la taille minimale nécessaire pour contenir l'ensemble du texte. La point d'ancrage est alignée horizontalement sur la gauche et verticalement sur la ligne de base du texte. :param contenu: le texte à présenter :param font: le nom de la police (par exemple, "arial" sous Windows, "Arial" sous macOS) :param points: la taille en points typographiques (par exemple, 16) :param couleur: la couleur à utiliser pour le rendu du texte :returns: le texte spécifié sous forme de graphique """ return text(contenu, police, points, couleur)