X PixMap ( XPM ) es un formato de archivo de imagen utilizado por el sistema X Window , creado en 1989 por Daniel Dardailler y Colas Nahaboo que trabajaban en el Centro de Investigación Bull en Sophia Antipolis , Francia, y posteriormente mejorado por Arnaud Le Hors. [2] [3]
Está pensado principalmente para crear mapas de píxeles de iconos y admite píxeles transparentes . Derivado de la sintaxis XBM anterior , es un archivo de texto sin formato en formato XPM2 o de una sintaxis del lenguaje de programación C , que se puede incluir en un archivo de programa C. [2]
El primer formato XPM (1989) es relativamente similar al formato XBM. [a] En comparación con XBM, utiliza definiciones de macros y variables adicionales para colores indexados y reemplaza bits con caracteres para describir la imagen. La siguiente es una imagen en blanco y negro en formato XPM de 1989.
#define XFACE_format 1 #define XFACE_width 48 #define XFACE_height 48 #define XFACE_ncolors 2 #define XFACE_chars_per_pixel 1 carácter estático * XFACE_colors [] = { "a" , "#ffffff" , "b" , "#000000" }; static char * XFACE_pixels [] = { "abaabaababaaabaabababaabaabaababaabaaababaabaaab" , // y así sucesivamente durante 48 filas con 48 píxeles
XPM2 (1990) simplifica el formato eliminando todo el código C. [b] [c] La estructura se simplifica a
! XPM2<Valores><Colores><píxeles><Extensiones opcionales>
#define
declaraciones.El archivo anterior, con ancho 48, alto 4, 2 colores y 1 carácter por píxel, se convierte en:
! XPM248 4 2 1ac #FFFFFFantes de Cristo #000000abaabaababaaabaabababaabaabaababaabaaababaabaaababaabaababaaabaabababaabaabaababaabaaababaabaaababaabaababaaabaabababaabaabaababaabaaababaabaaababaabaababaaabaabababaabaabaababaabaaababaabaaab
Además de los códigos hexadecimales, los colores pueden ser cualquiera de los nombres de colores X11 . Además, None
indica transparencia. [4] [5]
La característica "simbólica" permite ajustar los colores según el contexto donde se utilizan. Código que s border c blue
podría ajustarse sobre un fondo azul.
Se sabe que una herramienta utiliza sólo a hasta p para 16 colores, cambiando a aa hasta dp para 64 colores, pero sigue leyendo codificaciones de un solo carácter para 64 colores; comparar Base64 .
Con más colores, los códigos utilizan más caracteres, por ejemplo, aa hasta pp para 16 × 16 = 256 colores. Esto es menos útil para los editores de texto, porque una cadena ab podría ser en realidad el medio de dos píxeles adyacentes dabc . Se permiten espacios como código de color, pero puede ser una mala idea dependiendo del editor de texto utilizado. Sin códigos de control, barra invertida ni comillas (necesarias en XPM1 y XPM3) 128 − 33 − 2 = 93 caracteres ASCII están disponibles para códigos de color de un solo carácter.
Ejemplo simplificado: 90 caracteres US-ASCII podrían organizarse en nueve conjuntos de 10 caracteres que no se superpongan. Así, cadenas inequívocas de nueve caracteres podrían establecer el color de cada píxel mediante su índice de paleta XPM con hasta 10 9 =1.000.000.000 de colores (en comparación con GIF , que sólo admite 256 ).
Para XPM2 está claro cuántas líneas pertenecen a la imagen: dos líneas de encabezado, la segunda línea de encabezado anuncia el número de códigos de color (2 líneas en el ejemplo anterior) y filas (altura 4 en el ejemplo anterior), por ejemplo, 2 + 2. + 4 = 8 líneas.
El formato actual y último es XPM3 (1991). Vuelve a introducir el contenedor C, pero en lugar de mostrar explícitamente la estructura de un archivo, las cadenas almacenadas son esencialmente idénticas a XPM2.
/* XPM */ static char * XFACE [] = { "48 4 2 1" , "ac #ffffff" , "bc #000000" , "abaabaababaaabaabababaabaabaabaaababaabaaab" , "abaabaababaaabaababaabaabaabaabaabaaababaabaaab" , "abaabaababaaabaababaabaabaabaabaaababaaab" , abaabaababaaabaabababaabaabaababaabaaababaabaaab" };
Si la línea de "valores" contiene seis números en lugar de cuatro, los valores adicionales indican las coordenadas de un "punto de acceso", donde 0 0 es la esquina superior izquierda de un cuadro que contiene el icono y el valor predeterminado. Se utiliza un "punto de acceso" para los punteros del mouse y aplicaciones similares.
El siguiente código muestra el mismo archivo blarg en los formatos XBM , XPM y PBM .
Versión XBM:
#define test_width 16 #define test_height 7 static char test_bits [] = { 0x13 , 0x00 , 0x15 , 0x00 , 0x93 , 0xcd , 0x55 , 0xa5 , 0x93 , 0xc5 , 0x00 , 0x80 , 0x00 , 60 };
Versión XPM2:
! XPM216 7 2 1*c#000000. c #ffffff**..*..........*.*.*..........**..*..**.**..***.*.*.*.*.*..*.***..*..**.*...**...............*.............**.
Versión XPM3:
/* XPM */ static char * blarg_xpm [] = { "16 7 2 1" , "* c #000000" , ". c #ffffff" , "**..*.......... ." , "*.*.*............" , "**..*..**.**..**" , "*.*.*.*. *.*..*.*" , "**..*..**.*...**" , ".................*" , ". ............**." };
Archivo PBM:
P116 71 1 0 0 1 0 0 0 0 0 0 0 0 0 0 01 0 1 0 1 0 0 0 0 0 0 0 0 0 0 01 1 0 0 1 0 0 1 1 0 1 1 0 0 1 11 0 1 0 1 0 1 0 1 0 1 0 0 1 0 11 1 0 0 1 0 0 1 1 0 1 0 0 0 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
ACDSee , Amaya , CorelDRAW , GIMP , ImageMagick , IrfanView (complemento de formatos), PaintShop Pro , PMView , Photoshop (complementos) y XnView , entre otros, son compatibles con XPM. [6] [7] Gravatar y picons también son compatibles con XPM. [8] [9]
Una vulnerabilidad X11 libXpm se solucionó en 2005, [10] y tres más en 2023. [11]
FFmpeg versión 3.3 o posterior puede decodificar XPM. [12]
{{cite book}}
: |work=
ignorado ( ayuda )Los picons están en formato XBM monocromático o en formato XPM y GIF en color.
decodificador XPM