aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuha Vehviläinen <jusu@users.sourceforge.net>2003-02-17 22:28:16 +0000
committerJuha Vehviläinen <jusu@users.sourceforge.net>2003-02-17 22:28:16 +0000
commitba67bbb2db6327dc0f64eab24bafe5f023ce42ed (patch)
treee6448c5063b7fb2b021e32e31958d10a9a51fb07
parent2992b54a966b8972730a2552bb81183f07e35795 (diff)
0.32
svn path=/trunk/Framestein/; revision=418
-rw-r--r--CHANGELOG.txt4
-rwxr-xr-xFramestein.exebin972288 -> 971776 bytes
-rw-r--r--Patches/18.example-rowca.pd58
-rw-r--r--Patches/fs.grid.pd21
-rw-r--r--Plugins/2colors.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/argument-passing.dllbin40960 -> 40960 bytes
-rw-r--r--Plugins/bend.c2
-rw-r--r--Plugins/bend.dllbin49152 -> 49152 bytes
-rw-r--r--Plugins/black.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/cga.c2
-rw-r--r--Plugins/cga.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/colortv.c2
-rw-r--r--Plugins/colortv.dllbin28672 -> 36864 bytes
-rw-r--r--Plugins/compare.c2
-rw-r--r--Plugins/compare.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/constrain.c2
-rw-r--r--Plugins/constrain.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/convolution.c2
-rw-r--r--Plugins/convolution.dllbin45056 -> 45056 bytes
-rw-r--r--Plugins/copy_vert.c2
-rw-r--r--Plugins/copy_vert.dllbin28672 -> 36864 bytes
-rw-r--r--Plugins/cutout.c2
-rw-r--r--Plugins/cutout.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/darken.c2
-rw-r--r--Plugins/darken.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/deinterlace.c4
-rw-r--r--Plugins/deinterlace.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/difference.c2
-rw-r--r--Plugins/difference.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/eclipse.c2
-rw-r--r--Plugins/eclipse.dllbin49152 -> 49152 bytes
-rw-r--r--Plugins/eclipse02.c2
-rw-r--r--Plugins/eclipse02.dllbin45056 -> 49152 bytes
-rw-r--r--Plugins/eclipse03.c2
-rw-r--r--Plugins/eclipse03.dllbin49152 -> 49152 bytes
-rw-r--r--Plugins/fader.cpp26
-rw-r--r--Plugins/fader.dllbin0 -> 45056 bytes
-rw-r--r--Plugins/fromage.c2
-rw-r--r--Plugins/fromage.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/fs2vf.c2
-rw-r--r--Plugins/fs2vf.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/gol.c2
-rw-r--r--Plugins/gol.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/green.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/hist.dllbin45056 -> 45056 bytes
-rw-r--r--Plugins/interlace.c4
-rw-r--r--Plugins/interlace.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/keyscreen.c2
-rw-r--r--Plugins/keyscreen.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/lighten.c2
-rw-r--r--Plugins/lighten.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/lightspeed.c2
-rw-r--r--Plugins/lightspeed.dllbin28672 -> 36864 bytes
-rw-r--r--Plugins/makefile19
-rw-r--r--Plugins/makesliders.c2
-rw-r--r--Plugins/makesliders.dllbin36864 -> 49152 bytes
-rw-r--r--Plugins/merge_additive.cpp30
-rw-r--r--Plugins/merge_additive.dllbin0 -> 36864 bytes
-rw-r--r--Plugins/merge_mod.cpp33
-rw-r--r--Plugins/merge_mod.dllbin0 -> 53248 bytes
-rw-r--r--Plugins/modgain.c2
-rw-r--r--Plugins/modgain.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/ms.dllbin36864 -> 49152 bytes
-rw-r--r--Plugins/multiply.c2
-rw-r--r--Plugins/multiply.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/noize.c2
-rw-r--r--Plugins/noize.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/overlay.c2
-rw-r--r--Plugins/overlay.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/ping.c13
-rw-r--r--Plugins/ping.dllbin0 -> 36864 bytes
-rw-r--r--Plugins/plot.cpp4
-rw-r--r--Plugins/plot.dllbin28672 -> 36864 bytes
-rw-r--r--Plugins/rene.c2
-rw-r--r--Plugins/rene.dllbin49152 -> 49152 bytes
-rw-r--r--Plugins/rgb.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/rgbavg.c2
-rw-r--r--Plugins/rgbavg.dllbin49152 -> 49152 bytes
-rw-r--r--Plugins/rgbavg02.c2
-rw-r--r--Plugins/rgbavg02.dllbin53248 -> 53248 bytes
-rw-r--r--Plugins/rgbcopy.cpp2
-rw-r--r--Plugins/rgbcopy.dllbin28672 -> 36864 bytes
-rw-r--r--Plugins/rgbseek.c2
-rw-r--r--Plugins/rgbseek.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/rowca.cpp4
-rw-r--r--Plugins/rowca.dllbin110592 -> 110592 bytes
-rw-r--r--Plugins/screen.c2
-rw-r--r--Plugins/screen.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/setbits.c2
-rw-r--r--Plugins/setbits.dllbin28672 -> 36864 bytes
-rw-r--r--Plugins/shadowcaster.c2
-rw-r--r--Plugins/shadowcaster.dllbin65536 -> 65536 bytes
-rw-r--r--Plugins/shuffle.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/softlight.c2
-rw-r--r--Plugins/softlight.dllbin45056 -> 49152 bytes
-rw-r--r--Plugins/sonogram.dllbin49152 -> 45056 bytes
-rw-r--r--Plugins/subtract.dllbin40960 -> 40960 bytes
-rw-r--r--Plugins/swap.cpp3
-rw-r--r--Plugins/swap.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/tile.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/traffic.c2
-rw-r--r--Plugins/traffic.dllbin49152 -> 49152 bytes
-rw-r--r--Plugins/vf2fs.c2
-rw-r--r--Plugins/vf2fs.dllbin36864 -> 36864 bytes
-rw-r--r--Plugins/xbend.c2
-rw-r--r--Plugins/xbend.dllbin36864 -> 45056 bytes
-rw-r--r--Plugins/xshred.c2
-rw-r--r--Plugins/xshred.dllbin28672 -> 36864 bytes
-rw-r--r--toolbar.txt23
109 files changed, 307 insertions, 13 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 0ad9af7..6647c90 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,6 +1,6 @@
0.32
-- added toolbar, paste objects to patches
-- new plugin: lightspeed
+- added toolbar (just a list of framestein objects & filters for now)
+- new plugins: lightspeed, merge_additive, merge_mod, ping, fader
- fs.frame: |title this is the main window( and |undock( commands
- fs.copy: transcolor <r> <g> <b> to set the transparent color
- better gol algo (Plugins\gol.c)
diff --git a/Framestein.exe b/Framestein.exe
index fd0f60c..190f01d 100755
--- a/Framestein.exe
+++ b/Framestein.exe
Binary files differ
diff --git a/Patches/18.example-rowca.pd b/Patches/18.example-rowca.pd
new file mode 100644
index 0000000..29ff1f9
--- /dev/null
+++ b/Patches/18.example-rowca.pd
@@ -0,0 +1,58 @@
+#N canvas 328 14 664 542 12;
+#X obj 199 343 fs.frame;
+#X obj 293 342 init;
+#X msg 310 391 176x144;
+#X msg 319 415 1024x768;
+#X msg 327 439 3600x3600 \, display 720x576;
+#X msg 227 256 rowca 001-010-011-100;
+#X msg 115 282 rowca draw;
+#X msg 15 282 rowca clear;
+#X msg 293 368 640x480;
+#X msg 421 255 rowca 111-010-001-100;
+#X obj 9 35 fs.main;
+#X msg 9 9 6001;
+#X msg 60 9 reset;
+#X text 129 8 Row cellular automata \, where each iteration adds a
+new row.;
+#X text 129 31 Each cell has three neighbourns \, top left \, top and
+top right \, as shown below:;
+#X text 129 70 123;
+#X text 138 86 O;
+#X text 130 106 Patterns that lead to a white cell are given as parameter
+\, forming the rule of the automata.;
+#X obj 150 218 t b b b;
+#X msg 94 366 ping done;
+#X obj 94 395 r done;
+#X obj 94 422 delay 500;
+#X obj 150 165 bng 45 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 94 450 spigot;
+#X obj 151 452 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X text 23 510 (Using ping to determine when done processing);
+#X obj 94 478 s again;
+#X obj 73 176 r again;
+#X text 170 450 try this;
+#X text 205 177 click me;
+#X connect 1 0 8 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 0;
+#X connect 11 0 10 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 1;
+#X connect 18 0 19 0;
+#X connect 18 1 6 0;
+#X connect 18 2 5 0;
+#X connect 19 0 0 0;
+#X connect 20 0 21 0;
+#X connect 21 0 23 0;
+#X connect 22 0 18 0;
+#X connect 23 0 26 0;
+#X connect 24 0 23 1;
+#X connect 27 0 22 0;
diff --git a/Patches/fs.grid.pd b/Patches/fs.grid.pd
index 2819a1e..bea528a 100644
--- a/Patches/fs.grid.pd
+++ b/Patches/fs.grid.pd
@@ -1,4 +1,4 @@
-#N canvas 290 97 559 504 12;
+#N canvas 290 97 563 508 12;
#X obj 167 176 init;
#X obj 111 267 unpack f f f f;
#X obj 190 303 / 176;
@@ -16,6 +16,15 @@
#X text 18 72 inlets: to fs.frame;
#X text 18 88 outlets: x \, y \, fs.frame 3rd outlet;
#X text 18 14 fs.grid -- grid control module;
+#X obj 399 277 f \$1;
+#X obj 399 302 == 0;
+#X obj 399 325 sel 1;
+#X obj 457 302 == 0;
+#X obj 457 325 sel 1;
+#X obj 457 277 f \$2;
+#X obj 413 239 loadbang;
+#X msg 399 349 1;
+#X msg 457 349 1;
#X connect 0 0 6 0;
#X connect 1 2 2 0;
#X connect 1 3 3 0;
@@ -28,3 +37,13 @@
#X connect 12 1 1 0;
#X connect 12 2 9 0;
#X connect 13 0 12 0;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 24 0;
+#X connect 20 0 21 0;
+#X connect 21 0 25 0;
+#X connect 22 0 20 0;
+#X connect 23 0 17 0;
+#X connect 23 0 22 0;
+#X connect 24 0 10 1;
+#X connect 25 0 11 1;
diff --git a/Plugins/2colors.dll b/Plugins/2colors.dll
index fbb0e4d..c7c67aa 100644
--- a/Plugins/2colors.dll
+++ b/Plugins/2colors.dll
Binary files differ
diff --git a/Plugins/argument-passing.dll b/Plugins/argument-passing.dll
index d77a64b..dc80dd6 100644
--- a/Plugins/argument-passing.dll
+++ b/Plugins/argument-passing.dll
Binary files differ
diff --git a/Plugins/bend.c b/Plugins/bend.c
index 753159d..70229cc 100644
--- a/Plugins/bend.c
+++ b/Plugins/bend.c
@@ -2,6 +2,8 @@
#include <string.h>
#include "plugin.h"
+INFO("bend image horizontally or vertically")
+
void perform_effect(_frame f, _args a)
{
printf("NOTE: bend as effect does nothing. Use bend as copy operation.\n");
diff --git a/Plugins/bend.dll b/Plugins/bend.dll
index a4a62fb..fe679fc 100644
--- a/Plugins/bend.dll
+++ b/Plugins/bend.dll
Binary files differ
diff --git a/Plugins/black.dll b/Plugins/black.dll
index 474d5ef..83567e2 100644
--- a/Plugins/black.dll
+++ b/Plugins/black.dll
Binary files differ
diff --git a/Plugins/cga.c b/Plugins/cga.c
index bc329d7..945724a 100644
--- a/Plugins/cga.c
+++ b/Plugins/cga.c
@@ -14,6 +14,8 @@
#include <math.h>
#include "plugin.h"
+INFO("242.cga -- does bit-level quantization on an input image")
+
#pragma warning( disable : 4761 ) // the (lossy) conversion _IS_ our effect !
void perform_effect(struct frame f, struct args arg)
diff --git a/Plugins/cga.dll b/Plugins/cga.dll
index aa25a11..be9ad3c 100644
--- a/Plugins/cga.dll
+++ b/Plugins/cga.dll
Binary files differ
diff --git a/Plugins/colortv.c b/Plugins/colortv.c
index 1885d1f..f6527fb 100644
--- a/Plugins/colortv.c
+++ b/Plugins/colortv.c
@@ -1,5 +1,7 @@
#include "plugin.h"
+INFO("color distortion")
+
void perform_effect(struct frame f, struct args a)
{
int x, y;
diff --git a/Plugins/colortv.dll b/Plugins/colortv.dll
index cf5dacf..86c1260 100644
--- a/Plugins/colortv.dll
+++ b/Plugins/colortv.dll
Binary files differ
diff --git a/Plugins/compare.c b/Plugins/compare.c
index a507be9..55e10b1 100644
--- a/Plugins/compare.c
+++ b/Plugins/compare.c
@@ -30,6 +30,8 @@
#include <string.h>
#include "plugin.h"
+INFO("compare two images for differences")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using compare as effect does nothing!\n");
diff --git a/Plugins/compare.dll b/Plugins/compare.dll
index 5dabdde..f431b70 100644
--- a/Plugins/compare.dll
+++ b/Plugins/compare.dll
Binary files differ
diff --git a/Plugins/constrain.c b/Plugins/constrain.c
index 3463cea..dfb0868 100644
--- a/Plugins/constrain.c
+++ b/Plugins/constrain.c
@@ -13,6 +13,8 @@
#include <string.h>
#include "plugin.h"
+INFO("242.constrain -- does color range constraining on an input image")
+
void perform_effect(struct frame f, struct args a)
{
int x,y;
diff --git a/Plugins/constrain.dll b/Plugins/constrain.dll
index 0eaf042..03c84dc 100644
--- a/Plugins/constrain.dll
+++ b/Plugins/constrain.dll
Binary files differ
diff --git a/Plugins/convolution.c b/Plugins/convolution.c
index d1ec139..2504866 100644
--- a/Plugins/convolution.c
+++ b/Plugins/convolution.c
@@ -31,6 +31,8 @@
#include <string.h>
#include "plugin.h"
+INFO("5x5 convolution kernel matrix calculation")
+
void perform_effect(struct frame f, struct args a)
{
short x, y;
diff --git a/Plugins/convolution.dll b/Plugins/convolution.dll
index 68a6ed2..5364ad3 100644
--- a/Plugins/convolution.dll
+++ b/Plugins/convolution.dll
Binary files differ
diff --git a/Plugins/copy_vert.c b/Plugins/copy_vert.c
index cb7b093..963f2fd 100644
--- a/Plugins/copy_vert.c
+++ b/Plugins/copy_vert.c
@@ -2,6 +2,8 @@
#include <string.h>
#include "plugin.h"
+INFO("copy one vertical line at a given position")
+
void perform_copy(_frame f1, _frame f2, _args a)
{
byte pixelsize = f1.pixelformat/8;
diff --git a/Plugins/copy_vert.dll b/Plugins/copy_vert.dll
index 95aab74..e6e740f 100644
--- a/Plugins/copy_vert.dll
+++ b/Plugins/copy_vert.dll
Binary files differ
diff --git a/Plugins/cutout.c b/Plugins/cutout.c
index 9ad1984..f9e88de 100644
--- a/Plugins/cutout.c
+++ b/Plugins/cutout.c
@@ -13,6 +13,8 @@
#include <string.h>
#include "plugin.h"
+INFO("242.cutout -- does a rectangular mask really quickly")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using cutout as effect does nothing!\n");
diff --git a/Plugins/cutout.dll b/Plugins/cutout.dll
index 939cfe4..cade036 100644
--- a/Plugins/cutout.dll
+++ b/Plugins/cutout.dll
Binary files differ
diff --git a/Plugins/darken.c b/Plugins/darken.c
index a57b0b7..8f44e81 100644
--- a/Plugins/darken.c
+++ b/Plugins/darken.c
@@ -23,6 +23,8 @@
#include <stdlib.h>
#include "plugin.h"
+INFO("darken of two images")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using darken as effect does nothing!\n");
diff --git a/Plugins/darken.dll b/Plugins/darken.dll
index 174e654..5c3e787 100644
--- a/Plugins/darken.dll
+++ b/Plugins/darken.dll
Binary files differ
diff --git a/Plugins/deinterlace.c b/Plugins/deinterlace.c
index ca12568..bc8e9ef 100644
--- a/Plugins/deinterlace.c
+++ b/Plugins/deinterlace.c
@@ -1,5 +1,5 @@
//
-// deinterlace - deinterlacing through pixel / line repitition
+// deinterlace - deinterlacing through pixel / line repetition
//
// written by Olaf Matthes <olaf.matthes@gmx.de>
//
@@ -24,6 +24,8 @@
#include <string.h>
#include "plugin.h"
+INFO("deinterlacing through pixel / line repetition")
+
void perform_effect(struct frame f, struct args a)
{
short x, y, line = 0;
diff --git a/Plugins/deinterlace.dll b/Plugins/deinterlace.dll
index 7c5daf3..5e3240d 100644
--- a/Plugins/deinterlace.dll
+++ b/Plugins/deinterlace.dll
Binary files differ
diff --git a/Plugins/difference.c b/Plugins/difference.c
index f8c23d5..e49bb87 100644
--- a/Plugins/difference.c
+++ b/Plugins/difference.c
@@ -22,6 +22,8 @@
#include "plugin.h"
+INFO("difference of two images")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using difference as effect does nothing!\n");
diff --git a/Plugins/difference.dll b/Plugins/difference.dll
index de38787..b5cf5fe 100644
--- a/Plugins/difference.dll
+++ b/Plugins/difference.dll
Binary files differ
diff --git a/Plugins/eclipse.c b/Plugins/eclipse.c
index 6c2021c..f43d71d 100644
--- a/Plugins/eclipse.c
+++ b/Plugins/eclipse.c
@@ -14,6 +14,8 @@
#include <string.h>
#include "plugin.h"
+INFO("242.eclipse -- does meta-imaging on an input image")
+
// the process image routines work like this:
//
// two pointers (src and src2) access the pixels in the input image
diff --git a/Plugins/eclipse.dll b/Plugins/eclipse.dll
index e9a29df..7d0cadc 100644
--- a/Plugins/eclipse.dll
+++ b/Plugins/eclipse.dll
Binary files differ
diff --git a/Plugins/eclipse02.c b/Plugins/eclipse02.c
index d1d5301..615abf4 100644
--- a/Plugins/eclipse02.c
+++ b/Plugins/eclipse02.c
@@ -14,6 +14,8 @@
#include <string.h>
#include "plugin.h"
+INFO("242.eclipse02 -- does meta-imaging on two input images")
+
// the process image routines work like this:
//
// two pointers (src and src2) access the pixels in the input image
diff --git a/Plugins/eclipse02.dll b/Plugins/eclipse02.dll
index e13a72f..55b6d87 100644
--- a/Plugins/eclipse02.dll
+++ b/Plugins/eclipse02.dll
Binary files differ
diff --git a/Plugins/eclipse03.c b/Plugins/eclipse03.c
index 8d6b31d..7eef511 100644
--- a/Plugins/eclipse03.c
+++ b/Plugins/eclipse03.c
@@ -14,6 +14,8 @@
#include <string.h>
#include "plugin.h"
+INFO("242.eclipse0303 -- does meta-imaging on an input image using an inversion threshhold")
+
// the process image routines work like this:
//
// two pointers (src and src2) access the pixels in the input image
diff --git a/Plugins/eclipse03.dll b/Plugins/eclipse03.dll
index 60560e2..7cbd0e7 100644
--- a/Plugins/eclipse03.dll
+++ b/Plugins/eclipse03.dll
Binary files differ
diff --git a/Plugins/fader.cpp b/Plugins/fader.cpp
new file mode 100644
index 0000000..5f26206
--- /dev/null
+++ b/Plugins/fader.cpp
@@ -0,0 +1,26 @@
+//
+// fader - fade image according to brightness of another image
+//
+
+#include "plugin.h"
+#include "pixels.h"
+
+INFO("fade image according to brightness of another image");
+
+void perform_copy(_frame f1, _frame f2, _args a)
+{
+ pixels p1(f1), p2(f2);
+ byte r, g, b;
+
+ while(!p1.eof() && !p2.eof())
+ {
+ r = p1.red() * (float)(p2.red() / 255.0);
+ g = p1.green() * (float)(p2.green() / 255.0);
+ b = p1.blue() * (float)(p2.blue() / 255.0);
+
+ p2.putrgb(r, g, b);
+
+ p1.next();
+ p2.next();
+ }
+}
diff --git a/Plugins/fader.dll b/Plugins/fader.dll
new file mode 100644
index 0000000..40e552c
--- /dev/null
+++ b/Plugins/fader.dll
Binary files differ
diff --git a/Plugins/fromage.c b/Plugins/fromage.c
index 0c8b48a..7514daf 100644
--- a/Plugins/fromage.c
+++ b/Plugins/fromage.c
@@ -13,6 +13,8 @@
#include <string.h>
#include "plugin.h"
+INFO("242.fromage -- does cheezy wipes between two input images")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using fromage as effect does nothing!\n");
diff --git a/Plugins/fromage.dll b/Plugins/fromage.dll
index 913caee..2d7d4a6 100644
--- a/Plugins/fromage.dll
+++ b/Plugins/fromage.dll
Binary files differ
diff --git a/Plugins/fs2vf.c b/Plugins/fs2vf.c
index efd479a..5a45c79 100644
--- a/Plugins/fs2vf.c
+++ b/Plugins/fs2vf.c
@@ -11,6 +11,8 @@
#include "sharemem.h"
#include "vframe.h"
+INFO("copy image data to PD's memory space")
+
void perform_effect(_frame f, _args a)
{
HANDLE hlvframe=NULL, hl=NULL;
diff --git a/Plugins/fs2vf.dll b/Plugins/fs2vf.dll
index 974de86..c784c78 100644
--- a/Plugins/fs2vf.dll
+++ b/Plugins/fs2vf.dll
Binary files differ
diff --git a/Plugins/gol.c b/Plugins/gol.c
index 222a894..5a5330b 100644
--- a/Plugins/gol.c
+++ b/Plugins/gol.c
@@ -11,7 +11,7 @@
#define BORN 1
#define DYING 2
-INFO("Conway's Game Of Life")
+INFO("Conway's Game Of Life (only on 16bit displays)")
int aroundme(_frame f, int x, int y)
{
diff --git a/Plugins/gol.dll b/Plugins/gol.dll
index 26fe8e9..85969e5 100644
--- a/Plugins/gol.dll
+++ b/Plugins/gol.dll
Binary files differ
diff --git a/Plugins/green.dll b/Plugins/green.dll
index d1f42d6..1d43652 100644
--- a/Plugins/green.dll
+++ b/Plugins/green.dll
Binary files differ
diff --git a/Plugins/hist.dll b/Plugins/hist.dll
index 30937b8..849a377 100644
--- a/Plugins/hist.dll
+++ b/Plugins/hist.dll
Binary files differ
diff --git a/Plugins/interlace.c b/Plugins/interlace.c
index 1ea045f..a755c93 100644
--- a/Plugins/interlace.c
+++ b/Plugins/interlace.c
@@ -1,5 +1,5 @@
//
-// interlace - deinterlacing through pixel / line repitition
+// interlace - deinterlacing through pixel / line repetition
//
// written by Olaf Matthes <olaf.matthes@gmx.de>
//
@@ -24,6 +24,8 @@
#include <string.h>
#include "plugin.h"
+INFO("deinterlacing through pixel / line repetition")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using interlace as effect does nothing!\n");
diff --git a/Plugins/interlace.dll b/Plugins/interlace.dll
index 4c07025..e068573 100644
--- a/Plugins/interlace.dll
+++ b/Plugins/interlace.dll
Binary files differ
diff --git a/Plugins/keyscreen.c b/Plugins/keyscreen.c
index 45aea88..b301136 100644
--- a/Plugins/keyscreen.c
+++ b/Plugins/keyscreen.c
@@ -15,6 +15,8 @@
#include <string.h>
#include "plugin.h"
+INFO("242.keyscreen -- does 3-source chroma keying")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using keyscreen as effect does nothing!\n");
diff --git a/Plugins/keyscreen.dll b/Plugins/keyscreen.dll
index 6631ea3..acea31c 100644
--- a/Plugins/keyscreen.dll
+++ b/Plugins/keyscreen.dll
Binary files differ
diff --git a/Plugins/lighten.c b/Plugins/lighten.c
index ef1a065..3b1a4da 100644
--- a/Plugins/lighten.c
+++ b/Plugins/lighten.c
@@ -23,6 +23,8 @@
#include <stdlib.h>
#include "plugin.h"
+INFO("lighten of two images")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using lighten as effect does nothing!\n");
diff --git a/Plugins/lighten.dll b/Plugins/lighten.dll
index 8ef79aa..265a49a 100644
--- a/Plugins/lighten.dll
+++ b/Plugins/lighten.dll
Binary files differ
diff --git a/Plugins/lightspeed.c b/Plugins/lightspeed.c
index ec342dd..460e7fe 100644
--- a/Plugins/lightspeed.c
+++ b/Plugins/lightspeed.c
@@ -1,6 +1,8 @@
#include <stdlib.h>
#include "plugin.h"
+INFO("a great effect. $1 = y offset")
+
void perform_effect(_frame f, _args a)
{
int pos, y, pixelsize=f.pixelformat/8;
diff --git a/Plugins/lightspeed.dll b/Plugins/lightspeed.dll
index 1a76fa2..977a869 100644
--- a/Plugins/lightspeed.dll
+++ b/Plugins/lightspeed.dll
Binary files differ
diff --git a/Plugins/makefile b/Plugins/makefile
index f4e6b6c..b3f6a46 100644
--- a/Plugins/makefile
+++ b/Plugins/makefile
@@ -5,7 +5,8 @@ all: noize colortv subtract xbend bend gol shuffle green \
multiply overlay screen shadowcaster softlight \
rgbseek modgain traffic constrain eclipse eclipse02 eclipse03 \
cga keyscreen rene cutout fromage rgbavg rgbavg02 \
- rowca argument-passing lightspeed
+ rowca argument-passing lightspeed merge_additive merge_mod ping \
+ fader
dir *.dll
@@ -72,10 +73,10 @@ xshred:
cl xshred.c $(FLAGS) /link $(COPY)
vf2fs:
- cl vf2fs.c $(FLAGS) /I..\Externals /link $(EFFECT)
+ cl vf2fs.c $(FLAGS) /I..\Patches /link $(EFFECT)
fs2vf:
- cl fs2vf.c $(FLAGS) /I..\Externals /link $(EFFECT)
+ cl fs2vf.c $(FLAGS) /I..\Patches /link $(EFFECT)
swap:
cl swap.cpp $(FLAGS) /link $(COPY)
@@ -192,3 +193,15 @@ argument-passing:
lightspeed:
cl lightspeed.c $(FLAGS) /link $(EFFECT)
+
+merge_additive:
+ cl merge_additive.cpp $(FLAGS) /GX /link $(COPY)
+
+merge_mod:
+ cl merge_mod.cpp $(FLAGS) /GX /link $(COPY)
+
+ping:
+ cl ping.c $(FLAGS) /link $(EFFECT)
+
+fader:
+ cl fader.cpp $(FLAGS) /GX /link $(COPY)
diff --git a/Plugins/makesliders.c b/Plugins/makesliders.c
index 5c0b209..3566f15 100644
--- a/Plugins/makesliders.c
+++ b/Plugins/makesliders.c
@@ -8,6 +8,8 @@
#include <string.h>
#include "plugin.h"
+INFO("display slider values. usage: makesliders 14 56 76 140 [...]")
+
#define MAXVALS 128
void perform_effect(_frame f, _args a)
diff --git a/Plugins/makesliders.dll b/Plugins/makesliders.dll
index 5491ab8..7fbd58d 100644
--- a/Plugins/makesliders.dll
+++ b/Plugins/makesliders.dll
Binary files differ
diff --git a/Plugins/merge_additive.cpp b/Plugins/merge_additive.cpp
new file mode 100644
index 0000000..ee648ef
--- /dev/null
+++ b/Plugins/merge_additive.cpp
@@ -0,0 +1,30 @@
+//
+// merge_additive - add color components of two images, until white
+//
+
+#include "plugin.h"
+#include "pixels.h"
+
+INFO("add color components of two images until white");
+
+void perform_copy(_frame f1, _frame f2, _args a)
+{
+ pixels p1(f1), p2(f2);
+ int r, g, b;
+
+ while(!p1.eof() && !p2.eof())
+ {
+ r = (p1.red() + p2.red());
+ g = (p1.green() + p2.green());
+ b = (p1.blue() + p2.blue());
+
+ r = r<256 ? r : 255;
+ g = g<256 ? g : 255;
+ b = b<256 ? b : 255;
+
+ p2.putrgb(r, g, b);
+
+ p1.next();
+ p2.next();
+ }
+}
diff --git a/Plugins/merge_additive.dll b/Plugins/merge_additive.dll
new file mode 100644
index 0000000..5f4e3e9
--- /dev/null
+++ b/Plugins/merge_additive.dll
Binary files differ
diff --git a/Plugins/merge_mod.cpp b/Plugins/merge_mod.cpp
new file mode 100644
index 0000000..1aa9f16
--- /dev/null
+++ b/Plugins/merge_mod.cpp
@@ -0,0 +1,33 @@
+//
+// merge_additive - add color components of two images, mod 255
+//
+
+#include "plugin.h"
+#include "pixels.h"
+
+INFO("add color components of two images, modulus 255");
+
+void perform_copy(_frame f1, _frame f2, _args a)
+{
+ arguments ar(a.s);
+ pixels p1(f1), p2(f2);
+ int r, g, b;
+
+ float f = ar.count()>=1 ? atof(ar[0]) : 1;
+
+ while(!p1.eof() && !p2.eof())
+ {
+ r = (f * p1.red() + p2.red());
+ g = (f * p1.green() + p2.green());
+ b = (f * p1.blue() + p2.blue());
+
+ r = r % 255;
+ g = g % 255;
+ b = b % 255;
+
+ p2.putrgb(r, g, b);
+
+ p1.next();
+ p2.next();
+ }
+}
diff --git a/Plugins/merge_mod.dll b/Plugins/merge_mod.dll
new file mode 100644
index 0000000..544835f
--- /dev/null
+++ b/Plugins/merge_mod.dll
Binary files differ
diff --git a/Plugins/modgain.c b/Plugins/modgain.c
index 1c4ce56..de1b3a9 100644
--- a/Plugins/modgain.c
+++ b/Plugins/modgain.c
@@ -14,6 +14,8 @@
#include <math.h>
#include "plugin.h"
+INFO("242.modgain -- does modulo channel shifting on an input image")
+
void perform_effect(struct frame f, struct args arg)
{
int x,y;
diff --git a/Plugins/modgain.dll b/Plugins/modgain.dll
index 14946a3..a3d9a75 100644
--- a/Plugins/modgain.dll
+++ b/Plugins/modgain.dll
Binary files differ
diff --git a/Plugins/ms.dll b/Plugins/ms.dll
index 5491ab8..7fbd58d 100644
--- a/Plugins/ms.dll
+++ b/Plugins/ms.dll
Binary files differ
diff --git a/Plugins/multiply.c b/Plugins/multiply.c
index 45aa9bb..61897bd 100644
--- a/Plugins/multiply.c
+++ b/Plugins/multiply.c
@@ -22,6 +22,8 @@
#include "plugin.h"
+INFO("multiply of two images")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using multiply as effect does nothing!\n");
diff --git a/Plugins/multiply.dll b/Plugins/multiply.dll
index be177db..437ef5d 100644
--- a/Plugins/multiply.dll
+++ b/Plugins/multiply.dll
Binary files differ
diff --git a/Plugins/noize.c b/Plugins/noize.c
index d6d2b3a..148fc3c 100644
--- a/Plugins/noize.c
+++ b/Plugins/noize.c
@@ -1,6 +1,8 @@
#include <stdio.h>
#include "plugin.h"
+INFO("turn some random bits")
+
void perform_effect(struct frame f, struct args a)
{
int i,o,x,y;
diff --git a/Plugins/noize.dll b/Plugins/noize.dll
index b761095..9d88d4b 100644
--- a/Plugins/noize.dll
+++ b/Plugins/noize.dll
Binary files differ
diff --git a/Plugins/overlay.c b/Plugins/overlay.c
index 99ab68e..5e23635 100644
--- a/Plugins/overlay.c
+++ b/Plugins/overlay.c
@@ -23,6 +23,8 @@
#include <stdlib.h>
#include "plugin.h"
+INFO("overlay of two images")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using overlay as effect does nothing!\n");
diff --git a/Plugins/overlay.dll b/Plugins/overlay.dll
index fc6771e..b613798 100644
--- a/Plugins/overlay.dll
+++ b/Plugins/overlay.dll
Binary files differ
diff --git a/Plugins/ping.c b/Plugins/ping.c
new file mode 100644
index 0000000..376a19d
--- /dev/null
+++ b/Plugins/ping.c
@@ -0,0 +1,13 @@
+#include "plugin.h"
+
+INFO("ask fs.frame to bang the receive given as 1st argument")
+
+// can be used at the end of a processing chain to inform when the processing is done.
+// very useful.
+
+void perform_effect(_frame f, _args a)
+{
+ if(!a.s) return;
+
+ sprintf(a.ret, "%s=0", a.s); // bang receive given in a.s
+}
diff --git a/Plugins/ping.dll b/Plugins/ping.dll
new file mode 100644
index 0000000..db5a945
--- /dev/null
+++ b/Plugins/ping.dll
Binary files differ
diff --git a/Plugins/plot.cpp b/Plugins/plot.cpp
index 67c264c..ae53c05 100644
--- a/Plugins/plot.cpp
+++ b/Plugins/plot.cpp
@@ -4,8 +4,10 @@
#include "plugin.h"
#include "pixels.h"
+INFO("plot pixel to vframe")
+
// plot exists to provide plotting to vframe - much faster than
-// plot with fs.draw which goes thru network.
+// plot with fs.draw which goes thru TCP/IP.
void perform_effect(_frame f, _args a)
{
diff --git a/Plugins/plot.dll b/Plugins/plot.dll
index 93cff6a..28e85dc 100644
--- a/Plugins/plot.dll
+++ b/Plugins/plot.dll
Binary files differ
diff --git a/Plugins/rene.c b/Plugins/rene.c
index d8e6082..2885f47 100644
--- a/Plugins/rene.c
+++ b/Plugins/rene.c
@@ -16,6 +16,8 @@
#include <string.h>
#include "plugin.h"
+INFO("242.rene -- does 3-source chroma keying with transparency")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using keyscreen as effect does nothing!\n");
diff --git a/Plugins/rene.dll b/Plugins/rene.dll
index d5fb95b..f424b39 100644
--- a/Plugins/rene.dll
+++ b/Plugins/rene.dll
Binary files differ
diff --git a/Plugins/rgb.dll b/Plugins/rgb.dll
index 76e18b7..cd5b0dc 100644
--- a/Plugins/rgb.dll
+++ b/Plugins/rgb.dll
Binary files differ
diff --git a/Plugins/rgbavg.c b/Plugins/rgbavg.c
index c903ab1..f9459f6 100644
--- a/Plugins/rgbavg.c
+++ b/Plugins/rgbavg.c
@@ -14,6 +14,8 @@
#include <math.h>
#include "plugin.h"
+INFO("242.rgbavg -- does funky pixel averaging on an input image")
+
#pragma warning( disable : 4761 ) // that's why it's funky !!
void perform_effect(struct frame f, struct args a)
diff --git a/Plugins/rgbavg.dll b/Plugins/rgbavg.dll
index 8b5fe70..ab925ae 100644
--- a/Plugins/rgbavg.dll
+++ b/Plugins/rgbavg.dll
Binary files differ
diff --git a/Plugins/rgbavg02.c b/Plugins/rgbavg02.c
index 5fc773e..adb26cf 100644
--- a/Plugins/rgbavg02.c
+++ b/Plugins/rgbavg02.c
@@ -14,6 +14,8 @@
#include <math.h>
#include "plugin.h"
+INFO("242.rgbavg02 -- does 2-source funky pixel averaging")
+
#pragma warning( disable : 4761 ) // that's why it's funky !!
void perform_effect(struct frame f1, struct frame f2, struct args a)
diff --git a/Plugins/rgbavg02.dll b/Plugins/rgbavg02.dll
index 274d69f..6d19154 100644
--- a/Plugins/rgbavg02.dll
+++ b/Plugins/rgbavg02.dll
Binary files differ
diff --git a/Plugins/rgbcopy.cpp b/Plugins/rgbcopy.cpp
index b226e23..285f188 100644
--- a/Plugins/rgbcopy.cpp
+++ b/Plugins/rgbcopy.cpp
@@ -3,6 +3,8 @@
#include "plugin.h"
#include "pixels.h"
+INFO("mix color components of two images. usage: rgbcopy RG red/green from first, blue from second image")
+
void perform_copy(_frame f1, _frame f2, _args a)
{
pixels p1(f1), p2(f2);
diff --git a/Plugins/rgbcopy.dll b/Plugins/rgbcopy.dll
index 1a995d3..925bbee 100644
--- a/Plugins/rgbcopy.dll
+++ b/Plugins/rgbcopy.dll
Binary files differ
diff --git a/Plugins/rgbseek.c b/Plugins/rgbseek.c
index cf53aa5..822af9c 100644
--- a/Plugins/rgbseek.c
+++ b/Plugins/rgbseek.c
@@ -15,6 +15,8 @@
#include <string.h>
#include "plugin.h"
+INFO("242.rgbseek -- does binary color recognition on an input image")
+
void perform_effect(struct frame f, struct args a)
{
int x,y;
diff --git a/Plugins/rgbseek.dll b/Plugins/rgbseek.dll
index 151b10c..a81717c 100644
--- a/Plugins/rgbseek.dll
+++ b/Plugins/rgbseek.dll
Binary files differ
diff --git a/Plugins/rowca.cpp b/Plugins/rowca.cpp
index de83933..f114f7f 100644
--- a/Plugins/rowca.cpp
+++ b/Plugins/rowca.cpp
@@ -1,5 +1,5 @@
/*
- One dimensional cellular automata, where each iteration
+ Row cellular automata, where each iteration
adds a new row.
Each cell has three neighbourns, top left, top and top right,
@@ -33,6 +33,8 @@
#include "plugin.h"
#include "pixels.h"
+INFO("Row cellular automata, where each iteration adds a new row")
+
using namespace std;
vector<string> sv;
diff --git a/Plugins/rowca.dll b/Plugins/rowca.dll
index 5302341..1be1434 100644
--- a/Plugins/rowca.dll
+++ b/Plugins/rowca.dll
Binary files differ
diff --git a/Plugins/screen.c b/Plugins/screen.c
index 76fd6bd..529b1c1 100644
--- a/Plugins/screen.c
+++ b/Plugins/screen.c
@@ -23,6 +23,8 @@
#include <stdlib.h>
#include "plugin.h"
+INFO("screen of two images")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using screen as effect does nothing!\n");
diff --git a/Plugins/screen.dll b/Plugins/screen.dll
index 5b6f3c6..5be8da9 100644
--- a/Plugins/screen.dll
+++ b/Plugins/screen.dll
Binary files differ
diff --git a/Plugins/setbits.c b/Plugins/setbits.c
index dddc5eb..e9e2931 100644
--- a/Plugins/setbits.c
+++ b/Plugins/setbits.c
@@ -1,6 +1,8 @@
#include <stdlib.h>
#include "plugin.h"
+INFO("set image data to a given value")
+
void perform_effect(_frame f, _args a)
{
unsigned char c;
diff --git a/Plugins/setbits.dll b/Plugins/setbits.dll
index 9a772ab..38247eb 100644
--- a/Plugins/setbits.dll
+++ b/Plugins/setbits.dll
Binary files differ
diff --git a/Plugins/shadowcaster.c b/Plugins/shadowcaster.c
index 0411c79..0494449 100644
--- a/Plugins/shadowcaster.c
+++ b/Plugins/shadowcaster.c
@@ -26,6 +26,8 @@
#include "plugin.h"
#include "tools.h"
+INFO("porduce a cutout with shadow.")
+
#define MAX_SHADOW 128 /* maximum shadow width in px */
void perform_effect(struct frame f, struct args a)
diff --git a/Plugins/shadowcaster.dll b/Plugins/shadowcaster.dll
index 7e2137d..b83d255 100644
--- a/Plugins/shadowcaster.dll
+++ b/Plugins/shadowcaster.dll
Binary files differ
diff --git a/Plugins/shuffle.dll b/Plugins/shuffle.dll
index d46d5aa..ce54039 100644
--- a/Plugins/shuffle.dll
+++ b/Plugins/shuffle.dll
Binary files differ
diff --git a/Plugins/softlight.c b/Plugins/softlight.c
index 90dc4b0..0275d09 100644
--- a/Plugins/softlight.c
+++ b/Plugins/softlight.c
@@ -24,6 +24,8 @@
#include "plugin.h"
#include "tools.h"
+INFO("softlight overlay of two images")
+
void perform_effect(struct frame f, struct args a)
{
printf("Using softlight as effect does nothing!\n");
diff --git a/Plugins/softlight.dll b/Plugins/softlight.dll
index 3eeb131..682d55c 100644
--- a/Plugins/softlight.dll
+++ b/Plugins/softlight.dll
Binary files differ
diff --git a/Plugins/sonogram.dll b/Plugins/sonogram.dll
index 2615d14..b187365 100644
--- a/Plugins/sonogram.dll
+++ b/Plugins/sonogram.dll
Binary files differ
diff --git a/Plugins/subtract.dll b/Plugins/subtract.dll
index 4bab85c..c7214b4 100644
--- a/Plugins/subtract.dll
+++ b/Plugins/subtract.dll
Binary files differ
diff --git a/Plugins/swap.cpp b/Plugins/swap.cpp
index d1389f4..28baceb 100644
--- a/Plugins/swap.cpp
+++ b/Plugins/swap.cpp
@@ -4,8 +4,7 @@
#include "plugin.h"
#include "pixels.h"
-// swap selected area on two images
-// args: swap sourcex1 sourcey1 sourcex2 sourcey2 destx desty
+INFO("swap selected area on two images. usage: swap sourcex1 sourcey1 sourcex2 sourcey2 destx desty")
// (the selection is of equal size on both images)
void swapint(int *a, int *b)
diff --git a/Plugins/swap.dll b/Plugins/swap.dll
index ee04f4c..8fc8af2 100644
--- a/Plugins/swap.dll
+++ b/Plugins/swap.dll
Binary files differ
diff --git a/Plugins/tile.dll b/Plugins/tile.dll
index 7d7e565..e8b552e 100644
--- a/Plugins/tile.dll
+++ b/Plugins/tile.dll
Binary files differ
diff --git a/Plugins/traffic.c b/Plugins/traffic.c
index be2dbba..9ff8bf0 100644
--- a/Plugins/traffic.c
+++ b/Plugins/traffic.c
@@ -13,6 +13,8 @@
#include <stdlib.h>
#include "plugin.h"
+INFO("242.traffic -- does tristimulus matrix operations on an input image")
+
// tristimulus product used for matrix conversions
static void tristimulus_product(float *matrix, byte *input, byte *output)
diff --git a/Plugins/traffic.dll b/Plugins/traffic.dll
index f6bacce..cee2102 100644
--- a/Plugins/traffic.dll
+++ b/Plugins/traffic.dll
Binary files differ
diff --git a/Plugins/vf2fs.c b/Plugins/vf2fs.c
index 32181eb..31460f1 100644
--- a/Plugins/vf2fs.c
+++ b/Plugins/vf2fs.c
@@ -11,6 +11,8 @@
#include "sharemem.h"
#include "vframe.h"
+INFO("display vframe contents, used automatically by fs.frame")
+
void perform_effect(_frame f, _args a)
{
HANDLE hlvframe=NULL, hl=NULL;
diff --git a/Plugins/vf2fs.dll b/Plugins/vf2fs.dll
index d51abad..c2a6ba8 100644
--- a/Plugins/vf2fs.dll
+++ b/Plugins/vf2fs.dll
Binary files differ
diff --git a/Plugins/xbend.c b/Plugins/xbend.c
index 1ba9959..f84335b 100644
--- a/Plugins/xbend.c
+++ b/Plugins/xbend.c
@@ -2,6 +2,8 @@
#include <string.h>
#include "plugin.h"
+INFO("horizontal bend. usage: xbend <from> <to>")
+
void perform_effect(_frame f, _args a)
{
byte pixelsize = f.pixelformat/8;
diff --git a/Plugins/xbend.dll b/Plugins/xbend.dll
index a482dfa..f5bee98 100644
--- a/Plugins/xbend.dll
+++ b/Plugins/xbend.dll
Binary files differ
diff --git a/Plugins/xshred.c b/Plugins/xshred.c
index 6918e50..4b0517b 100644
--- a/Plugins/xshred.c
+++ b/Plugins/xshred.c
@@ -1,6 +1,8 @@
#include <stdlib.h>
#include "plugin.h"
+INFO("horizontal shredding. usage: xshred <step>")
+
void perform_copy(_frame f1, _frame f2, _args a)
{
int step, w, h, y, pixelsize=f1.pixelformat/8;
diff --git a/Plugins/xshred.dll b/Plugins/xshred.dll
index 9ddf030..6df6bd7 100644
--- a/Plugins/xshred.dll
+++ b/Plugins/xshred.dll
Binary files differ
diff --git a/toolbar.txt b/toolbar.txt
new file mode 100644
index 0000000..aa3886d
--- /dev/null
+++ b/toolbar.txt
@@ -0,0 +1,23 @@
+fs.main;fs.main: connect Pd and Framestein
+
+fs.frame;fs.frame: Load, display and process images and video
+fs.framed;fs.framed: a docked version of fs.frame
+fs.copy;fs.copy: Perform operations on two fs.frames
+fs.fx;fs.fx: image effects
+fs.blend;fs.blend: Blend two images
+fs.mask;fs.mask: Copy frame to another using a mask
+fs.layermode;fs.layermode: Mix two images with difference layer mode
+
+fs.draw;fs.draw: Draw lines and rectangles
+fs.text;fs.text: Insert text
+
+fs.info;fs.info: Get info on fs.frame, such as width, height, framecount, ...
+fs.event;fs.event: Get mouse and drag & drop information from fs.frame
+fs.rgb;fs.rgb: Get red, green and blue of a pixel
+fs.hist;fs.hist: Calculate image color intensities
+fs.sonogram;fs.sonogram: Show a graphical spectogram
+
+fs.browser;fs.browser: View webpages and convert them to images
+fs.waveform;fs.waveform: Display a waveform in fs.frame
+
+fs.grid;fs.grid: Easy to use XY-control