aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Visualization/vis_avs/ape.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/Visualization/vis_avs/ape.h')
-rw-r--r--Src/Plugins/Visualization/vis_avs/ape.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/Src/Plugins/Visualization/vis_avs/ape.h b/Src/Plugins/Visualization/vis_avs/ape.h
new file mode 100644
index 00000000..b4bb6483
--- /dev/null
+++ b/Src/Plugins/Visualization/vis_avs/ape.h
@@ -0,0 +1,96 @@
+/*
+ LICENSE
+ -------
+Copyright 2005 Nullsoft, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of Nullsoft nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*/
+
+#ifndef _APE_H_
+#define _APE_H_
+
+
+//extended APE stuff
+
+// to use this, you should have:
+// APEinfo *g_extinfo;
+// void __declspec(dllexport) AVS_APE_SetExtInfo(HINSTANCE hDllInstance, APEinfo *ptr)
+// {
+// g_extinfo = ptr;
+// }
+
+typedef void *VM_CONTEXT;
+typedef void *VM_CODEHANDLE;
+typedef struct
+{
+ int ver; // ver=1 to start
+ double *global_registers; // 100 of these
+
+ // lineblendmode: 0xbbccdd
+ // bb is line width (minimum 1)
+ // dd is blend mode:
+ // 0=replace
+ // 1=add
+ // 2=max
+ // 3=avg
+ // 4=subtractive (1-2)
+ // 5=subtractive (2-1)
+ // 6=multiplicative
+ // 7=adjustable (cc=blend ratio)
+ // 8=xor
+ // 9=minimum
+ int *lineblendmode;
+
+ //evallib interface
+ VM_CONTEXT (*allocVM)(); // return a handle
+ void (*freeVM)(VM_CONTEXT); // free when done with a VM and ALL of its code have been freed, as well
+
+ // you should only use these when no code handles are around (i.e. it's okay to use these before
+ // compiling code, or right before you are going to recompile your code.
+ void (*resetVM)(VM_CONTEXT);
+ double * (*regVMvariable)(VM_CONTEXT, const char *name);
+
+ // compile code to a handle
+ VM_CODEHANDLE (*compileVMcode)(VM_CONTEXT, char *code);
+
+ // execute code from a handle
+ void (*executeCode)(VM_CODEHANDLE, char visdata[2][2][576]);
+
+ // free a code block
+ void (*freeCode)(VM_CODEHANDLE);
+
+ // requires ver >= 2
+ void (*doscripthelp)(HWND hwndDlg,char *mytext); // mytext can be NULL for no custom page
+
+ /// requires ver >= 3
+ void *(*getNbuffer)(int w, int h, int n, int do_alloc); // do_alloc should be 0 if you dont want it to allocate if empty
+ // w and h should be the current width and height
+ // n should be 0-7
+
+} APEinfo;
+
+
+
+#endif//_APE_H_ \ No newline at end of file