Initial commit of the 'release' directory (splash screen/icon
[blender.git] / release / plugins / sequence / showzbuf.c
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32
33 #include "plugin.h"
34
35 /* ******************** GLOBAL VARIABLES ***************** */
36
37
38 char name[24]= "showzbuf";
39
40 /* structure for buttons, 
41  *  butcode      name           default  min  max  0
42  */
43
44 VarStruct varstr[]= {
45         {NUMSLI|FLO,    "width ",               1.0,    0.0, 10.0, "This button is obsolete!"}
46 };
47
48 /* The cast struct is for input in the main doit function
49    Varstr and Cast must have the same variables in the same order */ 
50
51 typedef struct Cast {
52         float width;
53 } Cast;
54
55 /* cfra: the current frame */
56
57 float cfra;
58
59 void plugin_seq_doit(Cast *, float, float, int, int, ImBuf *, ImBuf *, ImBuf *, ImBuf *);
60
61 /* ******************** Fixed functions ***************** */
62
63 int plugin_seq_getversion(void) 
64 {
65         return B_PLUGIN_VERSION;
66 }
67
68 void plugin_but_changed(int but) 
69 {
70 }
71
72 void plugin_init()
73 {
74 }
75
76 void plugin_getinfo(PluginInfo *info)
77 {
78         info->name= name;
79         info->nvars= sizeof(varstr)/sizeof(VarStruct);
80         info->cfra= &cfra;
81
82         info->varstr= varstr;
83
84         info->init= plugin_init;
85         info->seq_doit= (SeqDoit) plugin_seq_doit;
86         info->callback= plugin_but_changed;
87 }
88
89 /* ************************************************************
90         Show Zbuffer
91         
92         Demonstration of usage of the 32 bits zbuffer input.
93         remember: z-values are not linear...
94         
95         Z values are only displayed when the input is a Scene-strip
96         or when images were saved in IRIZ format.
97         
98    ************************************************************ */
99
100
101 void plugin_seq_doit(Cast *cast, float facf0, float facf1, int sx, int sy, ImBuf *ibuf1, ImBuf *ibuf2, ImBuf *out, ImBuf *use)
102 {
103         int a;
104         int *rectz;     
105         char *rectc;
106         
107         if(ibuf1) {
108                 if(ibuf1->zbuf==0) {
109                         printf("no zbuf\n");
110                         return;
111                 }
112                 
113                 a= ibuf1->x*ibuf1->y;
114                 rectz= ibuf1->zbuf;
115                 rectc= (char *)out->rect;
116                 
117                 while(a--) {
118                         rectc[0]= 255;
119                         rectc[1]= rectc[2]= rectc[3]= (rectz[0]>>18);
120                         rectc+= 4;
121                         rectz++;
122                 }
123         }
124
125 }
126