HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ROP_RenderManager.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: ROP_RenderManager.h ( ROP Library, C++)
7  *
8  * COMMENTS:
9  * This analyzes a net of ROPs, and produces a render ordering for them.
10  */
11 #ifndef ROP_RenderManager_h
12 #define ROP_RenderManager_h
13 
14 #include "ROP_API.h"
15 #include <UT/UT_ValArray.h>
16 #include "ROP_RenderList.h"
17 
18 class ROP_RenderCmdParms;
19 class ROP_RenderItem;
20 class ROP_Node;
21 class ROP_Verbose;
22 
24 {
25 public:
26 
27  bool render(ROP_Node *render_node,
28  fpreal startframe, fpreal endframe, fpreal finc,
29  bool single_rop,
30  bool frame_by_frame,
31  bool ignore_bypass,
32  bool ignore_locks,
33  bool merge_frames,
34  bool set_rop_cook,
35  ROP_Verbose *verbose);
36 
37  // returns the order in which to render frames in 'order'.
38  void buildFrameOrder(ROP_RenderList &order,
39  ROP_Node *render_node,
40  fpreal startframe, fpreal endframe, fpreal finc,
41  bool single_rop,
42  bool frame_by_frame,
43  bool ignore_bypass,
44  bool ignore_locks,
45  bool merge_frames);
46 
47  // returns true if all successfully rendered.
48  bool renderOrder(const ROP_RenderList &order,
49  bool set_rop_cook,
50  ROP_Verbose *verbose);
51 
52  void getFrameOrder(ROP_Node *render_node,
53  fpreal startframe, fpreal endframe, fpreal finc,
54  ROP_RenderCmdParms &render_parms);
55 
56  // returns the range that the user specified for the render.
57  void getOutputFrameRange(fpreal &start, fpreal &end,
58  fpreal &finc) const;
59 
60  bool isActive() const { return (myRenderOrder != NULL); }
61 
62  int getNumRenderedFrames(ROP_Node *for_node) const;
63 
64  void addPostProcessor(ROP_Node *node);
65 
66  // copies the current post processor list into nodes, and starts a new list.
67  // Do not touch the returned node list; pass it back to popPostProcessors()
68  void pushPostProcessors(UT_ValArray<ROP_Node *> &nodes);
69 
70  // post processes 'list' with any post processes, then restores the old
71  // post processor list from nodes.
72  void popPostProcessors(ROP_RenderList &list,
73  const ROP_RenderDepParms &parms,
75 
76  static ROP_RenderManager *pushManager(); // Returns new manager
77  static ROP_RenderManager *getManager(); // Returns top of stack
78  static void popManager(); // Must be one for every push
79 
80 private:
82 
83  // called by ROP_Node only.
84  void setCurrentPercent(float p);
85 
86  UT_ValArray<ROP_Node *> myPostProcessors;
87  fpreal myFrameStart;
88  fpreal myFrameEnd;
89  fpreal myFrameInc;
90  ROP_RenderList *myRenderOrder;
91  static int theRenderSerial;
92  int theCurrentCount;
93  int theTotalCount;
94  int theCurrentTotal;
95 
96 
97  friend class ROP_Node;
98 };
99 
101 {
102 public:
105 };
106 
107 #endif
GLuint start
Definition: glcorearb.h:475
static void popManager()
IFDmantra you can see code vm_image_mplay_direction endcode When SOHO starts a render
Definition: HDK_Image.dox:266
#define ROP_API
Definition: ROP_API.h:10
bool isActive() const
GLuint GLuint end
Definition: glcorearb.h:475
GLdouble GLdouble GLint GLint order
Definition: glad.h:2676
fpreal64 fpreal
Definition: SYS_Types.h:277
static ROP_RenderManager * pushManager()