Bugfix #5394
[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 <stdio.h>
34 #include "plugin.h"
35
36 /* ******************** GLOBAL VARIABLES ***************** */
37
38
39 char name[24]= "showzbuf";
40
41 /* structure for buttons, 
42  *  butcode      name           default  min  max  0
43  */
44
45 VarStruct varstr[]= {
46         {NUMSLI|FLO,    "width ",               1.0,    0.0, 10.0, "This button is obsolete!"}
47 };
48
49 /* The cast struct is for input in the main doit function
50    Varstr and Cast must have the same variables in the same order */ 
51
52 typedef struct Cast {
53         float width;
54 } Cast;
55
56 /* cfra: the current frame */
57
58 float cfra;
59
60 void plugin_seq_doit(Cast *, float, float, int, int, ImBuf *, ImBuf *, ImBuf *, ImBuf *);
61
62 /* ******************** Fixed functions ***************** */
63
64 int plugin_seq_getversion(void) 
65 {
66         return B_PLUGIN_VERSION;
67 }
68
69 void plugin_but_changed(int but) 
70 {
71 }
72
73 void plugin_init()
74 {
75 }
76
77 void plugin_getinfo(PluginInfo *info)
78 {
79         info->name= name;
80         info->nvars= sizeof(varstr)/sizeof(VarStruct);
81         info->cfra= &cfra;
82
83         info->varstr= varstr;
84
85         info->init= plugin_init;
86         info->seq_doit= (SeqDoit) plugin_seq_doit;
87         info->callback= plugin_but_changed;
88 }
89
90 /* ************************************************************
91         Show Zbuffer
92         
93         Demonstration of usage of the 32 bits zbuffer input.
94         remember: z-values are not linear...
95         
96         Z values are only displayed when the input is a Scene-strip
97         or when images were saved in IRIZ format.
98         
99    ************************************************************ */
100
101
102 void plugin_seq_doit(Cast *cast, float facf0, float facf1, int sx, int sy, ImBuf *ibuf1, ImBuf *ibuf2, ImBuf *out, ImBuf *use)
103 {
104         int a;
105         int *rectz;     
106         char *rectc;
107         
108         if(ibuf1) {
109                 if(ibuf1->zbuf==0) {
110                         printf("no zbuf\n");
111                         return;
112                 }
113                 
114                 a= ibuf1->x*ibuf1->y;
115                 rectz= ibuf1->zbuf;
116                 rectc= (char *)out->rect;
117                 
118                 while(a--) {
119                         rectc[0]= 255;
120                         rectc[1]= rectc[2]= rectc[3]= (rectz[0]>>18);
121                         rectc+= 4;
122                         rectz++;
123                 }
124         }
125
126 }
127