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<Dibujo*>(user_data)->agregar_figura(figura);
}
#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);
}
}
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);
}
}
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);
}