Subversion Repositories filter_foundry

Rev

Rev 206 | Rev 268 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 206 Rev 259
Line 1... Line 1...
1
/*
1
/*
2
    This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
2
    This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
3
    Copyright (C) 2003-2009 Toby Thain, toby@telegraphics.com.au
3
    Copyright (C) 2003-2009 Toby Thain, toby@telegraphics.com.au
4
    Copyright (C) 2018-2021 Daniel Marschall, ViaThinkSoft
4
    Copyright (C) 2018-2021 Daniel Marschall, ViaThinkSoft
5
 
5
 
6
    This program is free software; you can redistribute it and/or modify
6
    This program is free software; you can redistribute it and/or modify
7
    it under the terms of the GNU General Public License as published by
7
    it under the terms of the GNU General Public License as published by
8
    the Free Software Foundation; either version 2 of the License, or
8
    the Free Software Foundation; either version 2 of the License, or
9
    (at your option) any later version.
9
    (at your option) any later version.
10
 
10
 
11
    This program is distributed in the hope that it will be useful,
11
    This program is distributed in the hope that it will be useful,
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
    GNU General Public License for more details.
14
    GNU General Public License for more details.
15
 
15
 
16
    You should have received a copy of the GNU General Public License
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
17
    along with this program; if not, write to the Free Software
18
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
*/
19
*/
20
 
20
 
21
#include <math.h>
21
#include <math.h>
22
 
22
 
23
 
23
 
24
#ifndef M_PI
24
#ifndef M_PI
25
        #define M_PI 3.14159265358979323846264338327
25
        #define M_PI 3.14159265358979323846264338327
26
#endif
26
#endif
27
 
27
 
28
 
28
 
29
#include "symtab.h"
29
#include "symtab.h"
30
 
30
 
31
enum{ COSTABSIZE=1024,TANTABSIZE=512 };
31
enum{ COSTABSIZE=1024,TANTABSIZE=512 };
32
 
32
 
33
void init_trigtab();
33
void init_trigtab();
34
 
34
 
35
extern double costab[],tantab[];
35
extern double costab[],tantab[];
36
 
36
 
37
#define DEG2RAD(x) ((x)*M_PI/180.)
37
#define DEG2RAD(x) ((x)*M_PI/180.)
38
#define RAD2DEG(x) ((x)*180./M_PI)
38
#define RAD2DEG(x) ((x)*180./M_PI)
39
 
39
 
40
/* [trig functions return] an integer between -512 and 512, inclusive (Windows)
40
/* [trig functions return] an integer between -512 and 512, inclusive (Windows)
41
        or -1024 and 1024, inclusive (Mac OS) */
41
        or -1024 and 1024, inclusive (Mac OS) */
42
#ifdef WIN_ENV
42
#ifdef WIN_ENV
43
#define TRIGAMP 512
43
#define TRIGAMP 512
44
#else
44
#else
45
#define TRIGAMP 1024
45
#define TRIGAMP 1024
46
#endif
46
#endif
47
#define FFANGLE(v) ((v)*M_PI/512.)
47
#define FFANGLE(v) ((v)*M_PI/512.)
48
#define TO_FFANGLE(v) ((v)*512./M_PI)
48
#define TO_FFANGLE(v) ((v)*512./M_PI)
49
 
49
 
50
#define INITRANDSEED() srand(691204)
50
#define INITRANDSEED() srand(691204)
51
 
51
 
52
value_type ff_src(value_type x,value_type y,value_type z);
52
value_type ff_src(value_type x,value_type y,value_type z);
53
value_type ff_rad(value_type d,value_type m,value_type z);
53
value_type ff_rad(value_type d,value_type m,value_type z);
54
value_type ff_ctl(value_type i);
54
value_type ff_ctl(value_type i);
55
value_type ff_val(value_type i,value_type a,value_type b);
55
value_type ff_val(value_type i,value_type a,value_type b);
56
value_type ff_map(value_type i,value_type n);
56
value_type ff_map(value_type i,value_type n);
57
value_type ff_min(value_type a,value_type b);
57
value_type ff_min(value_type a,value_type b);
58
value_type ff_max(value_type a,value_type b);
58
value_type ff_max(value_type a,value_type b);
59
value_type ff_abs(value_type a);
59
value_type ff_abs(value_type a);
60
value_type ff_add(value_type a,value_type b,value_type c);
60
value_type ff_add(value_type a,value_type b,value_type c);
61
value_type ff_sub(value_type a,value_type b,value_type c);
61
value_type ff_sub(value_type a,value_type b,value_type c);
62
value_type ff_dif(value_type a,value_type b);
62
value_type ff_dif(value_type a,value_type b);
63
value_type ff_rnd(value_type a,value_type b);
63
value_type ff_rnd(value_type a,value_type b);
64
value_type ff_mix(value_type a,value_type b,value_type n,value_type d);
64
value_type ff_mix(value_type a,value_type b,value_type n,value_type d);
65
value_type ff_scl(value_type a,value_type il,value_type ih,
65
value_type ff_scl(value_type a,value_type il,value_type ih,
66
                                  value_type ol,value_type oh);
66
                                  value_type ol,value_type oh);
67
value_type ff_sqr(value_type x);
67
value_type ff_sqr(value_type x);
68
value_type ff_sin(value_type x);
68
value_type ff_sin(value_type x);
69
value_type ff_cos(value_type x);
69
value_type ff_cos(value_type x);
70
value_type ff_tan(value_type x);
70
value_type ff_tan(value_type x);
71
value_type ff_r2x(value_type d,value_type m);
71
value_type ff_r2x(value_type d,value_type m);
72
value_type ff_r2y(value_type d,value_type m);
72
value_type ff_r2y(value_type d,value_type m);
73
value_type ff_c2d(value_type d, value_type m);
73
value_type ff_c2d(value_type d, value_type m);
74
value_type ff_c2d_negated(value_type d, value_type m); // not a function!
74
value_type ff_c2d_negated(value_type d, value_type m); // not a function!
75
value_type ff_c2m(value_type d,value_type m);
75
value_type ff_c2m(value_type d,value_type m);
76
value_type ff_get(value_type i);
76
value_type ff_get(value_type i);
77
value_type ff_put(value_type v,value_type i);
77
value_type ff_put(value_type v,value_type i);
78
value_type ff_cnv(value_type m11,value_type m12,value_type m13,
78
value_type ff_cnv(value_type m11,value_type m12,value_type m13,
79
                                  value_type m21,value_type m22,value_type m23,
79
                                  value_type m21,value_type m22,value_type m23,
80
                                  value_type m31,value_type m32,value_type m33,
80
                                  value_type m31,value_type m32,value_type m33,
81
                                  value_type d );
81
                                  value_type d );
82
value_type ff_rst(value_type seed);
82
value_type ff_rst(value_type seed);