diff --git a/src/Acid.Cam.v2.OpenCV3.Linux.pro b/src/Acid.Cam.v2.OpenCV3.Linux.pro index 82d142c..88713ba 100644 --- a/src/Acid.Cam.v2.OpenCV3.Linux.pro +++ b/src/Acid.Cam.v2.OpenCV3.Linux.pro @@ -9,12 +9,12 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 DEPENDPATH += . INCLUDEPATH += . /usr/include/ /usr/local/include -LIBS += `pkg-config acidcam opencv --libs` -lGL +LIBS += `pkg-config acidcam opencv sdl2 --libs` -lGL #LIBS += -lopencv_contrib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_video #LIBS += -L/usr/local/lib -lopencv_world -QMAKE_CXXFLAGS += `pkg-config acidcam opencv --cflags` +QMAKE_CXXFLAGS += `pkg-config acidcam opencv sdl2 --cflags` RESOURCES += qresource.qrc QMAKE_CFLAGS_ISYSTEM = -I # Input -HEADERS += main_window.h new_dialog.h plugin.h qtheaders.h select_image.h display_window.h playback_thread.h search_box.h goto_window.h chroma_window.h user_define.h dl-man.h image_window.h options_window.h gl_display.h -SOURCES += main.cpp main_window.cpp new_dialog.cpp plugin.cpp select_image.cpp display_window.cpp playback_thread.cpp search_box.cpp goto_window.cpp chroma_window.cpp user_define.cpp dl-man.cpp image_window.cpp options_window.cpp gl_display.cpp +HEADERS += main_window.h new_dialog.h plugin.h qtheaders.h select_image.h display_window.h playback_thread.h search_box.h goto_window.h chroma_window.h user_define.h dl-man.h image_window.h options_window.h gl_display.h controller.h +SOURCES += main.cpp main_window.cpp new_dialog.cpp plugin.cpp select_image.cpp display_window.cpp playback_thread.cpp search_box.cpp goto_window.cpp chroma_window.cpp user_define.cpp dl-man.cpp image_window.cpp options_window.cpp gl_display.cpp controller.cpp diff --git a/src/Acid.Cam.v2.OpenCV3.pro b/src/Acid.Cam.v2.OpenCV3.pro index d15c01c..c307170 100644 --- a/src/Acid.Cam.v2.OpenCV3.pro +++ b/src/Acid.Cam.v2.OpenCV3.pro @@ -9,12 +9,12 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 DEPENDPATH += . INCLUDEPATH += . /usr/include/ /usr/local/include -LIBS += `pkg-config acidcam opencv4 --libs` -framework OpenGL +LIBS += `pkg-config acidcam opencv4 sdl2 --libs` -framework OpenGL #LIBS += -lopencv_contrib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_video #LIBS += -L/usr/local/lib -lopencv_world -QMAKE_CXXFLAGS += `pkg-config acidcam opencv4 --cflags` +QMAKE_CXXFLAGS += `pkg-config acidcam opencv4 sdl2 --cflags` RESOURCES += qresource.qrc QMAKE_CFLAGS_ISYSTEM = -I # Input -HEADERS += main_window.h new_dialog.h plugin.h qtheaders.h select_image.h display_window.h playback_thread.h search_box.h goto_window.h chroma_window.h user_define.h dl-man.h image_window.h options_window.h gl_display.h -SOURCES += main.cpp main_window.cpp new_dialog.cpp plugin.cpp select_image.cpp display_window.cpp playback_thread.cpp search_box.cpp goto_window.cpp chroma_window.cpp user_define.cpp dl-man.cpp image_window.cpp options_window.cpp gl_display.cpp +HEADERS += main_window.h new_dialog.h plugin.h qtheaders.h select_image.h display_window.h playback_thread.h search_box.h goto_window.h chroma_window.h user_define.h dl-man.h image_window.h options_window.h gl_display.h controller.h +SOURCES += main.cpp main_window.cpp new_dialog.cpp plugin.cpp select_image.cpp display_window.cpp playback_thread.cpp search_box.cpp goto_window.cpp chroma_window.cpp user_define.cpp dl-man.cpp image_window.cpp options_window.cpp gl_display.cpp controller.cpp diff --git a/src/Acid.Cam.v2.OpenCV4.Linux.pro b/src/Acid.Cam.v2.OpenCV4.Linux.pro index bcb52b4..dd773e0 100644 --- a/src/Acid.Cam.v2.OpenCV4.Linux.pro +++ b/src/Acid.Cam.v2.OpenCV4.Linux.pro @@ -9,12 +9,12 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 DEPENDPATH += . INCLUDEPATH += . /usr/include/ /usr/local/include -LIBS += `pkg-config acidcam opencv4 --libs` -lGLU +LIBS += `pkg-config acidcam opencv4 sdl2 --libs` -lGLU #LIBS += -lopencv_contrib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_video #LIBS += -L/usr/local/lib -lopencv_world -QMAKE_CXXFLAGS += `pkg-config acidcam opencv4 --cflags` +QMAKE_CXXFLAGS += `pkg-config acidcam opencv4 sdl2 --cflags` RESOURCES += qresource.qrc QMAKE_CFLAGS_ISYSTEM = -I # Input -HEADERS += main_window.h new_dialog.h plugin.h qtheaders.h select_image.h display_window.h playback_thread.h search_box.h goto_window.h chroma_window.h user_define.h dl-man.h image_window.h options_window.h gl_display.h -SOURCES += main.cpp main_window.cpp new_dialog.cpp plugin.cpp select_image.cpp display_window.cpp playback_thread.cpp search_box.cpp goto_window.cpp chroma_window.cpp user_define.cpp dl-man.cpp image_window.cpp options_window.cpp gl_display.cpp +HEADERS += main_window.h new_dialog.h plugin.h qtheaders.h select_image.h display_window.h playback_thread.h search_box.h goto_window.h chroma_window.h user_define.h dl-man.h image_window.h options_window.h gl_display.h controller.h +SOURCES += main.cpp main_window.cpp new_dialog.cpp plugin.cpp select_image.cpp display_window.cpp playback_thread.cpp search_box.cpp goto_window.cpp chroma_window.cpp user_define.cpp dl-man.cpp image_window.cpp options_window.cpp gl_display.cpp controller.cpp diff --git a/src/Acid.Cam.v2.OpenCV4.pro b/src/Acid.Cam.v2.OpenCV4.pro index d15c01c..c307170 100644 --- a/src/Acid.Cam.v2.OpenCV4.pro +++ b/src/Acid.Cam.v2.OpenCV4.pro @@ -9,12 +9,12 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 DEPENDPATH += . INCLUDEPATH += . /usr/include/ /usr/local/include -LIBS += `pkg-config acidcam opencv4 --libs` -framework OpenGL +LIBS += `pkg-config acidcam opencv4 sdl2 --libs` -framework OpenGL #LIBS += -lopencv_contrib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_video #LIBS += -L/usr/local/lib -lopencv_world -QMAKE_CXXFLAGS += `pkg-config acidcam opencv4 --cflags` +QMAKE_CXXFLAGS += `pkg-config acidcam opencv4 sdl2 --cflags` RESOURCES += qresource.qrc QMAKE_CFLAGS_ISYSTEM = -I # Input -HEADERS += main_window.h new_dialog.h plugin.h qtheaders.h select_image.h display_window.h playback_thread.h search_box.h goto_window.h chroma_window.h user_define.h dl-man.h image_window.h options_window.h gl_display.h -SOURCES += main.cpp main_window.cpp new_dialog.cpp plugin.cpp select_image.cpp display_window.cpp playback_thread.cpp search_box.cpp goto_window.cpp chroma_window.cpp user_define.cpp dl-man.cpp image_window.cpp options_window.cpp gl_display.cpp +HEADERS += main_window.h new_dialog.h plugin.h qtheaders.h select_image.h display_window.h playback_thread.h search_box.h goto_window.h chroma_window.h user_define.h dl-man.h image_window.h options_window.h gl_display.h controller.h +SOURCES += main.cpp main_window.cpp new_dialog.cpp plugin.cpp select_image.cpp display_window.cpp playback_thread.cpp search_box.cpp goto_window.cpp chroma_window.cpp user_define.cpp dl-man.cpp image_window.cpp options_window.cpp gl_display.cpp controller.cpp diff --git a/src/controller.cpp b/src/controller.cpp new file mode 100644 index 0000000..49aa28f --- /dev/null +++ b/src/controller.cpp @@ -0,0 +1,35 @@ + +#include"controller.h" +#include + + +bool Controller::open(int index) { + stick = SDL_JoystickOpen(index); + if(!stick) + return false; + std::cout << "Opened: " << SDL_JoystickName(stick) << "\n"; + return true; +} + +void Controller::close() { + if(stick != 0) + SDL_JoystickClose(stick); +} + +bool Controller::button(int index) { + if(stick != 0 && SDL_JoystickGetButton(stick, index)) + return true; + return false; +} + +Uint8 Controller::hat(int h) { + if(stick != 0) + return SDL_JoystickGetHat(stick, h); + return 0; +} + +int Controller::axis(int index) { + if(stick != 0) + return SDL_JoystickGetAxis(stick, index); + return 0; +} diff --git a/src/controller.h b/src/controller.h new file mode 100644 index 0000000..1833993 --- /dev/null +++ b/src/controller.h @@ -0,0 +1,26 @@ + +#ifndef __CONTROLLER_H__ +#define __CONTROLLER_H__ + +#include "SDL.h" + +class Controller { +public: + static void init() { + SDL_Init(SDL_INIT_JOYSTICK); + atexit(SDL_Quit); + } + + bool open(int index); + void close(); + bool button(int index); + Uint8 hat(int h); + int axis(int index); + +private: + SDL_Joystick *stick; + +}; + +#endif + diff --git a/src/main_window.cpp b/src/main_window.cpp index 07900d0..fc93bf2 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -173,7 +173,9 @@ AC_MainWindow::AC_MainWindow(QWidget *parent) : QMainWindow(parent) { } } */ - + Controller::init(); + joy_timer = new QTimer(this); + connect(joy_timer, SIGNAL(timeout()), this, SLOT(chk_Joystick())); } @@ -1048,6 +1050,13 @@ bool AC_MainWindow::startCamera(int res, int dev, const QString &outdir, bool re if(rt_val == false) return false; playback->Play(); disp->show(); + if(controller.open(0)) { + std::cout << "Controller connected...\n"; + joy_timer->start(); + + } else { + std::cout << "No controller detected...\n"; + } return true; } @@ -1146,6 +1155,12 @@ bool AC_MainWindow::startVideo(const QString &filename, const QString &outdir, b playback->setVideo(capture_video,writer,recording); playback->Play(); disp->show(); + if(controller.open(0)) { + std::cout << "Controller connected...\n"; + joy_timer->start(); + } else { + std::cout << "No controller detected...\n"; + } return true; } @@ -1797,3 +1812,15 @@ void AC_MainWindow::prev_filter() { void AC_MainWindow::showGLDisplay() { disp->showGL(); } + +void AC_MainWindow::chk_Joystick() { + SDL_Event e; + while(SDL_PollEvent(&e)) { + if(controller.button(1)) { + prev_filter(); + } + if(controller.button(0)) { + next_filter(); + } + } +} diff --git a/src/main_window.h b/src/main_window.h index ba0364d..16d6419 100644 --- a/src/main_window.h +++ b/src/main_window.h @@ -20,6 +20,7 @@ #include "image_window.h" #include "options_window.h" #include "gl_display.h" +#include "controller.h" class SearchWindow; @@ -64,6 +65,7 @@ public: QAction *select_next_filter, *select_prev_filter; QAction *cycle_custom; QAction *show_glDisplay; + QTimer *joy_timer; double speed_actions[7]; QRadioButton *filter_single, *filter_custom; void updateList(); @@ -74,6 +76,7 @@ public: void setOptionString(std::string op, std::string value); void setProcMode(int index); public slots: + void chk_Joystick(); void addClicked(); void rmvClicked(); void upClicked(); @@ -164,6 +167,7 @@ private: bool loading; int speed_index; cv::ocl::Context context; + Controller controller; }; extern const char *filer_names[]; diff --git a/src/playback_thread.h b/src/playback_thread.h index 88e49dd..6467d4e 100644 --- a/src/playback_thread.h +++ b/src/playback_thread.h @@ -11,6 +11,7 @@ #include "qtheaders.h" #include + enum VideoMode { MODE_CAMERA = 0, MODE_VIDEO }; class Playback : public QThread {