Draw2D
Funciones
void | draw2d_start (void) |
void | draw2d_finish (void) |
void | draw2d_preferred_monospace (...) |
Tipos y Constantes
enum | pixformat_t |
enum | codec_t |
enum | fstyle_t |
enum | linecap_t |
enum | linejoin_t |
enum | fillwrap_t |
enum | drawop_t |
enum | align_t |
enum | ellipsis_t |
struct | color_t |
struct | DCtx |
struct | Draw |
struct | Palette |
struct | Pixbuf |
struct | Image |
struct | Font |
La librería Draw2D integra toda la funcionalidad necesaria para crear gráficos vectoriales en dos dimensiones. Depende directamente de Geom2D (Figura 1) y, como veremos más adelante, dibujar no implica disponer de interfaz gráfica en el programa. Es posible generar imágenes utilizando un búfer interno de memoria, sin necesidad de visualizar el resultado en una ventana.
Esta librería conecta directamente con las tecnologías nativas de cada sistema operativo: GDI+ en sistemas Windows, Quartz2D en macOS y Cairo en Linux. En esencia draw2d ofrece una interfaz común y ligera con el fin de que el código sea portable, delegando el trabajo final en cada una de ellas. Con esto garantizamos tres cosas:
- Eficiencia: Estas APIs han sido probadas durante años y son mantenidas por los fabricantes de los sistemas.
- Presencia: Están integradas de "serie" en todos los ordenadores, por lo que no se requiere instalar software adicional.
- Rendimiento: Los programas son más pequeños ya que no requieren enlazar con rutinas especiales para el manejo de gráficos, tipografías o imágenes.
enum pixformat_t
Formatos de píxel en una imagen. Número de bits y modelo de color.
enum pixformat_t
{
ekINDEX1,
ekINDEX2,
ekINDEX4,
ekINDEX8,
ekGRAY8,
ekRGB24,
ekRGBA32,
ekFIMAGE
};
ekINDEX1 | 1 bit por pixel. 2 colores, indexado. |
ekINDEX2 | 2 bits por pixel. 4 colores, indexado. |
ekINDEX4 | 4 bits por pixel. 16 colores, indexado. |
ekINDEX8 | 8 bits por pixel. 256 colores, indexado. |
ekGRAY8 | 8 bits por pixel en escala de grises. 256 tonos de gris. |
ekRGB24 | 24 bits por pixel RGB. 8 bits por canal (rojo, verde, azul). El byte de menor orden corresponde al rojo y el de mayor al azul. |
ekRGBA32 | 32 bits por pixel RGBA. 8 bits por canal (rojo, verde, azul, alpha). El byte de menor orden corresponde al rojo y el de mayor al alpha (transparencia). |
ekFIMAGE | Representa el formato original de la imagen. Sólo válido en image_pixels. |
enum codec_t
Formato de codificación y compresión de imágenes.
enum codec_t
{
ekJPG,
ekPNG,
ekBMP,
ekGIF
};
ekJPG | Joint Photographic Experts Group. |
ekPNG | Portable Network Graphics. |
ekBMP | BitMaP. |
ekGIF | Graphics Interchange Format. |
enum fstyle_t
Estilo en fuentes tipográficas. Pueden combinarse varios valores con el operator OR ('|')
.
enum fstyle_t
{
ekFNORMAL,
ekFBOLD,
ekFITALIC,
ekFSTRIKEOUT,
ekFUNDERLINE,
ekFSUBSCRIPT,
ekFSUPSCRIPT,
ekFPIXELS,
ekFPOINTS,
ekFCELL
};
ekFNORMAL | Fuente normal, sin estilo. También llamada Regular. |
ekFBOLD | Fuente en negrita. |
ekFITALIC | Fuente en itálica. |
ekFSTRIKEOUT | Fuente |
ekFUNDERLINE | Fuente subrayada. |
ekFSUBSCRIPT | Subíndice. Ver textview_fstyle. |
ekFSUPSCRIPT | Superíndice. Ver textview_fstyle. |
ekFPIXELS | Los tamaños de fuente se indicarán en píxeles. |
ekFPOINTS | Los tamaños de fuente se indicarán en puntos. Tamaño en puntos. |
ekFCELL | Los tamaños de fuente harán referencia a la altura de celda y no a la altura del carácter. |
enum linecap_t
Estilo en los extremos de línea.
enum linecap_t
{
ekLCFLAT,
ekLCSQUARE,
ekLCROUND
};
ekLCFLAT | Terminación plana en el último punto de la línea. |
ekLCSQUARE | Terminación en un cuadro, cuyo centro es el último punto de la línea. |
ekLCROUND | Terminación en círculo, cuyo centro es el último punto de la línea. |
enum linejoin_t
Estilo en las uniones de línea.
enum linejoin_t
{
ekLJMITER,
ekLJROUND,
ekLJBEVEL
};
ekLJMITER | Unión en ángulo. En ángulos muy cerrados se recorta. |
ekLJROUND | Unión redondeada. |
ekLJBEVEL | Unión biselada. |
enum fillwrap_t
Comportamiento del patrón de relleno en los límites.
enum fillwrap_t
{
ekFCLAMP,
ekFTILE,
ekFFLIP
};
ekFCLAMP | Se utiliza el último valor del límite para rellenar el área exterior. |
ekFTILE | Se repite el patrón. |
ekFFLIP | Se repite el patrón, invirtiendo el orden. |
enum drawop_t
Operación a realizar sobre primitivas gráficas.
enum drawop_t
{
ekSTROKE,
ekFILL,
ekSKFILL,
ekFILLSK
};
ekSTROKE | Dibuja el contorno de la figura con el estilo de línea predeterminado. |
ekFILL | Rellena el interior de la figura con el color o patrón predeterminado. |
ekSKFILL | Primero dibuja el contorno y después rellena. |
ekFILLSK | Primero rellena y después dibuja el contorno. |
enum align_t
Valores de alineación.
enum align_t
{
ekLEFT,
ekTOP,
ekCENTER,
ekRIGHT,
ekBOTTOM,
ekJUSTIFY
};
ekLEFT | Alineación al margen izquierdo. |
ekTOP | Alineación al margen superior. |
ekCENTER | Alineación centrada. |
ekRIGHT | Alineación al margen derecho. |
ekBOTTOM | Alineación al margen inferior. |
ekJUSTIFY | Justificación o expansión del contenido. |
enum ellipsis_t
Posición de la elipsis (...) al cortar un texto.
enum ellipsis_t
{
ekELLIPNONE,
ekELLIPBEGIN,
ekELLIPMIDDLE,
ekELLIPEND,
ekELLIPMLINE
};
ekELLIPNONE | Sin elipsis. |
ekELLIPBEGIN | Elipsis al principio del texto. |
ekELLIPMIDDLE | Elipsis en el centro del texto. |
ekELLIPEND | Elipsis al final del texto. |
ekELLIPMLINE | Texto multilínea (sin elipsis). |
struct color_t
Entero de 32 bits que representa un color RGBA. El byte de menor orden corresponde al canal rojo (Red) y el de mayor orden al canal Alpha (transparencia). Colores.
struct color_t;
struct DCtx
Contexto de dibujo 2D, destinatario para los comandos de dibujo. También se conoce como lienzo (canvas) o superficie (surface). Contextos 2D.
struct DCtx;
struct Draw
Dibujo de entidades geométricas.
struct Drawf; struct Drawd; template<typename real> struct Draw;
struct Palette
Paleta de colores, normalmente relacionada con Pixbuf indexados. Paletas.
struct Palette;
struct Pixbuf
Búfer en memoria con información de píxeles. Pixel Buffer.
struct Pixbuf;
struct Image
Contiene una imagen de mapa de bits, compuesta por píxeles. Imágenes.
struct Image;
struct Font
Contiene la familia tipográfica, tamaño y estilo con el que se dibujarán los textos. Fuentes.
struct Font;
draw2d_start ()
Inicia la librería draw2d, reservando espacio para las estructuras internas globales. Internamente llama a core_start. En aplicaciones de escritorio, osmain llama a esta función al iniciar el programa.
void
draw2d_start(void);
draw2d_finish ()
Finaliza la librería draw2d, liberando el espacio de las estructuras internas globales. Internamente llama a core_finish. En aplicaciones de escritorio, osmain llama a esta función al salir del programa.
void
draw2d_finish(void);
draw2d_preferred_monospace ()
Establece la fuente monoespaciada por defecto para la función font_monospace.
void draw2d_preferred_monospace(const char_t *family);
family | Familia tipográfica monoespaciada. |
Observaciones
Si no se llama a esta función o la fuente no existe, se establecerá una por defecto. Ver Fuente monoespaciada.