]> git.llucax.com Git - z.facultad/75.42/figuras.git/blob - figura.h
Se agrega un fragmento de la descripcion de GTK.
[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          * Modifica el contexto gráfico.
48          * Modifica el contexto gráfico según las propiedades de la figura
49          * (color y grosor).
50          *
51          * \param gc Contexto gráfico a modificar.
52          */
53         virtual void set_gc(GdkGC* gc) const;
54
55         /**
56          * Traduce los 16 colores (de 4 bits) en colores de 24 bits.
57          * La traducción es simple. Los 3 bits menos significativos son
58          * usados como indicador del pigmento. El bit menos significativo
59          * indica la presencia de pigmento azul, el siguiente verde
60          * y el siguiente rojo. El bit más significativo representa
61          * la saturación del color, si está activado, el color será
62          * más saturado.
63          */
64         GdkColor* traducir_color(GdkColor* c) const;
65
66     public:
67
68         /**
69          * Constructor.
70          */
71         Figura(size_t color, size_t grosor, const Punto& centro,
72                 const char* nombre);
73
74         /**
75          * Destructor.
76          */
77         virtual ~Figura(void);
78
79         /**
80          * Dibuja.
81          * Modifica el contexto gráfico según las propiedades de la figura
82          * (color y grosor).
83          *
84          * \param widget Widget donde dibujar.
85          */
86         virtual void dibujar(GtkWidget* widget) const = 0;
87
88 };
89
90 #endif /* FIGURA_H */