<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Migration guides on CamiTK</title>
    <link>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/</link>
    <description>Recent content in Migration guides on CamiTK</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Migration guide from CamiTK 3.x to CamiTK 4.0</title>
      <link>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/3.x-to-4.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/3.x-to-4.0/</guid>
      <description>&lt;p&gt;This page explains how to modify your CamiTK 3.x code to work on the 4.x version.&#xA;The CamiTK team tried to do its best to make sure that there are &lt;strong&gt;not a lot of changes&lt;/strong&gt; to make to your CEP source code. Here it a complete step by step.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisite&#34;&gt;Prerequisite&lt;/h2&gt;&#xA;&lt;p&gt;First of all, make sure you have compiled and installed CamiTK 4.0 or up on your computer.&#xA;Please follow the setup guide of this wiki.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migration guide from CamiTK 4.0 to CamiTK 4.1</title>
      <link>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/4.0-to-4.1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/4.0-to-4.1/</guid>
      <description>&lt;p&gt;The main objective of the CamiTK 4.0 was to ensure that CamiTK will stay up to date with its basic dependencies.&#xA;Qt4, VTK5 and CMake version 2 became obsolete.&#xA;CamiTK 4.0 had therefore to ensure compatibility with Qt5, VTK6 and CMake version 3.&lt;/p&gt;&#xA;&lt;p&gt;CamiTK 4.1 is the first stable release of the 4.x family. It removes all the 3.x deprecated methods and clean up a lot of obsolete Core library API methods.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migration guide from CamiTK 4.1 to CamiTK 5.0</title>
      <link>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/4.1-to-5.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/4.1-to-5.0/</guid>
      <description>&lt;p&gt;CamiTK 5 fixes a lot of bugs (see the Release Notes) and introduces one big new feature: the viewer extension (ability to define plugins that provides new viewers, see the viewer extension documentation for more information).&#xA;Viewer extensions are now a first class type of extension, and are as easy to create and integrate as action and component extensions. They also makes applications easier to build and test.&lt;/p&gt;&#xA;&lt;p&gt;The methods in the &lt;code&gt;Component&lt;/code&gt; class that used a pointer to a &lt;code&gt;Viewer&lt;/code&gt; in the previous versions of CamiTK are now using a &lt;code&gt;QString&lt;/code&gt; to name the required viewer. This ensures safety and modularity to access a specific viewer (e.g., to manage the case where the corresponding viewer extension is not currently loaded).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migration guide from CamiTK 5.0 to CamiTK 5.2</title>
      <link>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/5.0-to-5.2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/5.0-to-5.2/</guid>
      <description>&lt;p&gt;CamiTK 5.2 fixes a lot of bugs (see the Release Notes) and introduces one big new feature: the viewer extension (ability to define plugins that provides new viewers, see the viewer extension documentation for more information).&#xA;Viewer extensions are now a first class type of extension, and are as easy to create and integrate as action and component extensions. They also makes applications easier to build and test.&lt;/p&gt;&#xA;&lt;p&gt;The methods in the &lt;code&gt;Component&lt;/code&gt; class that used a pointer to a &lt;code&gt;Viewer&lt;/code&gt; in the previous versions of CamiTK are now using a &lt;code&gt;QString&lt;/code&gt; to name the required viewer. This ensures safety and modularity to access a specific viewer (e.g., to manage the case where the corresponding viewer extension is not currently loaded).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migration guide from CamiTK 5.2 to CamiTK 6.0</title>
      <link>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/5.2-to-6.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://camitk.timc.fr/docs/extensiondeveloper/advanced-topics/migration-guides/5.2-to-6.0/</guid>
      <description>&lt;img src=&#39;https://camitk.timc.fr/icons/developer/cpp_logo.svg&#39; style=&#39;height: 2em; vertical-align: middle;&#39;/&gt;&#xA;&lt;h2 id=&#34;frames-and-geometrical-transformations&#34;&gt;Frames and geometrical Transformations&lt;/h2&gt;&#xA;&lt;p&gt;If your extension manages frames of components and geometrical transformations between them, you will need to port your code to the &lt;a href=&#34;https://camitk.timc.fr/docs/extensiondeveloper/highlighted-features/frames-and-transformations/&#34;&gt;new framework&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Here is a short preview:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Previously, components had a &lt;code&gt;Component::get/setParentFrame()&lt;/code&gt; and a transformation to it that you could set using &lt;code&gt;Component::setTransform()&lt;/code&gt; and other helper functions.&lt;/li&gt;&#xA;&lt;li&gt;Now Frames and Transformations are managed by the &lt;code&gt;TransformationManager&lt;/code&gt; (see &lt;a href=&#34;https://camitk.timc.fr/apidoc/6.0/cpp/classcamitk_1_1TransformationManager.html&#34;&gt;API&lt;/a&gt;), so that multiple components can use the same frame.&lt;/li&gt;&#xA;&lt;li&gt;When you load or create a MeshComponent, a new Frame is created for it.&lt;/li&gt;&#xA;&lt;li&gt;When you load an ImageComponent, it comes with three frames: the Data Frame (were the voxels are defined), the main Frame (which is usually the coordinates system of the imaging machine, e.g. CT scanner) and an arbitrary frame to manage the position and orientation of the arbitrary slice that CamiTK can display.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Ownership&lt;/strong&gt;: you need to be careful about the ownership of Frames and Transformations: When you use frames and transformation to process coordinates, you do not need to own the Frames and Transformations. This is why &lt;code&gt;Component::getFrame()&lt;/code&gt;, &lt;code&gt;ImageComponent::getDataFrame()&lt;/code&gt; return raw, non owning pointer.&lt;/li&gt;&#xA;&lt;li&gt;If you really need ownership of a Frame, usually because you want to set the Frame of a new Component, you can either use &lt;code&gt;myNewMesh-&amp;gt;setFrameFrom(myOldMesh)&lt;/code&gt;, or the more explicit &lt;code&gt;myNewMesh-&amp;gt;setFrame( TransformationManager::getFrameOwnership(myOldMesh-&amp;gt;getFrame()) )&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;If your extension creates a new Component, please set its Frame in a logical way: if the data is expressed in the same Frame as the input component, just set the Frame of your output component to the Frame of the input Component&lt;/li&gt;&#xA;&lt;li&gt;If you know the transformation between two Components, you can add a Transformation between their Frames using &lt;code&gt;TransformationManager::addTransformation&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;new-extensions&#34;&gt;New extensions&lt;/h2&gt;&#xA;&lt;p&gt;You should use &lt;a href=&#34;https://camitk.timc.fr/docs/extensiondeveloper/&#34;&gt;DevStudio&lt;/a&gt; to create new extensions instead of the wizard. The code will be simpler, and Python extensions are supported as well.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
