archivage initial
This commit is contained in:
commit
06adb5e51e
766
Makefile
Normal file
766
Makefile
Normal file
@ -0,0 +1,766 @@
|
|||||||
|
#############################################################################
|
||||||
|
# Makefile for building: starterLight
|
||||||
|
# Generated by qmake (3.1) (Qt 5.13.2)
|
||||||
|
# Project: starterLight.pro
|
||||||
|
# Template: app
|
||||||
|
# Command: /usr/lib/qt5/bin/qmake -o Makefile starterLight.pro
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
MAKEFILE = Makefile
|
||||||
|
|
||||||
|
EQ = =
|
||||||
|
|
||||||
|
####### Compiler, tools and options
|
||||||
|
|
||||||
|
CC = gcc
|
||||||
|
CXX = g++
|
||||||
|
DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
|
||||||
|
CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
|
||||||
|
CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
|
||||||
|
INCPATH = -I. -I../OpenMesh/inc -I /usr/include/qt5 -I /usr/include/qt5/QtOpenGL -I /usr/include/qt5/QtWidgets -I /usr/include/qt5/QtGui -I /usr/include/qt5/QtCore -I. -I /usr/include/libdrm -I. -I/usr/lib/qt5/mkspecs/linux-g++
|
||||||
|
QMAKE = /usr/lib/qt5/bin/qmake
|
||||||
|
DEL_FILE = rm -f
|
||||||
|
CHK_DIR_EXISTS= test -d
|
||||||
|
MKDIR = mkdir -p
|
||||||
|
COPY = cp -f
|
||||||
|
COPY_FILE = cp -f
|
||||||
|
COPY_DIR = cp -f -R
|
||||||
|
INSTALL_FILE = install -m 644 -p
|
||||||
|
INSTALL_PROGRAM = install -m 755 -p
|
||||||
|
INSTALL_DIR = cp -f -R
|
||||||
|
QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall
|
||||||
|
QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe
|
||||||
|
DEL_FILE = rm -f
|
||||||
|
SYMLINK = ln -f -s
|
||||||
|
DEL_DIR = rmdir
|
||||||
|
MOVE = mv -f
|
||||||
|
TAR = tar -cf
|
||||||
|
COMPRESS = gzip -9f
|
||||||
|
DISTNAME = starterLight1.0.0
|
||||||
|
DISTDIR = /home/papush/m1/mgm/tp1/starterLight/.tmp/starterLight1.0.0
|
||||||
|
LINK = g++
|
||||||
|
LFLAGS = -Wl,-O1 -Wl,-rpath,/usr/lib
|
||||||
|
LIBS = $(SUBLIBS) -lglut -lGLU -L/home/papush/m1/mgm/tp1/starterLight/../OpenMesh/liblinux/ -lOpenMeshCore /usr/lib/libQt5OpenGL.so /usr/lib/libQt5Widgets.so /usr/lib/libQt5Gui.so /usr/lib/libQt5Core.so -lGL -lpthread
|
||||||
|
AR = ar cqs
|
||||||
|
RANLIB =
|
||||||
|
SED = sed
|
||||||
|
STRIP = strip
|
||||||
|
|
||||||
|
####### Output directory
|
||||||
|
|
||||||
|
OBJECTS_DIR = ./
|
||||||
|
|
||||||
|
####### Files
|
||||||
|
|
||||||
|
SOURCES = main.cpp \
|
||||||
|
mainwindow.cpp \
|
||||||
|
meshviewerwidget.cpp moc_mainwindow.cpp \
|
||||||
|
moc_meshviewerwidget.cpp
|
||||||
|
OBJECTS = main.o \
|
||||||
|
mainwindow.o \
|
||||||
|
meshviewerwidget.o \
|
||||||
|
moc_mainwindow.o \
|
||||||
|
moc_meshviewerwidget.o
|
||||||
|
DIST = /usr/lib/qt5/mkspecs/features/spec_pre.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/unix.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/linux.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/sanitize.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/gcc-base.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/g++-base.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/g++-unix.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/qconfig.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3danimation.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3danimation_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dextras.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dextras_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickanimation.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickextras.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickextras_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickscene2d.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3drender.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3drender_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_core.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_core_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_dbus.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_gui.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_gui_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_network.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_network_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_opengl.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qml.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qml_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quick.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quick_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_sql.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_sql_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_testlib.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_widgets.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xml.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xml_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/features/qt_functions.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/qt_config.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/linux-g++/qmake.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/spec_post.prf \
|
||||||
|
.qmake.stash \
|
||||||
|
/usr/lib/qt5/mkspecs/features/exclusive_builds.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/toolchain.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/default_pre.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/resolve_config.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/default_post.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/warn_on.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/qt.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/resources.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/moc.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/unix/opengl.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/uic.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/unix/thread.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/qmake_use.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/file_copies.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/testcase_targets.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/exceptions.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/yacc.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/lex.prf \
|
||||||
|
starterLight.pro mainwindow.h \
|
||||||
|
meshviewerwidget.h main.cpp \
|
||||||
|
mainwindow.cpp \
|
||||||
|
meshviewerwidget.cpp
|
||||||
|
QMAKE_TARGET = starterLight
|
||||||
|
DESTDIR =
|
||||||
|
TARGET = starterLight
|
||||||
|
|
||||||
|
|
||||||
|
first: all
|
||||||
|
####### Build rules
|
||||||
|
|
||||||
|
starterLight: ui_mainwindow.h $(OBJECTS)
|
||||||
|
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
|
||||||
|
|
||||||
|
Makefile: starterLight.pro /usr/lib/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/qt5/mkspecs/features/spec_pre.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/unix.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/linux.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/sanitize.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/gcc-base.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/g++-base.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/common/g++-unix.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/qconfig.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3danimation.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3danimation_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dextras.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dextras_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickanimation.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickextras.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickextras_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickscene2d.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3drender.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3drender_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_core.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_core_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_dbus.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_gui.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_gui_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_network.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_network_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_opengl.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qml.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qml_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quick.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quick_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_sql.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_sql_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_testlib.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_widgets.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xml.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xml_private.pri \
|
||||||
|
/usr/lib/qt5/mkspecs/features/qt_functions.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/qt_config.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/linux-g++/qmake.conf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/spec_post.prf \
|
||||||
|
.qmake.stash \
|
||||||
|
/usr/lib/qt5/mkspecs/features/exclusive_builds.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/toolchain.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/default_pre.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/resolve_config.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/default_post.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/warn_on.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/qt.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/resources.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/moc.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/unix/opengl.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/uic.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/unix/thread.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/qmake_use.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/file_copies.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/testcase_targets.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/exceptions.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/yacc.prf \
|
||||||
|
/usr/lib/qt5/mkspecs/features/lex.prf \
|
||||||
|
starterLight.pro
|
||||||
|
$(QMAKE) -o Makefile starterLight.pro
|
||||||
|
/usr/lib/qt5/mkspecs/features/spec_pre.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/common/unix.conf:
|
||||||
|
/usr/lib/qt5/mkspecs/common/linux.conf:
|
||||||
|
/usr/lib/qt5/mkspecs/common/sanitize.conf:
|
||||||
|
/usr/lib/qt5/mkspecs/common/gcc-base.conf:
|
||||||
|
/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf:
|
||||||
|
/usr/lib/qt5/mkspecs/common/g++-base.conf:
|
||||||
|
/usr/lib/qt5/mkspecs/common/g++-unix.conf:
|
||||||
|
/usr/lib/qt5/mkspecs/qconfig.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3danimation.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3danimation_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dextras.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dextras_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickanimation.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickanimation_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickextras.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickextras_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickscene2d.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickscene2d_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3drender.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_3drender_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_core.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_core_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_dbus.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_edid_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_fb_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_glx_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_gui.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_gui_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_network.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_network_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_opengl.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qml.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qml_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quick.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quick_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_sql.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_sql_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_testlib.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_widgets.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xml.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/modules/qt_lib_xml_private.pri:
|
||||||
|
/usr/lib/qt5/mkspecs/features/qt_functions.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/qt_config.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/linux-g++/qmake.conf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/spec_post.prf:
|
||||||
|
.qmake.stash:
|
||||||
|
/usr/lib/qt5/mkspecs/features/exclusive_builds.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/toolchain.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/default_pre.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/resolve_config.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/default_post.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/warn_on.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/qt.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/resources.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/moc.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/unix/opengl.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/uic.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/unix/thread.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/qmake_use.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/file_copies.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/testcase_targets.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/exceptions.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/yacc.prf:
|
||||||
|
/usr/lib/qt5/mkspecs/features/lex.prf:
|
||||||
|
starterLight.pro:
|
||||||
|
qmake: FORCE
|
||||||
|
@$(QMAKE) -o Makefile starterLight.pro
|
||||||
|
|
||||||
|
qmake_all: FORCE
|
||||||
|
|
||||||
|
|
||||||
|
all: Makefile starterLight
|
||||||
|
|
||||||
|
dist: distdir FORCE
|
||||||
|
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
|
||||||
|
|
||||||
|
distdir: FORCE
|
||||||
|
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
|
||||||
|
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
|
||||||
|
$(COPY_FILE) --parents /usr/lib/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
|
||||||
|
$(COPY_FILE) --parents mainwindow.h meshviewerwidget.h $(DISTDIR)/
|
||||||
|
$(COPY_FILE) --parents main.cpp mainwindow.cpp meshviewerwidget.cpp $(DISTDIR)/
|
||||||
|
$(COPY_FILE) --parents mainwindow.ui $(DISTDIR)/
|
||||||
|
|
||||||
|
|
||||||
|
clean: compiler_clean
|
||||||
|
-$(DEL_FILE) $(OBJECTS)
|
||||||
|
-$(DEL_FILE) *~ core *.core
|
||||||
|
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
-$(DEL_FILE) $(TARGET)
|
||||||
|
-$(DEL_FILE) .qmake.stash
|
||||||
|
-$(DEL_FILE) Makefile
|
||||||
|
|
||||||
|
|
||||||
|
####### Sub-libraries
|
||||||
|
|
||||||
|
mocclean: compiler_moc_header_clean compiler_moc_objc_header_clean compiler_moc_source_clean
|
||||||
|
|
||||||
|
mocables: compiler_moc_header_make_all compiler_moc_objc_header_make_all compiler_moc_source_make_all
|
||||||
|
|
||||||
|
check: first
|
||||||
|
|
||||||
|
benchmark: first
|
||||||
|
|
||||||
|
compiler_rcc_make_all:
|
||||||
|
compiler_rcc_clean:
|
||||||
|
compiler_moc_predefs_make_all: moc_predefs.h
|
||||||
|
compiler_moc_predefs_clean:
|
||||||
|
-$(DEL_FILE) moc_predefs.h
|
||||||
|
moc_predefs.h: /usr/lib/qt5/mkspecs/features/data/dummy.cpp
|
||||||
|
g++ -pipe -O2 -Wall -W -dM -E -o moc_predefs.h /usr/lib/qt5/mkspecs/features/data/dummy.cpp
|
||||||
|
|
||||||
|
compiler_moc_header_make_all: moc_mainwindow.cpp moc_meshviewerwidget.cpp
|
||||||
|
compiler_moc_header_clean:
|
||||||
|
-$(DEL_FILE) moc_mainwindow.cpp moc_meshviewerwidget.cpp
|
||||||
|
moc_mainwindow.cpp: mainwindow.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/MeshIO.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/config.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/compiler.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/OpenMeshDLLMacros.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_store.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_types.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_rbo.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/omstream.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/mostream.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/GenProg.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_spec.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Tools/Utils/NumLimitsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Tools/Utils/Config.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/Vector11T.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT_inc.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Status.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_vector_of_fundamentals.inl \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_vector_of_string.inl \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_vector_of_bool.inl \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/StoreRestore.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/IOManager.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/Options.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/BaseReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/importer/BaseImporter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/BaseKernel.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/PropertyContainer.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/Property.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Handles.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/BaseProperty.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/SingletonT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/SingletonT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/BaseWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/exporter/BaseExporter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/importer/ImporterT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/vector_cast.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/vector_traits.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/color_cast.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Attributes.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/exporter/ExporterT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/IOInstances.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/OBJReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/OFFReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/PLYReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/STLReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/OMReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/OMFormat.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/Endian.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/OMFormatT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/OBJWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/OFFWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/STLWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/OMWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/BinaryHelper.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/PLYWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriConnectivity.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/PolyConnectivity.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/ArrayKernel.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/ArrayItems.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/ArrayKernelT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/IteratorsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/CirculatorsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Traits.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/FinalMeshItemsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/AttribKernelT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriMeshT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/PolyMeshT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/MathDefs.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/PolyMeshT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/LoopSchemeMaskT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriMeshT.cc \
|
||||||
|
moc_predefs.h \
|
||||||
|
/usr/lib/qt5/bin/moc
|
||||||
|
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/papush/m1/mgm/tp1/starterLight/moc_predefs.h -I/usr/lib/qt5/mkspecs/linux-g++ -I/home/papush/m1/mgm/tp1/starterLight -I/home/papush/m1/mgm/tp1/OpenMesh/inc -I/usr/include/qt5 -I/usr/include/qt5/QtOpenGL -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I/usr/include/c++/9.2.0 -I/usr/include/c++/9.2.0/x86_64-unknown-linux-gnu -I/usr/include/c++/9.2.0/backward -I/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/include -I/usr/local/include -I/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/include-fixed -I/usr/include mainwindow.h -o moc_mainwindow.cpp
|
||||||
|
|
||||||
|
moc_meshviewerwidget.cpp: meshviewerwidget.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/Vector11T.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/config.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/compiler.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/OpenMeshDLLMacros.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT_inc.hh \
|
||||||
|
moc_predefs.h \
|
||||||
|
/usr/lib/qt5/bin/moc
|
||||||
|
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/papush/m1/mgm/tp1/starterLight/moc_predefs.h -I/usr/lib/qt5/mkspecs/linux-g++ -I/home/papush/m1/mgm/tp1/starterLight -I/home/papush/m1/mgm/tp1/OpenMesh/inc -I/usr/include/qt5 -I/usr/include/qt5/QtOpenGL -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I/usr/include/c++/9.2.0 -I/usr/include/c++/9.2.0/x86_64-unknown-linux-gnu -I/usr/include/c++/9.2.0/backward -I/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/include -I/usr/local/include -I/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/include-fixed -I/usr/include meshviewerwidget.h -o moc_meshviewerwidget.cpp
|
||||||
|
|
||||||
|
compiler_moc_objc_header_make_all:
|
||||||
|
compiler_moc_objc_header_clean:
|
||||||
|
compiler_moc_source_make_all:
|
||||||
|
compiler_moc_source_clean:
|
||||||
|
compiler_uic_make_all: ui_mainwindow.h
|
||||||
|
compiler_uic_clean:
|
||||||
|
-$(DEL_FILE) ui_mainwindow.h
|
||||||
|
ui_mainwindow.h: mainwindow.ui \
|
||||||
|
/usr/lib/qt5/bin/uic \
|
||||||
|
meshviewerwidget.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/Vector11T.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/config.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/compiler.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/OpenMeshDLLMacros.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT_inc.hh
|
||||||
|
/usr/lib/qt5/bin/uic mainwindow.ui -o ui_mainwindow.h
|
||||||
|
|
||||||
|
compiler_yacc_decl_make_all:
|
||||||
|
compiler_yacc_decl_clean:
|
||||||
|
compiler_yacc_impl_make_all:
|
||||||
|
compiler_yacc_impl_clean:
|
||||||
|
compiler_lex_make_all:
|
||||||
|
compiler_lex_clean:
|
||||||
|
compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean compiler_uic_clean
|
||||||
|
|
||||||
|
####### Compile
|
||||||
|
|
||||||
|
main.o: main.cpp mainwindow.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/MeshIO.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/config.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/compiler.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/OpenMeshDLLMacros.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_store.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_types.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_rbo.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/omstream.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/mostream.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/GenProg.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_spec.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Tools/Utils/NumLimitsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Tools/Utils/Config.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/Vector11T.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT_inc.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Status.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_vector_of_fundamentals.inl \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_vector_of_string.inl \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_vector_of_bool.inl \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/StoreRestore.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/IOManager.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/Options.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/BaseReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/importer/BaseImporter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/BaseKernel.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/PropertyContainer.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/Property.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Handles.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/BaseProperty.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/SingletonT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/SingletonT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/BaseWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/exporter/BaseExporter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/importer/ImporterT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/vector_cast.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/vector_traits.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/color_cast.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Attributes.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/exporter/ExporterT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/IOInstances.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/OBJReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/OFFReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/PLYReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/STLReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/OMReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/OMFormat.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/Endian.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/OMFormatT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/OBJWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/OFFWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/STLWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/OMWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/BinaryHelper.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/PLYWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriConnectivity.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/PolyConnectivity.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/ArrayKernel.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/ArrayItems.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/ArrayKernelT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/IteratorsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/CirculatorsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Traits.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/FinalMeshItemsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/AttribKernelT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriMeshT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/PolyMeshT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/MathDefs.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/PolyMeshT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/LoopSchemeMaskT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriMeshT.cc
|
||||||
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
|
||||||
|
|
||||||
|
mainwindow.o: mainwindow.cpp mainwindow.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/MeshIO.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/config.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/compiler.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/OpenMeshDLLMacros.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_store.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_types.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_rbo.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/omstream.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/mostream.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/GenProg.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_spec.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Tools/Utils/NumLimitsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Tools/Utils/Config.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/Vector11T.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT_inc.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Status.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_vector_of_fundamentals.inl \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_vector_of_string.inl \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/SR_binary_vector_of_bool.inl \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/StoreRestore.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/IOManager.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/Options.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/BaseReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/importer/BaseImporter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/BaseKernel.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/PropertyContainer.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/Property.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Handles.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/BaseProperty.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/SingletonT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/SingletonT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/BaseWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/exporter/BaseExporter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/importer/ImporterT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/vector_cast.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/vector_traits.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/color_cast.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Attributes.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/exporter/ExporterT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/IOInstances.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/OBJReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/OFFReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/PLYReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/STLReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/reader/OMReader.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/OMFormat.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Utils/Endian.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/OMFormatT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/OBJWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/OFFWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/STLWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/OMWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/BinaryHelper.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/IO/writer/PLYWriter.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriConnectivity.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/PolyConnectivity.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/ArrayKernel.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/ArrayItems.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/ArrayKernelT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/IteratorsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/CirculatorsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/Traits.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/FinalMeshItemsT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/AttribKernelT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriMeshT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/PolyMeshT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/MathDefs.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/PolyMeshT.cc \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/LoopSchemeMaskT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Mesh/TriMeshT.cc \
|
||||||
|
ui_mainwindow.h \
|
||||||
|
meshviewerwidget.h
|
||||||
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
|
||||||
|
|
||||||
|
meshviewerwidget.o: meshviewerwidget.cpp meshviewerwidget.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/Vector11T.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/config.h \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/compiler.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/System/OpenMeshDLLMacros.hh \
|
||||||
|
../OpenMesh/inc/OpenMesh/Core/Geometry/VectorT_inc.hh
|
||||||
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o meshviewerwidget.o meshviewerwidget.cpp
|
||||||
|
|
||||||
|
moc_mainwindow.o: moc_mainwindow.cpp
|
||||||
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
|
||||||
|
|
||||||
|
moc_meshviewerwidget.o: moc_meshviewerwidget.cpp
|
||||||
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_meshviewerwidget.o moc_meshviewerwidget.cpp
|
||||||
|
|
||||||
|
####### Install
|
||||||
|
|
||||||
|
install: FORCE
|
||||||
|
|
||||||
|
uninstall: FORCE
|
||||||
|
|
||||||
|
FORCE:
|
||||||
|
|
11
main.cpp
Normal file
11
main.cpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include "mainwindow.h"
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
QApplication a(argc, argv);
|
||||||
|
MainWindow w;
|
||||||
|
w.show();
|
||||||
|
|
||||||
|
return a.exec();
|
||||||
|
}
|
496
mainwindow.cpp
Normal file
496
mainwindow.cpp
Normal file
@ -0,0 +1,496 @@
|
|||||||
|
#include "mainwindow.h"
|
||||||
|
#include "ui_mainwindow.h"
|
||||||
|
|
||||||
|
/* **** début de la partie à compléter **** */
|
||||||
|
|
||||||
|
void MainWindow::showSelections(MyMesh* _mesh)
|
||||||
|
{
|
||||||
|
// on réinitialise les couleurs de tout le maillage
|
||||||
|
resetAllColorsAndThickness(_mesh);
|
||||||
|
|
||||||
|
/* **** à compléter ! **** cette fonction utilise les variables de
|
||||||
|
* sélection vertexSelection, edgeSelection et faceSelection qui
|
||||||
|
* sont les ID des élements sélectionnés et qui sont égales à -1
|
||||||
|
* si la sélection est vide
|
||||||
|
*/
|
||||||
|
if (vertexSelection >= 0 && vertexSelection < _mesh->n_vertices() - 1) {
|
||||||
|
VertexHandle vh = _mesh->vertex_handle(vertexSelection);
|
||||||
|
_mesh->set_color(vh, MyMesh::Color(255, 0, 0));
|
||||||
|
_mesh->data(vh).thickness = 5;
|
||||||
|
}
|
||||||
|
if (edgeSelection >= 0 && edgeSelection < _mesh->n_edges() - 1) {
|
||||||
|
EdgeHandle eh = _mesh->edge_handle(edgeSelection);
|
||||||
|
_mesh->data(eh).thickness = 5;
|
||||||
|
_mesh->set_color(eh, MyMesh::Color(255, 0, 0));
|
||||||
|
}
|
||||||
|
if (faceSelection >= 0 && faceSelection < _mesh->n_faces() - 1) {
|
||||||
|
_mesh->set_color(_mesh->face_handle(faceSelection),
|
||||||
|
MyMesh::Color(255, 0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
// on affiche le nouveau maillage
|
||||||
|
displayMesh(_mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::showSelectionsNeighborhood(MyMesh* _mesh)
|
||||||
|
{
|
||||||
|
// on réinitialise les couleurs de tout le maillage
|
||||||
|
resetAllColorsAndThickness(_mesh);
|
||||||
|
|
||||||
|
/* **** à compléter ! **** cette fonction utilise les variables de
|
||||||
|
* sélection vertexSelection, edgeSelection et faceSelection qui
|
||||||
|
* sont les ID des élements sélectionnés et qui sont égales à -1
|
||||||
|
* si la sélection est vide et affiche en plus le voisinage de
|
||||||
|
* chaque sélection :
|
||||||
|
* - les faces voisines les faces
|
||||||
|
* - les faces adjacentes pour les arêtes
|
||||||
|
* - les arêtes incidentes pour les sommets
|
||||||
|
*/
|
||||||
|
if (vertexSelection >= 0 && vertexSelection < _mesh->n_vertices() - 1) {
|
||||||
|
VertexHandle vh = _mesh->vertex_handle(vertexSelection);
|
||||||
|
for (auto ve_it = _mesh->ve_iter(vh); ve_it.is_valid(); ++ve_it) {
|
||||||
|
_mesh->set_color(*ve_it, MyMesh::Color(255, 0, 0));
|
||||||
|
_mesh->data(*ve_it).thickness = 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (edgeSelection >= 0 && edgeSelection < _mesh->n_edges() - 1) {
|
||||||
|
EdgeHandle eh = _mesh->edge_handle(edgeSelection);
|
||||||
|
HalfedgeHandle heh0 = _mesh->halfedge_handle(eh, 0);
|
||||||
|
HalfedgeHandle heh1 = _mesh->halfedge_handle(eh, 1);
|
||||||
|
FaceHandle fh0 = _mesh->face_handle(heh0);
|
||||||
|
FaceHandle fh1 = _mesh->face_handle(heh1);
|
||||||
|
_mesh->set_color(fh0, MyMesh::Color(255, 0, 0));
|
||||||
|
_mesh->set_color(fh1, MyMesh::Color(255, 0, 0));
|
||||||
|
}
|
||||||
|
if (faceSelection >= 0 && faceSelection < _mesh->n_faces() - 1) {
|
||||||
|
FaceHandle fh = _mesh->face_handle(faceSelection);
|
||||||
|
for (auto ff_it = _mesh->ff_iter(fh); ff_it.is_valid(); ++ff_it) {
|
||||||
|
_mesh->set_color(*ff_it, MyMesh::Color(255, 0, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// on affiche le nouveau maillage
|
||||||
|
displayMesh(_mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::showBorder(MyMesh* _mesh)
|
||||||
|
{
|
||||||
|
// on réinitialise l'affichage
|
||||||
|
resetAllColorsAndThickness(_mesh);
|
||||||
|
|
||||||
|
/* **** à compléter ! **** */
|
||||||
|
for (auto heh_it = _mesh->halfedges_begin(); heh_it != _mesh->halfedges_end(); ++heh_it) {
|
||||||
|
if (_mesh->is_boundary(*heh_it)) {
|
||||||
|
EdgeHandle eh = _mesh->edge_handle(*heh_it);
|
||||||
|
_mesh->set_color(eh, MyMesh::Color(255, 100, 150));
|
||||||
|
_mesh->data(eh).thickness = 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// on affiche le nouveau maillage
|
||||||
|
displayMesh(_mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::showPath(MyMesh* _mesh, int v1, int v2)
|
||||||
|
{
|
||||||
|
// on réinitialise l'affichage
|
||||||
|
resetAllColorsAndThickness(_mesh);
|
||||||
|
|
||||||
|
// point de départ et point d'arrivée en vert et en gros
|
||||||
|
_mesh->set_color(_mesh->vertex_handle(v1), MyMesh::Color(0, 255, 0));
|
||||||
|
_mesh->set_color(_mesh->vertex_handle(v2), MyMesh::Color(0, 255, 0));
|
||||||
|
_mesh->data(_mesh->vertex_handle(v1)).thickness = 12;
|
||||||
|
_mesh->data(_mesh->vertex_handle(v2)).thickness = 12;
|
||||||
|
|
||||||
|
/* **** à compléter ! **** */
|
||||||
|
|
||||||
|
// on affiche le nouveau maillage
|
||||||
|
displayMesh(_mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* **** fin de la partie à compléter **** */
|
||||||
|
|
||||||
|
|
||||||
|
/* **** début de la partie boutons et IHM **** */
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_bordure_clicked()
|
||||||
|
{
|
||||||
|
showBorder(&mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_voisinage_clicked()
|
||||||
|
{
|
||||||
|
// changement de mode entre avec et sans voisinage
|
||||||
|
if(modevoisinage)
|
||||||
|
{
|
||||||
|
ui->pushButton_voisinage->setText("Repasser en mode normal");
|
||||||
|
modevoisinage = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->pushButton_voisinage->setText("Passer en mode voisinage");
|
||||||
|
modevoisinage = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// on montre la nouvelle selection
|
||||||
|
if(!modevoisinage)
|
||||||
|
showSelections(&mesh);
|
||||||
|
else
|
||||||
|
showSelectionsNeighborhood(&mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_vertexMoins_clicked()
|
||||||
|
{
|
||||||
|
// mise à jour de l'interface
|
||||||
|
vertexSelection = vertexSelection - 1;
|
||||||
|
ui->labelVertex->setText(QString::number(vertexSelection));
|
||||||
|
|
||||||
|
// on montre la nouvelle selection
|
||||||
|
if(!modevoisinage)
|
||||||
|
showSelections(&mesh);
|
||||||
|
else
|
||||||
|
showSelectionsNeighborhood(&mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_vertexPlus_clicked()
|
||||||
|
{
|
||||||
|
// mise à jour de l'interface
|
||||||
|
vertexSelection = vertexSelection + 1;
|
||||||
|
ui->labelVertex->setText(QString::number(vertexSelection));
|
||||||
|
|
||||||
|
// on montre la nouvelle selection
|
||||||
|
if(!modevoisinage)
|
||||||
|
showSelections(&mesh);
|
||||||
|
else
|
||||||
|
showSelectionsNeighborhood(&mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_edgeMoins_clicked()
|
||||||
|
{
|
||||||
|
// mise à jour de l'interface
|
||||||
|
edgeSelection = edgeSelection - 1;
|
||||||
|
ui->labelEdge->setText(QString::number(edgeSelection));
|
||||||
|
|
||||||
|
// on montre la nouvelle selection
|
||||||
|
if(!modevoisinage)
|
||||||
|
showSelections(&mesh);
|
||||||
|
else
|
||||||
|
showSelectionsNeighborhood(&mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_edgePlus_clicked()
|
||||||
|
{
|
||||||
|
// mise à jour de l'interface
|
||||||
|
edgeSelection = edgeSelection + 1;
|
||||||
|
ui->labelEdge->setText(QString::number(edgeSelection));
|
||||||
|
|
||||||
|
// on montre la nouvelle selection
|
||||||
|
if(!modevoisinage)
|
||||||
|
showSelections(&mesh);
|
||||||
|
else
|
||||||
|
showSelectionsNeighborhood(&mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_faceMoins_clicked()
|
||||||
|
{
|
||||||
|
// mise à jour de l'interface
|
||||||
|
faceSelection = faceSelection - 1;
|
||||||
|
ui->labelFace->setText(QString::number(faceSelection));
|
||||||
|
|
||||||
|
// on montre la nouvelle selection
|
||||||
|
if(!modevoisinage)
|
||||||
|
showSelections(&mesh);
|
||||||
|
else
|
||||||
|
showSelectionsNeighborhood(&mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_facePlus_clicked()
|
||||||
|
{
|
||||||
|
// mise à jour de l'interface
|
||||||
|
faceSelection = faceSelection + 1;
|
||||||
|
ui->labelFace->setText(QString::number(faceSelection));
|
||||||
|
|
||||||
|
// on montre la nouvelle selection
|
||||||
|
if(!modevoisinage)
|
||||||
|
showSelections(&mesh);
|
||||||
|
else
|
||||||
|
showSelectionsNeighborhood(&mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_afficherChemin_clicked()
|
||||||
|
{
|
||||||
|
// on récupère les sommets de départ et d'arrivée
|
||||||
|
int indexV1 = ui->spinBox_v1_chemin->value();
|
||||||
|
int indexV2 = ui->spinBox_v2_chemin->value();
|
||||||
|
|
||||||
|
showPath(&mesh, indexV1, indexV2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::on_pushButton_chargement_clicked()
|
||||||
|
{
|
||||||
|
// fenêtre de sélection des fichiers
|
||||||
|
QString fileName = QFileDialog::getOpenFileName(this, tr("Open Mesh"), "", tr("Mesh Files (*.obj)"));
|
||||||
|
|
||||||
|
// chargement du fichier .obj dans la variable globale "mesh"
|
||||||
|
OpenMesh::IO::read_mesh(mesh, fileName.toUtf8().constData());
|
||||||
|
|
||||||
|
// initialisation des couleurs et épaisseurs (sommets et arêtes) du mesh
|
||||||
|
resetAllColorsAndThickness(&mesh);
|
||||||
|
|
||||||
|
// on affiche le maillage
|
||||||
|
displayMesh(&mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* **** fin de la partie boutons et IHM **** */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* **** fonctions supplémentaires **** */
|
||||||
|
|
||||||
|
// permet d'initialiser les couleurs et les épaisseurs des élements du maillage
|
||||||
|
void MainWindow::resetAllColorsAndThickness(MyMesh* _mesh)
|
||||||
|
{
|
||||||
|
for (MyMesh::VertexIter curVert = _mesh->vertices_begin(); curVert != _mesh->vertices_end(); curVert++)
|
||||||
|
{
|
||||||
|
_mesh->data(*curVert).thickness = 1;
|
||||||
|
_mesh->set_color(*curVert, MyMesh::Color(0, 0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (MyMesh::FaceIter curFace = _mesh->faces_begin(); curFace != _mesh->faces_end(); curFace++)
|
||||||
|
{
|
||||||
|
_mesh->set_color(*curFace, MyMesh::Color(150, 150, 150));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (MyMesh::EdgeIter curEdge = _mesh->edges_begin(); curEdge != _mesh->edges_end(); curEdge++)
|
||||||
|
{
|
||||||
|
_mesh->data(*curEdge).thickness = 1;
|
||||||
|
_mesh->set_color(*curEdge, MyMesh::Color(0, 0, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// charge un objet MyMesh dans l'environnement OpenGL
|
||||||
|
void MainWindow::displayMesh(MyMesh* _mesh, DisplayMode mode)
|
||||||
|
{
|
||||||
|
GLuint* triIndiceArray = new GLuint[_mesh->n_faces() * 3];
|
||||||
|
GLfloat* triCols = new GLfloat[_mesh->n_faces() * 3 * 3];
|
||||||
|
GLfloat* triVerts = new GLfloat[_mesh->n_faces() * 3 * 3];
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
if(mode == DisplayMode::TemperatureMap)
|
||||||
|
{
|
||||||
|
QVector<float> values;
|
||||||
|
for (MyMesh::VertexIter curVert = _mesh->vertices_begin(); curVert != _mesh->vertices_end(); curVert++)
|
||||||
|
values.append(fabs(_mesh->data(*curVert).value));
|
||||||
|
qSort(values);
|
||||||
|
|
||||||
|
float range = values.at(values.size()*0.8);
|
||||||
|
|
||||||
|
MyMesh::ConstFaceIter fIt(_mesh->faces_begin()), fEnd(_mesh->faces_end());
|
||||||
|
MyMesh::ConstFaceVertexIter fvIt;
|
||||||
|
|
||||||
|
for (; fIt!=fEnd; ++fIt)
|
||||||
|
{
|
||||||
|
fvIt = _mesh->cfv_iter(*fIt);
|
||||||
|
if(_mesh->data(*fvIt).value > 0){triCols[3*i+0] = 255; triCols[3*i+1] = 255 - std::min((_mesh->data(*fvIt).value/range) * 255.0, 255.0); triCols[3*i+2] = 255 - std::min((_mesh->data(*fvIt).value/range) * 255.0, 255.0);}
|
||||||
|
else{triCols[3*i+2] = 255; triCols[3*i+1] = 255 - std::min((-_mesh->data(*fvIt).value/range) * 255.0, 255.0); triCols[3*i+0] = 255 - std::min((-_mesh->data(*fvIt).value/range) * 255.0, 255.0);}
|
||||||
|
triVerts[3*i+0] = _mesh->point(*fvIt)[0]; triVerts[3*i+1] = _mesh->point(*fvIt)[1]; triVerts[3*i+2] = _mesh->point(*fvIt)[2];
|
||||||
|
triIndiceArray[i] = i;
|
||||||
|
|
||||||
|
i++; ++fvIt;
|
||||||
|
if(_mesh->data(*fvIt).value > 0){triCols[3*i+0] = 255; triCols[3*i+1] = 255 - std::min((_mesh->data(*fvIt).value/range) * 255.0, 255.0); triCols[3*i+2] = 255 - std::min((_mesh->data(*fvIt).value/range) * 255.0, 255.0);}
|
||||||
|
else{triCols[3*i+2] = 255; triCols[3*i+1] = 255 - std::min((-_mesh->data(*fvIt).value/range) * 255.0, 255.0); triCols[3*i+0] = 255 - std::min((-_mesh->data(*fvIt).value/range) * 255.0, 255.0);}
|
||||||
|
triVerts[3*i+0] = _mesh->point(*fvIt)[0]; triVerts[3*i+1] = _mesh->point(*fvIt)[1]; triVerts[3*i+2] = _mesh->point(*fvIt)[2];
|
||||||
|
triIndiceArray[i] = i;
|
||||||
|
|
||||||
|
i++; ++fvIt;
|
||||||
|
if(_mesh->data(*fvIt).value > 0){triCols[3*i+0] = 255; triCols[3*i+1] = 255 - std::min((_mesh->data(*fvIt).value/range) * 255.0, 255.0); triCols[3*i+2] = 255 - std::min((_mesh->data(*fvIt).value/range) * 255.0, 255.0);}
|
||||||
|
else{triCols[3*i+2] = 255; triCols[3*i+1] = 255 - std::min((-_mesh->data(*fvIt).value/range) * 255.0, 255.0); triCols[3*i+0] = 255 - std::min((-_mesh->data(*fvIt).value/range) * 255.0, 255.0);}
|
||||||
|
triVerts[3*i+0] = _mesh->point(*fvIt)[0]; triVerts[3*i+1] = _mesh->point(*fvIt)[1]; triVerts[3*i+2] = _mesh->point(*fvIt)[2];
|
||||||
|
triIndiceArray[i] = i;
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mode == DisplayMode::Normal)
|
||||||
|
{
|
||||||
|
MyMesh::ConstFaceIter fIt(_mesh->faces_begin()), fEnd(_mesh->faces_end());
|
||||||
|
MyMesh::ConstFaceVertexIter fvIt;
|
||||||
|
for (; fIt!=fEnd; ++fIt)
|
||||||
|
{
|
||||||
|
fvIt = _mesh->cfv_iter(*fIt);
|
||||||
|
triCols[3*i+0] = _mesh->color(*fIt)[0]; triCols[3*i+1] = _mesh->color(*fIt)[1]; triCols[3*i+2] = _mesh->color(*fIt)[2];
|
||||||
|
triVerts[3*i+0] = _mesh->point(*fvIt)[0]; triVerts[3*i+1] = _mesh->point(*fvIt)[1]; triVerts[3*i+2] = _mesh->point(*fvIt)[2];
|
||||||
|
triIndiceArray[i] = i;
|
||||||
|
|
||||||
|
i++; ++fvIt;
|
||||||
|
triCols[3*i+0] = _mesh->color(*fIt)[0]; triCols[3*i+1] = _mesh->color(*fIt)[1]; triCols[3*i+2] = _mesh->color(*fIt)[2];
|
||||||
|
triVerts[3*i+0] = _mesh->point(*fvIt)[0]; triVerts[3*i+1] = _mesh->point(*fvIt)[1]; triVerts[3*i+2] = _mesh->point(*fvIt)[2];
|
||||||
|
triIndiceArray[i] = i;
|
||||||
|
|
||||||
|
i++; ++fvIt;
|
||||||
|
triCols[3*i+0] = _mesh->color(*fIt)[0]; triCols[3*i+1] = _mesh->color(*fIt)[1]; triCols[3*i+2] = _mesh->color(*fIt)[2];
|
||||||
|
triVerts[3*i+0] = _mesh->point(*fvIt)[0]; triVerts[3*i+1] = _mesh->point(*fvIt)[1]; triVerts[3*i+2] = _mesh->point(*fvIt)[2];
|
||||||
|
triIndiceArray[i] = i;
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mode == DisplayMode::ColorShading)
|
||||||
|
{
|
||||||
|
MyMesh::ConstFaceIter fIt(_mesh->faces_begin()), fEnd(_mesh->faces_end());
|
||||||
|
MyMesh::ConstFaceVertexIter fvIt;
|
||||||
|
for (; fIt!=fEnd; ++fIt)
|
||||||
|
{
|
||||||
|
fvIt = _mesh->cfv_iter(*fIt);
|
||||||
|
triCols[3*i+0] = _mesh->data(*fvIt).faceShadingColor[0]; triCols[3*i+1] = _mesh->data(*fvIt).faceShadingColor[1]; triCols[3*i+2] = _mesh->data(*fvIt).faceShadingColor[2];
|
||||||
|
triVerts[3*i+0] = _mesh->point(*fvIt)[0]; triVerts[3*i+1] = _mesh->point(*fvIt)[1]; triVerts[3*i+2] = _mesh->point(*fvIt)[2];
|
||||||
|
triIndiceArray[i] = i;
|
||||||
|
|
||||||
|
i++; ++fvIt;
|
||||||
|
triCols[3*i+0] = _mesh->data(*fvIt).faceShadingColor[0]; triCols[3*i+1] = _mesh->data(*fvIt).faceShadingColor[1]; triCols[3*i+2] = _mesh->data(*fvIt).faceShadingColor[2];
|
||||||
|
triVerts[3*i+0] = _mesh->point(*fvIt)[0]; triVerts[3*i+1] = _mesh->point(*fvIt)[1]; triVerts[3*i+2] = _mesh->point(*fvIt)[2];
|
||||||
|
triIndiceArray[i] = i;
|
||||||
|
|
||||||
|
i++; ++fvIt;
|
||||||
|
triCols[3*i+0] = _mesh->data(*fvIt).faceShadingColor[0]; triCols[3*i+1] = _mesh->data(*fvIt).faceShadingColor[1]; triCols[3*i+2] = _mesh->data(*fvIt).faceShadingColor[2];
|
||||||
|
triVerts[3*i+0] = _mesh->point(*fvIt)[0]; triVerts[3*i+1] = _mesh->point(*fvIt)[1]; triVerts[3*i+2] = _mesh->point(*fvIt)[2];
|
||||||
|
triIndiceArray[i] = i;
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ui->displayWidget->loadMesh(triVerts, triCols, _mesh->n_faces() * 3 * 3, triIndiceArray, _mesh->n_faces() * 3);
|
||||||
|
|
||||||
|
delete[] triIndiceArray;
|
||||||
|
delete[] triCols;
|
||||||
|
delete[] triVerts;
|
||||||
|
|
||||||
|
GLuint* linesIndiceArray = new GLuint[_mesh->n_edges() * 2];
|
||||||
|
GLfloat* linesCols = new GLfloat[_mesh->n_edges() * 2 * 3];
|
||||||
|
GLfloat* linesVerts = new GLfloat[_mesh->n_edges() * 2 * 3];
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
QHash<float, QList<int> > edgesIDbyThickness;
|
||||||
|
for (MyMesh::EdgeIter eit = _mesh->edges_begin(); eit != _mesh->edges_end(); ++eit)
|
||||||
|
{
|
||||||
|
float t = _mesh->data(*eit).thickness;
|
||||||
|
if(t > 0)
|
||||||
|
{
|
||||||
|
if(!edgesIDbyThickness.contains(t))
|
||||||
|
edgesIDbyThickness[t] = QList<int>();
|
||||||
|
edgesIDbyThickness[t].append((*eit).idx());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QHashIterator<float, QList<int> > it(edgesIDbyThickness);
|
||||||
|
QList<QPair<float, int> > edgeSizes;
|
||||||
|
while (it.hasNext())
|
||||||
|
{
|
||||||
|
it.next();
|
||||||
|
|
||||||
|
for(int e = 0; e < it.value().size(); e++)
|
||||||
|
{
|
||||||
|
int eidx = it.value().at(e);
|
||||||
|
|
||||||
|
MyMesh::VertexHandle vh1 = _mesh->to_vertex_handle(_mesh->halfedge_handle(_mesh->edge_handle(eidx), 0));
|
||||||
|
linesVerts[3*i+0] = _mesh->point(vh1)[0];
|
||||||
|
linesVerts[3*i+1] = _mesh->point(vh1)[1];
|
||||||
|
linesVerts[3*i+2] = _mesh->point(vh1)[2];
|
||||||
|
linesCols[3*i+0] = _mesh->color(_mesh->edge_handle(eidx))[0];
|
||||||
|
linesCols[3*i+1] = _mesh->color(_mesh->edge_handle(eidx))[1];
|
||||||
|
linesCols[3*i+2] = _mesh->color(_mesh->edge_handle(eidx))[2];
|
||||||
|
linesIndiceArray[i] = i;
|
||||||
|
i++;
|
||||||
|
|
||||||
|
MyMesh::VertexHandle vh2 = _mesh->from_vertex_handle(_mesh->halfedge_handle(_mesh->edge_handle(eidx), 0));
|
||||||
|
linesVerts[3*i+0] = _mesh->point(vh2)[0];
|
||||||
|
linesVerts[3*i+1] = _mesh->point(vh2)[1];
|
||||||
|
linesVerts[3*i+2] = _mesh->point(vh2)[2];
|
||||||
|
linesCols[3*i+0] = _mesh->color(_mesh->edge_handle(eidx))[0];
|
||||||
|
linesCols[3*i+1] = _mesh->color(_mesh->edge_handle(eidx))[1];
|
||||||
|
linesCols[3*i+2] = _mesh->color(_mesh->edge_handle(eidx))[2];
|
||||||
|
linesIndiceArray[i] = i;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
edgeSizes.append(qMakePair(it.key(), it.value().size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->displayWidget->loadLines(linesVerts, linesCols, i * 3, linesIndiceArray, i, edgeSizes);
|
||||||
|
|
||||||
|
delete[] linesIndiceArray;
|
||||||
|
delete[] linesCols;
|
||||||
|
delete[] linesVerts;
|
||||||
|
|
||||||
|
GLuint* pointsIndiceArray = new GLuint[_mesh->n_vertices()];
|
||||||
|
GLfloat* pointsCols = new GLfloat[_mesh->n_vertices() * 3];
|
||||||
|
GLfloat* pointsVerts = new GLfloat[_mesh->n_vertices() * 3];
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
QHash<float, QList<int> > vertsIDbyThickness;
|
||||||
|
for (MyMesh::VertexIter vit = _mesh->vertices_begin(); vit != _mesh->vertices_end(); ++vit)
|
||||||
|
{
|
||||||
|
float t = _mesh->data(*vit).thickness;
|
||||||
|
if(t > 0)
|
||||||
|
{
|
||||||
|
if(!vertsIDbyThickness.contains(t))
|
||||||
|
vertsIDbyThickness[t] = QList<int>();
|
||||||
|
vertsIDbyThickness[t].append((*vit).idx());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QHashIterator<float, QList<int> > vitt(vertsIDbyThickness);
|
||||||
|
QList<QPair<float, int> > vertsSizes;
|
||||||
|
|
||||||
|
while (vitt.hasNext())
|
||||||
|
{
|
||||||
|
vitt.next();
|
||||||
|
|
||||||
|
for(int v = 0; v < vitt.value().size(); v++)
|
||||||
|
{
|
||||||
|
int vidx = vitt.value().at(v);
|
||||||
|
|
||||||
|
pointsVerts[3*i+0] = _mesh->point(_mesh->vertex_handle(vidx))[0];
|
||||||
|
pointsVerts[3*i+1] = _mesh->point(_mesh->vertex_handle(vidx))[1];
|
||||||
|
pointsVerts[3*i+2] = _mesh->point(_mesh->vertex_handle(vidx))[2];
|
||||||
|
pointsCols[3*i+0] = _mesh->color(_mesh->vertex_handle(vidx))[0];
|
||||||
|
pointsCols[3*i+1] = _mesh->color(_mesh->vertex_handle(vidx))[1];
|
||||||
|
pointsCols[3*i+2] = _mesh->color(_mesh->vertex_handle(vidx))[2];
|
||||||
|
pointsIndiceArray[i] = i;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
vertsSizes.append(qMakePair(vitt.key(), vitt.value().size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->displayWidget->loadPoints(pointsVerts, pointsCols, i * 3, pointsIndiceArray, i, vertsSizes);
|
||||||
|
|
||||||
|
delete[] pointsIndiceArray;
|
||||||
|
delete[] pointsCols;
|
||||||
|
delete[] pointsVerts;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
|
||||||
|
{
|
||||||
|
vertexSelection = -1;
|
||||||
|
edgeSelection = -1;
|
||||||
|
faceSelection = -1;
|
||||||
|
|
||||||
|
modevoisinage = false;
|
||||||
|
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
MainWindow::~MainWindow()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
79
mainwindow.h
Normal file
79
mainwindow.h
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
#ifndef MAINWINDOW_H
|
||||||
|
#define MAINWINDOW_H
|
||||||
|
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QMainWindow>
|
||||||
|
#include <OpenMesh/Core/IO/MeshIO.hh>
|
||||||
|
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class MainWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace OpenMesh;
|
||||||
|
using namespace OpenMesh::Attributes;
|
||||||
|
|
||||||
|
struct MyTraits : public OpenMesh::DefaultTraits
|
||||||
|
{
|
||||||
|
// use vertex normals and vertex colors
|
||||||
|
VertexAttributes( OpenMesh::Attributes::Normal | OpenMesh::Attributes::Color );
|
||||||
|
// store the previous halfedge
|
||||||
|
HalfedgeAttributes( OpenMesh::Attributes::PrevHalfedge );
|
||||||
|
// use face normals face colors
|
||||||
|
FaceAttributes( OpenMesh::Attributes::Normal | OpenMesh::Attributes::Color );
|
||||||
|
EdgeAttributes( OpenMesh::Attributes::Color );
|
||||||
|
// vertex thickness
|
||||||
|
VertexTraits{float thickness; float value; Color faceShadingColor;};
|
||||||
|
// edge thickness
|
||||||
|
EdgeTraits{float thickness;};
|
||||||
|
};
|
||||||
|
typedef OpenMesh::TriMesh_ArrayKernelT<MyTraits> MyMesh;
|
||||||
|
|
||||||
|
|
||||||
|
enum DisplayMode {Normal, TemperatureMap, ColorShading};
|
||||||
|
|
||||||
|
class MainWindow : public QMainWindow
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit MainWindow(QWidget *parent = 0);
|
||||||
|
~MainWindow();
|
||||||
|
|
||||||
|
// les 4 fonctions à compléter
|
||||||
|
void showSelections(MyMesh* _mesh);
|
||||||
|
void showSelectionsNeighborhood(MyMesh* _mesh);
|
||||||
|
void showPath(MyMesh* _mesh, int v1, int v2);
|
||||||
|
void showBorder(MyMesh* _mesh);
|
||||||
|
|
||||||
|
void displayMesh(MyMesh *_mesh, DisplayMode mode = DisplayMode::Normal);
|
||||||
|
void resetAllColorsAndThickness(MyMesh* _mesh);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
|
||||||
|
void on_pushButton_chargement_clicked();
|
||||||
|
void on_pushButton_vertexMoins_clicked();
|
||||||
|
void on_pushButton_vertexPlus_clicked();
|
||||||
|
void on_pushButton_edgeMoins_clicked();
|
||||||
|
void on_pushButton_edgePlus_clicked();
|
||||||
|
void on_pushButton_faceMoins_clicked();
|
||||||
|
void on_pushButton_facePlus_clicked();
|
||||||
|
void on_pushButton_afficherChemin_clicked();
|
||||||
|
void on_pushButton_voisinage_clicked();
|
||||||
|
void on_pushButton_bordure_clicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
bool modevoisinage;
|
||||||
|
|
||||||
|
MyMesh mesh;
|
||||||
|
|
||||||
|
int vertexSelection;
|
||||||
|
int edgeSelection;
|
||||||
|
int faceSelection;
|
||||||
|
|
||||||
|
Ui::MainWindow *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MAINWINDOW_H
|
515
mainwindow.ui
Normal file
515
mainwindow.ui
Normal file
@ -0,0 +1,515 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>MainWindow</class>
|
||||||
|
<widget class="QMainWindow" name="MainWindow">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>632</width>
|
||||||
|
<height>408</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>MainWindow</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="centralWidget">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_2" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>150</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>150</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_chargement">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Charger OBJ</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Sélections courantes :</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_4" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>v : </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_vertexMoins">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>-</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelVertex">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>-1</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_vertexPlus">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>+</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_3" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>e : </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_edgeMoins">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>-</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelEdge">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>-1</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_edgePlus">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>10</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>+</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>f : </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_faceMoins">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>-</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelFace">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>-1</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_facePlus">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>+</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_voisinage">
|
||||||
|
<property name="text">
|
||||||
|
<string>Passer en mode voisinage</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame_3">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_bordure">
|
||||||
|
<property name="text">
|
||||||
|
<string>Afficher la bordure</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame_2">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_5" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_v1_chemin">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string> v1 : </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinBox_v1_chemin"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_v2_chemin">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string> v2 : </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinBox_v2_chemin"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_afficherChemin">
|
||||||
|
<property name="text">
|
||||||
|
<string>Afficher le chemin</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</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="MeshViewerWidget" name="displayWidget" native="true"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenuBar" name="menuBar">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>632</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QToolBar" name="mainToolBar">
|
||||||
|
<attribute name="toolBarArea">
|
||||||
|
<enum>TopToolBarArea</enum>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="toolBarBreak">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
<widget class="QStatusBar" name="statusBar"/>
|
||||||
|
</widget>
|
||||||
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>MeshViewerWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header location="global">meshviewerwidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
383
meshviewerwidget.cpp
Normal file
383
meshviewerwidget.cpp
Normal file
@ -0,0 +1,383 @@
|
|||||||
|
#include "meshviewerwidget.h"
|
||||||
|
|
||||||
|
MeshViewerWidget::MeshViewerWidget(QWidget*_parent) : QGLWidget(_parent)
|
||||||
|
{
|
||||||
|
triToDraw = 0;
|
||||||
|
linesToDraw = 0;
|
||||||
|
pointsToDraw = 0;
|
||||||
|
|
||||||
|
setMouseTracking(true);
|
||||||
|
setFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
MeshViewerWidget::MeshViewerWidget( QGLFormat& _fmt, QWidget* _parent ) : QGLWidget( _fmt, _parent )
|
||||||
|
{
|
||||||
|
setMouseTracking(true);
|
||||||
|
setFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::initializeGL()
|
||||||
|
{
|
||||||
|
glClearColor(1.0, 1.0, 1.0, 1.0);
|
||||||
|
glEnable( GL_DEPTH_TEST );
|
||||||
|
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
glGetDoublev(GL_MODELVIEW_MATRIX, modelview_matrix_);
|
||||||
|
set_scene_pos(Vec3f(0.0, 0.0, 0.0), 1.0);
|
||||||
|
|
||||||
|
glEnable( GL_MULTISAMPLE );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::translate( const OpenMesh::Vec3f& _trans )
|
||||||
|
{
|
||||||
|
glLoadIdentity();
|
||||||
|
glTranslated( _trans[0], _trans[1], _trans[2] );
|
||||||
|
glMultMatrixd( modelview_matrix_ );
|
||||||
|
glGetDoublev( GL_MODELVIEW_MATRIX, modelview_matrix_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::resizeGL( int _w, int _h )
|
||||||
|
{
|
||||||
|
update_projection_matrix();
|
||||||
|
glViewport(0, 0, _w, _h);
|
||||||
|
updateGL();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::reloadPOV()
|
||||||
|
{
|
||||||
|
glLoadIdentity();
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
glGetDoublev(GL_MODELVIEW_MATRIX, modelview_matrix_);
|
||||||
|
set_scene_pos(Vec3f(0.0, 0.0, 0.0), 1.0);
|
||||||
|
updateGL();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::loadMesh(GLfloat* verts, GLfloat* colors, int nVerts, GLuint* triangles, int nTriangles)
|
||||||
|
{
|
||||||
|
GLfloat* vertsColsArray = new GLfloat[nVerts * 2];
|
||||||
|
|
||||||
|
for(int i = 0; i < nVerts; i = i + 3)
|
||||||
|
{
|
||||||
|
int j = 2 * i;
|
||||||
|
vertsColsArray[j] = colors[i] / 255.0;
|
||||||
|
vertsColsArray[j+1] = colors[i+1] / 255.0;
|
||||||
|
vertsColsArray[j+2] = colors[i+2] / 255.0;
|
||||||
|
|
||||||
|
vertsColsArray[j+3] = verts[i];
|
||||||
|
vertsColsArray[j+4] = verts[i+1];
|
||||||
|
vertsColsArray[j+5] = verts[i+2];
|
||||||
|
}
|
||||||
|
|
||||||
|
glGenBuffers( 2, TriDataBuffers );
|
||||||
|
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, TriDataBuffers[0]);
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, nVerts * 2 * sizeof(GLfloat), vertsColsArray, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, TriDataBuffers[1]);
|
||||||
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, nTriangles * sizeof(GLuint), triangles, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
triToDraw = nTriangles;
|
||||||
|
|
||||||
|
init = true;
|
||||||
|
|
||||||
|
delete[] vertsColsArray;
|
||||||
|
|
||||||
|
updateGL();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::loadLines(GLfloat* verts, GLfloat* colors, int nVerts, GLuint* lines, int nLines, QList<QPair<float, int> > es)
|
||||||
|
{
|
||||||
|
GLfloat* linesColsArray = new GLfloat[nVerts * 2];
|
||||||
|
|
||||||
|
for(int i = 0; i < nVerts; i = i + 3)
|
||||||
|
{
|
||||||
|
int j = 2 * i;
|
||||||
|
linesColsArray[j] = colors[i] / 255.0;
|
||||||
|
linesColsArray[j+1] = colors[i+1] / 255.0;
|
||||||
|
linesColsArray[j+2] = colors[i+2] / 255.0;
|
||||||
|
|
||||||
|
linesColsArray[j+3] = verts[i];
|
||||||
|
linesColsArray[j+4] = verts[i+1];
|
||||||
|
linesColsArray[j+5] = verts[i+2];
|
||||||
|
}
|
||||||
|
|
||||||
|
glGenBuffers( 2, LinesDataBuffers );
|
||||||
|
|
||||||
|
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, LinesDataBuffers[0]);
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, nVerts * 2 * sizeof(GLfloat), linesColsArray, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, LinesDataBuffers[1]);
|
||||||
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, nLines * sizeof(GLuint), lines, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
linesToDraw = nLines;
|
||||||
|
|
||||||
|
edgeSizes = es;
|
||||||
|
|
||||||
|
delete[] linesColsArray;
|
||||||
|
|
||||||
|
updateGL();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::loadPoints(GLfloat* verts, GLfloat* colors, int nVerts, GLuint* points, int nPoints, QList<QPair<float, int> > vs)
|
||||||
|
{
|
||||||
|
GLfloat* pointsColsArray = new GLfloat[nVerts * 2];
|
||||||
|
|
||||||
|
for(int i = 0; i < nVerts; i = i + 3)
|
||||||
|
{
|
||||||
|
int j = 2 * i;
|
||||||
|
pointsColsArray[j] = colors[i] / 255.0;
|
||||||
|
pointsColsArray[j+1] = colors[i+1] / 255.0;
|
||||||
|
pointsColsArray[j+2] = colors[i+2] / 255.0;
|
||||||
|
|
||||||
|
pointsColsArray[j+3] = verts[i];
|
||||||
|
pointsColsArray[j+4] = verts[i+1];
|
||||||
|
pointsColsArray[j+5] = verts[i+2];
|
||||||
|
}
|
||||||
|
|
||||||
|
glGenBuffers( 2, PointsDataBuffers );
|
||||||
|
|
||||||
|
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, PointsDataBuffers[0]);
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, nVerts * 2 * sizeof(GLfloat), pointsColsArray, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, PointsDataBuffers[1]);
|
||||||
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, nPoints * sizeof(GLuint), points, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
pointsToDraw = nPoints;
|
||||||
|
|
||||||
|
vertsSizes = vs;
|
||||||
|
|
||||||
|
delete[] pointsColsArray;
|
||||||
|
|
||||||
|
updateGL();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MeshViewerWidget::paintGL()
|
||||||
|
{
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
glMatrixMode( GL_PROJECTION );
|
||||||
|
glLoadMatrixd( projection_matrix_ );
|
||||||
|
glMatrixMode( GL_MODELVIEW );
|
||||||
|
glLoadMatrixd( modelview_matrix_ );
|
||||||
|
|
||||||
|
if(triToDraw != 0)
|
||||||
|
{
|
||||||
|
glPolygonOffset(1.0, 2);
|
||||||
|
|
||||||
|
// on charge le buffer 0 : une liste de vertex [r, g, b, x, y, z] (6 float)
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, TriDataBuffers[0]);
|
||||||
|
|
||||||
|
// on charge la partie [r, g, b]
|
||||||
|
glColorPointer( 3, GL_FLOAT, 6 * sizeof(float), 0 );
|
||||||
|
// on charge la partie [x, y, z]
|
||||||
|
glVertexPointer( 3, GL_FLOAT, 6 * sizeof(float), ((float*)NULL + (3)) );
|
||||||
|
|
||||||
|
|
||||||
|
// on charge le buffer 1 : une liste d'ID [v0, v1, v2] (3 int)
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, TriDataBuffers[1]);
|
||||||
|
|
||||||
|
glEnableClientState( GL_VERTEX_ARRAY );
|
||||||
|
|
||||||
|
// affiche les faces en GL_COLOR_ARRAY
|
||||||
|
glEnableClientState( GL_COLOR_ARRAY );
|
||||||
|
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
|
||||||
|
|
||||||
|
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
glDrawElements(GL_TRIANGLES, triToDraw, GL_UNSIGNED_INT, 0);
|
||||||
|
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
|
||||||
|
glDisableClientState( GL_COLOR_ARRAY );
|
||||||
|
glDisableClientState( GL_VERTEX_ARRAY );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(linesToDraw != 0)
|
||||||
|
{
|
||||||
|
// on charge le buffer 0 : une liste de vertex [r, g, b, x, y, z] (6 float)
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, LinesDataBuffers[0]);
|
||||||
|
|
||||||
|
// on charge la partie [r, g, b]
|
||||||
|
glColorPointer( 3, GL_FLOAT, 6 * sizeof(float), 0 );
|
||||||
|
// on charge la partie [x, y, z]
|
||||||
|
glVertexPointer( 3, GL_FLOAT, 6 * sizeof(float), ((float*)NULL + (3)) );
|
||||||
|
|
||||||
|
// on charge le buffer 1 : une liste d'ID [v0, v1] (2 int)
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, LinesDataBuffers[1]);
|
||||||
|
|
||||||
|
glEnableClientState( GL_VERTEX_ARRAY );
|
||||||
|
glEnableClientState( GL_COLOR_ARRAY );
|
||||||
|
|
||||||
|
int cur = 0;
|
||||||
|
for(int i = 0; i < edgeSizes.count(); i++)
|
||||||
|
{
|
||||||
|
glLineWidth(edgeSizes.at(i).first);
|
||||||
|
glDrawElements(GL_LINES, edgeSizes.at(i).second*2, GL_UNSIGNED_INT, (GLvoid*)(sizeof(GLfloat) * cur));
|
||||||
|
cur = cur + edgeSizes.at(i).second*2;
|
||||||
|
}
|
||||||
|
|
||||||
|
glDisableClientState( GL_COLOR_ARRAY );
|
||||||
|
glDisableClientState( GL_VERTEX_ARRAY );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pointsToDraw != 0)
|
||||||
|
{
|
||||||
|
// on charge le buffer 0 : une liste de vertex [r, g, b, x, y, z] (6 float)
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, PointsDataBuffers[0]);
|
||||||
|
|
||||||
|
// on charge la partie [r, g, b]
|
||||||
|
glColorPointer( 3, GL_FLOAT, 6 * sizeof(float), 0 );
|
||||||
|
// on charge la partie [x, y, z]
|
||||||
|
glVertexPointer( 3, GL_FLOAT, 6 * sizeof(float), ((float*)NULL + (3)) );
|
||||||
|
|
||||||
|
// on charge le buffer 1 : une liste d'ID [v0] (1 int)
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, PointsDataBuffers[1]);
|
||||||
|
|
||||||
|
glEnableClientState( GL_VERTEX_ARRAY );
|
||||||
|
glEnableClientState( GL_COLOR_ARRAY );
|
||||||
|
|
||||||
|
int cur = 0;
|
||||||
|
for(int i = 0; i < vertsSizes.count(); i++)
|
||||||
|
{
|
||||||
|
glPointSize(vertsSizes.at(i).first);
|
||||||
|
glDrawElements(GL_POINTS, vertsSizes.at(i).second, GL_UNSIGNED_INT, (GLvoid*)(sizeof(GLfloat) * cur));
|
||||||
|
cur = cur + vertsSizes.at(i).second;
|
||||||
|
}
|
||||||
|
|
||||||
|
glDisableClientState( GL_COLOR_ARRAY );
|
||||||
|
glDisableClientState( GL_VERTEX_ARRAY );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MeshViewerWidget::set_scene_pos( const OpenMesh::Vec3f& _cog, float _radius )
|
||||||
|
{
|
||||||
|
center_ = _cog;
|
||||||
|
radius_ = _radius;
|
||||||
|
update_projection_matrix();
|
||||||
|
view_all();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::update_projection_matrix()
|
||||||
|
{
|
||||||
|
glMatrixMode( GL_PROJECTION );
|
||||||
|
glLoadIdentity();
|
||||||
|
gluPerspective(45.0, (GLfloat) width() / (GLfloat) height(), 0.01*radius_, 100.0*radius_);
|
||||||
|
glGetDoublev( GL_PROJECTION_MATRIX, projection_matrix_);
|
||||||
|
glMatrixMode( GL_MODELVIEW );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::view_all()
|
||||||
|
{
|
||||||
|
translate( Vec3f( -(modelview_matrix_[0]*center_[0] + modelview_matrix_[4]*center_[1] + modelview_matrix_[8]*center_[2] + modelview_matrix_[12]), -(modelview_matrix_[1]*center_[0] + modelview_matrix_[5]*center_[1] + modelview_matrix_[9]*center_[2] + modelview_matrix_[13]), -(modelview_matrix_[2]*center_[0] + modelview_matrix_[6]*center_[1] + modelview_matrix_[10]*center_[2] + modelview_matrix_[14] + 3.0*radius_) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::mousePressEvent( QMouseEvent* _event )
|
||||||
|
{
|
||||||
|
last_point_ok_ = map_to_sphere( last_point_2D_=_event->pos(), last_point_3D_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::mouseMoveEvent( QMouseEvent* _event )
|
||||||
|
{
|
||||||
|
QPoint newPoint2D = _event->pos();
|
||||||
|
|
||||||
|
Vec3f newPoint3D;
|
||||||
|
bool newPoint_hitSphere = map_to_sphere( newPoint2D, newPoint3D );
|
||||||
|
|
||||||
|
float dx = newPoint2D.x() - last_point_2D_.x();
|
||||||
|
float dy = newPoint2D.y() - last_point_2D_.y();
|
||||||
|
|
||||||
|
float w = width();
|
||||||
|
float h = height();
|
||||||
|
|
||||||
|
if ( (_event->buttons() == (Qt::LeftButton+Qt::MidButton)) || (_event->buttons() == Qt::LeftButton && _event->modifiers() == Qt::ControlModifier))
|
||||||
|
{
|
||||||
|
float value_y = radius_ * dy * 3.0 / h;
|
||||||
|
translate(Vec3f(0.0, 0.0, value_y));
|
||||||
|
}
|
||||||
|
else if ( (_event->buttons() == Qt::MidButton) || (_event->buttons() == Qt::LeftButton && _event->modifiers() == Qt::AltModifier) )
|
||||||
|
{
|
||||||
|
float z = - (modelview_matrix_[ 2]*center_[0] + modelview_matrix_[ 6]*center_[1] + modelview_matrix_[10]*center_[2] + modelview_matrix_[14]) / (modelview_matrix_[ 3]*center_[0] + modelview_matrix_[ 7]*center_[1] + modelview_matrix_[11]*center_[2] + modelview_matrix_[15]);
|
||||||
|
float aspect = w / h;
|
||||||
|
float near_plane = 0.01 * radius_;
|
||||||
|
float top = tan(45.0f/2.0f*M_PI/180.0f) * near_plane;
|
||||||
|
float right = aspect*top;
|
||||||
|
translate(Vec3f( 2.0*dx/w*right/near_plane*z, -2.0*dy/h*top/near_plane*z, 0.0f));
|
||||||
|
}
|
||||||
|
else if (_event->buttons() == Qt::LeftButton)
|
||||||
|
{
|
||||||
|
if (last_point_ok_)
|
||||||
|
{
|
||||||
|
if ((newPoint_hitSphere = map_to_sphere(newPoint2D, newPoint3D)))
|
||||||
|
{
|
||||||
|
Vec3f axis = last_point_3D_ % newPoint3D;
|
||||||
|
if (axis.sqrnorm() < 1e-7)
|
||||||
|
axis = Vec3f(1, 0, 0);
|
||||||
|
else
|
||||||
|
axis.normalize();
|
||||||
|
Vec3f d = last_point_3D_ - newPoint3D;
|
||||||
|
float t = 0.5 * d.norm() / TRACKBALL_RADIUS;
|
||||||
|
if (t < -1.0)
|
||||||
|
t = -1.0;
|
||||||
|
else if (t > 1.0)
|
||||||
|
t = 1.0;
|
||||||
|
float phi = 2.0 * asin(t);
|
||||||
|
float angle = phi * 180.0 / M_PI;
|
||||||
|
rotate(axis, angle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
last_point_2D_ = newPoint2D;
|
||||||
|
last_point_3D_ = newPoint3D;
|
||||||
|
last_point_ok_ = newPoint_hitSphere;
|
||||||
|
updateGL();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::mouseReleaseEvent( QMouseEvent* /* _event */ )
|
||||||
|
{
|
||||||
|
last_point_ok_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::wheelEvent(QWheelEvent* _event)
|
||||||
|
{
|
||||||
|
float d = -(float)_event->delta() / 120.0 * 0.2 * radius_;
|
||||||
|
translate(Vec3f(0.0, 0.0, d));
|
||||||
|
updateGL();
|
||||||
|
_event->accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MeshViewerWidget::map_to_sphere( const QPoint& _v2D, OpenMesh::Vec3f& _v3D )
|
||||||
|
{
|
||||||
|
double x = (2.0*_v2D.x() - width())/width();
|
||||||
|
double y = -(2.0*_v2D.y() - height())/height();
|
||||||
|
double xval = x;
|
||||||
|
double yval = y;
|
||||||
|
double x2y2 = xval*xval + yval*yval;
|
||||||
|
|
||||||
|
const double rsqr = TRACKBALL_RADIUS*TRACKBALL_RADIUS;
|
||||||
|
_v3D[0] = xval;
|
||||||
|
_v3D[1] = yval;
|
||||||
|
if (x2y2 < 0.5*rsqr)
|
||||||
|
_v3D[2] = sqrt(rsqr - x2y2);
|
||||||
|
else
|
||||||
|
_v3D[2] = 0.5*rsqr/sqrt(x2y2);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshViewerWidget::rotate( const OpenMesh::Vec3f& _axis, float _angle )
|
||||||
|
{
|
||||||
|
Vec3f t( modelview_matrix_[0]*center_[0] + modelview_matrix_[4]*center_[1] + modelview_matrix_[8]*center_[2] + modelview_matrix_[12], modelview_matrix_[1]*center_[0] + modelview_matrix_[5]*center_[1] + modelview_matrix_[9]*center_[2] + modelview_matrix_[13], modelview_matrix_[2]*center_[0] + modelview_matrix_[6]*center_[1] + modelview_matrix_[10]*center_[2] + modelview_matrix_[14] );
|
||||||
|
glLoadIdentity();
|
||||||
|
glTranslatef(t[0], t[1], t[2]);
|
||||||
|
glRotated( _angle, _axis[0], _axis[1], _axis[2]);
|
||||||
|
glTranslatef(-t[0], -t[1], -t[2]);
|
||||||
|
glMultMatrixd(modelview_matrix_);
|
||||||
|
glGetDoublev(GL_MODELVIEW_MATRIX, modelview_matrix_);
|
||||||
|
}
|
87
meshviewerwidget.h
Normal file
87
meshviewerwidget.h
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#ifndef MESHVIEWERWIDGET_H
|
||||||
|
#define MESHVIEWERWIDGET_H
|
||||||
|
|
||||||
|
#define GL_GLEXT_PROTOTYPES
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QGLWidget>
|
||||||
|
#include "QMouseEvent"
|
||||||
|
#include <OpenMesh/Core/Geometry/VectorT.hh>
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#include <gl.h>
|
||||||
|
#include <glu.h>
|
||||||
|
#include <glext.h>
|
||||||
|
#else
|
||||||
|
#include <GL/gl.h>
|
||||||
|
#include <GL/glu.h>
|
||||||
|
#include <GL/glx.h>
|
||||||
|
#include <GL/glext.h>
|
||||||
|
#include <GL/glut.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
using namespace OpenMesh;
|
||||||
|
|
||||||
|
const double TRACKBALL_RADIUS = 0.6;
|
||||||
|
|
||||||
|
class MeshViewerWidget : public QGLWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
MeshViewerWidget(QWidget* _parent=0);
|
||||||
|
MeshViewerWidget(QGLFormat& _fmt, QWidget* _parent );
|
||||||
|
|
||||||
|
// events GL
|
||||||
|
void initializeGL();
|
||||||
|
void resizeGL(int _w, int _h);
|
||||||
|
void paintGL();
|
||||||
|
|
||||||
|
// gestion de la vue et de la trackball
|
||||||
|
void update_projection_matrix();
|
||||||
|
void view_all();
|
||||||
|
void set_scene_pos( const OpenMesh::Vec3f& _cog, float _radius );
|
||||||
|
bool map_to_sphere(const QPoint& _point, OpenMesh::Vec3f& _result);
|
||||||
|
void translate( const OpenMesh::Vec3f& _trans );
|
||||||
|
void rotate( const OpenMesh::Vec3f& _axis, float _angle );
|
||||||
|
|
||||||
|
void reloadPOV();
|
||||||
|
void loadMesh(GLfloat* verts, GLfloat* colors, int nVerts, GLuint* triangles, int nTriangles);
|
||||||
|
void loadLines(GLfloat* verts, GLfloat* colors, int nVerts, GLuint* lines, int nLines, QList<QPair<float, int> > es);
|
||||||
|
void loadPoints(GLfloat* verts, GLfloat* colors, int nVerts, GLuint* points, int nPoints, QList<QPair<float, int> > vs);
|
||||||
|
|
||||||
|
// buffer pour les VBO
|
||||||
|
GLuint TriDataBuffers[2];
|
||||||
|
// Nombre de triangles du mesh (pour le call du draw)
|
||||||
|
int triToDraw;
|
||||||
|
|
||||||
|
GLuint LinesDataBuffers[2];
|
||||||
|
int linesToDraw;
|
||||||
|
QList<QPair<float, int> > edgeSizes;
|
||||||
|
|
||||||
|
GLuint PointsDataBuffers[2];
|
||||||
|
int pointsToDraw;
|
||||||
|
QList<QPair<float, int> > vertsSizes;
|
||||||
|
|
||||||
|
// pour savoir si les buffer sont init
|
||||||
|
bool init;
|
||||||
|
|
||||||
|
// variables de gestion de la vue et de la trackball
|
||||||
|
OpenMesh::Vec3f center_;
|
||||||
|
float radius_;
|
||||||
|
|
||||||
|
GLdouble projection_matrix_[16], modelview_matrix_[16];
|
||||||
|
|
||||||
|
QPoint last_point_2D_;
|
||||||
|
OpenMesh::Vec3f last_point_3D_;
|
||||||
|
bool last_point_ok_;
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Qt mouse events
|
||||||
|
virtual void mousePressEvent( QMouseEvent* );
|
||||||
|
virtual void mouseReleaseEvent( QMouseEvent* );
|
||||||
|
virtual void mouseMoveEvent( QMouseEvent* );
|
||||||
|
virtual void wheelEvent( QWheelEvent* );
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MESHVIEWERWIDGET_H
|
53
starterLight.pro
Normal file
53
starterLight.pro
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#-------------------------------------------------
|
||||||
|
#
|
||||||
|
# Project created by QtCreator 2018-10-02T16:25:45
|
||||||
|
#
|
||||||
|
#-------------------------------------------------
|
||||||
|
|
||||||
|
QT += core gui
|
||||||
|
QT += opengl
|
||||||
|
|
||||||
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
|
TARGET = starterLight
|
||||||
|
TEMPLATE = app
|
||||||
|
|
||||||
|
# The following define makes your compiler emit warnings if you use
|
||||||
|
# any feature of Qt which has been marked as deprecated (the exact warnings
|
||||||
|
# depend on your compiler). Please consult the documentation of the
|
||||||
|
# deprecated API in order to know how to port your code away from it.
|
||||||
|
DEFINES += QT_DEPRECATED_WARNINGS
|
||||||
|
|
||||||
|
# You can also make your code fail to compile if you use deprecated APIs.
|
||||||
|
# In order to do so, uncomment the following line.
|
||||||
|
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||||
|
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||||
|
|
||||||
|
|
||||||
|
unix:!macx {
|
||||||
|
LIBS += -lglut -lGLU
|
||||||
|
LIBS += -L$$PWD/../OpenMesh/liblinux/ -lOpenMeshCore
|
||||||
|
|
||||||
|
INCLUDEPATH += $$PWD/../OpenMesh/inc/
|
||||||
|
DEPENDPATH += $$PWD/../OpenMesh/inc/
|
||||||
|
DEPENDPATH += $$PWD/../OpenMesh/liblinux/
|
||||||
|
}
|
||||||
|
|
||||||
|
macx: {
|
||||||
|
INCLUDEPATH += $$PWD/../OpenMesh/inc/
|
||||||
|
LIBS += -L$$PWD/../OpenMesh/libosx/ -lOpenMeshCore -lOpenMeshTools
|
||||||
|
}
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
main.cpp \
|
||||||
|
mainwindow.cpp \
|
||||||
|
meshviewerwidget.cpp
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
mainwindow.h \
|
||||||
|
meshviewerwidget.h
|
||||||
|
|
||||||
|
FORMS += \
|
||||||
|
mainwindow.ui
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user