*axis = max(0, (int)axis_alignment);
}
+void video_bmp_get_info(void *bmp_image, ulong *widthp, ulong *heightp,
+ uint *bpixp)
+{
+ struct bmp_image *bmp = bmp_image;
+
+ *widthp = get_unaligned_le32(&bmp->header.width);
+ *heightp = get_unaligned_le32(&bmp->header.height);
+ *bpixp = get_unaligned_le16(&bmp->header.bit_count);
+}
+
int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
bool align)
{
return -EINVAL;
}
- width = get_unaligned_le32(&bmp->header.width);
- height = get_unaligned_le32(&bmp->header.height);
- bmp_bpix = get_unaligned_le16(&bmp->header.bit_count);
+ video_bmp_get_info(bmp, &width, &height, &bmp_bpix);
hdr_size = get_unaligned_le16(&bmp->header.size);
debug("hdr_size=%d, bmp_bpix=%d\n", hdr_size, bmp_bpix);
palette = (void *)bmp + 14 + hdr_size;
!(bmp_bpix == 24 && bpix == 16) &&
!(bmp_bpix == 24 && bpix == 32)) {
printf("Error: %d bit/pixel mode, but BMP has %d bit/pixel\n",
- bpix, get_unaligned_le16(&bmp->header.bit_count));
+ bpix, colours);
return -EPERM;
}
void video_sync_all(void);
/**
+ * video_bmp_get_info() - Get information about a bitmap image
+ *
+ * @bmp_image: Pointer to BMP image to check
+ * @widthp: Returns width in pixels
+ * @heightp: Returns height in pixels
+ * @bpixp: Returns log2 of bits per pixel
+ */
+void video_bmp_get_info(void *bmp_image, ulong *widthp, ulong *heightp,
+ uint *bpixp);
+
+/**
* video_bmp_display() - Display a BMP file
*
* @dev: Device to display the bitmap on