/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: vtkMatrixToLinearTransform.cxx,v $ Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #include "vtkMatrixToLinearTransform.h" #include "vtkMatrix4x4.h" #include "vtkObjectFactory.h" vtkCxxRevisionMacro(vtkMatrixToLinearTransform, "$Revision: 1.14.4.1 $"); vtkStandardNewMacro(vtkMatrixToLinearTransform); vtkCxxSetObjectMacro(vtkMatrixToLinearTransform,Input,vtkMatrix4x4); //---------------------------------------------------------------------------- vtkMatrixToLinearTransform::vtkMatrixToLinearTransform() { this->Input = NULL; this->InverseFlag = 0; } //---------------------------------------------------------------------------- vtkMatrixToLinearTransform::~vtkMatrixToLinearTransform() { this->SetInput(NULL); } //---------------------------------------------------------------------------- void vtkMatrixToLinearTransform::PrintSelf(ostream& os, vtkIndent indent) { this->Update(); this->Superclass::PrintSelf(os, indent); os << indent << "Input: " << this->Input << "\n"; os << indent << "InverseFlag: " << this->InverseFlag << "\n"; } //---------------------------------------------------------------------------- void vtkMatrixToLinearTransform::Inverse() { this->InverseFlag = !this->InverseFlag; this->Modified(); } //---------------------------------------------------------------------------- void vtkMatrixToLinearTransform::InternalUpdate() { if (this->Input) { this->Matrix->DeepCopy(this->Input); if (this->InverseFlag) { this->Matrix->Invert(); } } else { this->Matrix->Identity(); } } //---------------------------------------------------------------------------- void vtkMatrixToLinearTransform::InternalDeepCopy(vtkAbstractTransform *gtrans) { vtkMatrixToLinearTransform *transform = (vtkMatrixToLinearTransform *)gtrans; this->SetInput(transform->Input); if (this->InverseFlag != transform->InverseFlag) { this->Inverse(); } } //---------------------------------------------------------------------------- vtkAbstractTransform *vtkMatrixToLinearTransform::MakeTransform() { return vtkMatrixToLinearTransform::New(); } //---------------------------------------------------------------------------- // Get the MTime unsigned long vtkMatrixToLinearTransform::GetMTime() { unsigned long mtime = this->vtkLinearTransform::GetMTime(); if (this->Input) { unsigned long matrixMTime = this->Input->GetMTime(); if (matrixMTime > mtime) { return matrixMTime; } } return mtime; } #ifndef VTK_LEGACY_REMOVE void vtkMatrixToLinearTransform::SetMatrix(vtkMatrix4x4 *matrix) { VTK_LEGACY_REPLACED_BODY(vtkAssemblyNode::SetMatrix, "VTK 5.0", vtkAssemblyNode::SetInput); this->SetInput(matrix); } #endif