use set as a suffix (matches operators)
[blender.git] / source / blender / blenkernel / BKE_material.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL 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.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  * General operations, lookup, etc. for materials.
29  */
30
31 #ifndef BKE_MATERIAL_H
32 #define BKE_MATERIAL_H
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 struct Main;
39 struct Material;
40 struct ID;
41 struct Object;
42
43 /* materials */
44
45 void init_def_material(void);
46 void free_material(struct Material *sc); 
47 void test_object_materials(struct ID *id);
48 void init_material(struct Material *ma);
49 struct Material *add_material(char *name);
50 struct Material *copy_material(struct Material *ma);
51 struct Material *give_node_material(struct Material *ma); /* returns node material or self */
52 void make_local_material(struct Material *ma);
53
54 void automatname(struct Material *);
55
56 /* material slots */
57
58 struct Material ***give_matarar(struct Object *ob);
59 short *give_totcolp(struct Object *ob);
60 struct Material ***give_matarar_id(struct ID *id); /* same but for ID's */
61 short *give_totcolp_id(struct ID *id);
62
63 struct Material *give_current_material(struct Object *ob, int act);
64 struct ID *material_from(struct Object *ob, int act);
65 void assign_material(struct Object *ob, struct Material *ma, int act);
66 void assign_matarar(struct Object *ob, struct Material ***matar, int totcol);
67
68 int find_material_index(struct Object *ob, struct Material *ma);
69
70 int object_add_material_slot(struct Object *ob);
71 int object_remove_material_slot(struct Object *ob);
72
73 /* rna api */
74 void material_append_id(struct ID *id, struct Material *ma);
75 struct Material *material_pop_id(struct ID *id, int index);
76
77 /* rendering */
78
79 void init_render_material(struct Material *, int, float *);
80 void init_render_materials(struct Main *, int, float *);
81 void end_render_material(struct Material *);
82 void end_render_materials(struct Main *);
83
84 int material_in_material(struct Material *parmat, struct Material *mat);
85
86 void ramp_blend(int type, float *r, float *g, float *b, float fac, float *col);
87
88 /* copy/paste */
89 void clear_matcopybuf(void);
90 void free_matcopybuf(void);
91 void copy_matcopybuf(struct Material *ma);
92 void paste_matcopybuf(struct Material *ma);
93
94 void clear_mat_mtex_copybuf(void);
95 void copy_mat_mtex_copybuf(struct ID *id);
96 void paste_mat_mtex_copybuf(struct ID *id);
97
98 #ifdef __cplusplus
99 }
100 #endif
101
102 #endif
103