00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __ROP_IFD_h__
00021 #define __ROP_IFD_h__
00022
00023 #include "ROP_API.h"
00024 #include "ROP_IFDBase.h"
00025
00026 class IFD_Output;
00027 class IFD_Scene;
00028 class IFD_PassThru;
00029 class OBJ_Camera;
00030 class TIL_Sequence;
00031
00032
00033
00034 #define FLOAT_PARM(name, idx, vi, t) \
00035 { return evalFloat(name, vi, t); }
00036 #define INT_PARM(name, idx, vi, t) \
00037 { return evalInt(name, vi, t); }
00038 #define STR_PARM(name, idx, vi, t) \
00039 { evalString(str, name, vi, (float)t); }
00040
00041 #define INT_SET(name, idx, vi, t, val) \
00042 { setInt(name, vi, t, val); }
00043 #define STR_SET(name, idx, vi, t) \
00044 { setString(str, meaning, name, vi, (float)t); }
00045 #define STR_GET(name, idx, vi, t) \
00046 { evalStringRaw(str, name, vi, (float)t); }
00047
00048
00049 enum {
00050 ROP_IFD_RENDER,
00051 ROP_IFD_RENDER_CTRL,
00052 ROP_IFD_TRANGE,
00053 ROP_IFD_FRANGE,
00054 ROP_IFD_TAKE,
00055
00056 ROP_IFD_SWITCHER,
00057
00058
00059 ROP_IFD_RENDERER,
00060 ROP_IFD_PICTURE,
00061 ROP_IFD_CAMERA,
00062 ROP_IFD_BUNDLEMODE,
00063 ROP_IFD_VOBJECT,
00064 ROP_IFD_VFOG,
00065 ROP_IFD_ALIGHT,
00066 ROP_IFD_USEDISPLAY,
00067 ROP_IFD_INITSIM,
00068 ROP_IFD_TSCRIPT,
00069 ROP_IFD_SCRIPT,
00070 ROP_IFD_BINARY,
00071 ROP_IFD_BACKGROUND,
00072 ROP_IFD_COMMAND,
00073 ROP_IFD_TRES,
00074 ROP_IFD_RES,
00075 ROP_IFD_RESNAME,
00076 ROP_IFD_ASPECT,
00077 ROP_IFD_FIELD,
00078 ROP_IFD_SAMPLE,
00079 ROP_IFD_MBLUR,
00080 ROP_IFD_BLUR,
00081 ROP_IFD_DOF,
00082 ROP_IFD_JITTER,
00083 ROP_IFD_DITHER,
00084 ROP_IFD_GAMMA,
00085
00086
00087 ROP_IFD_TPRERENDER,
00088 ROP_IFD_PRERENDER,
00089 ROP_IFD_LPRERENDER,
00090 ROP_IFD_TPREFRAME,
00091 ROP_IFD_PREFRAME,
00092 ROP_IFD_LPREFRAME,
00093 ROP_IFD_TPOSTFRAME,
00094 ROP_IFD_POSTFRAME,
00095 ROP_IFD_LPOSTFRAME,
00096 ROP_IFD_TPOSTRENDER,
00097 ROP_IFD_POSTRENDER,
00098 ROP_IFD_LPOSTRENDER,
00099
00100
00101
00102 ROP_IFD_MAXPARMS
00103 };
00104
00105
00106 class ROP_API ROP_IFD : public ROP_IFDBase
00107 {
00108 public:
00109 virtual unsigned disableParms();
00110 virtual ROP_IFD *castToROPIFD() { return this; }
00111 virtual bool hasImageOutput() { return 1; }
00112 virtual int isMantra3() const;
00113 virtual const char *getRenderName();
00114
00115 static CH_LocalVariable myVariableList[];
00116 static PRM_Template *getTemplates();
00117 static OP_Node *myConstructor(OP_Network *net, const char*name,
00118 OP_Operator *op);
00119
00120 static int pictureChanged(void *o, int idx, float t,
00121 const PRM_Template *tplate);
00122
00123
00124
00125
00126 void addPassThru(IFD_PassThru *scn)
00127 { myPassThruList.append(scn); }
00128
00129
00130
00131
00132 void setRemoteHost(const char *hostname)
00133 {
00134 myRemoteHost.harden(hostname);
00135 }
00136 virtual const UT_String &getRemoteHost() const { return myRemoteHost; }
00137
00138 virtual void getRenderedImageInfo(TIL_Sequence &seq);
00139
00140 virtual void getOutputFile(UT_String &filename)
00141 { evalStringRaw(filename, "picture", 0, 0.0f); }
00142 protected:
00143 ROP_IFD(OP_Network *net, const char *name, OP_Operator *entry);
00144 virtual ~ROP_IFD();
00145
00146
00147
00148 virtual int changePicture(int, float, const PRM_Template *);
00149
00150
00151 virtual void buildRendererMenu(PRM_Name *, int,
00152 const PRM_SpareData *, PRM_Parm *);
00153
00154 virtual int startMultiFrame(IFD_Output *renderer,
00155 fpreal start, fpreal end, int nframes);
00156 virtual int callRenderer(IFD_Output *renderer, float now);
00157 virtual int endMultiFrame(IFD_Output *renderer);
00158
00159 public:
00160
00161 void RENDERER(UT_String &str) { STR_PARM("renderer",0, 0,0) }
00162 virtual void CAMERA(UT_String &str, float t)
00163 { STR_PARM("camera", 1, 0, t) }
00164 virtual void VISIBLE(UT_String &str, float t)
00165 { STR_PARM("visible", 2, 0, t) }
00166 virtual const char *VISIBLE_TOKEN() const { return "visible"; }
00167 virtual void VISIBLEFOG(UT_String &str, float t)
00168 { STR_PARM("visiblefog", 32, 0, t) }
00169 virtual const char *VISIBLEFOG_TOKEN() const { return "visiblefog"; }
00170 virtual void ALIGHTS(UT_String &str, float t)
00171 { STR_PARM("activelights", 31, 0, t) }
00172 virtual const char *ALIGHTS_TOKEN() const { return "activelights"; }
00173 virtual int DISPSOP() { INT_PARM("dispsop", 3, 0, 0) }
00174 virtual int INITSIM() { INT_PARM("initsim", 4, 0, 0) }
00175
00176 virtual int DOSCRIPT()
00177 {
00178 UT_String d;
00179 if(getRenderMode() == RENDER_PRM &&
00180 !getOutputOverride(d,0.0f))
00181 INT_PARM("tscript", 5, 0, 0)
00182 else
00183 return 0;
00184 }
00185
00186 virtual int BINARY() { INT_PARM("binary", 7, 0, 0) }
00187 virtual void SCRIPT(UT_String &str, float t)
00188 { STR_PARM("script", 6, 0, t) }
00189 virtual void COMMAND(UT_String &str, float t)
00190 { STR_PARM("command", 8, 0, t);
00191 getQualityModifier(str); }
00192
00193
00194 virtual void getQualityModifier(UT_String & ) { }
00195
00196
00197 virtual void GETCOMMAND(UT_String &str)
00198 { STR_GET("command", 8, 0, 0);
00199 getQualityModifier(str); }
00200 virtual void SETCOMMAND(UT_String &str, CH_StringMeaning meaning, float t)
00201 { STR_SET("command", 8, 0, t) }
00202
00203 virtual void PICTURE(UT_String &str, float t)
00204 { if( getRenderMode() == RENDER_PRM )
00205 {
00206 if(!getOutputOverride(str, t))
00207 { STR_PARM("picture", 9, 0, t) }
00208 }
00209 else
00210 str = getRenderOutput();
00211 }
00212 void RAW_PICTURE(UT_String &str)
00213 { if( getRenderMode() == RENDER_PRM )
00214 {
00215 if(!getOutputOverride(str, 0.0f, false))
00216 { STR_GET("picture", 9, 0, 0) }
00217 }
00218 else
00219 str = getRenderOutput();
00220 }
00221
00222 virtual int DOF() { INT_PARM ("dof", 10, 0, 0) }
00223 virtual float JITTER(float t) { FLOAT_PARM("jitter", 11, 0, t) }
00224 virtual float DITHER(float t) { FLOAT_PARM("dither", 12, 0, t) }
00225 virtual float GAMMA(float t) { FLOAT_PARM("gamma", 13, 0, t) }
00226 virtual int SAMPLEX(float t);
00227 virtual int SAMPLEY(float t);
00228 virtual void FIELD(UT_String &str) { STR_PARM ("field", 15, 0, 0) }
00229 virtual void BLUR(UT_String &str) { STR_PARM ("blur", 16, 0, 0) }
00230 void SETBACKGROUND(int v) { INT_SET("background", 17, 0, 0, v) }
00231 virtual int BACKGROUND()
00232 { if(getDependencyRenderFlag())
00233 return 0;
00234 else if( getRenderMode() == RENDER_PRM)
00235 INT_PARM("background", 17, 0, 0)
00236 else
00237 return 1;
00238 }
00239
00240 virtual int DORES() { if( getRenderMode() == RENDER_PRM )
00241 { INT_PARM ("tres", 20, 0, 0) }
00242 else
00243 return 1;
00244 }
00245
00246 virtual int RESX() { if( getRenderMode() == RENDER_PRM )
00247 { INT_PARM ("res", 21, 0, 0) }
00248 else
00249 return getRenderResX();
00250 }
00251
00252 virtual int RESY() { if( getRenderMode() == RENDER_PRM )
00253 { INT_PARM ("res", 21, 1, 0) }
00254 else
00255 return getRenderResY();
00256 }
00257
00258
00259 virtual float ASPECT() { if( getRenderMode() == RENDER_PRM ||
00260 getRenderAspect() <= 0 )
00261 { FLOAT_PARM("aspect", 22, 0, 0) }
00262 else
00263 return getRenderAspect();
00264 }
00265
00266 virtual void getFrameDevice(UT_String &str, float t,
00267 const char *rtype);
00268
00269 static int setResCback(void *o, int index, float t, const PRM_Template *);
00270 static void buildRenderMenu(void *rop, PRM_Name *, int, const PRM_SpareData *, PRM_Parm *);
00271 static void buildShopMenu(PRM_Name *, int max, int shop_type);
00272
00273 virtual void getNodeSpecificInfoText(OP_Context &context,
00274 int verbose,
00275 UT_WorkBuffer &text);
00276 protected:
00277 virtual void PRERENDER(UT_String &str, float t)
00278 { STR_PARM("prerender", 25, 0, t); }
00279 virtual void POSTRENDER(UT_String &str, float t)
00280 { STR_PARM("postrender", 26, 0, t); }
00281 virtual void PREFRAME(UT_String &str, float t)
00282 { STR_PARM("preframe", 27, 0, t); }
00283 virtual void POSTFRAME(UT_String &str, float t)
00284 { STR_PARM("postframe", 28, 0, t); }
00285
00286 private:
00287
00288 UT_String myRemoteHost;
00289 };
00290
00291 #undef FLOAT_PARM
00292 #undef INT_PARM
00293 #undef STR_PARM
00294 #undef STR_GET
00295 #undef STR_SET
00296 #undef INT_SET
00297
00298 #endif