/* texture.h * by Will Wagner * last updated 11 Aug 1997, 22:27:51 wwagner * * This file contains data structures for POVRay textures. * * Changes * 11 Aug 1997 * - Added this comment block. * * Things to do * */ #ifndef __INC_TEXTURE_H__ #define __INC_TEXTURE_H__ #include "frame.h" #include "image.h" class BlendMap { private: short number_of_entries, transparency_flag, type; long users; BlendMap *entries; }; class Warp { private: unsigned short warp_type; Warp *next_warp; }; class Turb : public Warp { private: pov_vector turbulence; int octaves; SNGL lambda, omega; }; class Pattern { private: unsigned short type, wave_type, flags; int references; SNGL frequency, phase; Warp *warps; Pattern *next; union { Image *image; pov_vector gradient; SNGL agate_turb_scale; short num_of_waves; short iterations; short arms; struct { SNGL mortar; pov_vector size; } brick; struct { SNGL control0, control1; } quilted; } vals; }; class Pigment : public Pattern { private: pov_vector color; }; class TNormal : public Pattern { private: SNGL amount; }; class Finish { private: SNGL diffuse, brilliance, ior; SNGL refraction, specular, roughness, phong, phong_size; SNGL irid, irid_film_thickness, irid_turb; SNGL crand, metallic, caustics; SNGL fade_distance, fade_power; RGB ambient, reflection; }; class Halo { private: char type, flags, dust_type, mapping_type, rendering_type; Turb *turb; BlendMap *blend_map; Transformation *trans, *container_trans; DBL max_value, exponent, eccentricity, samples, jitter; int aa_level; DBL aa_threshold, frequency, phase; Halo *next_halo; }; class Texture : public Pattern { private: Pigment *pigment; TNormal *tnormal; Finish *finish; Halo *halo; Texture *materials; int num_of_mats; Texture *next; }; #endif /* __INC_TEXTURE_H__ */