diff options
-rw-r--r-- | release/plugins/texture/clouds2.c | 6 | ||||
-rw-r--r-- | release/plugins/texture/tiles.c | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_plugin_types.h | 5 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/texture.c | 2 | ||||
-rw-r--r-- | source/blender/blenpluginapi/externdef.h | 5 | ||||
-rw-r--r-- | source/blender/blenpluginapi/iff.h | 64 | ||||
-rw-r--r-- | source/blender/blenpluginapi/plugin.h | 19 | ||||
-rw-r--r-- | source/blender/render/intern/source/texture.c | 47 |
8 files changed, 93 insertions, 59 deletions
diff --git a/release/plugins/texture/clouds2.c b/release/plugins/texture/clouds2.c index ff6a691adcb..1e7296e69c2 100644 --- a/release/plugins/texture/clouds2.c +++ b/release/plugins/texture/clouds2.c @@ -73,7 +73,7 @@ float result[8]; float cfra; -int plugin_tex_doit(int, Cast*, float*, float*, float*); +int plugin_tex_doit(int, Cast*, float*, float*, float*, float*); void plugin_instance_init(Cast*); /* ******************** Fixed functions ***************** */ @@ -114,7 +114,7 @@ void plugin_getinfo(PluginInfo *info) info->varstr= varstr; info->init= plugin_init; - info->tex_doit= (TexDoit) plugin_tex_doit; + info->tex_doit= (TexDoit) plugin_tex_doit; info->callback= plugin_but_changed; info->instance_init= (void (*)(void *)) plugin_instance_init; } @@ -122,7 +122,7 @@ void plugin_getinfo(PluginInfo *info) /* ********************* the texture ******************** */ -int plugin_tex_doit(int stype, Cast *cast, float *texvec, float *dxt, float *dyt) +int plugin_tex_doit(int stype, Cast *cast, float *texvec, float *dxt, float *dyt, float *result) { float val = 0.0; float a = 1.0; diff --git a/release/plugins/texture/tiles.c b/release/plugins/texture/tiles.c index d23ee037508..bc2bf3a8140 100644 --- a/release/plugins/texture/tiles.c +++ b/release/plugins/texture/tiles.c @@ -62,7 +62,7 @@ float result[8]; float cfra; -int plugin_tex_doit(int, Cast *, float *, float *, float *); +int plugin_tex_doit(int, Cast *, float *, float *, float *, float *); void plugin_instance_init(Cast*); /* ******************** Fixed functions ***************** */ @@ -150,7 +150,7 @@ float sample_wave(float freq, float coord, float pixsize) return retval; } -int plugin_tex_doit(int stype, Cast *cast, float *texvec, float *dxt, float *dyt) +int plugin_tex_doit(int stype, Cast *cast, float *texvec, float *dxt, float *dyt, float *result) { float xwave, ywave; diff --git a/source/blender/blenkernel/BKE_plugin_types.h b/source/blender/blenkernel/BKE_plugin_types.h index d6b91212d8f..fe5aafe5874 100644 --- a/source/blender/blenkernel/BKE_plugin_types.h +++ b/source/blender/blenkernel/BKE_plugin_types.h @@ -36,7 +36,8 @@ struct ImBuf; -typedef int (*TexDoit)(int, void*, float*, float*, float*); +typedef int (*TexDoitold)(int stype, void *cast, float *texvec, float *dxt, float *dyt); +typedef int (*TexDoit)(int stype, void *cast, float *texvec, float *dxt, float *dyt, float *result ); typedef void (*SeqDoit)(void*, float, float, int, int, struct ImBuf*, struct ImBuf*, struct ImBuf*, struct ImBuf*); @@ -60,7 +61,7 @@ typedef struct _PluginInfo { void (*init)(void); void (*callback)(int); - TexDoit tex_doit; + void (*tex_doit)(void *); SeqDoit seq_doit; void (*instance_init)(void *); } PluginInfo; diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index e8b9114cb7d..37804bf68ac 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -126,7 +126,7 @@ void open_plugin_tex(PluginTex *pit) if (version != 0) { pit->version= version(); - if (pit->version>=2 && pit->version<=5) { + if( pit->version >= 2 && pit->version <=6) { int (*info_func)(PluginInfo *); PluginInfo *info= (PluginInfo*) MEM_mallocN(sizeof(PluginInfo), "plugin_info"); diff --git a/source/blender/blenpluginapi/externdef.h b/source/blender/blenpluginapi/externdef.h index 7322841e608..14a3115ce33 100644 --- a/source/blender/blenpluginapi/externdef.h +++ b/source/blender/blenpluginapi/externdef.h @@ -33,11 +33,14 @@ #ifdef WIN32 #ifdef PLUGIN_INTERN #define LIBEXPORT __declspec(dllexport) + #define LIBIMPORT __declspec(dllexport) #else - #define LIBEXPORT extern __declspec(dllimport) + #define LIBEXPORT __declspec(dllexport) + #define LIBIMPORT extern __declspec(dllimport) #endif #elif !defined(WIN32) #define LIBEXPORT extern + #define LIBIMPORT extern #endif #endif /* _EXTERNDEF_H */ diff --git a/source/blender/blenpluginapi/iff.h b/source/blender/blenpluginapi/iff.h index 5eb52158a1a..19bea621d24 100644 --- a/source/blender/blenpluginapi/iff.h +++ b/source/blender/blenpluginapi/iff.h @@ -167,49 +167,49 @@ typedef struct ImBuf { struct ImBuf *mipmap[IB_MIPMAP_LEVELS]; /**< MipMap levels, a series of halved images */ } ImBuf; -LIBEXPORT struct ImBuf *allocImBuf(short,short,uchar,uint,uchar); -LIBEXPORT struct ImBuf *dupImBuf(struct ImBuf *); -LIBEXPORT void freeImBuf(struct ImBuf*); +LIBIMPORT struct ImBuf *allocImBuf(short,short,uchar,uint,uchar); +LIBIMPORT struct ImBuf *dupImBuf(struct ImBuf *); +LIBIMPORT void freeImBuf(struct ImBuf*); -LIBEXPORT short converttocmap(struct ImBuf* ibuf); +LIBIMPORT short converttocmap(struct ImBuf* ibuf); -LIBEXPORT short saveiff(struct ImBuf *,char *,int); +LIBIMPORT short saveiff(struct ImBuf *,char *,int); -LIBEXPORT struct ImBuf *loadiffmem(int *,int); -LIBEXPORT struct ImBuf *loadifffile(int,int); -LIBEXPORT struct ImBuf *loadiffname(char *,int); -LIBEXPORT struct ImBuf *testiffname(char *,int); +LIBIMPORT struct ImBuf *loadiffmem(int *,int); +LIBIMPORT struct ImBuf *loadifffile(int,int); +LIBIMPORT struct ImBuf *loadiffname(char *,int); +LIBIMPORT struct ImBuf *testiffname(char *,int); -LIBEXPORT struct ImBuf *onehalf(struct ImBuf *); -LIBEXPORT struct ImBuf *onethird(struct ImBuf *); -LIBEXPORT struct ImBuf *halflace(struct ImBuf *); -LIBEXPORT struct ImBuf *half_x(struct ImBuf *); -LIBEXPORT struct ImBuf *half_y(struct ImBuf *); -LIBEXPORT struct ImBuf *double_x(struct ImBuf *); -LIBEXPORT struct ImBuf *double_y(struct ImBuf *); -LIBEXPORT struct ImBuf *double_fast_x(struct ImBuf *); -LIBEXPORT struct ImBuf *double_fast_y(struct ImBuf *); +LIBIMPORT struct ImBuf *onehalf(struct ImBuf *); +LIBIMPORT struct ImBuf *onethird(struct ImBuf *); +LIBIMPORT struct ImBuf *halflace(struct ImBuf *); +LIBIMPORT struct ImBuf *half_x(struct ImBuf *); +LIBIMPORT struct ImBuf *half_y(struct ImBuf *); +LIBIMPORT struct ImBuf *double_x(struct ImBuf *); +LIBIMPORT struct ImBuf *double_y(struct ImBuf *); +LIBIMPORT struct ImBuf *double_fast_x(struct ImBuf *); +LIBIMPORT struct ImBuf *double_fast_y(struct ImBuf *); -LIBEXPORT int ispic(char *); +LIBIMPORT int ispic(char *); -LIBEXPORT void dit2(struct ImBuf *, short, short); -LIBEXPORT void dit0(struct ImBuf *, short, short); +LIBIMPORT void dit2(struct ImBuf *, short, short); +LIBIMPORT void dit0(struct ImBuf *, short, short); -LIBEXPORT struct ImBuf *scaleImBuf(struct ImBuf *, short, short); -LIBEXPORT struct ImBuf *scalefastImBuf(struct ImBuf *, short, short); -LIBEXPORT struct ImBuf *scalefieldImBuf(struct ImBuf *, short, short); -LIBEXPORT struct ImBuf *scalefastfieldImBuf(struct ImBuf *, short, short); +LIBIMPORT struct ImBuf *scaleImBuf(struct ImBuf *, short, short); +LIBIMPORT struct ImBuf *scalefastImBuf(struct ImBuf *, short, short); +LIBIMPORT struct ImBuf *scalefieldImBuf(struct ImBuf *, short, short); +LIBIMPORT struct ImBuf *scalefastfieldImBuf(struct ImBuf *, short, short); -LIBEXPORT void de_interlace(struct ImBuf *ib); -LIBEXPORT void interlace(struct ImBuf *ib); -LIBEXPORT void gamwarp(struct ImBuf *ibuf, double gamma); +LIBIMPORT void de_interlace(struct ImBuf *ib); +LIBIMPORT void interlace(struct ImBuf *ib); +LIBIMPORT void gamwarp(struct ImBuf *ibuf, double gamma); -LIBEXPORT void IMB_rectcpy(struct ImBuf *dbuf, struct ImBuf *sbuf, +LIBIMPORT void IMB_rectcpy(struct ImBuf *dbuf, struct ImBuf *sbuf, int destx, int desty, int srcx, int srcy, int width, int height); -LIBEXPORT void IMB_rectfill(struct ImBuf *drect, float col[4]); -LIBEXPORT void IMB_rectfill_area(struct ImBuf *ibuf, float *col, int x1, int y1, int x2, int y2); -LIBEXPORT void buf_rectfill_area(unsigned char *rect, float *rectf, int width, int height, float *col, int x1, int y1, int x2, int y2); +LIBIMPORT void IMB_rectfill(struct ImBuf *drect, float col[4]); +LIBIMPORT void IMB_rectfill_area(struct ImBuf *ibuf, float *col, int x1, int y1, int x2, int y2); +LIBIMPORT void buf_rectfill_area(unsigned char *rect, float *rectf, int width, int height, float *col, int x1, int y1, int x2, int y2); #endif /* IFF_H */ diff --git a/source/blender/blenpluginapi/plugin.h b/source/blender/blenpluginapi/plugin.h index 1f6140130eb..da044cf7317 100644 --- a/source/blender/blenpluginapi/plugin.h +++ b/source/blender/blenpluginapi/plugin.h @@ -36,9 +36,10 @@ #include "util.h" #include "floatpatch.h" -#define B_PLUGIN_VERSION 5 +#define B_PLUGIN_VERSION 6 -typedef int (*TexDoit)(int, void*, float*, float*, float*); +typedef int (*TexDoit)(int, void*, float*, float*, float*, float*); +typedef int (*TexDoitold)(int, void*, float*, float*, float*); typedef void (*SeqDoit)(void*, float, float, int, int, ImBuf*, ImBuf*, ImBuf*, ImBuf*); typedef struct VarStruct { @@ -66,9 +67,9 @@ typedef struct _PluginInfo { void (*instance_init)(void *); } PluginInfo; -int plugin_tex_getversion(void); -int plugin_seq_getversion(void); -void plugin_getinfo(PluginInfo *); +LIBEXPORT int plugin_tex_getversion(void); +LIBEXPORT int plugin_seq_getversion(void); +LIBEXPORT void plugin_getinfo(PluginInfo *); /* *************** defines for button types ************** */ @@ -90,14 +91,14 @@ void plugin_getinfo(PluginInfo *); /* *************** API functions ******************** */ /* derived from the famous Perlin noise */ -LIBEXPORT float hnoise(float noisesize, float x, float y, float z); +LIBIMPORT float hnoise(float noisesize, float x, float y, float z); /* the original Perlin noise */ -LIBEXPORT float hnoisep(float noisesize, float x, float y, float z); +LIBIMPORT float hnoisep(float noisesize, float x, float y, float z); /* soft turbulence */ -LIBEXPORT float turbulence(float noisesize, float x, float y, float z, int depth); +LIBIMPORT float turbulence(float noisesize, float x, float y, float z, int depth); /* hard turbulence */ -LIBEXPORT float turbulence1(float noisesize, float x, float y, float z, int depth); +LIBIMPORT float turbulence1(float noisesize, float x, float y, float z, int depth); #endif /* PLUGIN_H */ diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c index 737b1d2d747..0a72f976825 100644 --- a/source/blender/render/intern/source/texture.c +++ b/source/blender/render/intern/source/texture.c @@ -721,30 +721,59 @@ static int plugintex(Tex *tex, float *texvec, float *dxt, float *dyt, int osatex { PluginTex *pit; int rgbnor=0; + float result[ 8 ]; texres->tin= 0.0; pit= tex->plugin; if(pit && pit->doit) { if(texres->nor) { - VECCOPY(pit->result+5, texres->nor); + if (pit->version < 6) { + VECCOPY(pit->result+5, texres->nor); + } else { + VECCOPY(result+5, texres->nor); + } + } + if (pit->version < 6) { + if(osatex) rgbnor= ((TexDoitold)pit->doit)(tex->stype, + pit->data, texvec, dxt, dyt); + else rgbnor= ((TexDoitold)pit->doit)(tex->stype, + pit->data, texvec, 0, 0); + } else { + if(osatex) rgbnor= ((TexDoit)pit->doit)(tex->stype, + pit->data, texvec, dxt, dyt, result); + else rgbnor= ((TexDoit)pit->doit)(tex->stype, + pit->data, texvec, 0, 0, result); } - if(osatex) rgbnor= ((TexDoit)pit->doit)(tex->stype, pit->data, texvec, dxt, dyt); - else rgbnor= ((TexDoit)pit->doit)(tex->stype, pit->data, texvec, 0, 0); - texres->tin= pit->result[0]; + if (pit->version < 6) { + texres->tin = pit->result[0]; + } else { + texres->tin = result[0]; + } if(rgbnor & TEX_NOR) { if(texres->nor) { - VECCOPY(texres->nor, pit->result+5); + if (pit->version < 6) { + VECCOPY(texres->nor, pit->result+5); + } else { + VECCOPY(texres->nor, result+5); + } } } if(rgbnor & TEX_RGB) { - texres->tr= pit->result[1]; - texres->tg= pit->result[2]; - texres->tb= pit->result[3]; - texres->ta= pit->result[4]; + if (pit->version < 6) { + texres->tr = pit->result[1]; + texres->tg = pit->result[2]; + texres->tb = pit->result[3]; + texres->ta = pit->result[4]; + } else { + texres->tr = result[1]; + texres->tg = result[2]; + texres->tb = result[3]; + texres->ta = result[4]; + } BRICONTRGB; } |