Merge branch 'blender-v2.81-release'
[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 MTex;
35 struct Main;
36 struct ParticleSettings;
37 struct PointDensity;
38 struct Tex;
39 struct TexMapping;
40 struct TexResult;
41
42 /*  in ColorBand struct */
43 #define MAXCOLORBAND 32
44
45 void BKE_texture_free(struct Tex *tex);
46 void BKE_texture_default(struct Tex *tex);
47 void BKE_texture_copy_data(struct Main *bmain,
48                            struct Tex *tex_dst,
49                            const struct Tex *tex_src,
50                            const int flag);
51 struct Tex *BKE_texture_copy(struct Main *bmain, const struct Tex *tex);
52 struct Tex *BKE_texture_add(struct Main *bmain, const char *name);
53 struct Tex *BKE_texture_localize(struct Tex *tex);
54 void BKE_texture_make_local(struct Main *bmain, struct Tex *tex, const bool lib_local);
55 void BKE_texture_type_set(struct Tex *tex, int type);
56
57 void BKE_texture_mtex_default(struct MTex *mtex);
58 struct MTex *BKE_texture_mtex_add(void);
59 struct MTex *BKE_texture_mtex_add_id(struct ID *id, int slot);
60 /* UNUSED */
61 // void autotexname(struct Tex *tex);
62
63 struct Tex *give_current_linestyle_texture(struct FreestyleLineStyle *linestyle);
64 struct Tex *give_current_brush_texture(struct Brush *br);
65 struct Tex *give_current_particle_texture(struct ParticleSettings *part);
66
67 bool give_active_mtex(struct ID *id, struct MTex ***mtex_ar, short *act);
68 void set_active_mtex(struct ID *id, short act);
69
70 void set_current_brush_texture(struct Brush *br, struct Tex *tex);
71 void set_current_linestyle_texture(struct FreestyleLineStyle *linestyle, struct Tex *tex);
72 void set_current_particle_texture(struct ParticleSettings *part, struct Tex *tex);
73
74 struct TexMapping *BKE_texture_mapping_add(int type);
75 void BKE_texture_mapping_default(struct TexMapping *texmap, int type);
76 void BKE_texture_mapping_init(struct TexMapping *texmap);
77
78 struct ColorMapping *BKE_texture_colormapping_add(void);
79 void BKE_texture_colormapping_default(struct ColorMapping *colormap);
80
81 void BKE_texture_pointdensity_init_data(struct PointDensity *pd);
82 void BKE_texture_pointdensity_free_data(struct PointDensity *pd);
83 void BKE_texture_pointdensity_free(struct PointDensity *pd);
84 struct PointDensity *BKE_texture_pointdensity_add(void);
85 struct PointDensity *BKE_texture_pointdensity_copy(const struct PointDensity *pd, const int flag);
86
87 bool BKE_texture_dependsOnTime(const struct Tex *texture);
88 bool BKE_texture_is_image_user(const struct Tex *tex);
89
90 void BKE_texture_get_value_ex(const struct Scene *scene,
91                               struct Tex *texture,
92                               float *tex_co,
93                               struct TexResult *texres,
94                               struct ImagePool *pool,
95                               bool use_color_management);
96
97 void BKE_texture_get_value(const struct Scene *scene,
98                            struct Tex *texture,
99                            float *tex_co,
100                            struct TexResult *texres,
101                            bool use_color_management);
102
103 void BKE_texture_fetch_images_for_pool(struct Tex *texture, struct ImagePool *pool);
104
105 #ifdef __cplusplus
106 }
107 #endif
108
109 #endif