Final merge of HEAD (bf-blender) into the orange branch.
[blender.git] / source / blender / include / BIF_previewrender.h
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 "DNA_vec_types.h"
34
35 struct SpaceButs;
36 struct RenderInfo;
37 struct Image;
38 struct ScrArea;
39 struct uiBlock;
40 struct Render;
41
42 #define PREVIEW_RENDERSIZE 140
43
44 typedef void (*VectorDrawFunc)(int x, int y, int w, int h, float alpha);
45
46 /* stores rendered preview  - is also used for icons */
47 typedef struct RenderInfo {
48         int pr_rectx;
49         int pr_recty;
50         short cury, status;
51         rcti disprect;                  /* storage for view3d preview rect */
52         unsigned int* rect;             
53         struct Render *re;              /* persistant render */
54 } RenderInfo;
55
56 /* ri->status */
57 #define PR_DBASE                        1
58 #define PR_DISPRECT                     2
59 #define PR_PROJECTED            4
60 #define PR_ROTATED                      8
61
62 /* Render the preview
63
64 pr_method:
65 - PR_DRAW_RENDER: preview is rendered and drawn, as indicated by called context (buttons panel)
66 - PR_ICON_RENDER: the preview is not drawn and the function is not dynamic,
67   so no events are processed. Hopefully fast enough for at least 32x32 
68 - PR_DO_RENDER: preview is rendered, not drawn, but events are processed for afterqueue,
69   in use for node editor now.
70 */
71
72 #define PR_DRAW_RENDER  0
73 #define PR_ICON_RENDER  1
74 #define PR_DO_RENDER    2
75
76 void    BIF_previewrender               (struct ID *id, struct RenderInfo *ri, struct ScrArea *area, int pr_method);
77 void    BIF_previewrender_buts  (struct SpaceButs *sbuts);
78 void    BIF_previewdraw                 (struct ScrArea *sa, struct uiBlock *block);
79 void    BIF_preview_changed             (short id_code);
80
81 void    BIF_preview_init_dbase  (void);
82 void    BIF_preview_free_dbase  (void);
83
84 void    BIF_view3d_previewrender(struct ScrArea *sa);
85 void    BIF_view3d_previewdraw  (struct ScrArea *sa, struct uiBlock *block);
86 void    BIF_view3d_previewrender_free(struct ScrArea *sa);
87 void    BIF_view3d_previewrender_clear(struct ScrArea *sa);
88 void    BIF_view3d_previewrender_signal(struct ScrArea *sa, short signal);