archivage initial

This commit is contained in:
papush! 2020-03-10 23:45:03 +01:00
commit 3865f6a9db
8 changed files with 1797 additions and 0 deletions

766
Makefile Normal file
View 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/tp2/starterLight/.tmp/starterLight1.0.0
LINK = g++
LFLAGS = -Wl,-O1 -Wl,-rpath,/usr/lib
LIBS = $(SUBLIBS) -lglut -lGLU -L/home/papush/m1/mgm/tp2/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/tp2/starterLight/moc_predefs.h -I/usr/lib/qt5/mkspecs/linux-g++ -I/home/papush/m1/mgm/tp2/starterLight -I/home/papush/m1/mgm/tp2/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/tp2/starterLight/moc_predefs.h -I/usr/lib/qt5/mkspecs/linux-g++ -I/home/papush/m1/mgm/tp2/starterLight -I/home/papush/m1/mgm/tp2/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
View 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();
}

318
mainwindow.cpp Normal file
View File

@ -0,0 +1,318 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <vector>
#include <queue>
#include <map>
#include <QDebug>
void MainWindow::showParts(MyMesh* _mesh)
{
using namespace std;
map<unsigned, bool> trace;
for (auto v_it = _mesh->vertices_begin(); v_it != _mesh->vertices_end(); ++v_it) {
trace[v_it->idx()] = false;
}
queue<VertexHandle> remaining;
vector<MyMesh::Color> colors {
MyMesh::Color(0, 0, 255),
MyMesh::Color(0, 255, 0),
MyMesh::Color(0, 255, 255),
MyMesh::Color(255, 0, 0),
MyMesh::Color(255, 0, 255),
MyMesh::Color(255, 255, 0)
};
size_t i = 0;
for (auto it : trace) {
if (it.second) continue;
remaining.push(_mesh->vertex_handle(it.first));
trace[it.first] = true;
while (!remaining.empty()) {
VertexHandle vh = remaining.front();
remaining.pop();
for (auto vf_it = _mesh->vf_iter(vh); vf_it.is_valid(); ++vf_it) {
_mesh->set_color(*vf_it, colors[i % colors.size()]);
}
for (auto vv_it = _mesh->vv_iter(vh); vv_it.is_valid(); ++vv_it) {
if (trace[vv_it->idx()]) continue;
remaining.push(*vv_it);
trace[vv_it->idx()] = true;
}
}
i++;
}
}
/* **** début de la partie boutons et IHM **** */
void MainWindow::on_pushButton_clicked()
{
// on réinitialise l'affichage
resetAllColorsAndThickness(&mesh);
/* **** à compléter ! (avec la fonction showParts) **** */
showParts(&mesh);
// on affiche le nouveau maillage
displayMesh(&mesh);
}
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());
OpenMesh::IO::read_mesh(mesh, "../meshFiles/cc.obj");
// 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));
std::sort(values.begin(), values.end());
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)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}

59
mainwindow.h Normal file
View File

@ -0,0 +1,59 @@
#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();
// la fonction à compléter
void showParts(MyMesh* _mesh);
void displayMesh(MyMesh *_mesh, DisplayMode mode = DisplayMode::Normal);
void resetAllColorsAndThickness(MyMesh* _mesh);
private slots:
void on_pushButton_chargement_clicked();
void on_pushButton_clicked();
private:
MyMesh mesh;
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

120
mainwindow.ui Normal file
View File

@ -0,0 +1,120 @@
<?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="QPushButton" name="pushButton">
<property name="text">
<string>Composantes Connexes</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</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
View 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
View 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
View 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