]> git.llucax.com Git - z.facultad/75.42/figuras.git/blob - figura.h
Se termina la documentacion.
[z.facultad/75.42/figuras.git] / figura.h
1 /* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
2  *
3  * Taller de Programación (75.42).
4  *
5  * Ejercicio Número 5:
6  * Graficador de figuras.
7  *
8  * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9  * Puede copiar, modificar y distribuir este programa bajo los términos de
10  * la licencia GPL (http://www.gnu.org/).
11  *
12  * Creado: Thu Sep 18 21:34:56 ART 2003
13  *
14  * $Id$
15  */
16
17 #ifndef FIGURA_H
18 #define FIGURA_H
19
20 #include "punto.h"
21 #include <cstdlib>
22 #include <gtk/gtk.h>
23
24 /**
25  * Figura dibujable.
26  */
27 class Figura {
28
29     protected:
30
31         /// Máxima cantidad de caracteres del nombre.
32         static const size_t MAX_NOMBRE = 50;
33
34         /// Color.
35         size_t color;
36
37         /// Grosor.
38         size_t grosor;
39
40         /// Centro.
41         Punto centro;
42
43         /// Nombre.
44         char nombre[MAX_NOMBRE];
45
46         /**
47          * Crea un nuevo contexto gráfico.
48          * Crea un nuevo contexto gráfico con las propiedades de la figura
49          * (color y grosor) partiendo del contexto gráfico de un widget.
50          *
51          * \param widget Widget de donde copiar el GC inicial.
52          *
53          * \return Contexto gráfico a modificar.
54          */
55         virtual GdkGC* get_gc(GtkWidget* widget) const;
56
57         /**
58          * Traduce los 16 colores (de 4 bits) en colores de 24 bits.
59          * La traducción es simple. Los 3 bits menos significativos son
60          * usados como indicador del pigmento. El bit menos significativo
61          * indica la presencia de pigmento azul, el siguiente verde
62          * y el siguiente rojo. El bit más significativo representa
63          * la saturación del color, si está activado, el color será
64          * más saturado.
65          */
66         GdkColor* traducir_color(GdkColor* c) const;
67
68     public:
69
70         /**
71          * Constructor.
72          */
73         Figura(size_t color, size_t grosor, const Punto& centro,
74                 const char* nombre);
75
76         /**
77          * Destructor.
78          */
79         virtual ~Figura(void);
80
81         /**
82          * Dibuja.
83          * Modifica el contexto gráfico según las propiedades de la figura
84          * (color y grosor).
85          *
86          * \param widget Widget donde dibujar.
87          */
88         virtual void dibujar(GtkWidget* widget) const = 0;
89
90 };
91
92 #endif /* FIGURA_H */