COMP: Ensure "curl" is built against Slicer OpenSSL library

This commit ensure the correct CMake variable is used. The issue
was originally introduced by commit r22773.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23007 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Several fixes and improvements in transform handling

Major fixes:
* Added mechanism to prevent immediate invocation of TransformModified events (similarly to Modified events) to allow atomic changes of transforms and prevent multiple event invocations (fixes #3610, #3611).
* Fixed vtkITKBSplineTransform inverse computation (the bulk component was ignored in the inverse computation due to a shadow variable)
* Fixed DeepCopy of vtkITKBSplineTransform.cxx (InternalDeepCopy method had to be implemented)
* Use vtkTransform's ability to compute inverse transforms instead of keeping separate transforms for forward and inverse transforms (still kept the two member variables in the transform node base class to allow storing of forward and inverse transform if they are both computed, e.g., some Demons registration provides both the forward and inverse transforms as outputs).
* Fixed ReadWriteAsTransformToParent logic in the storage node class (as inverse warp transforms usually cannot be written, the flag should point to the forward transform class). For convenience, the flag is updated automatically when a To/FromParentTransform is set in the transform node.
* Fixed transform node copy: now a true deep copy is performed (earlier only the pointer of the transforms were copied, therefore changing a transform in a node changed the copied node, too)
* Removed vtkMRMLNonlinearTransformNode, as non-linear transforms are not special cases anymore: the base transform class can manage them the same way as linear transforms.
* Changed Get/SetMatrixTransformToParent and Get/SetMatrixTransformFromParent method to make it clear that it makes a copy of the input and output, so changing a matrix is only possible by using the Set... method (and not Get...()->DeepCopy(...)). Kept the old functions to prevent build errors, but they are deprecated and a warning is logged if they are used (as the behavior of the Get... function is changed from a shallow copy to a deep copy). This API change required changing of a lot of file in the Slicer core and extensions.

Minor fixes:
* Made vtkMRMLTransformNode non-abstract: this is the class that can handle arbitrarily complex composite transforms (e.g., grid transform hardened on a bspline transform).
* Fixed invalid NonLinearTransformScene.mrml scene: wrong storage node ref ID caused warnings in the tests
* Changed the Bspline-f-m.tfm test data to include larger bulk component to make errors more detectable
* Added tests for composite transforms (e.g., hardened combination of grid and bspline transform)
* Split the transform node's huge read/write methods to separate smaller methods (one for each transform type)
* Added the option of loading a .mha file as a grid transform

Extensions updated according to the API change: OpenIGTLinkIF, SlicerIGT, SlicerRT, and TransformVisualizer. See details at:
https://github.com/openigtlink/OpenIGTLinkIF/pull/25
https://github.com/SlicerIGT/FiducialRegistrationWizard/pull/14
https://github.com/SlicerIGT/BreachWarning/pull/1
https://github.com/SlicerIGT/PivotCalibration/pull/13
https://github.com/SlicerIGT/TransformFusion/pull/2
https://www.assembla.com/spaces/slicerrt/tickets/563

Tests performed:

* All automatic tests passed (except those that are known to fail in the nightly builds)

* Load MRBrainTumor1 & MRBrainTumor2 sample
* Create model of MRBrainTumor2, threshold=50
* Linear registration with BRAINS (fixed: MRBrainTumor1 & moving: MRBrainTumor2)
* VERIFY: the resampled output image should look the same as the dynamically transformed moving volume, checked on several slices
* Save the transform as tfm from file, load the transform from file, apply the transform to the moving image
* VERIFY: the resampled output image should look the same as the dynamically transformed moving volume
* Apply transform to the model
* VERIFY: model is deformed in the 3D view, aligned with the volume slices
* Harden transform to the model
* VERIFY: model in the 3D view doesn’t change, model slice intersections are aligned with the volume
* Harden the transform on the volume
* VERIFY: the image doesn’t change too much

* BSpline registration with BRAINS (fixed: MRBrainTumor1 & moving: MRBrainTumor2)
* VERIFY: the resampled output image should look the same as the dynamically transformed moving volume
* Save the transform as tfm from file, load the transform from file, apply the transform to the moving image
* VERIFY: the resampled output image should look the same as the dynamically transformed moving volume
* Apply transform to the model
* VERIFY: model is deformed in the 3D view, aligned with the volume slices
* Harden transform to the model
* VERIFY: model in the 3D view doesn’t change, model slice intersections are aligned with the volume
* Insert linear transform between bspline and volume, move sliders
* VERIFY: volume deforms as it travels through the BSpline region
* Harden the transform on the volume
* VERIFY: the image doesn’t change too much

* Create a two markup list (each having 15 points), all but 3 in the same position
* Landwarp registration with Plastimatch with the markup lists, save the displacement field to file
* Load the displacement field
* VERIFY: the resampled output image should look the same as the dynamically transformed moving volume
* Apply the displacement field to the moving fiducials
* VERIFY: all the fiducials are now in the same position
* Harden the transform on the fiducials
* VERIFY: the fiducials don’t move
* Apply transform to the model
* VERIFY: model is deformed in the 3D view, aligned with the volume slices
* Harden transform to the model
* VERIFY: model in the 3D view doesn’t change, model slice intersections are aligned with the volume
* Harden the transform on the volume
* VERIFY: the image doesn’t change too much

* Load MRI head, create new linear transform, apply to the volume, move the sliders
* VERIFY: the volume moves in the slice viewer, the numbers change in the matrix
* Click Invert, Identity
* VERIFY: volume jumps to other side, to the center
* Connect to an OpenIGTLink server, apply a transform to a volume
* VERIFY: transform matrix values updated in transforms module, volume moves


git-svn-id: http://svn.slicer.org/Slicer4/trunk@23008 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: 3609. Added ability to select active tensor in the TractographyDisplay widgets

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23009 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add ThreeDViewIDs property to slice node

This does basically what the property ViewNodeIds does for the display
nodes, it allows the user to choose in which view a slice node can or
cannot be displayed.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23010 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Propagate vtkMRMLSliceNode::ThreeDViewIDs to slice model display

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23011 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Add accessors to vtkMRMLCameraNode

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23012 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Fix crash in models logic when failing to read file

The returned node was deleted if not added into the scene.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23013 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Fix header copyright.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23014 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Factorize slice composite node search in vtkMRMLSliceLogic

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23015 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add vtkMRMLLayoutLogic::MaximizeView()

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23016 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add vtkMRMLCameraNode::SetViewAngle

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23017 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Cleanup and speedup vtkMRMLScene::IsFilePathRelative and

SystemTools::SplitPath() was unnecessary slow to know if a path is relative
or absolute.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23018 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Don't read headers for 2D files

+ Shortcut the costly vtkMRMLStorageNode::AddFileName()

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23019 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Error due to imporoper linkage specification

inline functions are required to be declared and defined
in the same scope.  The inline specifier changed the linkage
signature an prevented this from compiling.

Undefined symbols for architecture x86_64:
  "vtkMRMLSliceNode::GetNumberOfThreeDViewIDs() const", referenced from:
      PyvtkMRMLSliceNode_GetNumberOfThreeDViewIDs(_object*, _object*) in vtkMRMLSliceNodePython.cxx.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23020 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Remove end of line spaces

Spaces at the end of lines can cause noise in patch sets
when editors or git gobbles them up during other relatively
minor changes to files.

Removing end of line changes makes long term maintenance easier as
well.

When reviewing git histories or patch sets, the "--ignore-space-change"
option can be useful in filtering out changes due only to spacing.

i.e.
git diff HEAD~2 --ignore-space-change

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23021 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Githook warnings about excessive line length

pre-commit hook failure
-----------------------
  in file 'Libs/MRML/Logic/vtkImageLinearReslice.cxx' is longer than 160 characters.
  in file 'Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationControlPointsNode.cxx' is longer than 160 characters.
  in file 'Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationControlPointsStorageNode.cxx' is longer than 160 characters.
  in file 'Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationControlPointsNodeTest1.cxx' is longer than 160 characters.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23022 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Remove incorrect initialization

A compiler warning indicated incorrect initialization of
minimum value.

Slicer/Modules/CLI/RobustStatisticsSegmenter/SFLSRobustStatSegmentor3DLabelMap_single.h:133:
Slicer/Modules/CLI/RobustStatisticsSegmenter/SFLSRobustStatSegmentor3DLabelMap_single.txx:874:30: warning: implicit conversion
      from 'type' (aka 'unsigned int') to 'short' changes value from 4294967295 to -1 [-Wconstant-conversion]
  m_inputImageIntensityMin = std::numeric_limits<unsigned>::max(); // yes, it's twisted so easity to compute.

The numeric_limits type needed to be made consistent with the image.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23023 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Update SimpleITK 0.8.0 release

The manual download of distribute has been removed. The new
ez_setup.py file can fulfill the setuptools requirement.
SimpleITK's setup.py file can now utilize PowerShell, curl and wget to
download the required setuptools package of https.

From: Bradley Lowekamp <blowekamp@mail.nih.gov>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23024 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Test data was missing since Slicer4 (test was still pointing where data
 was in Slicer3)

See bug report:
http://na-mic.org/Mantis/view.php?id=3341

The test that was not working does the following:
It runs ResampleDTIVolume and the result of this operation does not matter.
What is interesting is that the test makes sure that extending itkTestMainExtend
ed.h to work with DTI did not break the normal behavior of that file and that it
 still works with scalar images too.
Therefore, it compares a scalar image with itself and verifies that the test
 passes successfully

From: fbudin69500 <fbudin@unc.edu>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23025 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Remove unused Texture and NCI volume rendering mappers

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23026 3bd1e089-480b-0410-8dfb-8563597acbee