Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
David Cazier
CGoGN
Commits
46ecc50d
Commit
46ecc50d
authored
Feb 19, 2013
by
Lionel Untereiner
Browse files
adding new plugin : render topo surface
parent
b3f60268
Changes
5
Hide whitespace changes
Inline
Side-by-side
SCHNApps/Plugins/CMakeLists.txt
View file @
46ecc50d
...
...
@@ -8,4 +8,4 @@ ADD_SUBDIRECTORY(renderVector)
ADD_SUBDIRECTORY
(
renderExplod
)
ADD_SUBDIRECTORY
(
subdivideSurface
)
ADD_SUBDIRECTORY
(
surfaceDeformation
)
#
ADD_SUBDIRECTORY(renderTopoSurface)
ADD_SUBDIRECTORY
(
renderTopoSurface
)
SCHNApps/Plugins/renderTopoSurface/CMakeLists.txt
0 → 100644
View file @
46ecc50d
cmake_minimum_required
(
VERSION 2.8
)
SET
(
PLUGIN_NAME RenderTopoSurface
)
SET
(
PLUGIN_ROOT_DIR
${
SCHNApps_ROOT_DIR
}
/Plugins/renderTopoSurface
)
INCLUDE_DIRECTORIES
(
${
PLUGIN_ROOT_DIR
}
/include
${
CMAKE_CURRENT_BINARY_DIR
}
)
file
(
GLOB_RECURSE
PLUGIN_FILES
${
PLUGIN_ROOT_DIR
}
/src/*.cpp
${
PLUGIN_ROOT_DIR
}
/include/*.h
${
PLUGIN_ROOT_DIR
}
/include/*.hpp
)
file
(
GLOB_RECURSE
PLUGIN_UI_FILES
${
PLUGIN_ROOT_DIR
}
/forms/*.ui
)
SET
(
PLUGIN_QOBJECT_FILES
${
PLUGIN_ROOT_DIR
}
/include/renderTopoSurface.h
)
include
(
${
SCHNApps_ROOT_DIR
}
/Plugins/plugins_cmake.txt
)
SCHNApps/Plugins/renderTopoSurface/forms/renderTopoSurface.ui
0 → 100644
View file @
46ecc50d
<?xml version="1.0" encoding="UTF-8"?>
<ui
version=
"4.0"
>
<class>
RenderWidget
</class>
<widget
class=
"QWidget"
name=
"RenderWidget"
>
<property
name=
"geometry"
>
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
204
</width>
<height>
547
</height>
</rect>
</property>
<property
name=
"windowTitle"
>
<string>
Form
</string>
</property>
<layout
class=
"QGridLayout"
name=
"gridLayout_3"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QListWidget"
name=
"mapList"
/>
</item>
<item
row=
"1"
column=
"0"
>
<layout
class=
"QGridLayout"
name=
"gridLayout"
>
<property
name=
"sizeConstraint"
>
<enum>
QLayout::SetDefaultConstraint
</enum>
</property>
<item
row=
"0"
column=
"2"
>
<widget
class=
"QComboBox"
name=
"combo_positionVBO"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item
row=
"0"
column=
"0"
colspan=
"2"
>
<widget
class=
"QLabel"
name=
"label_2"
>
<property
name=
"text"
>
<string>
Position :
</string>
</property>
</widget>
</item>
</layout>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"Line"
name=
"line"
/>
</item>
<item
row=
"3"
column=
"0"
>
<layout
class=
"QGridLayout"
name=
"gridLayout_2"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label"
>
<property
name=
"text"
>
<string>
explod edges
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QSlider"
name=
"slider_edgesScaleFactor"
>
<property
name=
"value"
>
<number>
50
</number>
</property>
<property
name=
"orientation"
>
<enum>
Qt::Horizontal
</enum>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_3"
>
<property
name=
"text"
>
<string>
explod faces
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QSlider"
name=
"slider_facesScaleFactor"
>
<property
name=
"value"
>
<number>
50
</number>
</property>
<property
name=
"orientation"
>
<enum>
Qt::Horizontal
</enum>
</property>
</widget>
</item>
</layout>
</item>
<item
row=
"4"
column=
"0"
>
<spacer
name=
"verticalSpacer"
>
<property
name=
"orientation"
>
<enum>
Qt::Vertical
</enum>
</property>
<property
name=
"sizeHint"
stdset=
"0"
>
<size>
<width>
156
</width>
<height>
161
</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
<buttongroups>
<buttongroup
name=
"group_faceShading"
/>
</buttongroups>
</ui>
SCHNApps/Plugins/renderTopoSurface/include/renderTopoSurface.h
0 → 100644
View file @
46ecc50d
#ifndef _RENDER_PLUGIN_H_
#define _RENDER_PLUGIN_H_
#include
"plugin.h"
#include
"ui_renderTopoSurface.h"
#include
"Algo/Render/GL2/topoRender.h"
using
namespace
CGoGN
;
using
namespace
SCHNApps
;
struct
PerMapParameterSet
{
PerMapParameterSet
()
:
edgesScaleFactor
(
1.0
f
),
facesScaleFactor
(
1.0
f
)
{
m_renderTopo
=
new
Algo
::
Render
::
GL2
::
TopoRender
();
}
~
PerMapParameterSet
()
{
delete
m_renderTopo
;
}
float
edgesScaleFactor
;
float
facesScaleFactor
;
Algo
::
Render
::
GL2
::
TopoRender
*
m_renderTopo
;
};
struct
ParameterSet
{
ParameterSet
()
:
selectedMap
(
NULL
)
{}
QHash
<
QString
,
PerMapParameterSet
>
perMap
;
MapHandlerGen
*
selectedMap
;
};
class
RenderTopoSurfacePlugin
;
class
RenderTopoSurfaceDockTab
:
public
QWidget
,
public
Ui
::
RenderWidget
{
public:
RenderTopoSurfaceDockTab
(
RenderTopoSurfacePlugin
*
p
)
:
plugin
(
p
)
{
setupUi
(
this
);
}
void
refreshUI
(
ParameterSet
*
params
);
private:
RenderTopoSurfacePlugin
*
plugin
;
};
class
RenderTopoSurfacePlugin
:
public
Plugin
{
Q_OBJECT
Q_INTERFACES
(
CGoGN
::
SCHNApps
::
Plugin
)
public:
RenderTopoSurfacePlugin
()
:
b_refreshingUI
(
false
)
{
setProvidesRendering
(
true
);
}
~
RenderTopoSurfacePlugin
()
{}
virtual
bool
enable
();
virtual
void
disable
();
virtual
void
redraw
(
View
*
view
);
virtual
void
keyPress
(
View
*
view
,
QKeyEvent
*
event
)
{}
virtual
void
keyRelease
(
View
*
view
,
QKeyEvent
*
event
)
{}
virtual
void
mousePress
(
View
*
view
,
QMouseEvent
*
event
)
{}
virtual
void
mouseRelease
(
View
*
view
,
QMouseEvent
*
event
)
{}
virtual
void
mouseMove
(
View
*
view
,
QMouseEvent
*
event
)
{}
virtual
void
wheelEvent
(
View
*
view
,
QWheelEvent
*
event
)
{}
void
setRefreshingUI
(
bool
b
)
{
b_refreshingUI
=
b
;
}
protected:
RenderDockTab
*
m_dockTab
;
QHash
<
View
*
,
ParameterSet
*>
h_viewParams
;
bool
b_refreshingUI
;
public
slots
:
void
viewLinked
(
View
*
view
,
Plugin
*
plugin
);
void
viewUnlinked
(
View
*
view
,
Plugin
*
plugin
);
void
currentViewChanged
(
View
*
view
);
void
mapLinked
(
MapHandlerGen
*
m
);
void
mapUnlinked
(
MapHandlerGen
*
m
);
void
changeSelectedMap
(
View
*
view
,
MapHandlerGen
*
map
);
void
changeEdgesScaleFactor
(
View
*
view
,
MapHandlerGen
*
map
,
int
i
);
void
changeFacesScaleFactor
(
View
*
view
,
MapHandlerGen
*
map
,
int
i
);
void
cb_selectedMapChanged
();
void
cb_edgesScaleFactorChanged
(
int
i
);
void
cb_facesScaleFactorChanged
(
int
i
);
};
#endif
SCHNApps/Plugins/renderTopoSurface/src/renderTopoSurface.cpp
0 → 100644
View file @
46ecc50d
#include
"renderTopoSurface.h"
#include
"mapHandler.h"
bool
RenderTopoSurfacePlugin
::
enable
()
{
m_dockTab
=
new
RenderTopoSurfaceDockTab
(
this
);
addTabInDock
(
m_dockTab
,
"RenderTopo"
);
connect
(
m_dockTab
->
mapList
,
SIGNAL
(
itemSelectionChanged
()),
this
,
SLOT
(
cb_selectedMapChanged
()));
connect
(
m_dockTab
->
slider_edgesScaleFactor
,
SIGNAL
(
valueChanged
(
int
)),
this
,
SLOT
(
cb_edgesScaleFactorChanged
(
int
)));
connect
(
m_dockTab
->
slider_facesScaleFactor
,
SIGNAL
(
valueChanged
(
int
)),
this
,
SLOT
(
cb_facesScaleFactorChanged
(
int
)));
connect
(
m_window
,
SIGNAL
(
viewAndPluginLinked
(
View
*
,
Plugin
*
)),
this
,
SLOT
(
viewLinked
(
View
*
,
Plugin
*
)));
connect
(
m_window
,
SIGNAL
(
viewAndPluginUnlinked
(
View
*
,
Plugin
*
)),
this
,
SLOT
(
viewUnlinked
(
View
*
,
Plugin
*
)));
connect
(
m_window
,
SIGNAL
(
currentViewChanged
(
View
*
)),
this
,
SLOT
(
currentViewChanged
(
View
*
)));
return
true
;
}
void
RenderTopoSurfacePlugin
::
disable
()
{
}
void
RenderTopoSurfacePlugin
::
redraw
(
View
*
view
)
{
ParameterSet
*
params
=
h_viewParams
[
view
];
const
QList
<
MapHandlerGen
*>&
maps
=
view
->
getLinkedMaps
();
foreach
(
MapHandlerGen
*
m
,
maps
)
{
const
PerMapParameterSet
&
p
=
params
->
perMap
[
m
->
getName
()];
if
(
p
.
m_renderTopo
!=
NULL
)
{
p
.
m_renderTopo
->
drawTopo
();
}
}
}
void
RenderTopoSurfacePlugin
::
viewLinked
(
View
*
view
,
Plugin
*
plugin
)
{
if
(
plugin
==
this
)
{
ParameterSet
*
params
=
new
ParameterSet
();
h_viewParams
.
insert
(
view
,
params
);
const
QList
<
MapHandlerGen
*>&
maps
=
view
->
getLinkedMaps
();
foreach
(
MapHandlerGen
*
map
,
maps
)
{
PerMapParameterSet
p
(
map
);
params
->
perMap
.
insert
(
map
->
getName
(),
p
);
}
if
(
!
maps
.
empty
())
changeSelectedMap
(
view
,
maps
[
0
]);
connect
(
view
,
SIGNAL
(
mapLinked
(
MapHandlerGen
*
)),
this
,
SLOT
(
mapLinked
(
MapHandlerGen
*
)));
connect
(
view
,
SIGNAL
(
mapUnlinked
(
MapHandlerGen
*
)),
this
,
SLOT
(
mapUnlinked
(
MapHandlerGen
*
)));
if
(
view
->
isCurrentView
())
m_dockTab
->
refreshUI
(
params
);
}
}
void
RenderTopoSurfacePlugin
::
viewUnlinked
(
View
*
view
,
Plugin
*
plugin
)
{
if
(
plugin
==
this
)
{
h_viewParams
.
remove
(
view
);
disconnect
(
view
,
SIGNAL
(
mapLinked
(
MapHandlerGen
*
)),
this
,
SLOT
(
mapLinked
(
MapHandlerGen
*
)));
disconnect
(
view
,
SIGNAL
(
mapUnlinked
(
MapHandlerGen
*
)),
this
,
SLOT
(
mapUnlinked
(
MapHandlerGen
*
)));
}
}
void
RenderTopoSurfacePlugin
::
currentViewChanged
(
View
*
view
)
{
if
(
isLinkedToView
(
view
))
m_dockTab
->
refreshUI
(
h_viewParams
[
view
]);
}
void
RenderTopoSurfacePlugin
::
mapLinked
(
MapHandlerGen
*
m
)
{
View
*
view
=
static_cast
<
View
*>
(
QObject
::
sender
());
assert
(
isLinkedToView
(
view
));
ParameterSet
*
params
=
h_viewParams
[
view
];
PerMapParameterSet
p
(
m
);
params
->
perMap
.
insert
(
m
->
getName
(),
p
);
if
(
params
->
selectedMap
==
NULL
||
params
->
perMap
.
count
()
==
1
)
changeSelectedMap
(
view
,
m
);
else
m_dockTab
->
refreshUI
(
params
);
}
void
RenderTopoSurfacePlugin
::
mapUnlinked
(
MapHandlerGen
*
m
)
{
View
*
view
=
static_cast
<
View
*>
(
QObject
::
sender
());
assert
(
isLinkedToView
(
view
));
ParameterSet
*
params
=
h_viewParams
[
view
];
params
->
perMap
.
remove
(
m
->
getName
());
if
(
params
->
selectedMap
==
m
)
{
if
(
!
params
->
perMap
.
empty
())
changeSelectedMap
(
view
,
m_window
->
getMap
(
params
->
perMap
.
begin
().
key
()));
else
changeSelectedMap
(
view
,
NULL
);
}
else
m_dockTab
->
refreshUI
(
params
);
}
void
RenderTopoSurfacePlugin
::
changeSelectedMap
(
View
*
view
,
MapHandlerGen
*
map
)
{
ParameterSet
*
params
=
h_viewParams
[
view
];
MapHandlerGen
*
prev
=
params
->
selectedMap
;
params
->
selectedMap
=
map
;
if
(
view
->
isCurrentView
())
{
if
(
prev
)
disconnect
(
map
,
SIGNAL
(
vboAdded
(
Utils
::
VBO
*
)),
this
,
SLOT
(
vboAdded
(
Utils
::
VBO
*
)));
if
(
map
)
connect
(
map
,
SIGNAL
(
vboAdded
(
Utils
::
VBO
*
)),
this
,
SLOT
(
vboAdded
(
Utils
::
VBO
*
)));
m_dockTab
->
refreshUI
(
params
);
view
->
updateGL
();
}
}
void
RenderTopoSurfacePlugin
::
changeEdgesScaleFactor
(
View
*
view
,
MapHandlerGen
*
map
,
int
i
)
{
ParameterSet
*
params
=
h_viewParams
[
view
];
params
->
perMap
[
map
->
getName
()].
edgesScaleFactor
=
i
/
50.0
;
if
(
view
->
isCurrentView
())
{
m_dockTab
->
refreshUI
(
params
);
view
->
updateGL
();
}
}
void
RenderTopoSurfacePlugin
::
changeFacesScaleFactor
(
View
*
view
,
MapHandlerGen
*
map
,
int
i
)
{
ParameterSet
*
params
=
h_viewParams
[
view
];
params
->
perMap
[
map
->
getName
()].
facesScaleFactor
=
i
/
50.0
;
if
(
view
->
isCurrentView
())
{
m_dockTab
->
refreshUI
(
params
);
view
->
updateGL
();
}
}
void
RenderTopoSurfacePlugin
::
cb_selectedMapChanged
()
{
if
(
!
b_refreshingUI
)
{
QList
<
QListWidgetItem
*>
currentItems
=
m_dockTab
->
mapList
->
selectedItems
();
if
(
!
currentItems
.
empty
())
changeSelectedMap
(
m_window
->
getCurrentView
(),
m_window
->
getMap
(
currentItems
[
0
]
->
text
()));
}
}
void
RenderTopoSurfacePlugin
::
cb_edgesScaleFactorChanged
(
int
i
)
{
if
(
!
b_refreshingUI
)
{
View
*
view
=
m_window
->
getCurrentView
();
MapHandlerGen
*
map
=
h_viewParams
[
view
]
->
selectedMap
;
changeEdgesScaleFactor
(
view
,
map
,
i
);
}
}
void
RenderTopoSurfacePlugin
::
cb_facesScaleFactorChanged
(
int
i
)
{
if
(
!
b_refreshingUI
)
{
View
*
view
=
m_window
->
getCurrentView
();
MapHandlerGen
*
map
=
h_viewParams
[
view
]
->
selectedMap
;
changeFacesScaleFactor
(
view
,
map
,
i
);
}
}
void
RenderDockTab
::
refreshUI
(
ParameterSet
*
params
)
{
plugin
->
setRefreshingUI
(
true
);
mapList
->
clear
();
combo_positionVBO
->
clear
();
combo_normalVBO
->
clear
();
MapHandlerGen
*
map
=
params
->
selectedMap
;
QHash
<
QString
,
PerMapParameterSet
>::
const_iterator
i
=
params
->
perMap
.
constBegin
();
while
(
i
!=
params
->
perMap
.
constEnd
())
{
mapList
->
addItem
(
i
.
key
());
if
(
map
!=
NULL
&&
i
.
key
()
==
map
->
getName
())
{
QList
<
QListWidgetItem
*>
item
=
mapList
->
findItems
(
map
->
getName
(),
Qt
::
MatchExactly
);
item
[
0
]
->
setSelected
(
true
);
PerMapParameterSet
&
p
=
params
->
perMap
[
map
->
getName
()];
slider_edgesScaleFactor
->
setSliderPosition
(
p
.
edgesScaleFactor
*
50.0
);
slider_facesScaleFactor
->
setSliderPosition
(
p
.
facesScaleFactor
*
50.0
);
}
++
i
;
}
plugin
->
setRefreshingUI
(
false
);
}
#ifndef DEBUG
Q_EXPORT_PLUGIN2
(
RenderTopoSurfacePlugin
,
RenderTopoSurfacePlugin
)
#else
Q_EXPORT_PLUGIN2
(
RenderTopoSurfacePluginD
,
RenderTopoSurfacePlugin
)
#endif
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment