Apis c

79
APIS C++

description

librerías DE C

Transcript of Apis c

14

APIS C++

Libreras

CAIRO ..3

Dark Game Development Kit (Dark GDK) ..9

FLTK .........................................................................................................................................9

GTK .....12

MINIWIN ....14

WXWIDGETS ....22

QT.............................................................................................................................................26

SDL + DEV .............................................................................................................................30

OPENGL......41

GRAPHICS...50

OPENGL Y GLUT...12

CAIROEn informtica, Cairo es una biblioteca grfica de la API GTK+ usada para proporcionar imgenes basadas en grficos vectoriales. Aunque Cairo es una API independiente de dispositivos, est diseado para usar aceleracin por hardware cuando est disponible. Cairo ofrece numerosas primitivas para imgenes de dos dimensiones.A pesar de que est escrito en C, existen implementaciones en otros lenguajes de programacin, incluyendo C++, C#, Common Lisp, Haskell, Java, Python, Perl, Ruby, Scheme (Guile, Chicken), Smalltalk y muchos otros. Dada la doble licencia incluyendo la Licencia Pblica General Reducida de GNU y la Licencia Pblica de Mozilla, cairo es software libre. Modelo grfico de CairoPara poder explicar el modelo grfico que usa Cairo se tienen que definir los conceptos que se utilizan. Se tienen los sustantivos y los verbos. Los sustantivos son objetos abstractos o entidades en los cuales operan los verbos. Hay varios tipos de sustantivos y varios tipos de verbos.SustantivosDestino. El destino es la superficie sobre la cual se dibuja. Puede ser una matriz de pxeles, o un archivo SVG o PDF, o cualquier tipo de grfico. Esta superficie colecciona los elementos de los grficos mientras se van aplicando, permitiendo as construir un trabajo completo, de forma anloga a pintar sobre un lienzo.

Fuente. Es la "pintura" sobre la cual se trabaja. Se muestra como una capa superior (capa negra en la imagen). Puede ser totalmente de un color, un patrn de colores, o incluso una superficie destino previamente creada. De forma contraria a una pintura real, la fuente puede contener un canal de transparencia.

Mscara. La mscara es la pieza ms importante pues controla la aplicacin de la fuente al destino. En la imagen se muestra como una pala amarilla que deja pasar la fuente. Cuando se aplica un verbo, es como si se adhiriera la fuente al destino. Siempre que la mscara lo permita, la fuente es copiada, en caso contrario, no sucede nada.

Ruta. Es cualquier cosa entre una parte de la mscara y una parte del contexto. Se manipula por medio de los verbos de ruta.

Contexto. El contexto mantiene un registro de todo lo que un verbo afecta. Mantiene una fuente, un destino y una mscara. Tambin mantiene muchas variables de ayuda como el grosor de la lnea y el estido, el tipo de fuente de letra y el tamao, etc. Tambin mantiene la ruta, la cual se transforma a una mscara cuando se usan los verbos de dibujo. Antes de que se dibuje algo con Cairo, se necesita crear un contexto. El contexto se almacena en el tipo de dato cairo_t. Cuando se crea un contexto, debe de ser ligado a una superficie, por ejemplo, una superficie de imagen si se desea crear un archivo PNG.

VerbosTrazar. La operacin cairo_stroke() toma un lpiz virtual a travs de toda la ruta. Permite transferir parte de la fuente (la lnea de la ruta) a travs de la mscara, de acuerdo al ancho de la lnea, estilo, etc. que define el contexto. Transfiere la mitad del ancho de lnea en cada lado de la ruta. cairo_set_line_width (cr, 0.1);cairo_set_source_rgb (cr, 0, 0, 0);cairo_rectangle (cr, 0.25, 0.25, 0.5, 0.5);cairo_stroke (cr);

Rellenar. La operacin cairo_fill() permite pasar un hoyo de la fuente (los lmites de la ruta) a travs de la mscara. Al usar rutas complejas (rutas con mltiples subrutas , como una dona, o rutas que se intersecan), estas se ven influenciadas por las reglas de rellenado. cairo_set_source_rgb (cr, 0, 0, 0);cairo_rectangle (cr, 0.25, 0.25, 0.5, 0.5);cairo_fill (cr);

Mostrar texto. La operacin cairo_show_text() forma la mscara desde cierto texto. Se usa como atajo en vez de crear una ruta con cairo_text_path() y luego usar cairo_fill() para transferirla. cairo_text_extents_t te;cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);cairo_select_font_face (cr, "Georgia", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);cairo_set_font_size (cr, 1.2);cairo_text_extents (cr, "a", &te);cairo_move_to (cr, 0.5 - te.width / 2 - te.x_bearing, 0.5 - te.height / 2 - te.y_bearing);cairo_show_text (cr, "a");

Pintar. La operacin cairo_paint() usa una mscara que transfiere la fuente completa al destino. Algunas personas la consideran como una mscara infinitamente grande, otros no la consideran mscara, el resultado es el mismo. La operacin similar cairo_paint_with_alpha() permite transferir la fuente completa al destino, pero slo transfiere cierto porcentaje de color. cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);cairo_paint_with_alpha (cr, 0.5);

Enmascarar. Las operaciones cairo_mask() y cairo_mask_surface() permiten transferir de acuerdo al nivel de transparencia u opacidad. En las partes transparentes de la superficie, la fuente se transfiere al destino. En las partes opacas, nada se transfiere. cairo_pattern_t *linpat, *radpat;linpat = cairo_pattern_create_linear (0, 0, 1, 1);cairo_pattern_add_color_stop_rgb (linpat, 0, 0, 0.3, 0.8);cairo_pattern_add_color_stop_rgb (linpat, 1, 0, 0.8, 0.3);

radpat = cairo_pattern_create_radial (0.5, 0.5, 0.25, 0.5, 0.5, 0.75);cairo_pattern_add_color_stop_rgba (radpat, 0, 0, 0, 0, 1);cairo_pattern_add_color_stop_rgba (radpat, 0.5, 0, 0, 0, 0);

cairo_set_source (cr, linpat);cairo_mask (cr, radpat);

Proceso de dibujoPara poder crear una imagen, se tiene que preparar el contexto para cada uno de los verbos. Para usar cairo_stroke() o cairo_fill() se necesita primero una ruta. Para usar cairo_show_text() se tiene que posicionar el texto en su punto de insercin. Para usar cairo_mask() se necesita una segunda superficie fuente. Para las dems operaciones, incluyendo cairo_paint() slo se necesitan una fuente primaria.Hay tres tipos de fuentes principales en Cairo: colores, gradientes e imgenes. Los colores son los ms simples; usan un color uniforme en toda la fuente. Se pueden seleccionar colores sin previas preparaciones con cairo_set_source_rgb() y cairo_set_source_rgba(). Usar cairo_set_source_rgb(cr, r, g, b) es equivalente a usar cairo_set_source_rgba(cr, r, g, b,1.0), lo cual pone el color fuente a su mximo nivel de opacidad.Los gradientes describen una progresin de colores en funcin a su lugar de inicio y de fin, adems de usar una serie de "paradas" a lo largo del camino. Los gradientes lineales se construyen a partir de dos puntos que se pasan a travs de lneas paralelas, los cuales definen los lugares de inicio y de fin. Los gradientes radiales se construyen tambin a partir de dos puntos, pero cada uno tiene un radio asociado para el crculo que define los lugares de inicio y de fin. Las paradas se agregan a los gradientes con cairo_add_color_stop_rgb() y cairo_add_color_stop_rgba() que toman un color como cairo_set_source_rgb*() y un offset para indicar donde se aplica a los lugares de referencia. Los colores entre las paradas adyacentes se promedian en el espacio para mezclarlos de forma uniforme. El comportamiente entre los lugares de referencia pueden ser controlados con cairo_set_extend().Las imgenes pueden ser superficies cargadas desde archivos existentes con cairo_image_surface_create_from_png() o tambin pueden ser superficies creadas con Cairo en un destino anterior. La forma ms fcil de crear y usar un destino anterior como una fuente es con cairo_push_group(), con cairo_pop_group() o con cairo_pop_group_to_source(). Se usa cairo_pop_group_to_source() justo antes de seleccionar una nueva fuente, y cairo_pop_group() cuando se desea guardarlo, as que se puede seleccionar uno y otra vez con cairo_set_source().Ejemplo de dibujo usando colorcairo_set_source_rgb (cr, 0, 0, 0);cairo_move_to (cr, 0, 0);cairo_line_to (cr, 1, 1);cairo_move_to (cr, 1, 0);cairo_line_to (cr, 0, 1);cairo_set_line_width (cr, 0.2);cairo_stroke (cr);

cairo_rectangle (cr, 0, 0, 0.5, 0.5);cairo_set_source_rgba (cr, 1, 0, 0, 0.80);cairo_fill (cr);

cairo_rectangle (cr, 0, 0.5, 0.5, 0.5);cairo_set_source_rgba (cr, 0, 1, 0, 0.60);cairo_fill (cr);

cairo_rectangle (cr, 0.5, 0, 0.5, 0.5);cairo_set_source_rgba (cr, 0, 0, 1, 0.40);cairo_fill (cr);

Ejemplo de dibujo usando gradientes

int i, j;cairo_pattern_t *radpat, *linpat;

radpat = cairo_pattern_create_radial (0.25, 0.25, 0.1, 0.5, 0.5, 0.5);cairo_pattern_add_color_stop_rgb (radpat, 0, 1.0, 0.8, 0.8);cairo_pattern_add_color_stop_rgb (radpat, 1, 0.9, 0.0, 0.0);

for (i=1; ishow(argc, argv); return Fl::run();}Software desarrollado sobre FLTK El progama de retoque fotogrfico CinePaint actualmente migrando de GTK+ a FLTK. flwm, un Gestor de ventanas para el sistema de ventanas X Nuke, un software de produccin digital (ingls) Progama para la impresin de posters PosteRazor (Windows, Mac OS X, Linux). El BVH editor Avimator para la creacin y edicin de avatares 3D Dillo es un pequeo navegador web Gmsh, un generador de mallas para clculos de Elementos finitos (ingls) EDE - Entorno del escritorio Equinox (ingls) Open Movie Editor Entorno abierto de edicin de pelculas (ingls)

GTKGTK "GIMP Tool Kit" es una biblioteca del equipo GTK+, la cual contiene los objetos y funciones para crear la interfaz grfica de usuario. Maneja widgets como ventanas, botones, mens, etiquetas, deslizadores, pestaas, etc.VentanasGTK define varias clases para construir ventanas.ClaseDescripcin

GtkDialogCrea una ventana popup.

GtkInvisibleUn widget que no es mostrado.

GtkMessageDialogUna ventana de mensaje.

Una ventana que puede contener otros widgets.

GtkWindowGroupUna ventana como la anterior pero con funciones limitadas.

GtkAboutDialogMuestra informacin sobre una aplicacin

GtkAssistantUn widget que se usa para guiar a los usuario a travs de operaciones de varios pasos (asistente).

Widgets sencillosLos siguientes widgets slo muestran informacin y no permiten la entrada de datos.ClaseDescripcinImagen

GtkAccelLabelEtiqueta que muestra informacin de una tecla aceleradora a la derecha del texto

GtkImageWidget que permite mostrar una imagen.

GtkLabelWidget que permite mostrar una pequella o mediana cantidad de texto.

GtkProgressBarWidget que indica el estado de un progreso.

GtkStatusbarReporta mensajes de menor importancia al usuario en la barra de estado.

GtkStatusIconMuestra un cono en el rea de notificacin del sistema.

BotonesClaseDescripcinImagen

GtkButtonBotn convencional. Crea una seal cuando se da click sobre l.

GtkCheckButtonEtiqueta con un botn el cual puede estar en dos estados: seleccionado o no seleccionado.

GtkRadioButtonOpcin de una lista mltiple de opciones.

GtkToggleButtonBotn convencional el cual puede mantener su estado.

GtkLinkButtonBotn que enlaza a una URL.

GtkScaleButtonBotn que hace aparecer una escala.

GtkVolumeButtonBotn que hace aparecer un control de volumen.

MINIWINMiniWin es super-simple: slo es un miniconjunto de funciones. Para usar MiniWin solamente hay que seguir 2 pasos importantes:Poner arriba del programa principal: #include "miniwin.h" using namespace miniwin;Fjate en que hay comillas dobles y no ngulos alrededor de miniwin.h en el #include. El using namespace miniwin te ser familiar por su equivalente con std.Hacer la funcin main as: int main() { return 0; }Es decir, sin parmetros y devolviendo int. El return 0 es obligatorio. Aparte de eso se trata de utilizar las funciones que se comentan a continuacin.Control de la ventanaEn MiniWin, al ejecutar el programa principal siempre se crear una sola ventana, a la que nos referiremos como la ventana. Esta ventana no se puede redimensionar con el ratn (solamente con la accin vredimensiona()) y mantiene el dibujo que pintas aunque la minimices. Algunas funciones utilizan coordenadas en esta ventana. Las coordenadas son un par ordenado de valores, donde el primer valor es x y el segundo es y: La esquina superior-izquierda es el orgen, con coordenadas (0,0). A medida que nos desplazamos a la derecha la coordenada x crece. A medida que nos desplazamos hacia abajo la coordenada y crece.El diagrama sera el siguiente:

Hay 3 funciones relacionadas con las dimensiones de la ventana.void vredimensiona(int ancho, int alto)Accin que cambia las dimensiones (en pxeles) de la ventana. El primer parmetro indica la anchura y el segundo la altura, ambos son enteros. Por ejemplo:vredimensiona(800, 600); cambiar las dimensiones de la ventana a 800 por 600 pxeles. El hecho de redimensionar la ventana implica que sta se borrar, como si hicisemos borra() justo despus del vredimensiona().int vancho()Funcin que averigua el ancho de la ventana en pxeles, devolviendo un entero. Por ejemplo, el siguiente cdigo utiliza la funcin vancho():int a = vancho();if (a > 500) { cout