#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace { constexpr const char _loggerCat[] = "SkyBrowserModule"; } // namespace namespace openspace::skybrowser::luascriptfunctions { int loadImgCollection(lua_State* L) { // Load image ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::loadCollection"); const int i = ghoul::lua::value(L, 1); ScreenSpaceSkyBrowser* browser = dynamic_cast(global::renderEngine->screenSpaceRenderable("SkyBrowser1")); SkyBrowserModule* module = global::moduleEngine->module(); const ImageData& resultImage = module->getWWTDataHandler()->getLoadedImages()[i]; browser->sendMessageToWWT(browser->createMessageForSettingForegroundWWT(resultImage.name)); LINFO("Loading image " + resultImage.name); browser->sendMessageToWWT(browser->createMessageForSettingForegroundOpacityWWT(100)); return 1; } int followCamera(lua_State* L) { // Load images from url ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::followCamera"); SkyBrowserModule* module = global::moduleEngine->module(); std::string root = "https://raw.githubusercontent.com/WorldWideTelescope/wwt-web-client/master/assets/webclient-explore-root.wtml"; module->getWWTDataHandler()->loadWTMLCollectionsFromURL(root, "root"); LINFO(std::to_string( module->getWWTDataHandler()->loadAllImagesFromXMLs())); return 1; } int moveBrowser(lua_State* L) { // Load images from local directory ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::moveBrowser"); SkyBrowserModule* module = global::moduleEngine->module(); module->getWWTDataHandler()->loadWTMLCollectionsFromDirectory(absPath("${MODULE_SKYBROWSER}/WWTimagedata/")); std::string noOfLoadedImgs = std::to_string(module->getWWTDataHandler()->loadAllImagesFromXMLs()); LINFO("Loaded " + noOfLoadedImgs + " WorldWide Telescope images."); ScreenSpaceSkyBrowser* browser = dynamic_cast(global::renderEngine->screenSpaceRenderable("SkyBrowser1")); //const std::vector& imageUrls = module->getWWTDataHandler()->getAllImageCollectionUrls(); //for (const std::string url : imageUrls) { // browser->sendMessageToWWT(browser->createMessageForLoadingWWTImgColl(url)); //} std::string root = "https://raw.githubusercontent.com/WorldWideTelescope/wwt-web-client/master/assets/webclient-explore-root.wtml"; browser->sendMessageToWWT(browser->createMessageForLoadingWWTImgColl(root)); return 1; } int createBrowser(lua_State* L) { // Send image list to GUI ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::createBrowser"); SkyBrowserModule* module = global::moduleEngine->module(); // If no data has been loaded yet, load it! if (module->getWWTDataHandler()->getLoadedImages().size() == 0) { moveBrowser(L); } const std::vector& images = module->getWWTDataHandler()->getLoadedImages(); lua_newtable(L); for (int i = 0; i < images.size(); i++) { // Push a table { image name, image url } with index : number lua_newtable(L); lua_pushstring(L, images[i].name.c_str()); lua_rawseti(L, -2, 1); lua_pushstring(L, images[i].thumbnailUrl.c_str()); lua_rawseti(L, -2, 2); lua_rawseti(L, -2, i+1); } return 1; } int adjustCamera(lua_State* L) { ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::adjustCamera"); return 1; } }