1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #ifndef _IPXE_PNM_H
- #define _IPXE_PNM_H
-
- /** @file
- *
- * Portable anymap format (PNM)
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- #include <stdint.h>
- #include <ipxe/uaccess.h>
- #include <ipxe/image.h>
-
- /** PNM signature */
- struct pnm_signature {
- /** Magic byte ('P') */
- char magic;
- /** PNM type */
- char type;
- /** Whitespace */
- char space;
- } __attribute__ (( packed ));
-
- /** PNM magic byte */
- #define PNM_MAGIC 'P'
-
- /** PNM context */
- struct pnm_context {
- /** PNM type */
- struct pnm_type *type;
- /** Current byte offset */
- size_t offset;
- /** Maximum length of ASCII values */
- size_t ascii_len;
- /** Maximum pixel value */
- unsigned int max;
- };
-
- /** Default maximum length of ASCII values */
- #define PNM_ASCII_LEN 16
-
- /** PNM type */
- struct pnm_type {
- /** PNM type */
- char type;
- /** Number of scalar values per pixel */
- uint8_t depth;
- /** Number of pixels per composite value */
- uint8_t packing;
- /** Flags */
- uint8_t flags;
- /** Extract scalar value
- *
- * @v image PNM image
- * @v pnm PNM context
- * @ret value Value, or negative error
- */
- int ( * scalar ) ( struct image *image, struct pnm_context *pnm );
- /** Convert composite value to 24-bit RGB
- *
- * @v composite Composite value
- * @v index Pixel index within this composite value
- * @ret rgb 24-bit RGB value
- */
- uint32_t ( * rgb ) ( uint32_t composite, unsigned int index );
- };
-
- /** PNM flags */
- enum pnm_flags {
- /** Bitmap format
- *
- * If set, this flag indicates that:
- *
- * - the maximum scalar value is predefined as being equal to
- * (2^packing-1), and is not present within the file, and
- *
- * - the maximum length of ASCII values is 1.
- */
- PNM_BITMAP = 0x01,
- };
-
- extern struct image_type pnm_image_type __image_type ( PROBE_NORMAL );
-
- #endif /* _IPXE_PNM_H */
|