Skip to contentSkip to conversation

add PNG support

PATCH Superseded Jean-Christophe PLAGNIOL-VILLARD 2 participants 13 messages Sep 7, 2012 – Sep 8, 2012

Subsystems (4)

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

v2 cover add PNG support

Hi,

v2:

fix comment
fix missing select
drop logo (will be send in a seprated pull)

please pull
The following changes since commit 298d15571da8d1cb71e7fd87cc53cad3b2bf1d12:

i.MX51: unbreak FEC iomux (2012-09-07 10:28:17 +0200)

are available in the git repository at:

git://git.jcrosoft.org/barebox.git tags/png

for you to fetch changes up to 94ca148f67a8cc33dabb28a1bb0207cc3fa7fe6a:

png: add picoPNG lib support (2012-09-07 20:29:20 +0800)

----------------------------------------------------------------
Introduce PNG support

This will allow to reduce the binary size and support transparent image png + png8 is 50% less than lzo + bmp (same image)

- rename bmp to splash
- add background support (usefull for transparent image)
- add LodePNG and PicoPNG

PicoPNG only support PNG8 RGBA where LodePNG support most of the PNG (PNG24 & PNG8). PicoPNG is ~5KiB smaller than LodePNG.

Attention the coding style on both PicoPNG and LodePNG are untouched for maintainance purpose.

Use LodePNG version 20120729 from http://lodev.org/lodepng/
Use from http://forge.voodooprojects.org/
which is base on picoPNG C++ wrote by Lode Vandevenne. The same author as LodePNG.

----------------------------------------------------------------
Jean-Christophe PLAGNIOL-VILLARD (11):
bmp: rename it to splash
bmp: split bmp rending in lib/bmp.c introduce image_renderer framework
filetype: add BMP support
splash/bmp: switch to image_renderer
splash: add support to set a background color Introduce graphic utils
graphic_utils: add rgba support
filetype: add PNG support
add PNG support
png: add picoPNG lib support

 Documentation/commands.dox                         |    2 +-
 arch/arm/boards/eukrea_cpuimx25/env/bin/init_board |    4 +-
 arch/arm/boards/eukrea_cpuimx27/env/bin/init       |    4 +-
 arch/arm/boards/eukrea_cpuimx35/env/bin/init_board |    4 +-
 arch/arm/boards/eukrea_cpuimx51/env/bin/init_board |    4 +-
 arch/arm/boards/karo-tx25/env/bin/init_board       |    2 +-
 arch/arm/boards/mioa701/env/bin/init               |    2 +-
 arch/arm/configs/chumbyone_defconfig               |    2 +-
 arch/arm/configs/cupid_defconfig                   |    2 +-
 arch/arm/configs/eukrea_cpuimx25_defconfig         |    2 +-
 arch/arm/configs/eukrea_cpuimx27_defconfig         |    2 +-
 arch/arm/configs/eukrea_cpuimx35_defconfig         |    2 +-
 arch/arm/configs/freescale_mx35_3stack_defconfig   |    2 +-
 arch/arm/configs/imx28evk_defconfig                |    2 +-
 arch/arm/configs/mioa701_defconfig                 |    2 +-
 arch/arm/configs/neso_defconfig                    |    2 +-
 arch/arm/configs/pcm027_defconfig                  |    2 +-
 arch/arm/configs/pcm038_defconfig                  |    2 +-
 arch/arm/configs/tx25stk5_defconfig                |    2 +-
 arch/arm/configs/tx28stk5_defconfig                |    2 +-
 commands/Kconfig                                   |    5 +-
 commands/Makefile                                  |    2 +-
 commands/bmp.c                                     |  221 ------
 commands/splash.c                                  |  133 ++++
 common/filetype.c                                  |    5 +
 include/filetype.h                                 |    2 +
 include/graphic_utils.h                            |   17 +
 include/image_renderer.h                           |   42 +
 lib/Kconfig                                        |   35 +
 lib/Makefile                                       |    5 +
 lib/bmp.c                                          |  108 +++
 {include => lib}/bmp_layout.h                      |   11 +
 lib/graphic_utils.c                                |  191 +++++
 lib/image_renderer.c                               |   73 ++
 lib/lodepng.c                                      | 5928 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/lodepng.h                                      | 1640 +++++++++++++++++++++++++++++++++++++++
 lib/picopng.c                                      |  810 ++++++++++++++++++++
 lib/picopng.h                                      |   34 +
 lib/png_lode.c                                     |  181 +++++
 lib/png_pico.c                                     |  152 ++++
 40 files changed, 9395 insertions(+), 248 deletions(-)
 delete mode 100644 commands/bmp.c
 create mode 100644 commands/splash.c
 create mode 100644 include/graphic_utils.h
 create mode 100644 include/image_renderer.h
 create mode 100644 lib/bmp.c
 rename {include => lib}/bmp_layout.h (85%)
 create mode 100644 lib/graphic_utils.c
 create mode 100644 lib/image_renderer.c
 create mode 100644 lib/lodepng.c
 create mode 100644 lib/lodepng.h
 create mode 100644 lib/picopng.c
 create mode 100644 lib/picopng.h
 create mode 100644 lib/png_lode.c
 create mode 100644 lib/png_pico.c

Best Regards,
J.

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

#1 lore raw

PATCH v2 1/11 bmp: rename it to splash

so be can add more format support

---
 Documentation/commands.dox                         |    2 +-
 arch/arm/boards/eukrea_cpuimx25/env/bin/init_board |    4 ++--
 arch/arm/boards/eukrea_cpuimx27/env/bin/init       |    4 ++--
 arch/arm/boards/eukrea_cpuimx35/env/bin/init_board |    4 ++--
 arch/arm/boards/eukrea_cpuimx51/env/bin/init_board |    4 ++--
 arch/arm/boards/karo-tx25/env/bin/init_board       |    2 +-
 arch/arm/boards/mioa701/env/bin/init               |    2 +-
 arch/arm/configs/chumbyone_defconfig               |    2 +-
 arch/arm/configs/cupid_defconfig                   |    2 +-
 arch/arm/configs/eukrea_cpuimx25_defconfig         |    2 +-
 arch/arm/configs/eukrea_cpuimx27_defconfig         |    2 +-
 arch/arm/configs/eukrea_cpuimx35_defconfig         |    2 +-
 arch/arm/configs/freescale_mx35_3stack_defconfig   |    2 +-
 arch/arm/configs/imx28evk_defconfig                |    2 +-
 arch/arm/configs/mioa701_defconfig                 |    2 +-
 arch/arm/configs/neso_defconfig                    |    2 +-
 arch/arm/configs/pcm027_defconfig                  |    2 +-
 arch/arm/configs/pcm038_defconfig                  |    2 +-
 arch/arm/configs/tx25stk5_defconfig                |    2 +-
 arch/arm/configs/tx28stk5_defconfig                |    2 +-
 commands/Kconfig                                   |    4 ++--
 commands/Makefile                                  |    2 +-
 commands/{bmp.c => splash.c}                       |   12 ++++++------
 23 files changed, 33 insertions(+), 33 deletions(-)
 rename commands/{bmp.c => splash.c} (95%)
Documentation/commands.dox +1 -1
index 5ef7829..d8cfa6b 100644
@@ -18,7 +18,6 @@ available in @a Barebox:
 @li @subpage _name
 @li @subpage addpart_command
 @li @subpage alternate
-@li @subpage bmp_command
 @li @subpage bootm_command
 @li @subpage bootu
 @li @subpage bootz
@@ -95,6 +94,7 @@ available in @a Barebox:
 @li @subpage sh
 @li @subpage sleep
 @li @subpage source
+@li @subpage splash_command
 @li @subpage test
 @li @subpage timeout
 @li @subpage true
arch/arm/boards/eukrea_cpuimx25/env/bin/init_board +2 -2
index ff3365d..58e07e0 100644
@@ -1,11 +1,11 @@
 #!/bin/sh
 
 if [ -f /env/logo.bmp ]; then
-	bmp /env/logo.bmp
+	splash /env/logo.bmp
 	fb0.enable=1
 elif [ -f /env/logo.bmp.lzo ]; then
 	uncompress /env/logo.bmp.lzo /logo.bmp
-	bmp /logo.bmp
+	splash /logo.bmp
 	fb0.enable=1
 fi
 
arch/arm/boards/eukrea_cpuimx27/env/bin/init +2 -2
index f84ace9..cd74974 100644
@@ -17,11 +17,11 @@ if [ -e /dev/nand0 ]; then
 fi
 
 if [ -f /env/logo.bmp ]; then
-	bmp /env/logo.bmp
+	splash /env/logo.bmp
 	fb0.enable=1
 elif [ -f /env/logo.bmp.lzo ]; then
 	uncompress /env/logo.bmp.lzo /logo.bmp
-	bmp /logo.bmp
+	splash /logo.bmp
 	fb0.enable=1
 fi
 
arch/arm/boards/eukrea_cpuimx35/env/bin/init_board +2 -2
index 89fd9a9..2a07a84 100644
@@ -1,12 +1,12 @@
 #!/bin/sh
 
 if [ -f /env/logo.bmp ]; then
-	bmp /env/logo.bmp
+	splash /env/logo.bmp
 	fb0.enable=1
 	gpio_set_value 1 1
 elif [ -f /env/logo.bmp.lzo ]; then
 	uncompress /env/logo.bmp.lzo /logo.bmp
-	bmp /logo.bmp
+	splash /logo.bmp
 	fb0.enable=1
 	gpio_set_value 1 1
 fi
arch/arm/boards/eukrea_cpuimx51/env/bin/init_board +2 -2
index cb624e5..0af6582 100644
@@ -1,12 +1,12 @@
 #!/bin/sh
 
 if [ -f /env/logo.bmp ]; then
-	bmp /env/logo.bmp
+	splash /env/logo.bmp
 	fb0.enable=1
 	gpio_set_value 1 1
 elif [ -f /env/logo.bmp.lzo ]; then
 	uncompress /env/logo.bmp.lzo /logo.bmp
-	bmp /logo.bmp
+	splash /logo.bmp
 	fb0.enable=1
 	gpio_set_value 1 1
 fi
arch/arm/boards/karo-tx25/env/bin/init_board +1 -1
index b17c55d..1f35c96 100644
@@ -1,6 +1,6 @@
 
 if [ -e /dev/fb0 -a -e /env/splash.bmp ]; then
-	bmp /env/splash.bmp
+	splash /env/splash.bmp
 	fb0.enable=1
 fi
 
arch/arm/boards/mioa701/env/bin/init +1 -1
index 494d067..ab5d84d 100644
@@ -12,7 +12,7 @@ led keyboard 0
 sdcard_override
 
 fb0.enable=1
-bmp /dev/mtd0.barebox-logo
+splash /dev/mtd0.barebox-logo
 
 mtd_env_override
 if [ $? = 0 ]; then
arch/arm/configs/chumbyone_defconfig +1 -1
index 33d83a8..1b03530 100644
@@ -30,7 +30,7 @@ CONFIG_CMD_RESET=y
 CONFIG_CMD_GO=y
 CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_NET=y
 CONFIG_NET_DHCP=y
arch/arm/configs/cupid_defconfig +1 -1
index 28d199b..d7716ea 100644
@@ -45,7 +45,7 @@ CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
 CONFIG_CMD_MAGICVAR=y
 CONFIG_CMD_MAGICVAR_HELP=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_NET=y
arch/arm/configs/eukrea_cpuimx25_defconfig +1 -1
index f7207e8..5eb4ff3 100644
@@ -43,7 +43,7 @@ CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
 CONFIG_CMD_MAGICVAR=y
 CONFIG_CMD_MAGICVAR_HELP=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_CMD_I2C=y
arch/arm/configs/eukrea_cpuimx27_defconfig +1 -1
index 93de428..2b95156 100644
@@ -31,7 +31,7 @@ CONFIG_CMD_RESET=y
 CONFIG_CMD_GO=y
 CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_CMD_I2C=y
arch/arm/configs/eukrea_cpuimx35_defconfig +1 -1
index 880beb6..16ef4cc 100644
@@ -44,7 +44,7 @@ CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
 CONFIG_CMD_MAGICVAR=y
 CONFIG_CMD_MAGICVAR_HELP=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_CMD_I2C=y
arch/arm/configs/freescale_mx35_3stack_defconfig +1 -1
index a60658d..4052325 100644
@@ -42,7 +42,7 @@ CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
 CONFIG_CMD_MAGICVAR=y
 CONFIG_CMD_MAGICVAR_HELP=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_CMD_I2C=y
arch/arm/configs/imx28evk_defconfig +1 -1
index 1b44cf4..f4d4661 100644
@@ -33,7 +33,7 @@ CONFIG_CMD_RESET=y
 CONFIG_CMD_GO=y
 CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_NET=y
 CONFIG_NET_DHCP=y
arch/arm/configs/mioa701_defconfig +1 -1
index 2bb3cec..5f06b3c 100644
@@ -38,7 +38,7 @@ CONFIG_CMD_BOOTM_INITRD=y
 CONFIG_CMD_RESET=y
 CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_CMD_LED=y
arch/arm/configs/neso_defconfig +1 -1
index 5744dc1..3ea6891 100644
@@ -45,7 +45,7 @@ CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
 CONFIG_CMD_MAGICVAR=y
 CONFIG_CMD_MAGICVAR_HELP=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_NET=y
arch/arm/configs/pcm027_defconfig +1 -1
index 9760e66..5a65a72 100644
@@ -43,7 +43,7 @@ CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
 CONFIG_CMD_MAGICVAR=y
 CONFIG_CMD_MAGICVAR_HELP=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_NET=y
arch/arm/configs/pcm038_defconfig +1 -1
index 5ce4f7a..bab4002 100644
@@ -49,7 +49,7 @@ CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
 CONFIG_CMD_MAGICVAR=y
 CONFIG_CMD_MAGICVAR_HELP=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_NET=y
arch/arm/configs/tx25stk5_defconfig +1 -1
index 99057c2..e098ef8 100644
@@ -45,7 +45,7 @@ CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
 CONFIG_CMD_MAGICVAR=y
 CONFIG_CMD_MAGICVAR_HELP=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_NET=y
arch/arm/configs/tx28stk5_defconfig +1 -1
index b4e3747..49a0ab3 100644
@@ -41,7 +41,7 @@ CONFIG_CMD_TIMEOUT=y
 CONFIG_CMD_PARTITION=y
 CONFIG_CMD_MAGICVAR=y
 CONFIG_CMD_MAGICVAR_HELP=y
-CONFIG_CMD_BMP=y
+CONFIG_CMD_SPLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_UNCOMPRESS=y
 CONFIG_NET=y
commands/Kconfig +2 -2
index f2756cc..c4623fa 100644
@@ -535,10 +535,10 @@ config CMD_LSMOD
 	depends on MODULES
 	prompt "lsmod"
 
-config CMD_BMP
+config CMD_SPLASH
 	bool
 	depends on VIDEO
-	prompt "bmp"
+	prompt "splash"
 	help
 	  show bmp files on framebuffer devices
 
commands/Makefile +1 -1
index ccebd7f..24bf46a 100644
@@ -49,7 +49,7 @@ obj-$(CONFIG_CMD_VERSION)	+= version.o
 obj-$(CONFIG_CMD_HELP)		+= help.o
 obj-$(CONFIG_CMD_LSMOD)		+= lsmod.o
 obj-$(CONFIG_CMD_INSMOD)	+= insmod.o
-obj-$(CONFIG_CMD_BMP)		+= bmp.o
+obj-$(CONFIG_CMD_SPLASH)	+= splash.o
 obj-$(CONFIG_USB_GADGET_DFU)	+= dfu.o
 obj-$(CONFIG_USB_GADGET_SERIAL)	+= usbserial.o
 obj-$(CONFIG_CMD_GPIO)		+= gpio.o
commands/splash.c renamed from commands/bmp.c +6 -6
similarity index 95%
rename from commands/bmp.c
rename to commands/splash.c
index 4130474..6526b20 100644
@@ -30,7 +30,7 @@ static inline void set_pixel(struct fb_info *info, void *adr, int r, int g, int
 	}
 }
 
-static int do_bmp(int argc, char *argv[])
+static int do_splash(int argc, char *argv[])
 {
 	int ret, opt, fd;
 	char *fbdev = "/dev/fb0";
@@ -194,8 +194,8 @@ failed_memmap:
 	return 1;
 }
 
-BAREBOX_CMD_HELP_START(bmp)
-BAREBOX_CMD_HELP_USAGE("bmp [OPTIONS] FILE\n")
+BAREBOX_CMD_HELP_START(splash)
+BAREBOX_CMD_HELP_USAGE("splash [OPTIONS] FILE\n")
 BAREBOX_CMD_HELP_SHORT("Show the bitmap FILE on the framebuffer.\n")
 BAREBOX_CMD_HELP_OPT  ("-f <fb>",   "framebuffer device (/dev/fb0)\n")
 BAREBOX_CMD_HELP_OPT  ("-x <xofs>", "x offset (default center)\n")
@@ -214,8 +214,8 @@ color depth.
 
  */
 
-BAREBOX_CMD_START(bmp)
-	.cmd		= do_bmp,
+BAREBOX_CMD_START(splash)
+	.cmd		= do_splash,
 	.usage		= "show a bmp image",
-	BAREBOX_CMD_HELP(cmd_bmp_help)
+	BAREBOX_CMD_HELP(cmd_splash_help)
 BAREBOX_CMD_END
Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#2 lore raw

PATCH v2 2/11 bmp: split bmp rending in lib/bmp.c

So we can add other format support

---
 commands/Kconfig     |    1 +
 commands/splash.c    |  124 +++++------------------------------------------
 include/bmp_layout.h |   11 +++++
 lib/Kconfig          |    3 ++
 lib/Makefile         |    1 +
 lib/bmp.c            |  132 ++++++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 159 insertions(+), 113 deletions(-)
 create mode 100644 lib/bmp.c
commands/Kconfig +1 -0
index c4623fa..9107a3e 100644
@@ -538,6 +538,7 @@ config CMD_LSMOD
 config CMD_SPLASH
 	bool
 	depends on VIDEO
+	select BMP
 	prompt "splash"
 	help
 	  show bmp files on framebuffer devices
commands/splash.c +11 -113

159 lines not on this page · raw message

include/bmp_layout.h +11 -0
index 63c5564..b5472dd 100644
@@ -74,4 +74,15 @@ struct bmp_image {
 #define BMP_BI_RLE8	1
 #define BMP_BI_RLE4	2
 
+#ifdef CONFIG_BMP
+int bmp_render_file(struct fb_info *info, const char* bmpfile, void* fb,
+		    int startx, int starty, int xres, int yres, void* offscreenbuf);
+#else
+static inline int bmp_render_file(struct fb_info *info, const char* bmpfile, void* fb,
+		    int startx, int starty, int xres, int yres, void* offscreenbuf)
+{
+	return -ENOSYS;
+}
+#endif
+
 #endif							/* _BMP_H_ */
lib/Kconfig +3 -0
index 32634df..93e360b 100644
@@ -38,4 +38,7 @@ config BITREV
 config QSORT
 	bool
 
+config BMP
+	bool
+
 endmenu
lib/Makefile +1 -0
index 4e6b1ee..df4b5e5 100644
@@ -34,3 +34,4 @@ obj-$(CONFIG_UNCOMPRESS)	+= uncompress.o
 obj-$(CONFIG_BCH)	+= bch.o
 obj-$(CONFIG_BITREV)	+= bitrev.o
 obj-$(CONFIG_QSORT)	+= qsort.o
+obj-$(CONFIG_BMP)	+= bmp.o
lib/bmp.c new file +132 -0

132 lines not on this page · raw message

Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#3 lore raw

PATCH v2 3/11 introduce image_renderer framework

In reply to Jean-Christophe PLAGNIOL-VILLARD

This will allow to support bmp and png

---
 include/image_renderer.h |   62 +++++++++++++++++++++++++++++++++++++++
 lib/Kconfig              |    5 ++++
 lib/Makefile             |    1 +
 lib/image_renderer.c     |   73 ++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 141 insertions(+)
 create mode 100644 include/image_renderer.h
 create mode 100644 lib/image_renderer.c
include/image_renderer.h new file +62 -0
new file mode 100644
index 0000000..a93242c
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]>
+ *
+ * GPL v2
+ */
+
+#ifndef __IMAGE_RENDER_H__
+#define __IMAGE_RENDER_H__
+
+#include <filetype.h>
+#include <linux/list.h>
+#include <errno.h>
+
+struct image_renderer {
+	enum filetype type;
+	int (*renderer)(struct fb_info *info, void* data, int size, void* fb,
+		int startx, int starty, void* offscreenbuf);
+
+	struct list_head list;
+};
+
+static inline void set_pixel(struct fb_info *info, void *adr, int r, int g, int b)
+{
+	u32 px;
+
+	px = (r >> (8 - info->red.length)) << info->red.offset |
+		(g >> (8 - info->green.length)) << info->green.offset |
+		(b >> (8 - info->blue.length)) << info->blue.offset;
+
+	switch (info->bits_per_pixel) {
+	case 8:
+		break;
+	case 16:
+		*(u16 *)adr = px;
+		break;
+	case 32:
+		*(u32 *)adr = px;
+		break;
+	}
+}
+
+#ifdef CONFIG_IMAGE_RENDERER
+int image_renderer_register(struct image_renderer *ir);
+void image_render_unregister(struct image_renderer *ir);
+
+int image_renderer_file(struct fb_info *info, const char* bmpfile, void* fb,
+	    int startx, int starty, void* offscreenbuf);
+#else
+static inline int image_renderer_register(struct image_renderer *ir)
+{
+	return -EINVAL;
+}
+static inline void image_renderer_unregister(struct image_renderer *ir) {}
+
+static inline int image_renderer_file(struct fb_info *info, const char* file, void* fb,
+		    int startx, int starty, void* offscreenbuf)
+{
+	return -EINVAL;
+}
+#endif
+
+#endif /* __IMAGE_RENDERER_H__ */
lib/Kconfig +5 -0
index 93e360b..be3ea1c 100644
@@ -38,6 +38,11 @@ config BITREV
 config QSORT
 	bool
 
+config IMAGE_RENDERER
+	bool
+	depends on VIDEO
+	select FILETYPE
+
 config BMP
 	bool
 
lib/Makefile +1 -0
index df4b5e5..8fbae8a 100644
@@ -35,3 +35,4 @@ obj-$(CONFIG_BCH)	+= bch.o
 obj-$(CONFIG_BITREV)	+= bitrev.o
 obj-$(CONFIG_QSORT)	+= qsort.o
 obj-$(CONFIG_BMP)	+= bmp.o
+obj-$(CONFIG_IMAGE_RENDERER)	+= image_renderer.o
lib/image_renderer.c new file +73 -0

73 lines not on this page · raw message

Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#4 lore raw

PATCH v2 4/11 filetype: add BMP support

In reply to Jean-Christophe PLAGNIOL-VILLARD
---
 common/filetype.c  |    2 ++
 include/filetype.h |    1 +
 2 files changed, 3 insertions(+)
common/filetype.c +2 -0
index e736d43..5710394 100644
@@ -101,6 +101,8 @@ enum filetype file_detect_type(void *_buf)
 		return filetype_mips_barebox;
 	if (is_fat(buf8))
 		return filetype_fat;
+	if (strncmp(buf8, "BM", 2) == 0)
+		return filetype_bmp;
 
 	return filetype_unknown;
 }
include/filetype.h +1 -0
index 179ec0f..6c97159 100644
@@ -19,6 +19,7 @@ enum filetype {
 	filetype_sh,
 	filetype_mips_barebox,
 	filetype_fat,
+	filetype_bmp,
 };
 
 const char *file_type_to_string(enum filetype f);
Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#5 lore raw

PATCH v2 5/11 splash/bmp: switch to image_renderer

In reply to Jean-Christophe PLAGNIOL-VILLARD
---
 commands/Kconfig              |    1 +
 commands/splash.c             |   10 +++----
 lib/Kconfig                   |    1 +
 lib/bmp.c                     |   63 +++++++++++++----------------------------
 {include => lib}/bmp_layout.h |    0
 5 files changed, 26 insertions(+), 49 deletions(-)
 rename {include => lib}/bmp_layout.h (100%)
commands/Kconfig +1 -0
index 9107a3e..97993c1 100644
@@ -538,6 +538,7 @@ config CMD_LSMOD
 config CMD_SPLASH
 	bool
 	depends on VIDEO
+	select IMAGE_RENDERER
 	select BMP
 	prompt "splash"
 	help
commands/splash.c +5 -5
index ad73778..88a6cf1 100644
@@ -7,7 +7,7 @@
 #include <getopt.h>
 #include <fcntl.h>
 #include <fb.h>
-#include <bmp_layout.h>
+#include <image_renderer.h>
 
 static int do_splash(int argc, char *argv[])
 {
@@ -15,7 +15,7 @@ static int do_splash(int argc, char *argv[])
 	char *fbdev = "/dev/fb0";
 	void *fb;
 	struct fb_info info;
-	char *bmpfile;
+	char *image_file;
 	int startx = -1, starty = -1;
 	int xres, yres;
 	int offscreen = 0;
@@ -40,7 +40,7 @@ static int do_splash(int argc, char *argv[])
 		printf("no filename given\n");
 		return 1;
 	}
-	bmpfile = argv[optind];
+	image_file = argv[optind];
 
 	fd = open(fbdev, O_RDWR);
 	if (fd < 0) {
@@ -75,8 +75,8 @@ static int do_splash(int argc, char *argv[])
 			memcpy(offscreenbuf, fb, fbsize);
 	}
 
-	if (bmp_render_file(&info, bmpfile, fb, startx, starty, xres, yres,
-			    offscreenbuf) < 0)
+	if (image_renderer_file(&info, image_file, fb, startx, starty,
+				offscreenbuf) < 0)
 		ret = 1;
 
 	if (offscreenbuf)
lib/Kconfig +1 -0
index be3ea1c..417c81e 100644
@@ -45,5 +45,6 @@ config IMAGE_RENDERER
 
 config BMP
 	bool
+	depends on IMAGE_RENDERER
 
 endmenu
lib/bmp.c +19 -44

83 lines not on this page · raw message

lib/bmp_layout.h renamed from include/bmp_layout.h +0 -0
similarity index 100%
rename from include/bmp_layout.h
rename to lib/bmp_layout.h
Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#6 lore raw

PATCH v2 6/11 splash: add support to set a background color

In reply to Jean-Christophe PLAGNIOL-VILLARD

This will allow to reset the screen to a default color when using transparent PNG.

---
 commands/splash.c |   79 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 76 insertions(+), 3 deletions(-)
commands/splash.c +76 -3
index 88a6cf1..4bddc6c 100644
@@ -9,6 +9,66 @@
 #include <fb.h>
 #include <image_renderer.h>
 
+static u32 get_pixel(struct fb_info *info, u32 color)
+{
+	u32 px;
+	u8 t = (color >> 24) & 0xff;
+	u8 r = (color >> 16) & 0xff;
+	u8 g = (color >> 8 ) & 0xff;
+	u8 b = (color >> 0 ) & 0xff;
+
+	if (info->grayscale) {
+		 px = (r | g | b) ? 0xffffffff : 0x0;
+		 return px;
+	}
+
+	px = (t >> (8 - info->transp.length)) << info->transp.offset |
+		 (r >> (8 - info->red.length)) << info->red.offset |
+		 (g >> (8 - info->green.length)) << info->green.offset |
+		 (b >> (8 - info->blue.length)) << info->blue.offset;
+
+	return px;
+}
+
+static void memsetw(void *s, u16 c, size_t n)
+{
+	size_t i;
+	u16* tmp = s;
+
+	for (i = 0; i < n; i++)
+		*tmp++ = c;
+}
+
+static void memsetl(void *s, u32 c, size_t n)
+{
+	size_t i;
+	u32* tmp = s;
+
+	for (i = 0; i < n; i++)
+		*tmp++ = c;
+}
+
+static void memset_pixel(struct fb_info *info, void* buf, u32 color, size_t size)
+{
+	u32 px;
+	u8 *screen = buf;
+
+	px = get_pixel(info, color);
+
+	switch (info->bits_per_pixel) {
+	case 8:
+		memset(screen, (uint8_t)px, size);
+		break;
+	case 16:
+		memsetw(screen, (uint16_t)px, size);
+		break;
+	case 32:
+	case 24:
+		memsetl(screen, px, size);
+		break;
+	}
+}
+
 static int do_splash(int argc, char *argv[])
 {
 	int ret, opt, fd;
@@ -19,13 +79,19 @@ static int do_splash(int argc, char *argv[])
 	int startx = -1, starty = -1;
 	int xres, yres;
 	int offscreen = 0;
+	u32 bg_color = 0x00000000;
+	bool do_bg = false;
 	void *offscreenbuf = NULL;
 
-	while((opt = getopt(argc, argv, "f:x:y:o")) > 0) {
+	while((opt = getopt(argc, argv, "f:x:y:ob:")) > 0) {
 		switch(opt) {
 		case 'f':
 			fbdev = optarg;
 			break;
+		case 'b':
+			bg_color = simple_strtoul(optarg, NULL, 0);
+			do_bg = true;
+			break;
 		case 'x':
 			startx = simple_strtoul(optarg, NULL, 0);
 			break;
@@ -71,8 +137,14 @@ static int do_splash(int argc, char *argv[])
 
 		fbsize = xres * yres * (info.bits_per_pixel >> 3);
 		offscreenbuf = malloc(fbsize);
-		if (offscreenbuf)
-			memcpy(offscreenbuf, fb, fbsize);
+		if (offscreenbuf) {
+			if (do_bg)
+				memset_pixel(&info, offscreenbuf, bg_color, xres * yres);
+			else
+				memcpy(offscreenbuf, fb, fbsize);
+		}
+	} else if (do_bg) {
+		memset_pixel(&info, fb, bg_color, xres * yres);
 	}
 
 	if (image_renderer_file(&info, image_file, fb, startx, starty,
@@ -98,6 +170,7 @@ BAREBOX_CMD_HELP_SHORT("Show the bitmap FILE on the framebuffer.\n")
 BAREBOX_CMD_HELP_OPT  ("-f <fb>",   "framebuffer device (/dev/fb0)\n")
 BAREBOX_CMD_HELP_OPT  ("-x <xofs>", "x offset (default center)\n")
 BAREBOX_CMD_HELP_OPT  ("-y <yofs>", "y offset (default center)\n")
+BAREBOX_CMD_HELP_OPT  ("-b <backgroung>", "backgroung color\n")
 BAREBOX_CMD_HELP_OPT  ("-o",        "render offscreen\n")
 BAREBOX_CMD_HELP_END
 
Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#7 lore raw

PATCH v2 7/11 Introduce graphic utils

In reply to Jean-Christophe PLAGNIOL-VILLARD

to Factorise pixel rendering

---
 commands/splash.c        |   61 +---------------------------------
 include/graphic_utils.h  |   13 ++++++++
 include/image_renderer.h |   20 -----------
 lib/Makefile             |    1 +
 lib/bmp.c                |    5 +--
 lib/graphic_utils.c      |   83 ++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 101 insertions(+), 82 deletions(-)
 create mode 100644 include/graphic_utils.h
 create mode 100644 lib/graphic_utils.c
commands/splash.c +1 -60
index 4bddc6c..f4b975b 100644
@@ -8,66 +8,7 @@
 #include <fcntl.h>
 #include <fb.h>
 #include <image_renderer.h>
-
-static u32 get_pixel(struct fb_info *info, u32 color)
-{
-	u32 px;
-	u8 t = (color >> 24) & 0xff;
-	u8 r = (color >> 16) & 0xff;
-	u8 g = (color >> 8 ) & 0xff;
-	u8 b = (color >> 0 ) & 0xff;
-
-	if (info->grayscale) {
-		 px = (r | g | b) ? 0xffffffff : 0x0;
-		 return px;
-	}
-
-	px = (t >> (8 - info->transp.length)) << info->transp.offset |
-		 (r >> (8 - info->red.length)) << info->red.offset |
-		 (g >> (8 - info->green.length)) << info->green.offset |
-		 (b >> (8 - info->blue.length)) << info->blue.offset;
-
-	return px;
-}
-
-static void memsetw(void *s, u16 c, size_t n)
-{
-	size_t i;
-	u16* tmp = s;
-
-	for (i = 0; i < n; i++)
-		*tmp++ = c;
-}
-
-static void memsetl(void *s, u32 c, size_t n)
-{
-	size_t i;
-	u32* tmp = s;
-
-	for (i = 0; i < n; i++)
-		*tmp++ = c;
-}
-
-static void memset_pixel(struct fb_info *info, void* buf, u32 color, size_t size)
-{
-	u32 px;
-	u8 *screen = buf;
-
-	px = get_pixel(info, color);
-
-	switch (info->bits_per_pixel) {
-	case 8:
-		memset(screen, (uint8_t)px, size);
-		break;
-	case 16:
-		memsetw(screen, (uint16_t)px, size);
-		break;
-	case 32:
-	case 24:
-		memsetl(screen, px, size);
-		break;
-	}
-}
+#include <graphic_utils.h>
 
 static int do_splash(int argc, char *argv[])
 {
include/graphic_utils.h new file +13 -0
new file mode 100644
index 0000000..6d555b2
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]>
+ *
+ * GPL v2
+ */
+
+#ifndef __GRAPHIC_UTILS_H__
+#define __GRAPHIC_UTILS_H__
+
+void set_rgb_pixel(struct fb_info *info, void *adr, int r, int g, int b);
+void memset_pixel(struct fb_info *info, void* buf, u32 color, size_t size);
+
+#endif /* __GRAPHIC_UTILS_H__ */
include/image_renderer.h +0 -20
index a93242c..d735cf7 100644
@@ -19,26 +19,6 @@ struct image_renderer {
 	struct list_head list;
 };
 
-static inline void set_pixel(struct fb_info *info, void *adr, int r, int g, int b)
-{
-	u32 px;
-
-	px = (r >> (8 - info->red.length)) << info->red.offset |
-		(g >> (8 - info->green.length)) << info->green.offset |
-		(b >> (8 - info->blue.length)) << info->blue.offset;
-
-	switch (info->bits_per_pixel) {
-	case 8:
-		break;
-	case 16:
-		*(u16 *)adr = px;
-		break;
-	case 32:
-		*(u32 *)adr = px;
-		break;
-	}
-}
-
 #ifdef CONFIG_IMAGE_RENDERER
 int image_renderer_register(struct image_renderer *ir);
 void image_render_unregister(struct image_renderer *ir);
lib/Makefile +1 -0
index 8fbae8a..96b7c56 100644
@@ -35,4 +35,5 @@ obj-$(CONFIG_BCH)	+= bch.o
 obj-$(CONFIG_BITREV)	+= bitrev.o
 obj-$(CONFIG_QSORT)	+= qsort.o
 obj-$(CONFIG_BMP)	+= bmp.o
+obj-$(CONFIG_IMAGE_RENDERER)	+= image_renderer.o graphic_utils.o
 obj-$(CONFIG_IMAGE_RENDERER)	+= image_renderer.o
lib/bmp.c +3 -2
index 573cf97..8986930 100644
@@ -5,6 +5,7 @@
 #include <asm/byteorder.h>
 #include <init.h>
 #include <image_renderer.h>
+#include <graphic_utils.h>
 
 static int bmp_renderer(struct fb_info *info, void* data, int size, void* fb,
 		    int startx, int starty, void* offscreenbuf)
@@ -57,7 +58,7 @@ static int bmp_renderer(struct fb_info *info, void* data, int size, void* fb,
 
 				pixel = *image;
 
-				set_pixel(info, adr, color_table[pixel].red,
+				set_rgb_pixel(info, adr, color_table[pixel].red,
 						color_table[pixel].green,
 						color_table[pixel].blue);
 				adr += info->bits_per_pixel >> 3;
@@ -79,7 +80,7 @@ static int bmp_renderer(struct fb_info *info, void* data, int size, void* fb,
 
 				pixel = image;
 
-				set_pixel(info, adr, pixel[2], pixel[1],
+				set_rgb_pixel(info, adr, pixel[2], pixel[1],
 						pixel[0]);
 				adr += info->bits_per_pixel >> 3;
 
lib/graphic_utils.c new file +83 -0

83 lines not on this page · raw message

Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#8 lore raw

PATCH v2 8/11 graphic_utils: add rgba support

In reply to Jean-Christophe PLAGNIOL-VILLARD

this will allow to render rgba image with or without hw support

---
 include/graphic_utils.h |    4 ++
 lib/graphic_utils.c     |  116 +++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 116 insertions(+), 4 deletions(-)
include/graphic_utils.h +4 -0
index 6d555b2..7cb0b2f 100644
@@ -7,7 +7,11 @@
 #ifndef __GRAPHIC_UTILS_H__
 #define __GRAPHIC_UTILS_H__
 
+void rgba_blend(struct fb_info *info, void *image, void* dest, int height,
+	int width, int startx, int starty, bool is_rgba);
+void set_pixel(struct fb_info *info, void *adr, u32 px);
 void set_rgb_pixel(struct fb_info *info, void *adr, int r, int g, int b);
+void set_rgba_pixel(struct fb_info *info, void *adr, int r, int g, int b, int a);
 void memset_pixel(struct fb_info *info, void* buf, u32 color, size_t size);
 
 #endif /* __GRAPHIC_UTILS_H__ */
lib/graphic_utils.c +112 -4

129 lines not on this page · raw message

Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#9 lore raw

PATCH v2 9/11 filetype: add PNG support

In reply to Jean-Christophe PLAGNIOL-VILLARD
---
 common/filetype.c  |    3 +++
 include/filetype.h |    1 +
 2 files changed, 4 insertions(+)
common/filetype.c +3 -0
index 5710394..0eaf119 100644
@@ -71,6 +71,7 @@ static int is_fat(u8 *buf)
 enum filetype file_detect_type(void *_buf)
 {
 	u32 *buf = _buf;
+	u64 *buf64 = _buf;
 	u8 *buf8 = _buf;
 
 	if (strncmp(buf8, "#!/bin/sh", 9) == 0)
@@ -103,6 +104,8 @@ enum filetype file_detect_type(void *_buf)
 		return filetype_fat;
 	if (strncmp(buf8, "BM", 2) == 0)
 		return filetype_bmp;
+	if (buf64[0] == le64_to_cpu(0x0a1a0a0d474e5089ull))
+		return filetype_png;
 
 	return filetype_unknown;
 }
include/filetype.h +1 -0
index 6c97159..2924032 100644
@@ -20,6 +20,7 @@ enum filetype {
 	filetype_mips_barebox,
 	filetype_fat,
 	filetype_bmp,
+	filetype_png,
 };
 
 const char *file_type_to_string(enum filetype f);
Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#10 lore raw

PATCH v2 10/11 add PNG support

In reply to Jean-Christophe PLAGNIOL-VILLARD

use LodePNG version 20120729 from http://lodev.org/lodepng/

The original coding style is keeped to simplify update.

---
 commands/Kconfig |    1 -
 lib/Kconfig      |   11 +-
 lib/Makefile     |    1 +
 lib/lodepng.c    | 5928 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/lodepng.h    | 1640 +++++++++++++++
 lib/png_lode.c   |  181 ++
 6 files changed, 7759 insertions(+), 3 deletions(-)
 create mode 100644 lib/lodepng.c
 create mode 100644 lib/lodepng.h
 create mode 100644 lib/png_lode.c
commands/Kconfig +0 -1
index 97993c1..10c4a03 100644
@@ -539,7 +539,6 @@ config CMD_SPLASH
 	bool
 	depends on VIDEO
 	select IMAGE_RENDERER
-	select BMP
 	prompt "splash"
 	help
 	  show bmp files on framebuffer devices
lib/Kconfig +9 -2
index 417c81e..ef058cb 100644
@@ -43,8 +43,15 @@ config IMAGE_RENDERER
 	depends on VIDEO
 	select FILETYPE
 
+if IMAGE_RENDERER
+
 config BMP
-	bool
-	depends on IMAGE_RENDERER
+	bool "bmp"
+
+config PNG
+	bool "png"
+	select ZLIB
+
+endif
 
 endmenu
lib/Makefile +1 -0
index 96b7c56..4944319 100644
@@ -37,3 +37,4 @@ obj-$(CONFIG_QSORT)	+= qsort.o
 obj-$(CONFIG_BMP)	+= bmp.o
 obj-$(CONFIG_IMAGE_RENDERER)	+= image_renderer.o graphic_utils.o
 obj-$(CONFIG_IMAGE_RENDERER)	+= image_renderer.o
+obj-$(CONFIG_PNG)	+= png.o lodepng.o
lib/lodepng.c new file +5928 -0

2,972 lines not on this page · raw message

lib/lodepng.h new file +1640 -0

1,640 lines not on this page · raw message

lib/png_lode.c new file +181 -0

181 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Part of the diff is not shown here. View the raw message.

#11 lore raw

PATCH v2 11/11 png: add picoPNG lib support

In reply to Jean-Christophe PLAGNIOL-VILLARD

This is an alternative to LodePNG take from http://forge.voodooprojects.org/
which is base on picoPNG C++ wrote by Lode Vandevenne. The same author as LodePNG.

PicoPNG only support RGBA PNG8

The source code of picopng.c was just adapat to be compliant to C89 and drop the internal ZLIB support. Coding style untouched.

---
 lib/Kconfig    |   19 ++
 lib/Makefile   |    3 +-
 lib/picopng.c  |  810 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/picopng.h  |   34 +++
 lib/png_pico.c |  152 +++++++++++
 5 files changed, 1017 insertions(+), 1 deletion(-)
 create mode 100644 lib/picopng.c
 create mode 100644 lib/picopng.h
 create mode 100644 lib/png_pico.c
lib/Kconfig +19 -0
index ef058cb..1fc6704 100644
@@ -52,6 +52,25 @@ config PNG
 	bool "png"
 	select ZLIB
 
+if PNG
+
+choice
+	prompt "PNG Lib"
+
+config LODEPNG
+	bool "lodePNG"
+	help
+	  Mostly PNG support
+
+config PICOPNG
+	bool "picoPNG"
+	help
+	  Support only RGBA PNG8
+
+endchoice
+
+endif
+
 endif
 
 endmenu
lib/Makefile +2 -1
index 4944319..733bd8c 100644
@@ -37,4 +37,5 @@ obj-$(CONFIG_QSORT)	+= qsort.o
 obj-$(CONFIG_BMP)	+= bmp.o
 obj-$(CONFIG_IMAGE_RENDERER)	+= image_renderer.o graphic_utils.o
 obj-$(CONFIG_IMAGE_RENDERER)	+= image_renderer.o
-obj-$(CONFIG_PNG)	+= png.o lodepng.o
+obj-$(CONFIG_LODEPNG)	+= png_lode.o lodepng.o
+obj-$(CONFIG_PICOPNG)	+= png_pico.o picopng.o
lib/picopng.c new file +810 -0

810 lines not on this page · raw message

lib/picopng.h new file +34 -0
new file mode 100644
index 0000000..14c5e28
@@ -0,0 +1,34 @@
+#ifndef _PICOPNG_H
+#define _PICOPNG_H
+
+typedef struct {
+	uint32_t *data;
+	size_t size;
+	size_t allocsize;
+} vector32_t;
+
+typedef struct {
+	uint8_t *data;
+	size_t size;
+	size_t allocsize;
+} vector8_t;
+
+typedef struct {
+	uint32_t width, height;
+	uint32_t colorType, bitDepth;
+	uint32_t compressionMethod, filterMethod, interlaceMethod;
+	uint32_t key_r, key_g, key_b;
+	bool key_defined; // is a transparent color key given?
+	vector8_t *palette;
+	vector8_t *image;
+} PNG_info_t;
+
+PNG_info_t *PNG_decode(const uint8_t *in, uint32_t size);
+void png_alloc_free_all(void);
+
+unsigned picopng_zlib_decompress(unsigned char* out, size_t outsize,
+				 const unsigned char* in, size_t insize);
+
+extern int PNG_error;
+
+#endif
lib/png_pico.c new file +152 -0

152 lines not on this page · raw message

Signature · 7 lines
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
#12 lore raw

Re: [PATCH 11/11] png: add picoPNG lib support

Quoted 8 lines · Jean-Christophe PLAGNIOL-VILLARD

This is an alternative to LodePNG take fromhttp://forge.voodooprojects.org/ which is base on picoPNG C++ wrote by Lode Vandevenne. The same author as LodePNG.

PicoPNG only support RGBA PNG8

The source code of picopng.c was just adapat to be compliant to C89 and drop the internal ZLIB support. Coding style untouched.

s/adapat/adapted

Not "compliant to", should be "compliant with".

Quoted 2 lines

Could you please fix the entire commit message? There are many grammatical errors.

Thanks,
Vikram

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox