From 97e53887b274b619a05713c784357cbf80007c89 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Tue, 7 Oct 2003 05:23:10 +0000 Subject: [PATCH] =?utf8?q?Se=20termina=20la=20parte=20m=C3=ADa=20del=20inf?= =?utf8?q?orme.=20Falta=20la=20parte=20com=C3=BAn=20sobre=20GTK.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Makefile | 14 ++++----- caratula.rtf | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ documentacion.h | 26 ++++++++++++++--- 3 files changed, 105 insertions(+), 11 deletions(-) create mode 100644 caratula.rtf diff --git a/Makefile b/Makefile index 63dd15b..a7360d6 100644 --- a/Makefile +++ b/Makefile @@ -16,8 +16,8 @@ # Opciones para el compilador. CXXFLAGS=`pkg-config --cflags gtk+-2.0` #CXXFLAGS+=-ansi -pedantic -Wall -O3 -#CXXFLAGS+=-ansi -pedantic -Wall -g3 -CXXFLAGS+=-ansi -pedantic -Wall -g3 -DDEBUG +CXXFLAGS+=-ansi -pedantic -Wall -g3 +#CXXFLAGS+=-ansi -pedantic -Wall -g3 -DDEBUG LDFLAGS=`pkg-config --libs gtk+-2.0` @@ -62,12 +62,12 @@ clean: @rm -fR $(TARGETS) *.o core corrida.txt html latex* *.ps # Preety-printing del código fuente. -FUENTES=dllist.h dllist.cpp punto.h figura.h figura.cpp rectangulo.h \ - rectangulo.cpp cuadrado.h cuadrado.cpp linea.h linea.cpp circulo.h \ - circulo.cpp dibujo.h dibujo.cpp callbacks.h callbacks.cpp \ - tp5window.h tp5window.cpp tp5.cpp +FUENTES=figura.h figura.cpp rectangulo.h rectangulo.cpp cuadrado.h \ + cuadrado.cpp linea.h linea.cpp circulo.h circulo.cpp dibujo.h \ + dibujo.cpp callbacks.h callbacks.cpp tp5window.h tp5window.cpp \ + tp5.cpp code.ps: $(FUENTES) - @enscript -j -Ecpp -U2 -C --fancy-header=squeeze --color -pcode.ps \ + @enscript -H0 -j -Ecpp -U2 -C --fancy-header=squeeze --color -pcode.ps \ $(FUENTES) # Informe. diff --git a/caratula.rtf b/caratula.rtf new file mode 100644 index 0000000..eaa0df6 --- /dev/null +++ b/caratula.rtf @@ -0,0 +1,76 @@ +{\rtf0\ansi +\ansicpg1252 +{\fonttbl +{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\f142\froman\fcharset238\fprq2 Times New Roman CE;} +{\f143\froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f145\froman\fcharset161\fprq2 Times New Roman Greek;} +{\f146\froman\fcharset162\fprq2 Times New Roman Tur;} +{\f147\froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\f148\froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f149\froman\fcharset186\fprq2 Times New Roman Baltic;} +{\f150\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} +{\colortbl +; +\red0\green0\blue0; +\red0\green0\blue255; +\red0\green255\blue255; +\red0\green255\blue0; +\red255\green0\blue255; +\red255\green0\blue0; +\red255\green255\blue0; +\red255\green255\blue255; +\red0\green0\blue128; +\red0\green128\blue128; +\red0\green128\blue0; +\red128\green0\blue128; +\red128\green0\blue0; +\red128\green128\blue0; +\red128\green128\blue128; +\red192\green192\blue192; +} +{\stylesheet +{\widctlpar\li0\ri0\ql\fs24\snext0 Normal;} +{\*\cs10\additive Default Paragraph Font;} +} +{\info +{\title (75} +{\author Ga} +{\creatim \yr2003\mo8\dy22\hr1\min35\sec0} +{\revtim \yr2003\mo10\dy7\hr2\min17\sec28} +{\printim \yr2003\mo8\dy22\hr1\min43\sec0} +} +\paperw11908\paperh16847\margl1701\margr1701\margt1417\margb1417 +\widowctrl\deftab708 +\ftnbj\aenddoc\ftnrstcont\aftnrstcont\ftnnar\aftnnrlc +\sectd\headery708\footery708\colsx708 +{\*\pnseclvl1\pnucrm\pnstart1\pnhang\pnindent720{\pntxta .}} +{\*\pnseclvl2\pnucltr\pnstart1\pnhang\pnindent720{\pntxta .}} +{\*\pnseclvl3\pndec\pnstart1\pnhang\pnindent720{\pntxta .}} +{\*\pnseclvl4\pnlcltr\pnstart1\pnhang\pnindent720{\pntxta )}} +{\*\pnseclvl5\pndec\pnstart1\pnhang\pnindent720{\pntxtb (}{\pntxta )}} +{\*\pnseclvl6\pnlcltr\pnstart1\pnhang\pnindent720{\pntxtb (}{\pntxta )}} +{\*\pnseclvl7\pnlcrm\pnstart1\pnhang\pnindent720{\pntxtb (}{\pntxta )}} +{\*\pnseclvl8\pnlcltr\pnstart1\pnhang\pnindent720{\pntxtb (}{\pntxta )}} +{\*\pnseclvl9\pnlcrm\pnstart1\pnhang\pnindent720{\pntxtb (}{\pntxta )}} +\pard\widctlpar\qc\plain\f0\fs36\b (75.42) - Taller de Programaci\'f3n I +\par +\par +\pard\widctlpar\plain\f0 \par +\pard\widctlpar\sl360\slmult1\tx2880\plain\f0\fs28\b Cuatrimestre\tab\b0 +2\super do\nosupersub - 2003\par +\b Trabajo pr\'e1ctico Nro\tab\b0 5\par +\b Entrega n\'famero\tab\b0 1\par +\b Fecha de entrega\tab 07/10/2003\par +\par +Padr\'f3n\tab\b0 77.891\par +\b Apellidos\tab\b0 Lucarella\par +\b Nombres\tab\b0 Leandro M.\par +\par +\b Fecha de devoluci\'f3n\tab\par +Corrector\tab\par +Calificaci\'f3n\tab\par +\b0 \par +\b Notas\tab\par +\pard\widctlpar\plain\f0 \par +} diff --git a/documentacion.h b/documentacion.h index effcacd..213b8e3 100644 --- a/documentacion.h +++ b/documentacion.h @@ -130,7 +130,7 @@ Tambi \subsection callbacks Funciones callbacks. Cada evento recibido por un widget GTK (y en general cualquier señal que - pueda manejar la GLib) de ser \conectado a una función callback que se + pueda manejar la GLib) de ser \e conectado a una función callback que se encargue de menejarlo. Todas las funciones callback se agruparon en el archivo callbacks.h y callbacks.cpp. Se implementaron callbacks para los siguientes eventos: @@ -156,7 +156,7 @@ Tambi - \c delete_event: Este evento se \e dispara cuando se solicita \e borrar una ventana. Esto pasa cuando se le pide a un manejador de ventanas que \e borre - o \cierre esa ventana (ya sea por la típica X en la decoración de la + o \e cierre esa ventana (ya sea por la típica X en la decoración de la ventana o un menú contextual, por ejemplo). Una clara diferencia entre estos es que los dos primeros son \e internos @@ -191,12 +191,30 @@ Tambi librerías para desarrollo de GTK instalados (esto incluye también librerías de desarrollo de Xlib, Glib y GDK). En el caso de Debian GNU/Linux sid basta con instalar los paquetes: \c make, \c xlibs-dev, - \c libglib2.0-dev, \c libgtk2.0-dev. + \c libglib2\c .0-dev, \c libgtk2\c .0-dev. Teniendo estos paquetes, basta ejecutar \c make para compilar el programa. \section conclusiones Conclusiones. - TODO + Este trabajo me sirvió para profundizar sobre algunos aspectos de + programación de aplicaciones gráficas que no manejaba. También me sirvió + para saldar una cuenta que tenía hace tiempo, que era aprender sobre GTK y + en general Xlib (para conocer el sistema X Window a más bajo nivel) ya que + hasta ahora, en cuanto a aplicaciones gráficas, sólo había programado en + Delphi y Java, dos lenguajes (y/o API) de mucho más alto nivel. + Un problema con el que me encontré, a modo de anécdota, fue el manejo de + colores. En un principio había programado el método + Figura::traducir_color() pensando en mi configuración de 24 bits. Todas las + operaciones las realizaba operando con máscaras de bits presuponiendo 8 bits + por color RGB, escribiendo en pantalla \e directamente el píxel resultante. + Al querer probar el programa en mi trabajo, con una configuración de 16 bits + por píxel, por supuesto que sucedieron cosas extrañas. Fue en ese momento + que tuve que reescribir dicho método, utilizando las propiedades \c red, + \c green y \c blue de la estructura GdkColor y las funciones de la API para + \e preguntarle al X si el color estaba disponible y buscar un color similar + de no estarlo, en vez de poner directamente el color en la propiedad \c + pixel que almacena el valor real del píxel que se usara para poner en la + memoria de video. */ -- 2.43.0