Class StackTransformer
Represents a transformer that maintains a stack of transformations.
public class StackTransformer : ITransformer, IMakeXmlSource, IDisposable
- Inheritance
-
StackTransformer
- Implements
- Inherited Members
- Extension Methods
Constructors
StackTransformer()
Initializes a new instance of the StackTransformer class.
public StackTransformer()
StackTransformer(params ITransformer[])
Initializes a new instance of the StackTransformer class with the specified transformers.
public StackTransformer(params ITransformer[] transformers)
Parameters
transformers
ITransformer[]A variable-length array of transformers to add to the stack.
StackTransformer(XElement, string)
Initializes a new instance of the StackTransformer class from XML data.
public StackTransformer(XElement src, string baseDirectory)
Parameters
src
XElementThe XML element containing the transformer stack configuration.
baseDirectory
stringThe base directory for resolving relative paths.
Properties
Count
Gets the number of transformers in the stack.
public int Count { get; }
Property Value
XName
Static name.
public static string XName { get; }
Property Value
Methods
Clear()
Removes all transformers from the stack.
public void Clear()
Clone()
Creates a deep copy of this transformer stack.
public ITransformer Clone()
Returns
- ITransformer
A new StackTransformer instance with cloned transformers.
Remarks
The children ITransformer on stack are all cloned.
Dispose()
Releases all resources used by the StackTransformer.
public void Dispose()
Dispose(bool)
Releases the unmanaged resources used by the StackTransformer and optionally releases the managed resources.
protected virtual void Dispose(bool disposing)
Parameters
disposing
booltrue to release both managed and unmanaged resources; false to release only unmanaged resources.
GetMat()
Gets the combined transformation matrix of all transformers in the stack.
public Mat4d GetMat()
Returns
- Mat4d
The combined 4x4 transformation matrix.
Remarks
The transformations are applied in order from bottom to top of the stack.
GetMatInv()
Gets the inverse of the combined transformation matrix of all transformers in the stack.
public Mat4d GetMatInv()
Returns
- Mat4d
The inverse of the combined 4x4 transformation matrix.
Remarks
The inverse transformations are applied in reverse order (top to bottom of the stack). If forward mats is ABCD, then the inv-mats: DinvCinvBinvAinv.
GetStack()
Get the copied transformer stack.
public List<ITransformer> GetStack()
Returns
- List<ITransformer>
copied stack
MakeXmlSource(string, string, bool)
Creates an XML representation of the object. This method may also generate additional resources such as related files.
public virtual XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
Parameters
baseDirectory
stringThe base directory for resolving relative paths
relFile
stringThe relative file path for the XML source
exhibitionOnly
boolif true, the extended file creation is suppressed.
Returns
- XElement
An XML element representing the object's state
Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory
is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
Peek()
Returns the transformer at the top of the stack without removing it.
public ITransformer Peek()
Returns
- ITransformer
The transformer at the top of the stack, or null if the stack is empty.
Pop()
Removes and returns the transformer at the top of the stack.
public ITransformer Pop()
Returns
- ITransformer
The transformer at the top of the stack, or null if the stack is empty.
Push(ITransformer)
Pushes a transformer onto the stack.
public void Push(ITransformer transformer)
Parameters
transformer
ITransformerThe transformer to push.