From 38415d137bc9292a82a5ac20207163c78379709f Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Fri, 3 Oct 2003 02:28:45 +0000 Subject: [PATCH] Se implementan los dibujar(). --- callbacks.cpp | 4 +++- circulo.cpp | 17 +++++++++++------ linea.cpp | 10 ++++++++-- rectangulo.cpp | 36 +++++++++++++++++++++++++++++++++++- 4 files changed, 57 insertions(+), 10 deletions(-) diff --git a/callbacks.cpp b/callbacks.cpp index 9b9172d..89c17a5 100644 --- a/callbacks.cpp +++ b/callbacks.cpp @@ -54,7 +54,9 @@ void on_button_salir_clicked(GtkButton *button, gpointer user_data) { void on_button_agregar_clicked(GtkButton *button, gpointer user_data) { std::cerr << "En agregar event." << std::endl; - // FIXME + // FIXME: hacer una estructura para guardar todos los punteros a los datos + // que necesito: radio buttons, y todas las entradas, más la lista enlazada, + // más, tal vez, el drawingarea. Figura* figura = new Circulo(1, 1, Punto(50, 50), "Lala", 50); static_cast(user_data)->agregar_figura(figura); } diff --git a/circulo.cpp b/circulo.cpp index d0f2b97..5ce7d78 100644 --- a/circulo.cpp +++ b/circulo.cpp @@ -39,14 +39,19 @@ void Circulo::dibujar(GtkWidget* widget) const { #ifdef DEBUG std::cerr << "En dibujar de Círculo." << std::endl; #endif - gdk_draw_arc(widget->window, + Figura::dibujar(widget); + gdk_draw_arc( + // Área dibujable. + widget->window, + // Graphic Context a usar. widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + // No lo rellena. FALSE, - 5, 5, - widget->allocation.width - 10, - widget->allocation.height - 10, + // X, Y de la esquina superior izquierda. + centro.x - radio, centro.y - radio, + // X, Y de la esquina inferior derecha. + centro.x + radio, centro.y + radio, + // de 0 a 360 grados. 0, 64 * 360); - - //Figura::dibujar(out); } diff --git a/linea.cpp b/linea.cpp index 2a933bd..9c091c3 100644 --- a/linea.cpp +++ b/linea.cpp @@ -35,9 +35,15 @@ Linea::~Linea(void) { } void Linea::dibujar(GtkWidget* widget) const { - gdk_draw_line(widget->window, +#ifdef DEBUG + std::cerr << "En dibujar de Línea." << std::endl; +#endif + Figura::dibujar(widget); + gdk_draw_line( + // Área dibujable. + widget->window, + // Graphic Context. widget->style->fg_gc[GTK_WIDGET_STATE (widget)], ini.x, ini.y, fin.x, fin.y); - //Figura::dibujar(out); } diff --git a/rectangulo.cpp b/rectangulo.cpp index 3b1112a..c4e9e56 100644 --- a/rectangulo.cpp +++ b/rectangulo.cpp @@ -35,6 +35,40 @@ Rectangulo::~Rectangulo(void) { } void Rectangulo::dibujar(GtkWidget* widget) const { - //Figura::dibujar(out); +#ifdef DEBUG + std::cerr << "En dibujar de Rectángulo." << std::endl; +#endif + Figura::dibujar(widget); + // Lado de la izquierda. + gdk_draw_line( + // Área dibujable. + widget->window, + // Graphic Context. + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + // X, Y del vértice superior. + centro.x - ancho / 2, centro.y - alto / 2, + // X, Y del vértice inferior. + centro.x - ancho / 2, centro.y + alto / 2); + // Lado de la derecha. + gdk_draw_line(widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + // X, Y del vértice superior. + centro.x + ancho / 2, centro.y - alto / 2, + // X, Y del vértice inferior. + centro.x + ancho / 2, centro.y + alto / 2); + // Lado superior. + gdk_draw_line(widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + // X, Y del vértice de la izquierda. + centro.x - ancho / 2, centro.y - alto / 2, + // X, Y del vértice de la derecha. + centro.x + ancho / 2, centro.y - alto / 2); + // Lado inferior. + gdk_draw_line(widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + // X, Y del vértice de la izquierda. + centro.x - ancho / 2, centro.y + alto / 2, + // X, Y del vértice de la derecha. + centro.x + ancho / 2, centro.y + alto / 2); } -- 2.43.0