This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// encode_anim_gif.js | |
// minimal code to make animated GIFs from arrays of pixels | |
// - no compression | |
// - supports 127 colors (127 shades of gray by default) | |
function encode_anim_gif(frames,w,h,delay=5){ | |
let bytes = []; | |
bytes.push(0x47,0x49,0x46,0x38,0x39,0x61); | |
bytes.push(w&0xff); | |
bytes.push((w>>8)&0xff); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
bsl124.py | |
(minimal) TI MSP430 1,2,4 Family BSL flasher | |
using pyserial, works on windows, mac, and linux | |
- implementation of slau319af.pdf | |
- programming MSP430 chips via USB-TTL / FTDI / ... | |
- supports Intel HEX format | |
- supports F1xx, F2xx, F4xx, G2xx3 chips |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
bmprw.h | |
tiny .BMP image reader/writer in C99 | |
with no memory allocations | |
reader supports: | |
- 1, 4, 8, 24, 32 bit depth, palette / no palette | |
- RLE4 / RLE8 compression / no compression |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// baseline somewhat-compressing PNG writer in 150 lines | |
// | |
// - supports gray, gray+A, RGB, RGBA, bit depth : 8 | |
// - uses "fixed" huffman codes of DEFLATE spec | |
// - compresses well for graphics with large "flat" areas, | |
// basically pixel-wise run-length encoding translated to LZ77 style <len,dist>, | |
// always filtered with SUB filter | |
// - writes IHDR, IDAT, IEND -- optional chunks can be | |
// passed as function argument to be encoded (see example) | |
// |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// baseline PNG decoder in 400 lines | |
// | |
// - supports all color types: RGBA, RGB, gray+A, gray, paletted | |
// - supports all bit depths: 1, 2, 4, 8, 16 bits (color type dependant, per spec) | |
// - allways return RGBA(0-255) format: other color+bit combinations will be scaled | |
// - downscaled 16-bit values retain floating point, e.g. 1000/65535 -> 3.89/255 | |
// - support transparency palette / chroma-key | |
// - supports interlaced / non-interlaced | |
// - supports all zlib methods: non-compressed / fixed / dynamic huffman | |
// - supports all filters: none / sub / up / average / paeth |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// a bare minimum, non-compressing PNG writer in 80 lines | |
// | |
// - supports gray, gray+A, RGB, RGBA, bit depth: 8 (0-255) | |
// - uses "non-compressed blocks" of DEFLATE spec | |
// - writes IHDR, IDAT, IEND -- optional chunks can be | |
// passed as function argument to be encoded (see example) | |
// | |
// reference: | |
// - https://en.wikipedia.org/wiki/Portable_Network_Graphics | |
// - https://datatracker.ietf.org/doc/html/rfc1951 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// core_midi_synth.mm | |
// | |
// a barebones midi synthesizer demo that calls | |
// mac's low level API (CoreMIDI and CoreAudio) directly | |
// (because I can't be bothered to compile other people's libraries) | |
// | |
// with code fragments adapted from | |
// - https://stackoverflow.com/a/7964300 | |
// - https://github.com/thestk/rtmidi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Wormhole.java | |
// Lingdong Huang 2021, Public domain | |
// Simple app to create "wormholes" connecting different displays: | |
// When cursor enters a black patch, it comes out from the other | |
// Idea inspired by this mac app "Wormhole by Tod LLC": https://macdownload.informer.com/wormhole1/ | |
// I implemented the idea in java to work on Windows | |
// | |
// Usage: | |
// javac Wormhole.java; java Wormhole <x0> <y0> <x1> <y1> | |
// (arguments being the positions of the two holes) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* =============================================================================== | |
* triangulateMTX.ts | |
* TypeScript implementation of Mei-Tipper-Xu algorithm for polygon triangulation | |
* (c) Lingdong Huang 2020 (MIT License) | |
* =============================================================================== */ | |
namespace triangulateMTX{ | |
export function triangulate( | |
vertices : Array<[number,number]>, | |
params : {sliverThreshold? : number, | |
greedyHeuristic? : boolean, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ln.c | |
// | |
// simple, fast, accurate natural log approximation | |
// when without <math.h> | |
// featuring * floating point bit level hacking, | |
// * x=m*2^p => ln(x)=ln(m)+ln(2)p, | |
// * Remez algorithm | |
// by Lingdong Huang, 2020. Public domain. |
NewerOlder