HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GT_PrimCurve.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: GT_PrimCurve.h ( GT Library, C++)
7  *
8  * COMMENTS:
9  */
10 
11 #ifndef __GT_PrimCurve__
12 #define __GT_PrimCurve__
13 
14 #include "GT_API.h"
15 #include "GT_Primitive.h"
16 
17 /// @brief A single linear or cubic patch
19 {
20 public:
21  GT_PrimCurve();
24  const GT_AttributeListHandle &uniform,
25  bool wrap)
26  {
27  init(basis, vertex, uniform, wrap);
28  }
29  ~GT_PrimCurve() override;
30 
31  const char *className() const override { return "GT_PrimCurve"; }
32  bool save(UT_JSONWriter &w) const override;
33 
34  /// @{
35  /// Methods defined on GT_Primitive
36  void enlargeBounds(UT_BoundingBox boxes[],
37  int nsegments) const override;
39  UT_BoundingBox b[], int n) const override;
40  int getPrimitiveType() const override;
41  int getMotionSegments() const override;
42  int64 getMemoryUsage() const override;
43  /// @}
44 
45  /// Construct a simple curve.
46  /// - @c vertex @n Attribute data per vertex
47  /// - @c uniform @n Single value which is uniform over the patch
48  bool init(GT_Basis basis,
50  const GT_AttributeListHandle &uniform,
51  bool wrapped);
52 
53  /// @{
54  /// Accessor
55  GT_Basis getBasis() const { return myBasis; }
56  bool getWrap() const { return myWrap; }
57  const GT_AttributeListHandle &getVertex() const { return myVertex; }
58  const GT_AttributeListHandle &getUniform() const { return myUniform; }
59  /// @}
60 
61  /// @{
62  /// Access attributes
64  { return myVertex; }
66  { return myUniform; }
67  /// @}
68 
69  /// @{
70  /// Methods for GEO/GU support.
71  /// Compute perimeter of a curve or an indexed curve
72  fpreal computePerimeter(int seg) const override;
73  static fpreal curveLength(const GT_DataArray &P,
74  GT_Size nvtx=-1, GT_Offset start=0,
75  const UT_Matrix4D *xform = NULL);
76  /// @}
77 
78  /// Harden all attributes so there are no dangling dependencies
79  GT_PrimitiveHandle doHarden() const override;
80  GT_PrimitiveHandle doSoftCopy() const override
81  { return new GT_PrimCurve(*this); }
82 
83  /// The virtual implementation of attribute merging
85  const GT_Primitive &src,
87  const UT_StringMMPattern *point,
88  const UT_StringMMPattern *uniform,
89  const UT_StringMMPattern *detail) const override;
90 
91 private:
92  GT_AttributeListHandle myVertex;
93  GT_AttributeListHandle myUniform;
95  bool myWrap;
96 };
97 
98 #endif
SIM_API const UT_StringHolder vertex
virtual int getMotionSegments() const =0
virtual int getPrimitiveType() const
virtual fpreal computePerimeter(int seg=0) const
const char * className() const override
Definition: GT_PrimCurve.h:31
GLuint start
Definition: glcorearb.h:475
GT_PrimCurve(GT_Basis basis, const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform, bool wrap)
Definition: GT_PrimCurve.h:22
#define GT_API
Definition: GT_API.h:13
const GT_AttributeListHandle & getVertex() const
Definition: GT_PrimCurve.h:57
Class which writes ASCII or binary JSON streams.
Definition: UT_JSONWriter.h:37
GLdouble n
Definition: glcorearb.h:2008
const GT_AttributeListHandle & getUniform() const
Definition: GT_PrimCurve.h:58
Abstract data class for an array of float, int or string data.
Definition: GT_DataArray.h:40
bool getWrap() const
Definition: GT_PrimCurve.h:56
virtual void enlargeRenderBounds(UT_BoundingBox boxes[], int nsegments) const
int64 GT_Offset
Definition: GT_Types.h:129
long long int64
Definition: SYS_Types.h:116
GLboolean GLboolean GLboolean b
Definition: glcorearb.h:1222
The base class for all GT primitive types.
Definition: GT_Primitive.h:43
virtual GT_PrimitiveHandle doHarden() const
virtual int64 getMemoryUsage() const =0
GT_PrimitiveHandle doSoftCopy() const override
Definition: GT_PrimCurve.h:80
int64 GT_Size
Definition: GT_Types.h:128
GT_Basis myBasis
Definition: GT_CurveEval.h:262
const GT_AttributeListHandle & getVertexAttributes() const override
Definition: GT_PrimCurve.h:63
fpreal64 fpreal
Definition: SYS_Types.h:278
virtual bool save(UT_JSONWriter &w) const
GLubyte GLubyte GLubyte GLubyte w
Definition: glcorearb.h:857
const GT_AttributeListHandle & getUniformAttributes() const override
Definition: GT_PrimCurve.h:65
GT_Basis getBasis() const
Definition: GT_PrimCurve.h:55
GT_Basis
Definition: GT_Types.h:55
A single linear or cubic patch.
Definition: GT_PrimCurve.h:18
virtual GT_PrimitiveHandle doAttributeMerge(const GT_Primitive &src, const UT_StringMMPattern *vertex, const UT_StringMMPattern *point, const UT_StringMMPattern *uniform, const UT_StringMMPattern *detail) const
The virtual implementation of attribute merging.
virtual void enlargeBounds(UT_BoundingBox boxes[], int nsegments) const =0
GLenum src
Definition: glcorearb.h:1793