From 3093a23471259d198eabadd33359aede7c3a7d47 Mon Sep 17 00:00:00 2001 From: Krisjanis Rijnieks Date: Wed, 15 Oct 2014 21:29:27 +0200 Subject: [PATCH] Build gui from image names got from media server --- src/MediaServer/MediaServer.cpp | 29 +++++++++++++++++++++++++++++ src/MediaServer/MediaServer.h | 2 ++ src/SourcesEditor.cpp | 6 +++++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/MediaServer/MediaServer.cpp b/src/MediaServer/MediaServer.cpp index fdd5628..f391155 100644 --- a/src/MediaServer/MediaServer.cpp +++ b/src/MediaServer/MediaServer.cpp @@ -31,6 +31,18 @@ namespace piMapper { return videoWatcher.getFilePaths(); } + std::vector MediaServer::getImageNames() { + std::vector imageNames; + for (int i = 0; i < getNumImages(); i++) { + // Split image path + std::vector pathParts = ofSplitString(getImagePaths()[i], "/"); + // And get only the last piece + std::string name = pathParts[pathParts.size()-1]; + imageNames.push_back(name); + } + return imageNames; + } + void MediaServer::loadImage(string& path) { // Load image and add to vector if loading success ofImage image; @@ -56,6 +68,23 @@ namespace piMapper { } } + ofTexture* MediaServer::getImageTexture(string &path) { + + // Find image index by path + for (int i = 0; i < loadedImagePaths.size(); i++) { + if (path == loadedImagePaths[i]) { + if (loadedImages[i].isAllocated()) { + return &loadedImages[i].getTextureReference(); + } + } + } + + // If we havent returned yet, that means that there is no image + // and we need to sort this out somehow + ofLogError("MediaServer::getImageTexture", "Image not found"); + return NULL; + } + void MediaServer::handleImageAdded(string& path) { /* cout << "onImageAdded: " << path << endl; diff --git a/src/MediaServer/MediaServer.h b/src/MediaServer/MediaServer.h index e190cc2..091f6c3 100644 --- a/src/MediaServer/MediaServer.h +++ b/src/MediaServer/MediaServer.h @@ -26,10 +26,12 @@ class MediaServer { int getNumImages(); std::vector& getVideoPaths(); std::vector& getImagePaths(); + std::vector getImageNames(); // Image loading and handling void loadImage(string& path); void unloadImage(string& path); + ofTexture* getImageTexture(string& path); // Custom events ofEvent onImageAdded; diff --git a/src/SourcesEditor.cpp b/src/SourcesEditor.cpp index c25aa6d..d0628b9 100644 --- a/src/SourcesEditor.cpp +++ b/src/SourcesEditor.cpp @@ -71,6 +71,7 @@ namespace piMapper { gui = new RadioList(); // read directory contents + /* ofDirectory imgDir; imgDir.listDir(defImgDir); imgDir.sort(); @@ -81,7 +82,10 @@ namespace piMapper { // images[i].loadImage(imgDir.getPath(i)); vnames.push_back(imgDir.getName(i)); } - + */ + + // Get only image names from media server image paths + vector vnames = mediaServer->getImageNames(); gui->setup("Images", vnames); gui->setPosition(20, 20); ofAddListener(gui->radioSelectedEvent, this, &SourcesEditor::guiEvent);