Coupure prévue mardi 3 Août au matin pour maintenance du serveur. Nous faisons au mieux pour que celle-ci soit la plus brève possible.

Commit 761e1e91 authored by Pierre Kraemer's avatar Pierre Kraemer
Browse files

SCHNApps !

parent 37b3cdd9
\BOOKMARK [0][-]{chapter.1}{Introduction and purposes}{}% 1
\BOOKMARK [1][-]{section.1.1}{CGoGN}{chapter.1}% 2
\BOOKMARK [2][-]{subsection.1.1.1}{What is CGoGN library ?}{section.1.1}% 3
\BOOKMARK [2][-]{subsection.1.1.2}{CGoGN and visualization?}{section.1.1}% 4
\BOOKMARK [1][-]{section.1.2}{The project}{chapter.1}% 5
\BOOKMARK [2][-]{subsection.1.2.1}{CGoGN in space?}{section.1.2}% 6
\BOOKMARK [2][-]{subsection.1.2.2}{Plugins and CGoGN?}{section.1.2}% 7
\BOOKMARK [0][-]{chapter.2}{The project}{}% 8
\BOOKMARK [1][-]{section.2.1}{Work}{chapter.2}% 9
\BOOKMARK [2][-]{subsection.2.1.1}{Specifications}{section.2.1}% 10
\BOOKMARK [2][-]{subsection.2.1.2}{Additional features}{section.2.1}% 11
\BOOKMARK [2][-]{subsection.2.1.3}{Third party libraries}{section.2.1}% 12
\BOOKMARK [1][-]{section.2.2}{Quick presentation}{chapter.2}% 13
\BOOKMARK [2][-]{subsection.2.2.1}{The main application}{section.2.2}% 14
\BOOKMARK [2][-]{subsection.2.2.2}{The import plugin}{section.2.2}% 15
\BOOKMARK [2][-]{subsection.2.2.3}{The camera path plugin}{section.2.2}% 16
\BOOKMARK [0][-]{chapter.3}{How to write plugins?}{}% 17
\BOOKMARK [1][-]{section.3.1}{Basics and concepts}{chapter.3}% 18
\BOOKMARK [2][-]{subsection.3.1.1}{Visualization concepts}{section.3.1}% 19
\BOOKMARK [2][-]{subsection.3.1.2}{The first plugin}{section.3.1}% 20
\BOOKMARK [2][-]{subsection.3.1.3}{Tricks and advice}{section.3.1}% 21
\BOOKMARK [1][-]{section.3.2}{Going further\203}{chapter.3}% 22
\BOOKMARK [2][-]{subsection.3.2.1}{Few words on plugins}{section.3.2}% 23
\BOOKMARK [2][-]{subsection.3.2.2}{Objects and visualization plugins}{section.3.2}% 24
\BOOKMARK [2][-]{subsection.3.2.3}{GUI and user interactions}{section.3.2}% 25
\BOOKMARK [2][-]{subsection.3.2.4}{Maps and VBOs}{section.3.2}% 26
This diff is collapsed.
\select@language {english}
\contentsline {chapter}{\numberline {1}Introduction and purposes}{3}{chapter.1}
\contentsline {section}{\numberline {1.1}CGoGN}{3}{section.1.1}
\contentsline {subsection}{\numberline {1.1.1}What is CGoGN library ?}{3}{subsection.1.1.1}
\contentsline {subsection}{\numberline {1.1.2}CGoGN and visualization?}{3}{subsection.1.1.2}
\contentsline {section}{\numberline {1.2}The project}{3}{section.1.2}
\contentsline {subsection}{\numberline {1.2.1}CGoGN in space?}{3}{subsection.1.2.1}
\contentsline {subsection}{\numberline {1.2.2}Plugins and CGoGN?}{4}{subsection.1.2.2}
\contentsline {chapter}{\numberline {2}The project}{5}{chapter.2}
\contentsline {section}{\numberline {2.1}Work}{5}{section.2.1}
\contentsline {subsection}{\numberline {2.1.1}Specifications}{5}{subsection.2.1.1}
\contentsline {subsection}{\numberline {2.1.2}Additional features}{5}{subsection.2.1.2}
\contentsline {subsection}{\numberline {2.1.3}Third party libraries}{6}{subsection.2.1.3}
\contentsline {section}{\numberline {2.2}Quick presentation}{6}{section.2.2}
\contentsline {subsection}{\numberline {2.2.1}The main application}{6}{subsection.2.2.1}
\contentsline {subsection}{\numberline {2.2.2}The import plugin}{13}{subsection.2.2.2}
\contentsline {subsection}{\numberline {2.2.3}The camera path plugin}{15}{subsection.2.2.3}
\contentsline {chapter}{\numberline {3}How to write plugins?}{19}{chapter.3}
\contentsline {section}{\numberline {3.1}Basics and concepts}{19}{section.3.1}
\contentsline {subsection}{\numberline {3.1.1}Visualization concepts}{19}{subsection.3.1.1}
\contentsline {paragraph}{Plugin:}{19}{section*.44}
\contentsline {paragraph}{Scene:}{19}{section*.45}
\contentsline {paragraph}{View:}{19}{section*.46}
\contentsline {paragraph}{Camera:}{19}{section*.47}
\contentsline {subsection}{\numberline {3.1.2}The first plugin}{20}{subsection.3.1.2}
\contentsline {subsubsection}{How to write the plugin}{20}{section*.52}
\contentsline {paragraph}{firstPlugin.h}{21}{section*.55}
\contentsline {paragraph}{firstPlugin.cpp}{23}{section*.57}
\contentsline {subsubsection}{Compilation}{25}{section*.58}
\contentsline {paragraph}{CMakeLists.txt}{25}{section*.61}
\contentsline {subsubsection}{Using the plugin}{26}{section*.63}
\contentsline {subsection}{\numberline {3.1.3}Tricks and advice}{28}{subsection.3.1.3}
\contentsline {subsubsection}{Understanding the callBacks}{28}{section*.68}
\contentsline {subsubsection}{Bug \& Debug}{29}{section*.70}
\contentsline {paragraph}{Common bug:}{29}{section*.71}
\contentsline {paragraph}{Debug:}{29}{section*.72}
\contentsline {section}{\numberline {3.2}Going further\dots }{30}{section.3.2}
\contentsline {subsection}{\numberline {3.2.1}Few words on plugins}{30}{subsection.3.2.1}
\contentsline {subsection}{\numberline {3.2.2}Objects and visualization plugins}{30}{subsection.3.2.2}
\contentsline {subsubsection}{Scene:}{30}{section*.77}
\contentsline {paragraph}{Automatic creation:}{31}{section*.79}
\contentsline {paragraph}{Call-back on scene linking:}{31}{section*.80}
\contentsline {subsubsection}{View:}{32}{section*.82}
\contentsline {subsubsection}{Camera:}{33}{section*.85}
\contentsline {subsection}{\numberline {3.2.3}GUI and user interactions}{34}{subsection.3.2.3}
\contentsline {subsubsection}{Custom widgets and menu entries}{34}{section*.87}
\contentsline {paragraph}{Custom menu entries:}{34}{section*.89}
\contentsline {paragraph}{Custom toolbar buttons:}{35}{section*.90}
\contentsline {paragraph}{Custom widgets:}{35}{section*.91}
\contentsline {subsubsection}{User interactions}{36}{section*.92}
\contentsline {subsection}{\numberline {3.2.4}Maps and VBOs}{36}{subsection.3.2.4}
\contentsline {subsubsection}{Map and VBO handling types}{36}{section*.95}
\contentsline {paragraph}{MapHandler:}{37}{section*.98}
\contentsline {paragraph}{VBOHandler:}{38}{section*.99}
\contentsline {subsubsection}{Sharing maps}{39}{section*.100}
\contentsline {subsubsection}{Plugins maps callback}{40}{section*.103}
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CODialog</class>
<widget class="QDialog" name="CODialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>363</width>
<height>357</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Camera draw options</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="draw_Check">
<property name="text">
<string>Draw</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="farPlane_Check">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Draw far plane</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Camera scale:</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="scale_Spin">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimum">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="drawPath_Check">
<property name="text">
<string>Draw user path</string>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="title">
<string>Draw path option</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QCheckBox" name="drawAxis_Check">
<property name="text">
<string>draw axis</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Scale:</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="frameScale_Spin">
<property name="minimum">
<double>0.100000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>CODialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>CODialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CSDialog</class>
<widget class="QDialog" name="CSDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>325</width>
<height>414</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Gestions des caméras</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>(Glissez et déposez pour déplacer</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>les caméras entre les vues)</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QToolButton" name="addView_Button">
<property name="text">
<string>+</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="removeView_Button">
<property name="text">
<string>-</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="OK_Button">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>OK_Button</sender>
<signal>pressed()</signal>
<receiver>CSDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>297</x>
<y>390</y>
</hint>
<hint type="destinationlabel">
<x>162</x>
<y>206</y>
</hint>
</hints>
</connection>
<connection>
<sender>CSDialog</sender>
<signal>rejected()</signal>
<receiver>CSDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>162</x>
<y>206</y>
</hint>
<hint type="destinationlabel">
<x>162</x>
<y>206</y>
</hint>
</hints>
</connection>
</connections>
</ui>
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CVDialog</class>
<widget class="QDialog" name="CVDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>258</width>
<height>352</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Chosissez une caméra courante:</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QListWidget" name="listWidget">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Liste des caméras de la vue.&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Double-cliquez sur item pour changer le nom des caméras.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QToolButton" name="add_Button">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ajouter une nouvelle caméra.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>+</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="remove_Button">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Supprimer un caméra.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>-</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="settings_Button">
<property name="text">
<string>O</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="OK_Button">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>OK_Button</sender>
<signal>clicked()</signal>
<receiver>CVDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>230</x>
<y>328</y>
</hint>
<hint type="destinationlabel">
<x>128</x>
<y>175</y>
</hint>
</hints>
</connection>
</connections>
</ui>
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>GCDialog</class>
<widget class="QDialog" name="GCDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>713</width>
<height>451</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Gestion des caméras</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Caméras:</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>