Free Electron
ArnoldNode.h
Go to the documentation of this file.
1 /* Copyright (C) 2003-2021 Free Electron Organization
2  Any use of this software requires a license. If a valid license
3  was not distributed with this file, visit freeelectron.org. */
4 
5 /** @file */
6 
7 #ifndef __arnold_ArnoldNode_h__
8 #define __arnold_ArnoldNode_h__
9 namespace fe
10 {
11 namespace ext
12 {
13 
14 /**************************************************************************//**
15  @brief Arnold node
16 
17  @ingroup arnold
18 *//***************************************************************************/
19 class ArnoldNode:
20  public TerminalNode
21 {
22  public:
23 
24  ArnoldNode(void);
25 virtual ~ArnoldNode(void);
26 
27  void setAtNodeProcedural(AtNode* a_pAtNodeProcedural)
28  { m_pAtNodeProcedural=a_pAtNodeProcedural; }
29  AtNode* atNodeProcedural(void)
30  { return m_pAtNodeProcedural; }
31 
32  void setAtNode(AtNode* a_pAtNode)
33  { m_pAtNode=a_pAtNode; }
34  AtNode* atNode(void)
35  { return m_pAtNode; }
36 
37  void initOperator(void);
38  void runOperator(void);
39 
40  private:
41  void declareParameters(void);
42 
43  void readParameters(void);
44  void convertOutput(void);
45 
46  ArnoldContext m_arnoldContext;
47  sp<SurfaceAccessibleI> m_spOutputAccessible;
48 
49  AtNode* m_pAtNodeProcedural;
50  AtNode* m_pAtNode;
51 };
52 
53 } /* namespace ext */
54 } /* namespace fe */
55 
56 #endif /* __arnold_ArnoldNode_h__ */
Arnold node.
Definition: ArnoldNode.h:19
kernel
Definition: namespace.dox:3
Terminal control of an OperatorSurfaceI.
Definition: TerminalNode.h:20
Intrusive Smart Pointer.
Definition: src/core/ptr.h:53
shared FE context for Arnold plugins
Definition: ArnoldContext.h:19