rockbox/apps/plugins
William Wilgus 2daec3d3c3 Rocklua -- Extend / Fix rliImage
Some devices(1-bit / 2-bit displays) have packed bit formats that
 need to be unpacked in order to work on them at a pixel level.

This caused a few issues on 1 & 2-bit devices:
 Greatly Oversized data arrays for bitmaps
 Improper handling of native image data
 Framebuffer data was near unusable without jumping through hoops

Conversion between native addressing and per pixel addressing
 incurs extra overhead but it is much faster to do it
 on the 'C' side rather than in lua.

Not to mention the advantage of a unified interface for the end programer

-------------------------------------------------------------------
Adds a sane way to access each pixel of image data
Adds:
--------------------------------------------------------------------
img:clear([color],[x1],[y1],[x2],[y2])
 (set whole image or a portion to a particular value)
--------------------------------------------------------------------
img:invert([x1],[y1],[x2],[y2])
 (inverts whole image or a portion)
--------------------------------------------------------------------
img:marshal([x1],[y1],[x2],[y2],[funct])
 (calls funct for each point defined by rect of x1,y1 x2,y2
  returns value and allows setting value of each point return
  nil to terminate early)
--------------------------------------------------------------------
img:points([x1],[y1],[x2],[y2],[dx],[dy])
 (returns iterator function that steps delta-x and delta-y pixels each call
  returns value of pixel each call but doesn't allow setting to a new value
  compare to lua pairs method)
--------------------------------------------------------------------
img:copy(src,[x1],[y1],[x2],[y2],[w],[h],[clip][operation][clr/funct])
 (copies all or part of an image -- straight copy or special ops
  optionally calls funct for each point defined by rect of
  x1, y1, w, h and  x2, y2, w, h for dest and src images
  returns value of dst and src and allows setting value of
  each point return nil to terminate early)
--------------------------------------------------------------------
img:line(x1, y1, x2, y2, color)
--------------------------------------------------------------------
img:ellipse(x1, y1, x2, y2, color, [fillcolor]
--------------------------------------------------------------------
Fixed handling of 2-bit vertical integrated screens

Added direct element access for saving / restoring native image etc.

Added more data to tostring() handler and a way to access individual items

Added equals method to see if two variables reference the same image address
(doesn't check if two separate images contain the same 'picture')

Optimized get and set routines

Fixed out of bound x coord access shifting to next line

Added lua include files to expose new functionality

Finished image saving routine

Static allocation of set_viewport struct faster + saves ram over dynamic

Cleaned up code

Fixed pixel get/set for 1/2 bit devices
-------------------------------------------------------------------------
Example lua script to follow on forums
-------------------------------------------------------------------------

Change-Id: I7b9c1fd699442fb683760f781021091786c18509
2018-07-22 18:05:02 +02:00
..
beatbox Replace SAMSUNG_YH920_PAD with YH92X 2016-01-25 09:23:09 +01:00
bitmaps puzzles: add missing file 2017-11-21 19:54:14 -05:00
chessbox Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
clock Make fixepoint.c as a shared library (libfixedpoint.a). 2013-04-26 00:11:04 +02:00
doom Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
fft Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
fractals Fix yellow for LCD_DEPTH == 32 2018-06-20 21:57:34 +02:00
frotz Plugin Frotz: Match keymap and manual 2016-01-09 19:46:21 +01:00
goban Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
imageviewer Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
lib Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
lua Rocklua -- Extend / Fix rliImage 2018-07-22 18:05:02 +02:00
midi Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
mikmod Fix dangerous casts 2017-02-04 17:24:47 +01:00
mpegplayer Agptek Rocker: Fix mpegplayer keymap 2018-06-14 09:09:24 +02:00
pacbox Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
pdbox pdbox: fix bug shown by new gcc warning 2016-10-12 16:52:49 +02:00
pictureflow Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
puzzles puzzles: resync with upstream 2018-06-20 19:13:03 -04:00
reversi Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
rockboy Agptek Rocker: fix rockboy pallete 2018-06-12 10:31:15 +02:00
sdl sdl: remove non-rockbox drivers 2018-03-12 20:52:01 -04:00
searchengine
shortcuts
sudoku Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
text_viewer Textviewer night mode 2018-07-04 06:25:45 +02:00
xworld Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
zxbox Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
2048.c 2048: Cleanup 2015-04-19 17:48:12 +02:00
alarmclock.c Implement time-based resume and playback start. 2014-03-10 04:12:30 +01:00
alpine_cdc.c Implement time-based resume and playback start. 2014-03-10 04:12:30 +01:00
battery_bench.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
bench_mem_jpeg.c
bench_scaler.c
blackjack.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
boomshine.lua Rename 'expanded' to 'expended'. Was this a typo? 2015-04-19 12:23:22 +02:00
bounce.c Replace SAMSUNG_YH920_PAD with YH92X 2016-01-25 09:23:09 +01:00
brickmania.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
bubbles.c Replace SAMSUNG_YH920_PAD with YH92X 2016-01-25 09:23:09 +01:00
BUILD_OVERLAY
calculator.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
calendar.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
CATEGORIES Port of Duke Nukem 3D 2017-12-23 21:01:26 -05:00
chessbox.c
chessclock.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
chip8.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
chopper.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
clix.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
codebuster.c
credits.c
credits.pl
crypt_firmware.c
cube.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
demystify.c
dice.c
dict.c
disktidy.c Fixed disktidy bug and added a couple of new features to disktidy. 2014-10-09 09:43:40 +02:00
disktidy.config
duke3d.c Port of Duke Nukem 3D 2017-12-23 21:01:26 -05:00
elfdep.pl
euroconverter.c
fire.c lcd-24bit: Introduce a 24-bit mid-level LCD driver 2014-06-21 00:15:53 +02:00
fireworks.c fireworks: ues PLA_EXIT to exit without going through the menu. 2012-02-24 15:06:18 +01:00
firmware_flash.c
flipit.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
goban.c
greyscale.c Replace SAMSUNG_YH920_PAD with YH92X 2016-01-25 09:23:09 +01:00
helloworld.c
helloworld.lua
invadrox.c Zen XFi2: Enable Plugins 2018-04-03 11:34:01 +02:00
iriver_flash.c
iriverify.c
jackpot.c
jewels.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
keybox.c Keybox: display the entry name along with the password 2017-08-27 15:43:11 -04:00
lamp.c Lamp plugin: Allow toggling the button light using "select". 2015-02-22 12:22:40 +01:00
logo.c Fix some build errors and warnings. 2014-06-21 00:49:05 +02:00
lrcplayer.c Fix dangerous casts 2017-02-04 17:24:47 +01:00
main_menu_config.c Fix misleading indentation as pointed out by the new gcc warning 2016-08-12 15:33:28 +02:00
matrix.c matrix plugin: Fix out-of-bounds array access. Unify for-loop style. 2012-06-03 23:37:33 +02:00
maze.c
mazezam.c
md5sum.c
metronome.c YH8xx,YH9xx: Keymap improvement 2015-11-15 23:46:39 +01:00
minesweeper.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
mosaique.c Plugin mosaique PLA integration (code + manual) 2012-03-03 16:37:47 +01:00
mp3_encoder.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
nim.c
oscilloscope.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
otp.c Undo hacks to meant to get around string formatting limitations 2017-11-21 05:01:14 -05:00
pegbox.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
periodic_table.c Add tentative new element names, IUPAC approval expected around November 2016-12-04 18:05:51 +01:00
pictureflow.c
pitch_detector.c Revise the PCM callback system after adding multichannel audio. 2012-03-03 07:23:38 +01:00
pixel-painter.lua FS#11922: Lua game - Pixel Painter 2017-08-23 00:25:11 +02:00
plasma.c lcd-24bit: Introduce a 24-bit mid-level LCD driver 2014-06-21 00:15:53 +02:00
plugin.lds Fix .ncbss from possibly overlapping .ncdata in plugins/codecs. 2013-07-11 04:32:23 -04:00
plugin_crt0.c
plugins.make iBasso DX50/DX90: Major code cleanup and reorganization. 2015-02-02 21:57:55 +01:00
pong.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
properties.c Rewrite filesystem code (WIP) 2014-08-30 03:48:23 +02:00
random_folder_advance_config.c plugins: Add plugin_release_audio_buffer(). 2014-04-09 09:04:10 +02:00
remote_control.c
resistor.c scroll_engine: Rename scroll_stop* functions to be more consistent with the lcd api. 2013-12-14 23:11:30 +01:00
robotfindskitten.c
rockblox.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
rockblox1d.c rockblox1d's plugin PLA integration (main code + manual) 2012-02-18 23:57:22 +01:00
rockbox-fonts.config
rockbox_flash.c Improve rockbox_flash messages 2012-02-05 16:26:09 +01:00
rockboy.c
rocklife.c
rockpaint.c Zen XFi2: Enable Plugins 2018-04-03 11:34:01 +02:00
search.c
settings_dumper.c EQ settings: Rework the settings to clean up the config file. 2013-02-09 13:05:32 +01:00
shopper.c Shopper: slightly improve plugin and manual 2015-09-24 23:15:24 +02:00
sliding_puzzle.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
snake.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
snake2.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
snake2.levels
snow.c Plugin snow PLA integration (code + manual) 2012-03-03 10:48:22 +01:00
sokoban.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
sokoban.levels
solitaire.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
sort.c
SOURCES duke3d: restrict targets to ARM only 2017-12-24 18:01:28 -05:00
SOURCES.app_build iBasso DX50/DX90: Major code cleanup and reorganization. 2015-02-02 21:57:55 +01:00
spacerocks.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
speedread.c Remove redundant code 2017-03-15 18:14:13 -04:00
splitedit.c Replace SAMSUNG_YH920_PAD with YH92X 2016-01-25 09:23:09 +01:00
star.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
starfield.c Clean up peak calculating code. 2012-05-02 20:53:07 -04:00
stats.c stats's plugin PLA integration (main code + manual) 2012-02-22 09:15:50 +01:00
stopwatch.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
stopwatch.lua stopwatch.lua: Improve button layout. Enable on touchscreen RaaA. 2012-01-29 22:35:49 +01:00
SUBDIRS pacbox for small screens, up to 75x96 2018-04-03 00:21:40 +02:00
SUBDIRS.app_build iBasso DX50/DX90: Major code cleanup and reorganization. 2015-02-02 21:57:55 +01:00
superdom.c Superdom: Silence warning. 2014-09-14 05:16:10 +02:00
test_boost.c
test_codec.c Get test_codec synced with changes in 6c868dd 2017-12-08 21:32:54 -05:00
test_core_jpeg.c
test_disk.c Align test_disk buffer for DMA. 2016-04-01 19:57:44 +02:00
test_fps.c test_X plugins PLA integration 2012-03-03 19:55:51 +01:00
test_gfx.c test_gfx: Add benchmark for put_line(). 2014-01-07 14:13:41 +01:00
test_grey.c test_X plugins PLA integration 2012-03-03 19:55:51 +01:00
test_greylib_bitmap_scale.c test_X plugins PLA integration 2012-03-03 19:55:51 +01:00
test_mem.c test_mem: increase dram buffer if possible, cap number of iterations 2017-10-22 15:36:13 +02:00
test_mem_jpeg.c
test_resize.c
test_sampr.c Revise the PCM callback system after adding multichannel audio. 2012-03-03 07:23:38 +01:00
test_scanrate.c test_X plugins PLA integration 2012-03-03 19:55:51 +01:00
test_touchscreen.c Zen XFi2: Enable Plugins 2018-04-03 11:34:01 +02:00
test_viewports.c lcd-16bit: Remove {lss,lse,lst}_pattern fields from struct viewport. 2014-01-07 14:13:48 +01:00
test_viewports.lua
text_editor.c Fix Samsung YH92X/YH820 keypad conditional in text_editor 2017-05-06 21:34:21 -04:00
theme_remove.c
vbrfix.c
video.c Tweak paramters of mp3_play_data and callback. 2012-03-04 14:50:47 -05:00
viewers.config Speed-reading plugin 2017-03-15 15:02:53 -04:00
vu_meter.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
wav2wv.c
wavplay.c
wavrecord.c wavrecord plugin: Add harmless sanity check 2014-12-21 17:22:09 +01:00
wavview.c
wormlet.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
xobox.c Agptek Rocker: Build plugins 2018-06-12 10:31:15 +02:00
zxbox.c