Quick links: Tutorial - Examples - Files - Symbols.
Classes: Hierarchy - Index - List - Members.
Namespaces: Index - base - cs - display.

Public Member Functions | List of all members
cogitantdisplay::Context Class Reference

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...
 
Figurefigure (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...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ Context()

cogitantdisplay::Context::Context ( )

Constructeur à vide.

Member Function Documentation

◆ abs()

static Coord cogitantdisplay::Context::abs ( Coord  x)
static

Valeur absolue.

◆ applyFilter()

static Color cogitantdisplay::Context::applyFilter ( Color const &  c1,
Color const &  filter 
)
static

Application d'un filtre à une couleur.

◆ arrowPoints() [1/2]

static bool cogitantdisplay::Context::arrowPoints ( Point const &  o,
Point const &  e,
PenArrowStyle const &  pas,
std::vector< Point > &  points 
)
static

Calcule les coordonnées des bouts d'une flèche.

Parameters
oorigine de l'arête (sans flèche).
eextrémité de l'arête (et extrémité de la flèche).
passtyle 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).

◆ arrowPoints() [2/2]

static bool cogitantdisplay::Context::arrowPoints ( Point const &  o,
Point const &  e,
Pen const &  pen,
int  arrow,
std::vector< Point > &  points 
)
static

Calcule les coordonnées des bouts d'une des 4 flèches de l'arête.

Parameters
oorigine de l'arête.
eextrémité de l'arête.
penpinceau utilisé pour l'arête (contient les propriétés concernant les flèches.
arrownuméro de la flèche (voir Pen::m_arrows).
points(R) coordonnées des bouts de la flèche (y compris l'extrémité).
Returns
true ssi la flèche arrow doit être affichée (dans ce cas points contient les coordonnées voulues).

◆ clearFigures()

void cogitantdisplay::Context::clearFigures ( )

Suppression de toutes les figures.

◆ drawFigures()

void cogitantdisplay::Context::drawFigures ( Output o) const

Dessin des figures.

Parameters
oOutput utilisé pour le dessin.

◆ edgeLabelRect()

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.

Parameters
oorigine de l'arête (doit déjà être calculé).
eextrémité de l'arête (doit déjà être calculé).
fpolice utilisée pour l'affichage de l'étiquette.
létiquette.
resultrectangle contenant l'étiquette.
Returns
true si l'étiquette doit être affichée, false sinon.

◆ ellipseSegmentIntersect()

static bool cogitantdisplay::Context::ellipseSegmentIntersect ( Rect const &  r,
Point const &  o,
Point const &  e,
Point result 
)
static

Retourne l'intersection entre une ellipse (contenue dans un rectangle) et un segment.

Parameters
rle rectangle contenant l'ellipse.
oorigine du segment.
eextrémité du segment.
result(R) coordonnée du (d'un) point intersection.
Returns
true s'il y a une intersection, false sinon.

◆ eqn2()

static unsigned int cogitantdisplay::Context::eqn2 ( float  a,
float  b,
float  c,
float &  x1,
float &  x2 
)
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.

◆ figure() [1/2]

Figure& cogitantdisplay::Context::figure ( iFigure  i)

Accès à la figure d'identificateur i.

◆ figure() [2/2]

Figure const& cogitantdisplay::Context::figure ( iFigure  i) const

Accès à la figure d'identificateur i.

◆ figureSegmentIntersect()

static bool cogitantdisplay::Context::figureSegmentIntersect ( Rect const &  f,
Figure::Style  ft,
Point const &  o,
Point const &  e,
Point result 
)
static

Retourne l'intersection entre une figure (contenue dans un rectangle) et un segment.

Parameters
fle rectangle contenant la figure.
fttype de figure.
oorigine du segment.
eextrémité du segment.
result(R) coordonnée du (d'un) point intersection.
Returns
true s'il y a une intersection, false sinon.

◆ floatToCoord()

static Coord cogitantdisplay::Context::floatToCoord ( float  f)
static

Conversion d'un flottant en l'entier le plus proche.

◆ inInterval()

static bool cogitantdisplay::Context::inInterval ( Coord  x,
Coord  x1,
Coord  x2 
)
static

L'entier x est-il dans un intervalle [x1, x2].

Precondition
x1 <= x2.

◆ internalRect()

static Rect cogitantdisplay::Context::internalRect ( Rect const &  ext,
Size const &  s,
Position const &  pos 
)
static

Calcule les caractéristiques d'un rectangle contenu à l'intérieur d'un autre, et respectant des contraintes de position.

Parameters
extrectangle externe.
staille du rectangle interne.
poscontraintes de position du rectangle interne.
Returns
rectangle interne.

◆ intervalIntersect()

static bool cogitantdisplay::Context::intervalIntersect ( Coord  x1,
Coord  w1,
Coord  x2,
Coord  w2,
Coord x3,
Coord w3 
)
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.

Returns
true ssi l'intersection est non vide.

◆ intervalIntersect2()

static bool cogitantdisplay::Context::intervalIntersect2 ( Coord  x1,
Coord  x1b,
Coord  x2,
Coord  x2b,
Coord x3,
Coord x3b 
)
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.

Returns
true ssi l'intersection est non vide.

◆ intervalIntersectP()

static bool cogitantdisplay::Context::intervalIntersectP ( Coord  x1,
Coord  w1,
Coord  x2,
Coord  w2 
)
static

Retourne true si les deux intervalles ont un intersection.

See also
intervalIntersect().

◆ max()

static Coord cogitantdisplay::Context::max ( Coord  x1,
Coord  x2 
)
static

Maximum.

◆ min()

static Coord cogitantdisplay::Context::min ( Coord  x1,
Coord  x2 
)
static

Minimum.

◆ newFigure()

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.

Returns
l'identificateur de la nouvelle figure.

◆ pointDistance()

static Coord cogitantdisplay::Context::pointDistance ( Point const &  p1,
Point const &  p2 
)
static

Distance entre les points p1 et p2.

◆ pointInSegment()

static bool cogitantdisplay::Context::pointInSegment ( Point const &  p,
Point const &  o,
Point const &  e,
Coord  w 
)
static

Le point est-il dans un segment (d'une epaisseur donnée) ?

Parameters
ple point.
ol'origine du segment.
el'extrémité du segement.
wl'épaisseur du trait du segment.
Returns
true ssi p est sur le segment.

◆ pointOnSegmentDistance()

static bool cogitantdisplay::Context::pointOnSegmentDistance ( Point const &  o,
Point const &  e,
Coord  d,
Point result 
)
static

Calcule les coordonnées d'un point situé sur un segment à une distance donnée de l'origine de ce segment.

Parameters
oorigine du segment.
eextrémité du segment.
ddistance
resultle point situé sur [o,e] à une distance d de o.
Returns
true si le point cherché existe, false sinon.

◆ pointSegmentDistance()

static void cogitantdisplay::Context::pointSegmentDistance ( Point const &  o,
Point const &  e,
Coord  d,
Point result 
)
static

Calcule les coordonnées d'un point situé sur un segment perpendiculaire à un segment donné, à une distance donnée.

Parameters
oorigine du segment.
eextrémité du segment.
ddistance. Si la distance est positive, le point résultat est tel que l'angle o(e->result) est positif (et le contraire sinon).
resultpoint 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.

◆ pointSegmentProjection()

static bool cogitantdisplay::Context::pointSegmentProjection ( Point const &  p,
Point const &  o,
Point const &  e,
Point result 
)
static

Calcul de la projection du point p sur le segment [o,e].

◆ rectIntersect()

static Rect cogitantdisplay::Context::rectIntersect ( Rect const &  r1,
Rect const &  r2 
)
static

Retourne l'intersection entre les deux rectangles passés.

Returns
le rectangle intersection, qui peut éventuellement être vide.

◆ rectIntersectP()

static bool cogitantdisplay::Context::rectIntersectP ( Rect const &  r1,
Rect const &  r2 
)
static

Retourne true ssi les deux rectangles ont une intersection.

◆ rectSegmentIntersect()

static bool cogitantdisplay::Context::rectSegmentIntersect ( Rect const &  r,
Point const &  o,
Point const &  e,
Point result 
)
static

Retourne l'intersection entre un rectangle et un segment.

Parameters
rle rectangle.
oorigine du segment.
eextrémité du segment.
result(R) coordonnée du (d'un) point intersection.
Returns
true s'il y a une intersection, false sinon.

◆ rectUnion()

static Rect cogitantdisplay::Context::rectUnion ( Rect const &  r1,
Rect const &  r2 
)
static

Retourne le rectangle qui englobe les deux rectangles passés.

◆ reserveFigures()

void cogitantdisplay::Context::reserveFigures ( iFigure  size)

Réservation du nombre de figures.

◆ segmentIntersect()

static bool cogitantdisplay::Context::segmentIntersect ( Point const &  o1,
Point const &  e1,
Point const &  o2,
Point const &  e2,
Point result 
)
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).

◆ textHeight()

Coord cogitantdisplay::Context::textHeight ( Font const &  font) const

Hauteur d'un texte utilisant la police passée.

◆ textSize()

Size cogitantdisplay::Context::textSize ( Font const &  font,
std::string const &  text 
) const

Taille d'un rectangle englobant le texte dans la police donnée.