#ifndef SHAPE_H #define SHAPE_H #include "playpen.h" #include "point2d.h" #include #include #include namespace fgw { typedef std::vector shape; void filled_polygon(playpen & pp, shape const & s, point2d centre, hue shade); void filled_polygon(playpen & pp, shape const & s, hue shade); void drawshape(playpen & pp, shape const & s, hue shade); void moveshape(shape & s, point2d offset); void growshape(shape & s, double xfactor, double yfactor); void scaleshape(shape & s, double scalefactor); void rotateshape(shape & s, double rotation, point2d centre); void rotateshape(shape & s, double rotation); void sheershape(shape & s, double sheer); double area_of_triangle(shape s); shape make_regular_polygon(double radius, int n); shape makecircle(double radius, point2d centre); shape read_shape(std::istream &); void write_shape(shape const & s, std::ostream &); //Les fonctions ont recu un nom en francais et deleguent //aux versions originales de l'auteur //Modifications 10-04-2004 par Frs typedef std::vector figure; inline void polygone_plein(playpen & pp, figure const & f, couleur coul) {filled_polygon(pp, f, coul);}; inline void polygone_plein(playpen & pp, figure const & f,point2d centre, couleur coul) {filled_polygon(pp, f, centre, coul);}; inline void tracer_figure(playpen & pp, figure const & f, couleur coul) {drawshape(pp, f, coul);}; inline void deplacer_figure(figure & f, point2d decalage) {moveshape(f, decalage);}; inline void agrandir_figure(figure & f, double facteurx, double facteury) {growshape(f, facteurx, facteury);}; inline void agrandir_echelle(figure & f, double echelle) {scaleshape(f, echelle);}; inline void pivoter_figure(figure & f, double angle, point2d centre) {rotateshape(f, angle, centre);}; inline void pivoter_figure(figure & f, double angle) {rotateshape(f, angle);}; inline void cisailler_figure(figure & f, double facteur) {sheershape(f, facteur);}; inline double aire_triangle(figure f){return area_of_triangle(f);}; inline figure dessiner_polygone_regulier(double rayon, int n){return make_regular_polygon(rayon, n);}; inline figure tracer_cercle(double rayon, point2d centre){return makecircle(rayon, centre);}; inline figure lire_figure(std::istream & source) {return read_shape(source);}; inline void ecrire_figure(figure const & f, std::ostream & destination) {write_shape(f, destination);}; } #endif