https://github.com/SuperElastix/elastix

sort by:
Revision Author Date Message Commit Date
d093827 DOC: Add more links in the README 30 April 2021, 15:55:10 UTC
2c14b2a CI:Elastix to my.cdash update (#451) * CI:Elastix_to_MyCdash * CI:Use_sha_in_ctest_build_name 20 April 2021, 11:00:54 UTC
d8776c0 BUG: Fix Conversion::ToString(float) itk::NumberToString specialization Accidentally, `ToString(float)` called the "double" specialization of `itk::NumberToString`, which led to a sub-optimal string representation. For example, 0.1f would yield "0.10000000149011612", instead of simply "0.1". Fixed by calling the "float" specialization of `itk::NumberToString` instead. 13 April 2021, 08:50:39 UTC
719b98f BUG: ReadParameter should fail if parameter string isn't fully processed The `ReadParameter<T>` member functions of `ParameterMapInterface` should fail when a parameter string is not entirely processed, during the conversion from `std::string` to type `T`. For example, when the parameter has string value "0.1", an attempt to read it into an integer will only process the string until (just before) the decimal point. This should trigger an exception. Note that a string value like "123.000" should still be converted to an integer, by `ReadParameter<int>`, as it only has trailing zero's after the decimal point. 12 April 2021, 16:31:57 UTC
96a38f1 BUG: Use double-conversion instead of std::istringstream in ParameterMap Replaced `std::istringstream` by `StringToDoubleConverter` from Google's double-conversion library <https://github.com/google/double-conversion>, inside the implementation of `ParameterMapInterface::StringCastToFloatingPoint`. `double_conversion::StringToDoubleConverter` is not affected by locale settings (specifically the decimal separator and the optional separator for thousands), so this commit should fix issue https://github.com/SuperElastix/elastix/issues/454 "elastix crash when LANG=fr_FR.UTF-8". The new `StringCastToFloatingPoint` implementation detects more types of user input errors, for example when a user tries to use a comma as decimal separator (as in "2,375"). This commit also cleans up, by removing code which is no longer necessary now, from "BUG: ParameterMapInterface::StringCast workaround Clang denormal bug", pull request https://github.com/SuperElastix/elastix/pull/404 commit a06e2323166d2ce3119ebcb650fe8ac80fe9b26b Note that elastix already uses Google's double-conversion library for double-to-string conversion, indirectly, via `itk::NumberToString`. 09 April 2021, 08:17:40 UTC
8df8ee8 ENH: Support Parameters + FixedParameters from itk::AffineTransform Supported using the TransformParameters and the TransformFixedParameters from ITK's `itk::AffineTransform` as parameter values for elastix AffineTransform (`AdvancedAffineTransformElastix`). 07 April 2021, 14:53:52 UTC
b067004 BUG: Fix retrieval of ITK FixedParameters TransformBase::ReadFromFile() 07 April 2021, 14:53:52 UTC
c18519d STYLE: Remove `using namespace std` from Common/xout Followed "Coding Standards" FAQ, "Should I use using namespace std in my code?" (Answer: "Probably not.") https://isocpp.org/wiki/faq/coding-standards#using-namespace-std 02 April 2021, 19:31:02 UTC
d03e0c5 COMP: Fix warning C4100: 'argv', 'argc': unreferenced formal parameter Fixed 48 of those warnings, by Visual C++ 2019 (Warning level 4), at the definition of `main` functions of tests. 28 March 2021, 20:36:43 UTC
accb3e7 COMP: Fix warning '!=': logical operation on address of string constant Fixed a Visual C++ 2019 Warning Level 4 warning from `static_assert(ELX_CMAKE_SOURCE_DIR != nullptr, "...")`, saying: > warning C4130: '!=': logical operation on address of string constant Did check `CMAKE_SOURCE_DIR` more carefully, adding two more `static_assert`s. 28 March 2021, 20:36:43 UTC
7fdca97 STYLE: Remove duplicate itkAdvancedTranslationTransform from Components Removed the duplicate definition of `itk::AdvancedTranslationTransform` from Components/Transforms/TranslationStackTransform. It is also at Common/Transforms ! 26 March 2021, 20:07:36 UTC
026dafb Fix VNL header 26 March 2021, 13:59:56 UTC
6b3ac53 Add ELASTIX_VERSION CMake variable 26 March 2021, 13:59:56 UTC
3c3d37a ENH: Add five GoogleTest unit tests for itk::TransformixFilter Added the following unit tests: - itkTransformixFilter.Translation2D - itkTransformixFilter.Translation3D - itkTransformixFilter.TranslationViaExternalTransformFile - itkTransformixFilter.ITKTranslationTransform2D - itkTransformixFilter.ITKTranslationTransform3D 25 March 2021, 08:54:38 UTC
3a2bef4 STYLE: Add itkAdvancedTranslationTransform .h and .hxx to CMakeLists.txt Followed the convention to pass the names of all header files of a component with its `ADD_ELXCOMPONENT` call. 23 March 2021, 10:26:34 UTC
4f2fa16 STYLE: Fix itkAdvancedTranslationTransform.hxx include guard macro name Follow-up to commit "STYLE: Rename itkAdvancedTranslationTransform.txx to .hxx". 23 March 2021, 10:26:34 UTC
8ca7d42 STYLE: Run clang-format on itkAdvancedTranslationTransform.hxx Apparently clang-format did not run on this file when it still had a .txx filename extension. 23 March 2021, 10:26:34 UTC
bc6c23f STYLE: Rename itkAdvancedTranslationTransform.txx to .hxx Following ITK's C++ source file naming convention. ITK abandoned .txx with "STYLE: Change to hxx extension for dev tools", Hans Johnson, 12 July 2011, commit https://github.com/InsightSoftwareConsortium/ITK/commit/2fccd272862ab7cc408d643c8db2e1cb5d098fcf 23 March 2021, 10:26:34 UTC
4d1cc48 ENH: Test ability to use special chars in external transform file paths Follow-up to commit 0a962b866dd8a1f15ca1a1eee11ca84a170534ab "ENH: Lift ParameterFileParser restrictions on chars of parameter values". 22 March 2021, 17:36:01 UTC
1c29460 ENH: Read data from an external transform file into the parameter map Both `Configuration::Initialize` overloads now add values from an external file, when the specified parameter map has parameter `("Transform" "File")`, and a "TransformFileName" parameter, which specifies the external file. The values are stored into the parameters "ITKTransformParameters", "ITKTransformFixedParameters", and "ITKTransformType". The value of the "Transform" parameter is then set to the elastix transform type name that corresponds with the "ITKTransformType" value. `TransformBase::ReadFromFile()` retrieves these new parameters and loads their values into the transform object. Added unit tests for a stand-alone initial transform parameter file, and for an initial transform parameter file that links to an ITK transform file (.tfm or .h5). Added `Deref`, `Front`, and `GetDataDirectoryPath()` helper functions to `CoreMainGTestUtilities`. 19 March 2021, 21:35:36 UTC
0a962b8 ENH: Lift ParameterFileParser restrictions on chars of parameter values Removed checks on special characters (",;!@#$%&|<>?") from `ParameterFileParser::GetParameterFromLine` for parameter values, in order to be more permissive towards free text strings, and to allow any file path name as parameter value. 19 March 2021, 10:52:09 UTC
4ac44df STYLE: Move CreateParameterMap function to elx::CoreMainGTestUtilities 15 March 2021, 17:21:03 UTC
d97a728 COMP: Replace string::find_last_of("/") calls by using string::back() Addressed warnings from LLVM 11.1.0 Clang Power Tools, saying: > 'find_last_of' called with a string literal consisting of a single character; consider using the more effective overload accepting a character [performance-faster-string-find] 09 March 2021, 10:45:12 UTC
f36c1db ENH: Add RetrieveValues to ParameterMapInterface and elx::Configuration Added convenience member functions, `itk::ParameterMapInterface::RetrieveValues(parameterName)` and `elx::Configuration::RetrieveValuesOfParameter(parameterName)`. Included six `ParameterMapInterface` GoogleTest unit tests. 08 March 2021, 14:42:46 UTC
5dd5ace ENH: Add Conversion::ToOptimizerParameters(const std::vector<double> &) Including GoogleTest unit test. 08 March 2021, 14:41:05 UTC
bd4d0b3 STYLE: Use itk::TransformBase for itk::TransformBaseTemplate<double> Just to reduce the noise, just like using `std::string` for `std::basic_string<char>`. 04 March 2021, 08:17:29 UTC
7b2502f STYLE: Remove nine unnecessary dynamic_casts from T* tot T* Removed "no-op" dynamic_casts, that just cast a pointer to its own compile-time type. 03 March 2021, 12:56:27 UTC
2f9c947 STYLE: Remove unused CheckForAdvancedTransform(void) from Optimizers The `CheckForAdvancedTransform(void)` member function of five optimizer component classes appears unnecessary, because the transform returned by `GetRegistration()->GetAsITKBaseType()->GetModifiableTransform()` is always an advanced transform anyway. (There is no need to "check" this at run-time.) The member function is not being called anywhere, although the documentation said, "Called by Initialize". Removing these member functions does reduce the number of dynamic_casts, which might ease avoiding MacOS segfaults. Note that this commit does not affect `AdvancedImageToImageMetric::CheckForAdvancedTransform(void)`, which is still being used. 03 March 2021, 12:56:27 UTC
0262094 COMP: Remove duplicated elxOverrideGetSelfMacro from OpenCLResampler Fixed compilation errors like: > Components\Resamplers\OpenCLResampler\elxOpenCLResampler.h(158,1): error C2535: 'const elastix::OpenCLResampler<TElastix> &elastix::OpenCLResampler<TElastix>::GetSelf(void) const': member function already defined or declared > Components\Resamplers\OpenCLResampler\elxOpenCLResampler.h(157): message : see declaration of 'elastix::OpenCLResampler<TElastix>::GetSelf' 02 March 2021, 22:55:07 UTC
2cf6df6 STYLE: Remove unnecessary const_cast<InterpolatorType *> from Metrics 02 March 2021, 15:54:19 UTC
1701c73 STYLE: Remove unnecessary dynamic_cast<ObjectType *> from Creator(void) 02 March 2021, 15:54:19 UTC
fe7b2a0 BUG: Replace dynamic_cast<itk::Object *>(this) by calls to GetSelf() Adds pure virtual `GetSelf(void)` member functions to `BaseComponentSE`, and calls `GetSelf()` instead of `dynamic_cast`, in both `SetElastix` and `SetConfiguration`. Aims to avoid potential `dynamic_cast<itk::Object *>` failures, especially on MacOS. 02 March 2021, 15:54:19 UTC
6f5b1c1 BUG: Replace five dynamic_casts by calls to BaseComponent::AsITKBaseType Aims to further reduce the chance of getting MacOS segfaults. 02 March 2021, 15:54:19 UTC
cf968a9 ENH: Add DisableOutput() to Elastix/TransformixFilter, for thread safety Added a `DisableOutput(void)` member function to both `elx::ElastixFilter` and `elx::TransformixFilter`, which allows skipping an internal `xoutSetup` call, during `GenerateData()`. Effectively suppressed the output that is otherwise produced, when doing `xl::xout["some-stream"] << "some-output"`. Aims to ease multi-threading support, as discussed with Konstantinos Ntatsis. 01 March 2021, 13:24:24 UTC
a0a0ba8 STYLE: Remove set_xout(xoutmain*), let get_xout() create xoutmain object With this commit, `get_xout()` creates the `xoutmain` object itself. Thereby it is ensured that `xout` is always valid (although it may just be default-constructed). Removed `set_xout(xoutmain*)` and `xout_valid()`, as those functions appear no longer necessary. Aims to ease multi-threading support, as discussed with Konstantinos Ntatsis. 01 March 2021, 13:24:24 UTC
8309298 STYLE: Remove xout flush in component base Write Image member functions An explicit flush of `xout["coutonly"]` appears unnecessary here, as `std::endl` is inserted afterwards (which flushes automatically). 28 February 2021, 10:40:56 UTC
9b3d9da STYLE: Simplify code to replace a possible " " with "_", in Write Image Simplified code to replace a possible " " with "_", in the implementation of Write Image member functions of ComponentBaseClasses: - Replaced `std::basic_string<char>` by `std::string` - Removed unnecessary local constant `npos` variables 28 February 2021, 10:40:56 UTC
a4c8fbf STYLE: Remove const_cast<RayCastInterpolatorType *> from ResamplerBase Follows C++ Core Guidelines (August 3, 2020) "ES.50: Don't cast away const", https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es50-dont-cast-away-const 28 February 2021, 10:40:56 UTC
6770c64 COMP: Define CL_TARGET_OPENCL_VERSION This is required when using the Khronos OpenCL headers: https://github.com/KhronosGroup/OpenCL-Headers Limit to 1.2, because this is the version supported on macOS: https://support.apple.com/en-us/HT202823 Fixes: In file included from /home/matt/src/OpenCL-Headers/CL/cl_platform.h:20, from /home/matt/src/elastix/Common/OpenCL/ITKimprovements/itkOpenCL.h:27, from /home/matt/src/elastix/Common/OpenCL/ITKimprovements/itkOpenCLPlatform.h:21, from /home/matt/src/elastix/Common/OpenCL/ITKimprovements/itkOpenCLDevice.h:21, from /home/matt/src/elastix/Common/OpenCL/ITKimprovements/itkOpenCLProgram.h:21, from /home/matt/src/elastix/Common/OpenCL/ITKimprovements/itkOpenCLProgram.cxx:18: /home/matt/src/OpenCL-Headers/CL/cl_version.h:22:104: note: #pragma message: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0) 22 | #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 300 (OpenCL 3.0)") | ^ [42/464] Building CXX object Components/Metrics/AdvancedKappaStatistic/CMa...les/AdvancedKappaStatisticMetric.dir/elxAdvancedKappaStatisticMetric.cxx.o^C As well as (Visual Studio 2019 + intel_sdk_for_opencl_applications_2020.3.494): >------ Build started: Project: elxOpenCL, Configuration: Debug x64 ------ >itkOpenCLContext.cxx >cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2) >D:\src\elastix\elxOpenCL\Common\OpenCL\ITKimprovements\itkOpenCLContext.cxx(797,13): warning C4996: 'clCreateCommandQueue': was declared deprecated 25 February 2021, 11:53:09 UTC
a5d237b COMP: Add elxCommon_OpenCL_INCLUDE_DIRECTORIES to elxINCLUDE_DIRECTORIES So these directories are added to ELASTIX_INCLUDE_DIRS in ElastixConfig.cmake when ELASTIX_USE_OPENCL is enabled. 25 February 2021, 11:53:09 UTC
6a2b5e3 STYLE: Make ElastixMain::GetElastixBase() non-virtual, return reference Removed the `virtual` keyword from the declaration of `ElastixMain::GetElastixBase(void)`, as it isn't overridden by any derived class anyway. Following C++ Core Guidelines, August 3, 2020, "C.132: Don't make a function virtual without reason", https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-virtual Changed its return type from pointer to reference type. The original `GetElastixBase(void)` implementation already made sure that the return value was never null, and the `this->GetElastixBase()` calls didn't explicitly check for "not null" anyway. 24 February 2021, 11:16:44 UTC
68d1b72 STYLE: Remove redundant calls to ElastixMain::GetElastixBase(void) Added a local `elastixBase` variable to both `ElastixMain::Run(void)` and `TransformixMain::Run(void)`. Cleans up the code, and eases debugging (by avoiding to step into `GetElastixBase(void)` multiple times, when debugging `Run(void)`). 24 February 2021, 11:16:44 UTC
be0abdc STYLE: Remove GetAsCombinationTransform(void) member functions The `GetAsCombinationTransform(void)` member functions became redundant as `TransformBase::GetAsITKBaseType(void)` now returns an `AdvancedCombinationTransform` pointer. 22 February 2021, 14:08:36 UTC
6b57f61 STYLE: Replace GetAsCombinationTransform() calls by GetAsITKBaseType() Made the definition of `TransformBase::ITKBaseType` more specific (`AdvancedCombinationTransform` instead of `AdvancedTransform`), allowing `TransformBase::GetAsITKBaseType()` to be called anywhere, instead of `GetAsCombinationTransform()`. 22 February 2021, 14:08:36 UTC
abd1c5c ENH: Make GetAsITKBaseType(void) non-virtual, calling this->GetSelf() Declared the `GetAsITKBaseType(void)` member functions of the component base classes non-virtual, and implemented them by calling `this->GetSelf()`. Removing 18 `dynamic_cast`s, in order to avoid MacOS segfaults like the ones mentioned by Matt McCormick, issue https://github.com/SuperElastix/elastix/issues/411, "elastix::TransformBase itk::Object casting". 22 February 2021, 14:08:36 UTC
6d67228 ENH: Use elxDeclarePureVirtualGetSelfMacro and elxOverrideGetSelfMacro Called `elxDeclarePureVirtualGetSelfMacro(ITKBaseType)` in the private section of the 10 component base classes, defined in elastix/Core/ComponentBaseClasses. Called `elxOverrideGetSelfMacro` in the private section of the 90 derived component classes, defined in elastix/Components. 22 February 2021, 14:08:36 UTC
288a367 ENH: Define elxDeclarePureVirtualGetSelfMacro + elxOverrideGetSelfMacro `elxDeclarePureVirtualGetSelfMacro(ITKBaseType)` is to be called in the elastix component base classes, and `elxOverrideGetSelfMacro` is to be called in its concrete (derived) component classes. 22 February 2021, 14:08:36 UTC
b65034e CI: Build docker image and push to dockerhub (#415) 17 February 2021, 10:05:12 UTC
ab2e2e9 ENH: Move FillImageRegion to elxCoreMainGTestUtilities.h Aims to support both ITK 5.1 and ITK 5.2, by allowing `ImageRegionRange` to be either in `namespace itk` or in `namespace itk::Experimental`. 17 February 2021, 07:55:01 UTC
7677baf ENH: Add 4D float support (#418) 16 February 2021, 11:56:20 UTC
e0b7281 COMP: Fix GetJacobianOfSpatialHessian warnings on jsh_tmp buffer overrun Solved fifteen Visual C++ warnings from `RecursiveBSplineTransformImplementation::GetJacobianOfSpatialHessian`, which said: > warning C4789: buffer 'jsh_tmp' of size 32 bytes will be overrun; 8 bytes will be written starting at offset 64 Note that the buffer overrun would not occur in practice, as the size of `jsh_tmp` depends on `OutputDimension`, which was checked at runtime. But the compiler still issued those warnings. Which are fixed by this commit. 16 February 2021, 10:25:39 UTC
6fcd903 BUG: Replace dynamic_cast's TransformBase by GetAsCombinationTransform() Replaced 11 `dynamic_cast`'s from the implementation of `elx::TransformBase` by calls to `this->GetAsCombinationTransform()`, which is now pure `virtual`. Did override `TransformBase::GetAsCombinationTransform()` in all of its 17 derived transform classes. Aims to fix MacOS segfaults, mentioned by Matt McCormick, issue https://github.com/SuperElastix/elastix/issues/411, "elastix::TransformBase itk::Object casting". 16 February 2021, 10:24:33 UTC
f5b0e2a COMP: Fix OpenCLResampler ParameterMapType build error Addressed issue https://github.com/SuperElastix/elastix/issues/414 "OpenCLResampler build error: 'ParameterMapType does not name a type'", reported by 1989HD. 16 February 2021, 08:09:03 UTC
b74f6a2 STYLE: Pass parameter map "by reference" to CreateTransformParametersMap Replaced `ParameterMapType *` by `ParameterMapType &` as parameter type, to express that `CreateTransformParametersMap` does not support `nullptr` as argument. Follows C++ Core Guidelines section "Parameter passing expression rules" from https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-functions (August 3, 2020) 13 February 2021, 10:47:46 UTC
df2a3ce COMP: Fix template export macro in classes 12 February 2021, 17:56:44 UTC
9d971ef STYLE: Remove xout["WriteHeaders"] logic, simply call WriteHeaders() Dropped "WriteHeaders" as special case for `xout[name]`. Replaced "WriteHeaders" by a direct call to `xoutrow::WriteHeaders()`. Aims to just simplify the code. 09 February 2021, 13:34:10 UTC
ef55738 ENH: No longer add "iteration" as target to xl::xout Eases multi-threading support. 09 February 2021, 10:12:50 UTC
003070d STYLE: Do access IterationInfo via BaseComponentSE and ElastixBase Instead of doing the access via `xl::xout["iteration"]` (which uses a global data structure). 09 February 2021, 10:12:50 UTC
e20adb7 ENH: Ease access to IterationInfo from BaseComponentSE and ElastixBase Added six member functions: - ElastixBase::GetIterationInfo() - ElastixBase::GetIterationInfoAt(name) - ElastixBase::AddTargetCellToIterationInfo(name) - BaseComponentSE::RemoveTargetCellFromIterationInfo(name) - BaseComponentSE::GetIterationInfoAt(name) - BaseComponentSE::AddTargetCellToIterationInfo(name) 09 February 2021, 10:12:50 UTC
b67df96 STYLE: Pass by const-ref (Clang performance-unnecessary-value-param) Passed parameters that are expensive to copy by `const` reference, instead of "by value". Fixed using Clang-Tidy (LLVM 11.0) `performance-unnecessary-value-param`: https://clang.llvm.org/extra/clang-tidy/checks/performance-unnecessary-value-param.html 08 February 2021, 12:59:34 UTC
043e04c COMP: Fix template template parameters, by `template <typename> class` According to https://en.cppreference.com/w/cpp/language/template_parameters > Unlike type template parameter declaration, template template parameter declaration can only use the keyword class and not typename. (until C++17) Issue found by Clang-Tidy (LLVM 11.0.0) 08 February 2021, 12:59:34 UTC
ee6fd5a ENH: No longer add transformationParameterInfo to global `xout` object Passed the `transformationParameterInfo` directly as parameter to the `WriteToFile` member functions of Transform, Resampler, and ResampleInterpolator, instead of via `xout["transpar"]`. This commit aims to ease implementing multi-threading support. 08 February 2021, 09:04:58 UTC
020b184 STYLE: Add TransformBase::WriteDerivedTransformDataToFile() + overrides Made `TransformBase::WriteToFile(const ParametersType &)` non-virtual, and let it call `WriteDerivedTransformDataToFile()`. Replaced the two existing `WriteToFile` overrides by `WriteDerivedTransformDataToFile` overrides. Will make it easier to add an extra parameter to `TransformBase::WriteToFile`. 08 February 2021, 09:04:58 UTC
271c983 STYLE: Remove unused `TransformBase<TElastix>::WriteToFile()` overload It appears that `TransformBase::WriteToFile(void)` is not being used anywhere (whereas the other overload, `TransformBase::WriteToFile(const ParametersType &)`, is called by `ElastixTemplate::CreateTransformParameterFile`). While preparing to add an extra parameter to the other overload, it appears easiest to simply remove this one. 08 February 2021, 09:04:58 UTC
3700590 BUG: Use OutputPixelType for ReadParameter call to get DefaultPixelValue Removed unchecked (unsafe) cast from `double` to `OutputPixelType`, in `ResamplerBase::BeforeRegistrationBase`. 05 February 2021, 11:04:03 UTC
1d9f7a1 STYLE: Use "0" instead of "0.0" as DefaultParameterMap DefaultPixelValue The pixel type may not be a floating point. ("0" is also correctly supported for both floating point and integer types.) 05 February 2021, 11:04:03 UTC
3b5df81 BUG: Restore (signed/unsigned) char support of ReadParameter<T> Support for (signed/unsigned) char pixel types was removed by commit ea7a1f78a15d8a5a8cf73022e4dd5c145dba2729 "STYLE: Avoid conversions between (signed/unsigned) char and string" (2 February 2021) This commit restores support for those pixel types, as it still appears useful for the `DefaultPixelValue` parameter. It is now implemented by a new `StringCastToCharType<TChar>` member function, which is more "type safe" than the original (elastix 5.0.1) approach (as it does not have the original cast in `StringCast<T>` anymore). 05 February 2021, 11:04:03 UTC
17cf3f3 BUG: Restore (signed/unsigned) char support for pixel types When CMake variable `ELASTIX_IMAGE_2D_PIXELTYPES` of `ELASTIX_IMAGE_3D_PIXELTYPES` would have (signed/unsigned) char types, a `static_assert` would fail inside `Conversion::ToString`, saying: > elastix\Core\Install\elxConversion.h(102,36): error C2338: ToString does not support (signed/unsigned) char! > elastix\Core\ComponentBaseClasses\elxResamplerBase.hxx(715): message : see reference to function template instantiation 'std::string elastix::Conversion::ToString<char>(const TInteger)' being compiled When trying to compile `Conversion::ToString(this->GetAsITKBaseType()->GetDefaultPixelValue())`. Fixed by this commit, which removes the `static_assert` and extends the `Conversion.ToString` GTest unit test, to also test char types. 05 February 2021, 11:04:03 UTC
a06e232 BUG: ParameterMapInterface::StringCast workaround Clang denormal bug Implemented a workaround to ensure that ParameterMapInterface::ReadParameter may properly retrieve denormal floating point values, even while having that Clang denormal bug: LLVM Bug 39012, "ostream writes a double that istream can't read", reported by Daniel Cooke, 2018-09-20. https://bugs.llvm.org/show_bug.cgi?id=39012 05 February 2021, 11:04:03 UTC
cba9d81 STYLE: Declare parameterValue parameters as (const) reference Some `parameterValue` function parameters were accidentally declared as "by value", instead of "by (const) reference". Fixed by running Clang-Tidy (LLVM 11.0) `performance-unnecessary-value-param`: https://clang.llvm.org/extra/clang-tidy/checks/performance-unnecessary-value-param.html 05 February 2021, 11:04:03 UTC
b96cbab BUG: Work around Clang denorm_min Conversion round trip test failure Skipped the denorm_min round trip tests for Clang, as they appear to trigger an exception from `ParameterMapInterface::ReadParameter`. The exception appears to be caused (indirectly) by LLVM Bug 39012, "ostream writes a double that istream can't read", reported by Daniel Cooke, 2018-09-20. https://bugs.llvm.org/show_bug.cgi?id=39012 03 February 2021, 18:57:33 UTC
1f1d33d ENH: Support "Infinity", "-Infinity", and "NaN" values in parameter map 03 February 2021, 18:57:33 UTC
954d4c9 ENH: Add Conversion.LosslessRoundTripOfParameterValue GTest unit test 03 February 2021, 18:57:33 UTC
08fc58c STYLE: ParameterMapInterface con/destructor default, StringCast static Small style improvements of `ParameterMapInterface`implementation: - Declared the private `StringCast` member function `static` - Defined default-constructor and destructor "default" (C++11) - Initialized `m_PrintErrorMessages` inside the class definition (C++11) 03 February 2021, 18:57:33 UTC
ea7a1f7 STYLE: Avoid conversions between (signed/unsigned) char and string So far, it appears unnecessary to support 8-bits (signed or unsigned) `char` as type of a parameter values. Moreover, conversion between `char` and `std::string` appears rather tricky, as it may not always be obvious whether to use the character value or the integer value represented by the bits of a `char`. Simplified `ParameterMapInterface::StringCast` by removing the `char` specific `NumericTraits<T>::AccumulateType` workaround. 03 February 2021, 18:57:33 UTC
f5ebf6e ENH: use IO meta-packages 01 February 2021, 21:08:36 UTC
0890e5a ENH: Complete required ITK components in CMakeLists.txt 01 February 2021, 21:08:36 UTC
a3f1e88 ENH: specify required ITK components explicitly This avoids circular dependency when building ITKElastix as part of ITK 01 February 2021, 21:08:36 UTC
71e52b4 ENH: Add DeformationFieldFileName from two transforms to ParameterMap Adds "DeformationFieldFileName" to the parameter maps of both `DeformationFieldTransform` and `BSplineTransformWithDiffusion`. Reduced code duplication by adding a helper function, `TransformIO::MakeDeformationFieldFileName`. Adjusted GTest `CreateTransformParametersMap` unit tests by expecting the added parameter for those two transform types. 31 January 2021, 17:26:06 UTC
0318c61 STYLE: Remove floating point output format flags from xout["transpar"] Floating point values are no longer directly inserted into `xout["transpar"]`. Instead, conversion from float to string is now performed via `itk::NumberToString`. 31 January 2021, 08:23:09 UTC
ebaad19 ENH: Sync Resamplers, ResampleInterpolators WriteToFile w/ ParameterMap Follow-up to "Sync Transform WriteToFile with CreateTransformParametersMap" pull request https://github.com/SuperElastix/elastix/pull/385 commit af382ee4b598ac79fcbb7724bfad7bbcfe492fd6 Making use of the new `ParameterMapToString` function from pull request https://github.com/SuperElastix/elastix/pull/394 commit 1a317327ad1d5e890ad607db4fabe445aee7a313 Adjusted Resamplers and ResampleInterpolators CreateTransformParametersMap unit tests accordingly. 31 January 2021, 08:23:09 UTC
7745c27 ENH: Test Resampler, ResampleInterpolator CreateTransformParametersMap Added two GoogleTest unit tests: - Resampler.CreateTransformParametersMapForDefaultResampler - ResampleInterpolator.CreateTransformParametersMapForDefaultInterpolator Moved common code of Resampler, ResampleInterpolator, and Transform unit tests to "elxGTestUtilities.h" 30 January 2021, 20:36:24 UTC
8f2f71c COMP: Add `xl::` to `xout` macro call by OpenCLResampler::WriteToFile() This `xl::` was accidentally removed on 26 January 2021, by: "STYLE: Move static BaseComponent member functions to Conversion class" Pull request https://github.com/SuperElastix/elastix/pull/399 Commit 306d15616b5d9b58c4c3821fa50674471944e4f6 30 January 2021, 20:36:24 UTC
d0af976 STYLE: Remove template arguments charT, traits from xout classes It does not appear necessary to support template arguments (charT and traits) for the xout classes, as elastix always only uses 8-bits `char` as character type of output streams. Removing those template arguments significantly reduces compilation time (especially when adjusting the implementation of xout) and code complexity. Discussed at our internal SuperElastix/elastix slack channel. 28 January 2021, 21:12:21 UTC
306d156 STYLE: Move static BaseComponent member functions to Conversion class 27 January 2021, 15:09:28 UTC
5aa42e0 STYLE: Remove `using namespace xl` (which is no longer necessary) Entities from the xout library are (or should be) referred to with `xl::` prefix anyway. Did some code fixes, just to keep it compiling. 26 January 2021, 10:10:18 UTC
3fa9f04 STYLE: Consistently use the `xl` alias for the `xoutlibrary` namespace 26 January 2021, 10:10:18 UTC
3dd658b STYLE: For consistency, add `xl::` to all `xout` macro calls Before this commit, the majority of those macro calls already had `xl::` specified: " xout[" was encountered 241 times. " xl::xout[" was encountered 378 times. 26 January 2021, 10:10:18 UTC
8270aac STYLE: Remove `using namespace std` from global scope, in a header file Following "C++ Core Guidelines", August 3, 2020 "Don't write `using namespace` at global scope in a header file" https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rs-using-directive 26 January 2021, 10:10:18 UTC
aa32e1f STYLE: Make xoutbase abstract and add xoutmain type for xout singleton Made `xoutbase<char>` an abstract base class (as was already documented), by declaring its destructor pure (`= 0`) virtual, and its default-constructor `protected`. Derived an `xoutmain` class as the new type of the xout singleton. Aims to clarify the design of the xout library, by distinguishing clearly between base and leaf classes. See also Scott Meyers's book "More Effective C++", Item 33: "Make non-leaf classes abstract". 26 January 2021, 06:00:01 UTC
e2ec816 STYLE: No longer disable old MSVC "truncated name" warnings C4786, C4503 The Microsoft documentation page "Compiler Warning (level 1) C4503" (05/14/2018) at https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4503?view=msvc-160 says: > 'identifier' : decorated name length exceeded, name was truncated ... > This compiler warning is obsolete and is not generated in Visual Studio 2017 and later compilers. Warning C4786 is now listed with "Compiler warnings that are off by default" (05/14/2018) at https://docs.microsoft.com/en-us/cpp/preprocessor/compiler-warnings-that-are-off-by-default?view=msvc-160 > C4786 (level 3) 'symbol' : object name was truncated to 'number' characters in the debug information 24 January 2021, 12:15:44 UTC
efbf563 STYLE: Make xoutbase::SendToTargets `private` (instead of `protected`) 24 January 2021, 12:15:44 UTC
b1334de STYLE: xoutcell should not flush its m_InternalBuffer There is no need to flush `xoutcell::m_InternalBuffer`, which is an `std::ostringstream`. As explained by Cubbi (Sergey Zubkov), http://www.cplusplus.com/forum/general/84962 November 15, 2012: > flushing has no meaning for stringstream, as there is no external device that it sends data to Also removed an unnecessary `using namespace` directive and an unnecessary `std::string::c_str()` call. 24 January 2021, 12:15:44 UTC
f8e2e57 STYLE: xoutbase::SelectXCell(name) should only search for the cell once Replaced two searches for a key in the map (`map.count(key)` and `map[key]`) by one: `map.find(key)`. Might slightly improve the performance. 24 January 2021, 12:15:44 UTC
1a31732 ENH: Add BaseComponent::ParameterMapToString(map) + unit test Aims to improve performance and thread-safety of `TransformBase::WriteToFile`. Intended to be reused by `WriteToFile` member functions of other classes from "Core/ComponentBaseClasses". 23 January 2021, 09:51:27 UTC
37cab8f ENH: Add ElastixMain.GetComponentDatabaseAndCreatorInParallel unit test 21 January 2021, 16:44:49 UTC
e5b3658 ENH: Make ElastixMain database creation + loading components thread safe Ensures that only one thread may load the components into the ComponentDatabase, using using C++11 "magic statics". `ElastixMain::GetComponentDatabase()` now returns a "const reference" instead of a non-const pointer, to prevent one thread from modifying the database while another is reading from the database. Aims to fix issue https://github.com/SuperElastix/elastix/issues/174 "elastix 4.9 static libary version not thread safe" reported by jiangliMED, August 16, 2019 With help from Konstantinos Ntatsis 21 January 2021, 16:44:49 UTC
97d1718 STYLE: Remove UnloadComponents() from ElastixMain and ComponentLoader Removed the two `UnloadComponents()` member functions (from both `ElastixMain` and `ComponentLoader`), as they appear not useful anymore. Paves the way to making access to the ComponentDatabase thread-safe. 21 January 2021, 16:44:49 UTC
af382ee ENH: Sync Transform WriteToFile with CreateTransformParametersMap Adjusted `TransformBase::WriteToFile` by using the parameter map created by `CreateTransformParametersMap`. Removed 14 out of 16 `WriteToFile` overrides. Ensured that the transform parameter txt file is kept in sync with the corresponding the parameter map. Thereby also adjusted the floating point format for values written to file, as discussed at issue #383, "Reconsider string representation of floating points for parameter files and parameter maps", https://github.com/SuperElastix/elastix/issues/383 Addresses issue #217 'the "Origin" precision in TransformParameters is not high enough', reported by GouZi2019, January 5, 2020: https://github.com/SuperElastix/elastix/issues/217 14 January 2021, 22:04:26 UTC
e8a1751 ENH: Add IsNumber(const std::string &) to BaseComponent Added a utility function, which is intended to estimate whether a transform parameter value should be "double quoted", when elastix `Transform::WriteToFile` writes such a value to a TransformParameters .txt file. (A numeric parameter value should not be double quoted.) 14 January 2021, 22:04:26 UTC
back to top