summaryrefslogtreecommitdiff
path: root/apps/plugins/lua/include_lua/blit.lua
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/lua/include_lua/blit.lua')
-rw-r--r--apps/plugins/lua/include_lua/blit.lua84
1 files changed, 84 insertions, 0 deletions
diff --git a/apps/plugins/lua/include_lua/blit.lua b/apps/plugins/lua/include_lua/blit.lua
new file mode 100644
index 0000000..934804b
--- /dev/null
+++ b/apps/plugins/lua/include_lua/blit.lua
@@ -0,0 +1,84 @@
+--[[ Lua Blit Operations
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2017 William Wilgus
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+]]
+
+--[[
+copy(dst, src, [dx, dy, sx, sy, offset_x, offset_y, clip, _blit.OP, clr/customfunct])
+ blit allows you to copy a [portion of a] source image to a dest image applying
+ a transformation operation to the pixels as they are copied
+ offsets are auto calculated if left empty or out of range
+ blit will default to copy if operation is empty or out of range
+
+it is slightly faster to use the number directly and you don't really
+ need to define all (any) of these if you don't use them but I put them
+ here for easier use of the blit function
+]]
+if not rb.lcd_framebuffer then rb.splash(rb.HZ, "No Support!") return nil end
+
+local _blit ={} do
+
+ _blit.CUSTOM = 0xFF --user defined blit function func(dst_val, x, y, src_val, x, y)
+ _blit.BCOPY = 0x0 --copy (use :copy() instead it is slightly faster
+ _blit.BOR = 0x1 --OR source and dest pixels
+ _blit.BXOR = 0x2 --XOR source and dest pixels
+ _blit.BNOR = 0x3 --(NOT) (source OR dest pixels)
+ _blit.BSNOR = 0x4 --(NOT source) OR dest pixels
+ _blit.BAND = 0x5 --AND source and dest pixels
+ _blit.BNAND = 0x6 --(NOT) AND source and dest pixels
+ _blit.BNOT = 0x7 --NOT source and dest pixels
+ --blit functions for masks
+ _blit.BSAND = 0x8 --copy color to dest if source pixel <> 0
+ _blit.BSNOT = 0x9 --copy color to dest if source pixel == 0
+ --blit functions for masks with colors
+ _blit.BSORC = 0xA --copy source pixel or color
+ _blit.BSXORC = 0xB --copy source pixel xor color
+ _blit.BNSORC = 0xC --copy ~(src_val | clr)
+ _blit.BSORNC = 0xD --copy src_val | (~clr)
+ _blit.BSANDC = 0xE --copy src_val & clr;
+ _blit.BNSANDC = 0xF --copy (~src_val) & clr
+ _blit.BDORNSORC = 0x10 --copy dst | (~src_val) | clr
+ _blit.BXORSADXORC = 0x11 --copy dst ^ (src_val & (dst_val ^ clr))
+
+ _blit.BSNEC = 0x12 --copy source pixel if source <> color
+ _blit.BSEQC = 0x13 --copy source pixel if source == color
+ _blit.BSGTC = 0x14 --copy source pixel if source > color
+ _blit.BSLTC = 0x15 --copy source pixel if source < color
+ _blit.BDNEC = 0x16 --copy source pixel if dest <> color
+ _blit.BDEQC = 0x17 --copy source pixel if dest == color
+ _blit.BDGTC = 0x18 --copy source pixel if dest > color
+ _blit.BDLTC = 0x19 --copy source pixel if dest < color
+ _blit.BDNES = 0x1A --copy color to dest if dest <> source pixel
+ _blit.BDEQS = 0x1B --copy color to dest if dest == source pixel
+ _blit.BDGTS = 0x1C --copy color to dest if dest > source pixel
+ _blit.BDLTS = 0x1D --copy color to dest if dest < source pixel
+ --Source unused for these blits
+ _blit.BCOPYC = 0x1E --copy color
+ _blit.BORC = 0x1F --OR dest and color
+ _blit.BXORC = 0x20 --XOR dest and color
+ _blit.BNDORC = 0x21 --~(dst_val | clr)
+ _blit.BDORNC = 0x22 --dst_val | (~clr)
+ _blit.BANDC = 0x23 --AND dest and color
+ _blit.BNDANDC = 0x24 --copy (~dst_val) & clr
+ _blit.BDLTS = 0x25 --dest NOT color
+end -- _blit operations
+
+return _blit