remove unused rna includes
[blender.git] / source / blender / makesrna / intern / rna_material_api.c
1 /**
2  *
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) 2009 Blender Foundation.
21  * All rights reserved.
22  *
23  * 
24  * Contributor(s): Blender Foundation
25  *
26  * ***** END GPL LICENSE BLOCK *****
27  */
28
29 #include <stdlib.h>
30 #include <stdio.h>
31
32 #include "RNA_define.h"
33
34 #include "DNA_material_types.h"
35
36 #ifdef RNA_RUNTIME
37
38 #include "BKE_material.h"
39 #include "BKE_texture.h"
40
41 /*
42   Adds material to the first free texture slot.
43   If all slots are busy, replaces the first.
44 */
45 static void rna_Material_add_texture(Material *ma, Tex *tex, int mapto, int texco)
46 {
47         int i;
48         MTex *mtex;
49         int slot= -1;
50
51         for (i= 0; i < MAX_MTEX; i++) {
52                 if (!ma->mtex[i]) {
53                         slot= i;
54                         break;
55                 }
56         }
57         
58         if (slot == -1)
59                 slot= 0;
60         
61         if (ma->mtex[slot]) {
62                 ma->mtex[slot]->tex->id.us--;
63         }
64         else {
65                 ma->mtex[slot]= add_mtex();
66         }
67
68         mtex= ma->mtex[slot];
69
70         mtex->tex= tex;
71         if (tex)
72                 id_us_plus(&tex->id);
73         
74         mtex->texco= mapto;
75         mtex->mapto= texco;
76 }
77
78 #else
79
80 void RNA_api_material(StructRNA *srna)
81 {
82         FunctionRNA *func;
83         PropertyRNA *parm;
84
85         /* copied from rna_def_material_mtex (rna_material.c) */
86         static EnumPropertyItem prop_texture_coordinates_items[] = {
87                 {TEXCO_GLOB, "GLOBAL", 0, "Global", "Uses global coordinates for the texture coordinates"},
88                 {TEXCO_OBJECT, "OBJECT", 0, "Object", "Uses linked object's coordinates for texture coordinates"},
89                 {TEXCO_UV, "UV", 0, "UV", "Uses UV coordinates for texture coordinates"},
90                 {TEXCO_ORCO, "ORCO", 0, "Generated", "Uses the original undeformed coordinates of the object"},
91                 {TEXCO_STRAND, "STRAND", 0, "Strand", "Uses normalized strand texture coordinate (1D)"},
92                 {TEXCO_STICKY, "STICKY", 0, "Sticky", "Uses mesh's sticky coordinates for the texture coordinates"},
93                 {TEXCO_WINDOW, "WINDOW", 0, "Window", "Uses screen coordinates as texture coordinates"},
94                 {TEXCO_NORM, "NORMAL", 0, "Normal", "Uses normal vector as texture coordinates"},
95                 {TEXCO_REFL, "REFLECTION", 0, "Reflection", "Uses reflection vector as texture coordinates"},
96                 {TEXCO_STRESS, "STRESS", 0, "Stress", "Uses the difference of edge lengths compared to original coordinates of the mesh"},
97                 {TEXCO_TANGENT, "TANGENT", 0, "Tangent", "Uses the optional tangent vector as texture coordinates"},
98
99                 {0, NULL, 0, NULL, NULL}};
100
101         static EnumPropertyItem prop_texture_mapto_items[] = {
102                 {MAP_COL, "COLOR", 0, "Color", "Causes the texture to affect basic color of the material"},
103                 {MAP_NORM, "NORMAL", 0, "Normal", "Causes the texture to affect the rendered normal"},
104                 {MAP_COLSPEC, "SPECULAR_COLOR", 0, "Specularity Color", "Causes the texture to affect the specularity color"},
105                 {MAP_COLMIR, "MIRROR", 0, "Mirror", "Causes the texture to affect the mirror color"},
106                 {MAP_REF, "REFLECTION", 0, "Reflection", "Causes the texture to affect the value of the materials reflectivity"},
107                 {MAP_SPEC, "SPECULARITY", 0, "Specularity", "Causes the texture to affect the value of specularity"},
108                 {MAP_EMIT, "EMIT", 0, "Emit", "Causes the texture to affect the emit value"},
109                 {MAP_ALPHA, "ALPHA", 0, "Alpha", "Causes the texture to affect the alpha value"},
110                 {MAP_HAR, "HARDNESS", 0, "Hardness", "Causes the texture to affect the hardness value"},
111                 {MAP_RAYMIRR, "RAY_MIRROR", 0, "Ray-Mirror", "Causes the texture to affect the ray-mirror value"},
112                 {MAP_TRANSLU, "TRANSLUCENCY", 0, "Translucency", "Causes the texture to affect the translucency value"},
113                 {MAP_AMB, "AMBIENT", 0, "Ambient", "Causes the texture to affect the value of ambient"},
114                 {MAP_DISPLACE, "DISPLACEMENT", 0, "Displacement", "Let the texture displace the surface"},
115                 {MAP_WARP, "WARP", 0, "Warp", "Let the texture warp texture coordinates of next channels"},
116                 {0, NULL, 0, NULL, NULL}};
117
118         func= RNA_def_function(srna, "add_texture", "rna_Material_add_texture");
119         RNA_def_function_ui_description(func, "Add a texture to material's free texture slot.");
120         parm= RNA_def_pointer(func, "texture", "Texture", "Texture", "Texture to add."); 
121         RNA_def_property_flag(parm, PROP_REQUIRED);
122         parm= RNA_def_enum(func, "texture_coordinates", prop_texture_coordinates_items, TEXCO_UV, "", "Source of texture coordinate information."); /* optional */
123         parm= RNA_def_enum(func, "map_to", prop_texture_mapto_items, MAP_COL, "", "Controls which material property the texture affects."); /* optional */
124 }
125
126 #endif
127