/*========================================================================= Program: Visualization Toolkit Module: vtkGeoProjectionSource.h 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. =========================================================================*/ /*------------------------------------------------------------------------- Copyright 2008 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software. -------------------------------------------------------------------------*/ /** * @class vtkGeoProjectionSource * @brief A 2D geographic geometry source * * * vtkGeoProjectionSource is a vtkGeoSource suitable for use in vtkTerrain2D. * This source uses the libproj4 library to produce geometry patches at * multiple resolutions. Each patch covers a specific region in projected * space. */ #ifndef vtkGeoProjectionSource_h #define vtkGeoProjectionSource_h #include "vtkGeovisCoreModule.h" // For export macro #include "vtkGeoSource.h" class vtkAbstractTransform; class vtkGeoTerrainNode; class vtkMutexLock; class VTKGEOVISCORE_EXPORT vtkGeoProjectionSource : public vtkGeoSource { public: static vtkGeoProjectionSource *New(); vtkTypeMacro(vtkGeoProjectionSource,vtkGeoSource); void PrintSelf( ostream& os, vtkIndent indent ) override; vtkGeoProjectionSource(); ~vtkGeoProjectionSource() override; //@{ /** * Blocking methods for sources with low latency. */ bool FetchRoot(vtkGeoTreeNode* root) override; bool FetchChild(vtkGeoTreeNode* node, int index, vtkGeoTreeNode* child) override; //@} //@{ /** * The projection ID defining the projection. Initial value is 0. */ vtkGetMacro(Projection, int); virtual void SetProjection(int projection); //@} //@{ /** * The minimum number of cells per node. */ vtkGetMacro(MinCellsPerNode, int); vtkSetMacro(MinCellsPerNode, int); //@} /** * Return the projection transformation used by this 2D terrain. */ vtkAbstractTransform* GetTransform() override; protected: void RefineAndComputeError(vtkGeoTerrainNode* node); int Projection; int MinCellsPerNode; virtual void SetTransform(vtkAbstractTransform* transform); vtkMutexLock* TransformLock; vtkAbstractTransform* Transform; private: vtkGeoProjectionSource(const vtkGeoProjectionSource&) = delete; void operator=(const vtkGeoProjectionSource&) = delete; }; #endif