From 3bd43c9d18e565e193e555f9de0ce916f8faf807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juha=20Vehvil=C3=A4inen?= Date: Wed, 18 Sep 2002 16:32:27 +0000 Subject: *** empty log message *** svn path=/trunk/Framestein/; revision=132 --- Plugins/argument-passing.cpp | 18 ++++++++++++++++++ Plugins/argument-passing.dll | Bin 0 -> 40960 bytes Plugins/argument-passing.exp | Bin 0 -> 662 bytes Plugins/argument-passing.lib | Bin 0 -> 2200 bytes Plugins/argument-passing.obj | Bin 0 -> 2854 bytes Plugins/makefile | 7 +++++-- Plugins/pixels.h | 30 ++++++++++++++++++++++++++++-- Plugins/rowca.cpp | 16 ++++++++++++---- Plugins/rowca.dll | Bin 110592 -> 110592 bytes Plugins/rowca.exp | Bin 619 -> 619 bytes Plugins/rowca.lib | Bin 2042 -> 2042 bytes Plugins/rowca.obj | Bin 57594 -> 61510 bytes Plugins/subtract.cpp | 31 +++++++++++++++++++++---------- Plugins/subtract.dll | Bin 28672 -> 40960 bytes Plugins/subtract.exp | Bin 630 -> 630 bytes Plugins/subtract.lib | Bin 2080 -> 2080 bytes Plugins/subtract.obj | Bin 1409 -> 5262 bytes 17 files changed, 84 insertions(+), 18 deletions(-) create mode 100644 Plugins/argument-passing.cpp create mode 100644 Plugins/argument-passing.dll create mode 100644 Plugins/argument-passing.exp create mode 100644 Plugins/argument-passing.lib create mode 100644 Plugins/argument-passing.obj (limited to 'Plugins') diff --git a/Plugins/argument-passing.cpp b/Plugins/argument-passing.cpp new file mode 100644 index 0000000..71ec33c --- /dev/null +++ b/Plugins/argument-passing.cpp @@ -0,0 +1,18 @@ +// +// example of passing arguments to plugin using the arguments-class (defined in pixels.h) +// + +#include "pixels.h" + +void perform_effect(_frame f, _args a) +{ + arguments ar(a.s); + + // + // ar.count() return the number of arguments + // ar[i] return i'th argument + // + + for(int i=0; i +#include "plugin.h" + class pixels { private: @@ -117,4 +118,29 @@ void pixels::updaterowp() p32 = (pixel32 *)p8; } +// +// arguments-class, to make it easier to parse parameters. +// using vector for this might be a bit overkill (??), +// but I like the ease of it. + +class arguments +{ +private: + std::vector m_ptrs; +public: + arguments(char *s) + { + char *t = s; + if(!t || !t[0]) return; + if(t[0]) m_ptrs.push_back(t); + while(t = strstr(t+1, " ")) + { + t[0]=0; + m_ptrs.push_back(t+1); + } + } + char *operator[](int i) { return m_ptrs[i]; } + int count() { return m_ptrs.size(); } +}; + #endif // #ifndef _PIXELSH diff --git a/Plugins/rowca.cpp b/Plugins/rowca.cpp index 5c776ac..de83933 100644 --- a/Plugins/rowca.cpp +++ b/Plugins/rowca.cpp @@ -42,11 +42,19 @@ void draw(const _frame &f); void perform_effect(_frame f, _args a) { - if(!a.s || !a.s[0]) return; + arguments ar(a.s); + if(!ar.count()) { + printf("Usage: rowca \n"); + printf("Example rule: 001-010-011-100\n"); + printf("Commands: draw, clear\n"); + return; + } + + char *t = ar[0]; - if(strstr(a.s, "0") || strstr(a.s, "1")) iterate(a.s); else - if(strcmp(a.s, "draw")==0) draw(f); else - if(strcmp(a.s, "clear")==0) sv.clear(); + if(strstr(t, "0") || strstr(t, "1")) iterate(t); else + if(strcmp(t, "draw")==0) draw(f); else + if(strcmp(t, "clear")==0) sv.clear(); } void iterate(const char *arg) diff --git a/Plugins/rowca.dll b/Plugins/rowca.dll index eda7177..5302341 100644 Binary files a/Plugins/rowca.dll and b/Plugins/rowca.dll differ diff --git a/Plugins/rowca.exp b/Plugins/rowca.exp index be126fa..9fcaa42 100644 Binary files a/Plugins/rowca.exp and b/Plugins/rowca.exp differ diff --git a/Plugins/rowca.lib b/Plugins/rowca.lib index 78df6e5..ce2557f 100644 Binary files a/Plugins/rowca.lib and b/Plugins/rowca.lib differ diff --git a/Plugins/rowca.obj b/Plugins/rowca.obj index c57f120..5ce3a87 100644 Binary files a/Plugins/rowca.obj and b/Plugins/rowca.obj differ diff --git a/Plugins/subtract.cpp b/Plugins/subtract.cpp index 89ba216..3172513 100644 --- a/Plugins/subtract.cpp +++ b/Plugins/subtract.cpp @@ -1,3 +1,9 @@ +// +// subtract - subtract red/green/blue color from image +// +// 0.32 +// using arguments-class +// // 0.20 // - from c to c++ // - pixelformat-aware @@ -9,30 +15,35 @@ void perform_effect(_frame f, _args a) { - pixels p(f); - char *t; - byte tr, tg, tb, r=0, g=0, b=0; - - if(!a.s) return; + arguments ar(a.s); - r = atoi(a.s); - if(t = strstr(a.s, " ")) + if(ar.count()!=3) { - g = atoi(t+1); - if (t = strstr(t+1, " ")) - b = atoi(t+1); + printf("usage: subtract \n"); + return; } + byte r, g, b; + + r = atoi(ar[0]); + g = atoi(ar[1]); + b = atoi(ar[2]); + + pixels p(f); + byte tr, tg, tb; + while(!p.eof()) { tr = p.red(); tg = p.green(); tb = p.blue(); + p.putrgb( tr>r ? tr-r : 0, tg>g ? tg-g : 0, tb>b ? tb-b : 0 ); + p.next(); } } diff --git a/Plugins/subtract.dll b/Plugins/subtract.dll index 883c541..65383b3 100644 Binary files a/Plugins/subtract.dll and b/Plugins/subtract.dll differ diff --git a/Plugins/subtract.exp b/Plugins/subtract.exp index 9a066ba..0c88e2c 100644 Binary files a/Plugins/subtract.exp and b/Plugins/subtract.exp differ diff --git a/Plugins/subtract.lib b/Plugins/subtract.lib index 5132561..ad174a2 100644 Binary files a/Plugins/subtract.lib and b/Plugins/subtract.lib differ diff --git a/Plugins/subtract.obj b/Plugins/subtract.obj index 8405ccc..bb9e9fa 100644 Binary files a/Plugins/subtract.obj and b/Plugins/subtract.obj differ -- cgit v1.2.1