From 25e8a224bd828619a3029d204cdb264b4385bff8 Mon Sep 17 00:00:00 2001 From: mrfaptastic <12006953+mrfaptastic@users.noreply.github.com> Date: Sun, 28 Feb 2021 11:05:45 +0000 Subject: [PATCH] Clean up bitmap graphics example --- examples/BitmapIcons/BitmapIcons.ino | 17 +- examples/BitmapIcons/README.md | 13 ++ examples/BitmapIcons/WiFi1bit.bmp | Bin 0 -> 318 bytes examples/BitmapIcons/bmp2hex.py | 248 +++++++++++++++++++++++++++ examples/BitmapIcons/screenshot.jpg | Bin 0 -> 133201 bytes 5 files changed, 273 insertions(+), 5 deletions(-) create mode 100644 examples/BitmapIcons/README.md create mode 100644 examples/BitmapIcons/WiFi1bit.bmp create mode 100644 examples/BitmapIcons/bmp2hex.py create mode 100644 examples/BitmapIcons/screenshot.jpg diff --git a/examples/BitmapIcons/BitmapIcons.ino b/examples/BitmapIcons/BitmapIcons.ino index 8f86135..3270a70 100644 --- a/examples/BitmapIcons/BitmapIcons.ino +++ b/examples/BitmapIcons/BitmapIcons.ino @@ -38,7 +38,17 @@ */ MatrixPanel_I2S_DMA display; // RGB Panel -// Wifi Logo, generated using LCD Image Converter: http://www.riuson.com/lcd-image-converter +/* + * Wifi Logo, generated with the following steps: + * + * Python and Paint.Net needs to be installed. + * + * 1. SAVE BITMAP AS 1BIT COLOUR in paint.net + * 2. Run: bmp2hex.py -i -x loading.bmp + * 3. Copy paste output into sketch. + * + */ + const char wifi_image1bit[] PROGMEM = { 0x00,0x00,0x00,0xf8,0x1f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x01,0x00, 0x00,0x00,0x00,0xf0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f, @@ -59,10 +69,7 @@ const char wifi_image1bit[] PROGMEM = { 0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00 }; -/* Draw a bitmap, default bitmap pixels to white if no color provided. - * Use LCD Image Converter to generate the char array: http://www.riuson.com/lcd-image-converter - * In Options>Conversion, use: Monochrome Preset - */ + void drawXbm565(int x, int y, int width, int height, const char *xbm, uint16_t color = 0xffff) { if (width % 8 != 0) { diff --git a/examples/BitmapIcons/README.md b/examples/BitmapIcons/README.md new file mode 100644 index 0000000..b22a14b --- /dev/null +++ b/examples/BitmapIcons/README.md @@ -0,0 +1,13 @@ +# Xbm Bitmap example +## Requirements +* To generate the required Xbm data to be copied into the Sketch. Have python and paint.net installed. +* Bitmap should match the resolution of your display configuration. + +## Instructions + * 1. SAVE BITMAP AS 1BIT COLOUR in paint.net + * 2. Run: bmp2hex.py -i -x loading.bmp + * 3. Copy paste output into sketch. + + ![bmp2hex usage screenshot](screenshot.jpg) + + \ No newline at end of file diff --git a/examples/BitmapIcons/WiFi1bit.bmp b/examples/BitmapIcons/WiFi1bit.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2bace875e7a19436599d5ae500049f88e70ee10b GIT binary patch literal 318 zcmZWkyA47y477s(!g<{bMk4}au*`rjX0_txw@E}1{B%iDMt`$0EH zqKh(K|5PrOEs&SAs*WNZ6oN==kX3|Xq?VSjKm!RnAe=F0d`T)1%{|(MMa0fYehvaQ HMq2GJ6R|gq literal 0 HcmV?d00001 diff --git a/examples/BitmapIcons/bmp2hex.py b/examples/BitmapIcons/bmp2hex.py new file mode 100644 index 0000000..f30ce24 --- /dev/null +++ b/examples/BitmapIcons/bmp2hex.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python + +##@file bmp2hex.py +# @ingroup util +# A script for converting a 1-bit bitmap to HEX for use in an Arduino sketch. +# +# The BMP format is well publicized. The byte order of the actual bitmap is a +# little unusual. The image is stored bottom to top, left to right. In addition, +# The pixel rows are rounded to DWORDS which are 4 bytes long. SO, to convert this +# to left to right, top to bottom, no byte padding. We have to do some calculations +# as we loop through the rows and bytes of the image. See below for more +# +# Usage: +# >>>bmp2hex.py [-i] [-r] [-n] [-d] [-x] [-w ] [-b ] +# +# @param infile The file to convert. +# @param tablename The name of the table to create +# @param raw "-r", bitmap written as raw table [optional] +# @param invert "-i", to invert image pixel colors [optional] +# @param tablewidth "-w , The number of characters for each row of the output table [optional] +# @param sizebytes "-b , Bytes = 0, 1, or 2. 0 = auto. 1 = 1-byte for sizes. 2 = 2-byte sizes (big endian) [optional] +# @param named "-n", use a names structure [optional] +## @param double "-d", use double bytes rather than single ones [optional] +# @param xbm "-x", use XBM format (bits reversed in byte) [optional] +# @param version "-v", returns version number +# +# @author Robert Gallup 2016-02 +# +# Author: Robert Gallup (bg@robertgallup.com) +# License: MIT Opensource License +# +# Copyright 2016-2018 Robert Gallup +# + +import sys, array, os, textwrap, math, random, argparse + +class DEFAULTS(object): + STRUCTURE_NAME = 'GFXMeta' + VERSION = '2.3.4' + +def main (): + + # Default parameters + infile = "" + tablename = "" + tablewidth = 16 + sizebytes = 0 + invert = False + raw = False + named = False + double = False + xbm = False + version = False + + # Set up parser and handle arguments + parser = argparse.ArgumentParser() + # parser.add_argument ("infile", help="The BMP file(s) to convert", type=argparse.FileType('r'), nargs='+', default=['-']) + parser.add_argument ("infile", help="The BMP file(s) to convert", type=argparse.FileType('r'), nargs='*', default=['-']) + parser.add_argument ("-r", "--raw", help="Outputs all data in raw table format", action="store_true") + parser.add_argument ("-i", "--invert", help="Inverts bitmap pixels", action="store_true") + parser.add_argument ("-w", "--width", help="Output table width in hex bytes [default: 16]", type=int) + parser.add_argument ("-b", "--bytes", help="Byte width of BMP sizes: 0=auto, 1, or 2 (big endian) [default: 0]", type=int) + parser.add_argument ("-n", "--named", help="Uses named structure (" + DEFAULTS.STRUCTURE_NAME + ") for data", action="store_true") +# parser.add_argument ("-d", "--double", help="Defines data in 'words' rather than bytes", action="store_true") + parser.add_argument ("-x", "--xbm", help="Uses XBM bit order (low order bit is first pixel of byte)", action="store_true") + parser.add_argument ("-v", "--version", help="Returns the current bmp2hex version", action="store_true") + args = parser.parse_args() + + # Required arguments + infile = args.infile + + # Options + if args.raw: + raw = args.raw + if args.invert: + invert = args.invert + if args.width: + tablewidth = args.width + if args.bytes: + sizebytes = args.bytes % 3 + if args.named: + named = args.named + # if args.double: + # double = args.double + double = False + if args.xbm: + xbm = args.xbm + if args.version: + print ('// bmp2hex version ' + DEFAULTS.VERSION) + + # Output named structure, if requested + if (named): + print ('struct ' + DEFAULTS.STRUCTURE_NAME + ' {') + print (' unsigned int width;') + print (' unsigned int height;') + print (' unsigned int bitDepth;') + print (' int baseline;') + print (' ' + getDoubleType(double)[0] + 'pixel_data;') + print ('};') + print ('') + + # Do the work + for f in args.infile: + if f == '-': + sys.exit() + bmp2hex(f.name, tablewidth, sizebytes, invert, raw, named, double, xbm) + +# Utility function. Return a long int from array (little endian) +def getLONG(a, n): + return (a[n+3] * (2**24)) + (a[n+2] * (2**16)) + (a[n+1] * (2**8)) + (a[n]) + +# Utility function. Return an int from array (little endian) +def getINT(a, n): + return ((a[n+1] * (2**8)) + (a[n])) + +# Reverses pixels in byte +def reflect(a): + r = 0 + for i in range(8): + r <<= 1 + r |= (a & 0x01) + a >>= 1 + return (r) + +# Returns as a tuple, the data type and length for double versus short data types +def getDoubleType (d): + if d: + dType = 'uint16_t' + ' *' + dLen = 2 + else: + dType = 'uint8_t' + ' *' + dLen = 1 + + return (dType, dLen) + + +# Main conversion function +def bmp2hex(infile, tablewidth, sizebytes, invert, raw, named, double, xbm): + + # Set up some variables to handle the "-d" option + (pixelDataType, dataByteLength) = getDoubleType(double) + + # Set the table name to the uppercase root of the file name + tablename = os.path.splitext(infile)[0].upper() + + # Convert tablewidth to characters from hex bytes + tablewidth = int(tablewidth) * 6 + + # Initilize output buffer + outstring = '' + + # Open File + fin = open(os.path.expanduser(infile), "rb") + uint8_tstoread = os.path.getsize(os.path.expanduser(infile)) + valuesfromfile = array.array('B') + try: + valuesfromfile.fromfile(fin, uint8_tstoread) + finally: + fin.close() + + # Get bytes from file + values=valuesfromfile.tolist() + + # Exit if it's not a Windows BMP + if ((values[0] != 0x42) or (values[1] != 0x4D)): + sys.exit ("Error: Unsupported BMP format. Make sure your file is a Windows BMP.") + + # Calculate width, heigth + dataOffset = getLONG(values, 10) # Offset to image data + pixelWidth = getLONG(values, 18) # Width of image + pixelHeight = getLONG(values, 22) # Height of image + bitDepth = getINT (values, 28) # Bits per pixel + dataSize = getLONG(values, 34) # Size of raw data + + # Calculate line width in bytes and padded byte width (each row is padded to 4-byte multiples) + byteWidth = int(math.ceil(float(pixelWidth * bitDepth)/8.0)) + paddedWidth = int(math.ceil(float(byteWidth)/4.0)*4.0) + + # For auto (sizebytes = 0), set sizebytes to 1 or 2, depending on size of the bitmap + if (sizebytes==0): + if (pixelWidth>255) or (pixelHeight>255): + sizebytes = 2 + else: + sizebytes = 1 + + # The invert byte is set based on the invert command line flag (but, the logic is reversed for 1-bit files) + invertbyte = 0xFF if invert else 0x00 + if (bitDepth == 1): + invertbyte = invertbyte ^ 0xFF + + # Output the hex table declaration + # With "raw" output, output just an array of chars + if (raw): + # Output the data declaration + print ('PROGMEM unsigned char const ' + tablename + ' [] = {') + + # Output the size of the BMP + if (not (sizebytes%2)): + print ("{0:#04X}".format((pixelWidth>>8) & 0xFF) + ", " + "{0:#04X}".format(pixelWidth & 0xFF) + ", " + \ + "{0:#04X}".format((pixelHeight>>8) & 0xFF) + ", " + "{0:#04X}".format(pixelHeight & 0xFF) + ",") + else: + print ("{0:#04X}".format(pixelWidth & 0xFF) + ", " + "{0:#04X}".format(pixelHeight & 0xFF) + ",") + + elif (named): + print ('PROGMEM ' + getDoubleType(double)[0] + ' const ' + tablename + '_PIXELS[] = {') + + elif (xbm): + print ('#define ' + tablename + '_width ' + str(pixelWidth)) + print ('#define ' + tablename + '_height ' + str(pixelHeight)) + print ('PROGMEM ' + getDoubleType(double)[0] + ' const ' + tablename + '_bits[] = {') + + else: + print ('PROGMEM const struct {') + print (' unsigned int width;') + print (' unsigned int height;') + print (' unsigned int bitDepth;') + print (' ' + pixelDataType + 'pixel_data[{0}];'.format(byteWidth * pixelHeight / dataByteLength)) + print ('} ' + tablename + ' = {') + print ('{0}, {1}, {2}, {{'.format(pixelWidth, pixelHeight, bitDepth)) + + # Generate HEX bytes for pixel data in output buffer + try: + for i in range(pixelHeight): + for j in range (byteWidth): + ndx = dataOffset + ((pixelHeight-1-i) * paddedWidth) + j + v = values[ndx] ^ invertbyte + if (xbm): + v = reflect(v) + # print ("{0:#04x}".format(v)) + outstring += "{0:#04x}".format(v) + ", " + + # Wrap the output buffer. Print. Then, finish. + finally: + outstring = textwrap.fill(outstring[:-2], tablewidth) + print (outstring) + + if (named): + print ('};') + print (DEFAULTS.STRUCTURE_NAME + ' const ' + tablename + ' = {{{0}, {1}, {2}, 0, '.format(pixelWidth, pixelHeight, bitDepth) + \ + pixelDataType + tablename + "_PIXELS};\n\n") + else: + if (not (raw or xbm)): + print ("}") + print ("};") + + +# Only run if launched from commandline +if __name__ == '__main__': main() \ No newline at end of file diff --git a/examples/BitmapIcons/screenshot.jpg b/examples/BitmapIcons/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11482604eb41d8b386f1c3b028cd82842f949499 GIT binary patch literal 133201 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 N$i&4*S*(mte+A&fx5)qi literal 0 HcmV?d00001