Free Electron
SurfaceMRP.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 __surface_SurfaceMRP_h__
8 #define __surface_SurfaceMRP_h__
9 
10 namespace fe
11 {
12 namespace ext
13 {
14 
15 /**************************************************************************//**
16  @brief Matrix Rational Power Surface
17 
18  @ingroup surface
19 *//***************************************************************************/
20 class FE_DL_EXPORT SurfaceMRP:
21  public SurfaceTriangles,
22  public CastableAs<SurfaceMRP>
23 {
24  public:
25  SurfaceMRP(void);
26 virtual ~SurfaceMRP(void) {}
27 
28  //* As Protectable
29 virtual Protectable* clone(Protectable* pInstance=NULL);
30 
31  using SurfaceTriangles::sample;
32 
33  //* As SurfaceI
34 virtual SpatialTransform sample(Vector2 a_uv) const;
35 
36 virtual void draw2(sp<DrawI> a_spDrawI,const Color* color) const;
37 
38  private:
39 
40 virtual void cache(void);
41 
42  U32 m_divisions;
43 
44  MatrixPower<SpatialTransform> m_matrixPower;
45 
46  Array<SpatialTransform> m_sourceTransformArray;
47  Array<SpatialTransform> m_sourceInverseArray;
48  Array<SpatialTransform> m_transformArray;
49 
50  Array<Real> m_sourceWidthArray;
51  Array<Real> m_widthArray;
52 };
53 
54 } /* namespace ext */
55 } /* namespace fe */
56 
57 #endif /* __surface_SurfaceMRP_h__ */
Discrete Triangle Surface.
Definition: SurfaceTriangles.h:20
Base class providing protection counting for cp<>
Definition: Protectable.h:28
kernel
Definition: namespace.dox:3
Special vector for color (RGBA)
Definition: Color.h:21
Wrapper for std::vector.
Definition: Array.h:21
Matrix Rational Power Surface.
Definition: SurfaceMRP.h:20
Per-class participation non-RTTI fallback dynamic casting mechanism.
Definition: Castable.h:192