Contexte d'affichage. More...
#include "cogitant/display/context.h"
Public Member Functions | |
Context () | |
Constructeur à vide. More... | |
Opérations sur les polices. | |
Coord | textHeight (Font const &font) const |
Hauteur d'un texte utilisant la police passée. More... | |
Size | textSize (Font const &font, std::string const &text) const |
Taille d'un rectangle englobant le texte dans la police donnée. More... | |
Opérations sur les figures. | |
iFigure | newFigure () |
Création d'une nouvelle figure. More... | |
Figure & | figure (iFigure i) |
Accès à la figure d'identificateur i. More... | |
Figure const & | figure (iFigure i) const |
Accès à la figure d'identificateur i. More... | |
void | drawFigures (Output *o) const |
Dessin des figures. More... | |
void | clearFigures () |
Suppression de toutes les figures. More... | |
void | reserveFigures (iFigure size) |
Réservation du nombre de figures. More... | |
Static Public Member Functions | |
Opérations arithmétiques. | |
static Coord | abs (Coord x) |
Valeur absolue. More... | |
static Coord | min (Coord x1, Coord x2) |
Minimum. More... | |
static Coord | max (Coord x1, Coord x2) |
Maximum. More... | |
static Coord | floatToCoord (float f) |
Conversion d'un flottant en l'entier le plus proche. More... | |
static unsigned int | eqn2 (float a, float b, float c, float &x1, float &x2) |
Calcule les solutions d'une équation du second degré. More... | |
Opérations sur les couleurs. | |
static Color | applyFilter (Color const &c1, Color const &filter) |
Application d'un filtre à une couleur. More... | |
Opérations sur les coordonnées. | |
bool | edgeLabelRect (Point const &o, Point const &e, Font const &f, std::string const &l, Rect &result) const |
Calcule le rectangle contenant l'étiquette d'une arête. More... | |
static bool | inInterval (Coord x, Coord x1, Coord x2) |
L'entier x est-il dans un intervalle [x1, x2]. More... | |
static bool | pointInRect (Point const &p, Rect const &r) |
Le point est-il dans le rectangle ? | |
static bool | pointInEllipse (Point const &p, Rect const &r) |
Le point est-il dans une ellipse (contenue dans le rectangle) ? | |
static bool | pointInSegment (Point const &p, Point const &o, Point const &e, Coord w) |
Le point est-il dans un segment (d'une epaisseur donnée) ? More... | |
static bool | pointInFigure (Point const &p, Figure::Style fs, Rect const &r) |
Le point est-il dans la figure (contenue dans le rectangle) ? | |
static bool | intervalIntersectP (Coord x1, Coord w1, Coord x2, Coord w2) |
Retourne true si les deux intervalles ont un intersection. More... | |
static bool | intervalIntersect (Coord x1, Coord w1, Coord x2, Coord w2, Coord &x3, Coord &w3) |
Calcul de l'intersection de deux intervalles. More... | |
static bool | intervalIntersect2 (Coord x1, Coord x1b, Coord x2, Coord x2b, Coord &x3, Coord &x3b) |
Calcul de l'intersection de deux intervalles. More... | |
static Rect | rectUnion (Rect const &r1, Rect const &r2) |
Retourne le rectangle qui englobe les deux rectangles passés. More... | |
static Rect | rectIntersect (Rect const &r1, Rect const &r2) |
Retourne l'intersection entre les deux rectangles passés. More... | |
static bool | rectIntersectP (Rect const &r1, Rect const &r2) |
Retourne true ssi les deux rectangles ont une intersection. More... | |
static bool | segmentIntersect (Point const &o1, Point const &e1, Point const &o2, Point const &e2, Point &result) |
Retourne l'intersection de deux segments. More... | |
static bool | rectSegmentIntersect (Rect const &r, Point const &o, Point const &e, Point &result) |
Retourne l'intersection entre un rectangle et un segment. More... | |
static bool | ellipseSegmentIntersect (Rect const &r, Point const &o, Point const &e, Point &result) |
Retourne l'intersection entre une ellipse (contenue dans un rectangle) et un segment. More... | |
static bool | figureSegmentIntersect (Rect const &f, Figure::Style ft, Point const &o, Point const &e, Point &result) |
Retourne l'intersection entre une figure (contenue dans un rectangle) et un segment. More... | |
static bool | pointSegmentProjection (Point const &p, Point const &o, Point const &e, Point &result) |
Calcul de la projection du point p sur le segment [o,e]. More... | |
static Coord | pointDistance (Point const &p1, Point const &p2) |
Distance entre les points p1 et p2. More... | |
static bool | pointOnSegmentDistance (Point const &o, Point const &e, Coord d, Point &result) |
Calcule les coordonnées d'un point situé sur un segment à une distance donnée de l'origine de ce segment. More... | |
static void | pointSegmentDistance (Point const &o, Point const &e, Coord d, Point &result) |
Calcule les coordonnées d'un point situé sur un segment perpendiculaire à un segment donné, à une distance donnée. More... | |
static Rect | internalRect (Rect const &ext, Size const &s, Position const &pos) |
Calcule les caractéristiques d'un rectangle contenu à l'intérieur d'un autre, et respectant des contraintes de position. More... | |
static bool | arrowPoints (Point const &o, Point const &e, PenArrowStyle const &pas, std::vector< Point > &points) |
Calcule les coordonnées des bouts d'une flèche. More... | |
static bool | arrowPoints (Point const &o, Point const &e, Pen const &pen, int arrow, std::vector< Point > &points) |
Calcule les coordonnées des bouts d'une des 4 flèches de l'arête. More... | |
Contexte d'affichage.
Cette classe contient toutes les fonctionnalités permettant des calculs sur les objets graphiques, à l'exception des opérations d'affichage effectifs qui sont implantées dans la classe Output (en fait, les sous classes de Output, puisqu'il s'agit d'une classe abstraite). Et tout plein de méthodes de classe, on dirait presque du java.
cogitantdisplay::Context::Context | ( | ) |
Constructeur à vide.
|
static |
Application d'un filtre à une couleur.
|
static |
Calcule les coordonnées des bouts d'une flèche.
o | origine de l'arête (sans flèche). |
e | extrémité de l'arête (et extrémité de la flèche). |
pas | style de la flèche. |
points | (D/R) coordonnées des bouts de flèche (le tableau n'est pas effacé: les nouveaux points sont ajoutés en fin). |
|
static |
Calcule les coordonnées des bouts d'une des 4 flèches de l'arête.
o | origine de l'arête. |
e | extrémité de l'arête. |
pen | pinceau utilisé pour l'arête (contient les propriétés concernant les flèches. |
arrow | numéro de la flèche (voir Pen::m_arrows). |
points | (R) coordonnées des bouts de la flèche (y compris l'extrémité). |
void cogitantdisplay::Context::clearFigures | ( | ) |
Suppression de toutes les figures.
void cogitantdisplay::Context::drawFigures | ( | Output * | o | ) | const |
Dessin des figures.
o | Output utilisé pour le dessin. |
bool cogitantdisplay::Context::edgeLabelRect | ( | Point const & | o, |
Point const & | e, | ||
Font const & | f, | ||
std::string const & | l, | ||
Rect & | result | ||
) | const |
Calcule le rectangle contenant l'étiquette d'une arête.
o | origine de l'arête (doit déjà être calculé). |
e | extrémité de l'arête (doit déjà être calculé). |
f | police utilisée pour l'affichage de l'étiquette. |
l | étiquette. |
result | rectangle contenant l'étiquette. |
|
static |
Retourne l'intersection entre une ellipse (contenue dans un rectangle) et un segment.
r | le rectangle contenant l'ellipse. |
o | origine du segment. |
e | extrémité du segment. |
result | (R) coordonnée du (d'un) point intersection. |
true
s'il y a une intersection, false
sinon.
|
static |
Calcule les solutions d'une équation du second degré.
retourne le nombre de solutions à l'équation ax2 + bx + c = 0 les solutions sont retournées dans x1 et x2.
Accès à la figure d'identificateur i.
|
static |
Retourne l'intersection entre une figure (contenue dans un rectangle) et un segment.
f | le rectangle contenant la figure. |
ft | type de figure. |
o | origine du segment. |
e | extrémité du segment. |
result | (R) coordonnée du (d'un) point intersection. |
true
s'il y a une intersection, false
sinon.
|
static |
Conversion d'un flottant en l'entier le plus proche.
L'entier x est-il dans un intervalle [x1, x2].
|
static |
Calcule les caractéristiques d'un rectangle contenu à l'intérieur d'un autre, et respectant des contraintes de position.
ext | rectangle externe. |
s | taille du rectangle interne. |
pos | contraintes de position du rectangle interne. |
|
static |
Calcul de l'intersection de deux intervalles.
Le premier intervalle est repéré par x1 et w1 (largeur) et le second par x2, w2. L'intervalle résultat est retourné dans x3, w3.
true
ssi l'intersection est non vide.
|
static |
Calcul de l'intersection de deux intervalles.
Le premier intervalle est repéré par x1 et x1b (extrémtités) et le second par x2, x2b. L'intervalle résultat est retourné dans x3, x3b.
true
ssi l'intersection est non vide.
|
static |
Retourne true
si les deux intervalles ont un intersection.
iFigure cogitantdisplay::Context::newFigure | ( | ) |
Création d'une nouvelle figure.
La nouvelle figure créée a comme valeurs de propriétés les valeurs par défaut.
Distance entre les points p1 et p2.
|
static |
Le point est-il dans un segment (d'une epaisseur donnée) ?
p | le point. |
o | l'origine du segment. |
e | l'extrémité du segement. |
w | l'épaisseur du trait du segment. |
true
ssi p est sur le segment.
|
static |
Calcule les coordonnées d'un point situé sur un segment à une distance donnée de l'origine de ce segment.
o | origine du segment. |
e | extrémité du segment. |
d | distance |
result | le point situé sur [o,e] à une distance d de o. |
true
si le point cherché existe, false
sinon.
|
static |
Calcule les coordonnées d'un point situé sur un segment perpendiculaire à un segment donné, à une distance donnée.
o | origine du segment. |
e | extrémité du segment. |
d | distance. Si la distance est positive, le point résultat est tel que l'angle o(e->result) est positif (et le contraire sinon). |
result | point résultat, c'est à dire le point situé sur une droite passant par o et perpendiculaire à o, e et situé à une distance |d| de o. |
|
static |
Calcul de la projection du point p sur le segment [o,e].
Retourne l'intersection entre les deux rectangles passés.
Retourne true
ssi les deux rectangles ont une intersection.
|
static |
Retourne l'intersection entre un rectangle et un segment.
r | le rectangle. |
o | origine du segment. |
e | extrémité du segment. |
result | (R) coordonnée du (d'un) point intersection. |
true
s'il y a une intersection, false
sinon. Retourne le rectangle qui englobe les deux rectangles passés.
void cogitantdisplay::Context::reserveFigures | ( | iFigure | size | ) |
Réservation du nombre de figures.
|
static |
Retourne l'intersection de deux segments.
Les deux segments sont repérés par leurs extrémités : o1, e1 pour le premier et o2, e2 pour le second. Le point d'intersection des deux segments (ou un point de l'intersection est retourné dans result, dans le cas où il y a une intersection (dans ce cas la méthode retourne true
, et false
sinon).
Hauteur d'un texte utilisant la police passée.