Fix T64842: crash rendering files with bevel curves
[blender.git] / source / blender / blenkernel / BKE_texture.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19 #ifndef __BKE_TEXTURE_H__
20 #define __BKE_TEXTURE_H__
21
22 /** \file
23  * \ingroup bke
24  */
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 struct Brush;
31 struct ColorBand;
32 struct FreestyleLineStyle;
33 struct ImagePool;
34 struct Light;
35 struct MTex;
36 struct Main;
37 struct Material;
38 struct ParticleSettings;
39 struct PointDensity;
40 struct Tex;
41 struct TexMapping;
42 struct TexResult;
43 struct World;
44 struct bNode;
45
46 /*  in ColorBand struct */
47 #define MAXCOLORBAND 32
48
49 void BKE_texture_free(struct Tex *tex);
50 void BKE_texture_default(struct Tex *tex);
51 void BKE_texture_copy_data(struct Main *bmain,
52                            struct Tex *tex_dst,
53                            const struct Tex *tex_src,
54                            const int flag);
55 struct Tex *BKE_texture_copy(struct Main *bmain, const struct Tex *tex);
56 struct Tex *BKE_texture_add(struct Main *bmain, const char *name);
57 struct Tex *BKE_texture_localize(struct Tex *tex);
58 void BKE_texture_make_local(struct Main *bmain, struct Tex *tex, const bool lib_local);
59 void BKE_texture_type_set(struct Tex *tex, int type);
60
61 void BKE_texture_mtex_default(struct MTex *mtex);
62 struct MTex *BKE_texture_mtex_add(void);
63 struct MTex *BKE_texture_mtex_add_id(struct ID *id, int slot);
64 /* UNUSED */
65 // void autotexname(struct Tex *tex);
66
67 struct Tex *give_current_linestyle_texture(struct FreestyleLineStyle *linestyle);
68 struct Tex *give_current_brush_texture(struct Brush *br);
69 struct Tex *give_current_particle_texture(struct ParticleSettings *part);
70
71 bool give_active_mtex(struct ID *id, struct MTex ***mtex_ar, short *act);
72 void set_active_mtex(struct ID *id, short act);
73
74 void set_current_brush_texture(struct Brush *br, struct Tex *tex);
75 void set_current_linestyle_texture(struct FreestyleLineStyle *linestyle, struct Tex *tex);
76 void set_current_particle_texture(struct ParticleSettings *part, struct Tex *tex);
77
78 struct TexMapping *BKE_texture_mapping_add(int type);
79 void BKE_texture_mapping_default(struct TexMapping *texmap, int type);
80 void BKE_texture_mapping_init(struct TexMapping *texmap);
81
82 struct ColorMapping *BKE_texture_colormapping_add(void);
83 void BKE_texture_colormapping_default(struct ColorMapping *colormap);
84
85 void BKE_texture_pointdensity_init_data(struct PointDensity *pd);
86 void BKE_texture_pointdensity_free_data(struct PointDensity *pd);
87 void BKE_texture_pointdensity_free(struct PointDensity *pd);
88 struct PointDensity *BKE_texture_pointdensity_add(void);
89 struct PointDensity *BKE_texture_pointdensity_copy(const struct PointDensity *pd, const int flag);
90
91 bool BKE_texture_dependsOnTime(const struct Tex *texture);
92 bool BKE_texture_is_image_user(const struct Tex *tex);
93
94 void BKE_texture_get_value_ex(const struct Scene *scene,
95                               struct Tex *texture,
96                               float *tex_co,
97                               struct TexResult *texres,
98                               struct ImagePool *pool,
99                               bool use_color_management);
100
101 void BKE_texture_get_value(const struct Scene *scene,
102                            struct Tex *texture,
103                            float *tex_co,
104                            struct TexResult *texres,
105                            bool use_color_management);
106
107 void BKE_texture_fetch_images_for_pool(struct Tex *texture, struct ImagePool *pool);
108
109 #ifdef __cplusplus
110 }
111 #endif
112
113 #endif