From 7d8e4020750683412c9f56edf847fd830402aa0f Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Thu, 9 Jan 2014 17:25:01 -0800 Subject: ACME-1244 : WIP : Move files around and introduced an llimagefiltersmanager to get the filters --- indra/newview/llimagefiltersmanager.cpp | 84 +++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100755 indra/newview/llimagefiltersmanager.cpp (limited to 'indra/newview/llimagefiltersmanager.cpp') diff --git a/indra/newview/llimagefiltersmanager.cpp b/indra/newview/llimagefiltersmanager.cpp new file mode 100755 index 0000000000..efc4f56ad3 --- /dev/null +++ b/indra/newview/llimagefiltersmanager.cpp @@ -0,0 +1,84 @@ +/** + * @file llimagefilters.cpp + * @brief Load and execute image filters. Mostly used for Flickr at the moment. + * + * $LicenseInfo:firstyear=2001&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2014, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llimagefilters.h" + +#include "lldiriterator.h" + + +//--------------------------------------------------------------------------- +// LLImageFilters +//--------------------------------------------------------------------------- + +LLImageFilters::LLImageFilters() +{ +} + +LLImageFilters::~LLImageFilters() +{ +} + +// virtual static +void LLImageFilters::initSingleton() +{ + loadAllFilters(); +} + +// static +std::string LLImageFilters::getSysDir() +{ + return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "filters", ""); +} + +void LLImageFilters::loadAllFilters() +{ + // Load system (coming out of the box) filters + loadFiltersFromDir(getSysDir()); +} + +void LLImageFilters::loadFiltersFromDir(const std::string& dir) +{ + LLDirIterator dir_iter(dir, "*.xml"); + while (1) + { + std::string file; + if (!dir_iter.next(file)) + { + break; // no more files + } + + std::string path = gDirUtilp->add(dir, file); + + // For the moment, just output the file found to the log + llinfos << "Merov : loadFiltersFromDir, filter = " << path << llendl; + } +} + + + +//============================================================================ -- cgit v1.3 From 2202150af43a44ecf3d989f21ebf4ce5f79a23cc Mon Sep 17 00:00:00 2001 From: merov Date: Sat, 11 Jan 2014 01:00:35 +0000 Subject: ACME-1243 : WIP : Populate filter drop down with filter list dynamically --- indra/newview/llfloaterflickr.cpp | 9 +++++++++ indra/newview/llimagefiltersmanager.cpp | 24 +++++++++++++++--------- indra/newview/llimagefiltersmanager.h | 27 ++++++++++++++------------- 3 files changed, 38 insertions(+), 22 deletions(-) (limited to 'indra/newview/llimagefiltersmanager.cpp') diff --git a/indra/newview/llfloaterflickr.cpp b/indra/newview/llfloaterflickr.cpp index 675266143d..8395c0db5a 100644 --- a/indra/newview/llfloaterflickr.cpp +++ b/indra/newview/llfloaterflickr.cpp @@ -36,6 +36,7 @@ #include "llflickrconnect.h" #include "llfloaterreg.h" #include "lliconctrl.h" +#include "llimagefiltersmanager.h" #include "llresmgr.h" // LLLocale #include "llsdserialize.h" #include "llloadingindicator.h" @@ -106,6 +107,14 @@ BOOL LLFlickrPhotoPanel::postBuild() mPostButton = getChild("post_photo_btn"); mCancelButton = getChild("cancel_photo_btn"); + // Update filter list + std::vector filter_list = LLImageFiltersManager::getInstance()->getFiltersList(); + LLComboBox* filterbox = static_cast(mFilterComboBox); + for (U32 i = 0; i < filter_list.size(); i++) + { + filterbox->add(filter_list[i]); + } + return LLPanel::postBuild(); } diff --git a/indra/newview/llimagefiltersmanager.cpp b/indra/newview/llimagefiltersmanager.cpp index efc4f56ad3..888e5ec5dd 100644 --- a/indra/newview/llimagefiltersmanager.cpp +++ b/indra/newview/llimagefiltersmanager.cpp @@ -1,5 +1,5 @@ /** - * @file llimagefilters.cpp + * @file llimagefiltersmanager.cpp * @brief Load and execute image filters. Mostly used for Flickr at the moment. * * $LicenseInfo:firstyear=2001&license=viewerlgpl$ @@ -26,7 +26,7 @@ #include "llviewerprecompiledheaders.h" -#include "llimagefilters.h" +#include "llimagefiltersmanager.h" #include "lldiriterator.h" @@ -35,34 +35,36 @@ // LLImageFilters //--------------------------------------------------------------------------- -LLImageFilters::LLImageFilters() +LLImageFiltersManager::LLImageFiltersManager() { } -LLImageFilters::~LLImageFilters() +LLImageFiltersManager::~LLImageFiltersManager() { } // virtual static -void LLImageFilters::initSingleton() +void LLImageFiltersManager::initSingleton() { loadAllFilters(); } // static -std::string LLImageFilters::getSysDir() +std::string LLImageFiltersManager::getSysDir() { return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "filters", ""); } -void LLImageFilters::loadAllFilters() +void LLImageFiltersManager::loadAllFilters() { // Load system (coming out of the box) filters loadFiltersFromDir(getSysDir()); } -void LLImageFilters::loadFiltersFromDir(const std::string& dir) +void LLImageFiltersManager::loadFiltersFromDir(const std::string& dir) { + mFiltersList.clear(); + LLDirIterator dir_iter(dir, "*.xml"); while (1) { @@ -71,11 +73,15 @@ void LLImageFilters::loadFiltersFromDir(const std::string& dir) { break; // no more files } + + // Get the ".xml" out of the file name to get the filter name + std::string filter_name = file.substr(0,file.length()-4); + mFiltersList.push_back(filter_name); std::string path = gDirUtilp->add(dir, file); // For the moment, just output the file found to the log - llinfos << "Merov : loadFiltersFromDir, filter = " << path << llendl; + llinfos << "Merov : loadFiltersFromDir, filter = " << file << ",path = " << path << llendl; } } diff --git a/indra/newview/llimagefiltersmanager.h b/indra/newview/llimagefiltersmanager.h index 52b4a56b9b..e916dc7187 100644 --- a/indra/newview/llimagefiltersmanager.h +++ b/indra/newview/llimagefiltersmanager.h @@ -1,5 +1,5 @@ /** - * @file llimagefilters.h + * @file llimagefiltersmanager.h * @brief Load and execute image filters. Mostly used for Flickr at the moment. * * $LicenseInfo:firstyear=2000&license=viewerlgpl$ @@ -24,8 +24,8 @@ * $/LicenseInfo$ */ -#ifndef LL_LLIMAGEFILTERS_H -#define LL_LLIMAGEFILTERS_H +#ifndef LL_LLIMAGEFILTERSMANAGER_H +#define LL_LLIMAGEFILTERSMANAGER_H #include "llsingleton.h" #include "llimage.h" @@ -46,29 +46,30 @@ typedef enum e_screen_mode //============================================================================ // library initialization class -class LLImageFilters : public LLSingleton +class LLImageFiltersManager : public LLSingleton { - LOG_CLASS(LLImageFilters); + LOG_CLASS(LLImageFiltersManager); public: // getFilters(); get a vector of std::string containing the filter names //LLSD loadFilter(const std::string& filter_name); //void executeFilter(const LLSD& filter_data, LLPointer raw_image); - + const std::vector &getFiltersList() const { return mFiltersList; } + protected: private: void loadAllFilters(); void loadFiltersFromDir(const std::string& dir); - LLSD loadFilter(const std::string& path); +// LLSD loadFilter(const std::string& path); static std::string getSysDir(); - friend class LLSingleton; + friend class LLSingleton; /*virtual*/ void initSingleton(); - LLImageFilters(); - ~LLImageFilters(); + LLImageFiltersManager(); + ~LLImageFiltersManager(); - // Needed here: - // - a map of filter files with name and path + // List of filters + std::vector mFiltersList; }; -#endif +#endif // LL_LLIMAGEFILTERSMANAGER_H -- cgit v1.3 From d972efa64c5877c611f9ca583483978dca3c6768 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Mon, 13 Jan 2014 17:56:38 -0800 Subject: ACME-1244 : WIP : Execute filters in Flickr panel. Testable but code beeds clean up. --- indra/newview/llfloaterflickr.cpp | 7 +++---- indra/newview/llimagefiltersmanager.cpp | 9 ++++++++- indra/newview/llimagefiltersmanager.h | 1 + indra/newview/llsnapshotlivepreview.cpp | 24 +++++++++++++++++------- indra/newview/llsnapshotlivepreview.h | 6 +++--- 5 files changed, 32 insertions(+), 15 deletions(-) (limited to 'indra/newview/llimagefiltersmanager.cpp') diff --git a/indra/newview/llfloaterflickr.cpp b/indra/newview/llfloaterflickr.cpp index 8395c0db5a..cff57bfa13 100644 --- a/indra/newview/llfloaterflickr.cpp +++ b/indra/newview/llfloaterflickr.cpp @@ -361,13 +361,12 @@ void LLFlickrPhotoPanel::updateResolution(BOOL do_update) // Merov : // Get the old filter, compare to the current one "filter_name" and set if changed // If changed, also force the updateSnapshot() here under - S32 original_filter = previewp->getFilter(); - S32 filter = ("Gray Scale" == filter_name ? 1 : 0); + std::string original_filter = previewp->getFilter(); - if ((original_width != width) || (original_height != height) || (original_filter != filter)) + if ((original_width != width) || (original_height != height) || (original_filter != filter_name)) { previewp->setSize(width, height); - previewp->setFilter(filter); + previewp->setFilter(filter_name); // hide old preview as the aspect ratio could be wrong lldebugs << "updating thumbnail" << llendl; diff --git a/indra/newview/llimagefiltersmanager.cpp b/indra/newview/llimagefiltersmanager.cpp index 888e5ec5dd..14177b4f05 100644 --- a/indra/newview/llimagefiltersmanager.cpp +++ b/indra/newview/llimagefiltersmanager.cpp @@ -85,6 +85,13 @@ void LLImageFiltersManager::loadFiltersFromDir(const std::string& dir) } } - +std::string LLImageFiltersManager::getFilterPath(const std::string& filter_name) +{ + // *TODO : we should store (filter name, path) in a std::map + std::string file = filter_name + ".xml"; + std::string dir = getSysDir(); + std::string path = gDirUtilp->add(dir, file); + return path; +} //============================================================================ diff --git a/indra/newview/llimagefiltersmanager.h b/indra/newview/llimagefiltersmanager.h index e916dc7187..5591e14a41 100644 --- a/indra/newview/llimagefiltersmanager.h +++ b/indra/newview/llimagefiltersmanager.h @@ -54,6 +54,7 @@ public: //LLSD loadFilter(const std::string& filter_name); //void executeFilter(const LLSD& filter_data, LLPointer raw_image); const std::vector &getFiltersList() const { return mFiltersList; } + std::string getFilterPath(const std::string& filter_name); protected: private: diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp index 2931178ace..c38798bbea 100644 --- a/indra/newview/llsnapshotlivepreview.cpp +++ b/indra/newview/llsnapshotlivepreview.cpp @@ -37,6 +37,8 @@ #include "llfloaterfacebook.h" #include "llfloaterflickr.h" #include "llfloatertwitter.h" +#include "llimagefilter.h" +#include "llimagefiltersmanager.h" #include "llimagebmp.h" #include "llimagej2c.h" #include "llimagejpeg.h" @@ -90,7 +92,7 @@ LLSnapshotLivePreview::LLSnapshotLivePreview (const LLSnapshotLivePreview::Param mCameraRot(LLViewerCamera::getInstance()->getQuaternion()), mSnapshotActive(FALSE), mSnapshotBufferType(LLViewerWindow::SNAPSHOT_TYPE_COLOR), - mFilterType(0) + mFilterName("") { setSnapshotQuality(gSavedSettings.getS32("SnapshotQuality")); mSnapshotDelayTimer.setTimerExpirySec(0.0f); @@ -586,10 +588,14 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update) if(raw) { raw->expandToPowerOfTwo(); - // Merov : Filter also the thumbnail? - if (getFilter() == 1) + // Filter the thumbnail + if (getFilter() != "") { - raw->filterGrayScale(); + LLImageFilter filter; + std::string filter_path = LLImageFiltersManager::getInstance()->getFilterPath(getFilter()); + filter.loadFromFile(filter_path); + filter.executeFilter(raw); + //raw->filterGrayScale(); } mThumbnailImage = LLViewerTextureManager::getLocalTexture(raw.get(), FALSE); mThumbnailUpToDate = TRUE ; @@ -695,10 +701,14 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) } else { - // Merov : Time to apply the filter to mPreviewImage!!! - if (previewp->getFilter() == 1) + // Apply the filter to mPreviewImage + if (previewp->getFilter() != "") { - previewp->mPreviewImage->filterGrayScale(); + LLImageFilter filter; + std::string filter_path = LLImageFiltersManager::getInstance()->getFilterPath(previewp->getFilter()); + filter.loadFromFile(filter_path); + filter.executeFilter(previewp->mPreviewImage); + //previewp->mPreviewImage->filterGrayScale(); } // delete any existing image diff --git a/indra/newview/llsnapshotlivepreview.h b/indra/newview/llsnapshotlivepreview.h index d5ae3b491b..6addc87de2 100644 --- a/indra/newview/llsnapshotlivepreview.h +++ b/indra/newview/llsnapshotlivepreview.h @@ -95,8 +95,8 @@ public: void setSnapshotFormat(LLFloaterSnapshot::ESnapshotFormat type) { mSnapshotFormat = type; } bool setSnapshotQuality(S32 quality, bool set_by_user = true); void setSnapshotBufferType(LLViewerWindow::ESnapshotType type) { mSnapshotBufferType = type; } - void setFilter(S32 filter) { mFilterType = filter; } - S32 getFilter() { return mFilterType; } + void setFilter(std::string filter_name) { mFilterName = filter_name; } + std::string getFilter() { return mFilterName; } void updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail = FALSE, F32 delay = 0.f); void saveWeb(); void saveTexture(); @@ -156,7 +156,7 @@ private: LLQuaternion mCameraRot; BOOL mSnapshotActive; LLViewerWindow::ESnapshotType mSnapshotBufferType; - S32 mFilterType; // *TODO: eventually use a string and a named filter + std::string mFilterName; public: static std::set sList; -- cgit v1.3 From 91f401fa2de8c78da7c83561501a1be993588867 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Thu, 16 Jan 2014 17:52:14 -0800 Subject: ACME-1237 : Use translation service for filter names so they can be localized and as also look proper in English. General filter manager cleanup --- indra/newview/llimagefiltersmanager.cpp | 58 ++++++++++++++++---------- indra/newview/llimagefiltersmanager.h | 31 +++----------- indra/newview/llsnapshotlivepreview.cpp | 28 +++++++++---- indra/newview/skins/default/xui/en/strings.xml | 12 ++++++ 4 files changed, 73 insertions(+), 56 deletions(-) (limited to 'indra/newview/llimagefiltersmanager.cpp') diff --git a/indra/newview/llimagefiltersmanager.cpp b/indra/newview/llimagefiltersmanager.cpp index 14177b4f05..0633dcaefc 100644 --- a/indra/newview/llimagefiltersmanager.cpp +++ b/indra/newview/llimagefiltersmanager.cpp @@ -1,6 +1,6 @@ /** * @file llimagefiltersmanager.cpp - * @brief Load and execute image filters. Mostly used for Flickr at the moment. + * @brief Load image filters list and retrieve their path. Mostly used for Flickr UI at the moment. * * $LicenseInfo:firstyear=2001&license=viewerlgpl$ * Second Life Viewer Source Code @@ -29,10 +29,15 @@ #include "llimagefiltersmanager.h" #include "lldiriterator.h" +#include "lltrans.h" +std::string get_sys_dir() +{ + return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "filters", ""); +} //--------------------------------------------------------------------------- -// LLImageFilters +// LLImageFiltersManager //--------------------------------------------------------------------------- LLImageFiltersManager::LLImageFiltersManager() @@ -49,16 +54,10 @@ void LLImageFiltersManager::initSingleton() loadAllFilters(); } -// static -std::string LLImageFiltersManager::getSysDir() -{ - return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "filters", ""); -} - void LLImageFiltersManager::loadAllFilters() { // Load system (coming out of the box) filters - loadFiltersFromDir(getSysDir()); + loadFiltersFromDir(get_sys_dir()); } void LLImageFiltersManager::loadFiltersFromDir(const std::string& dir) @@ -68,29 +67,44 @@ void LLImageFiltersManager::loadFiltersFromDir(const std::string& dir) LLDirIterator dir_iter(dir, "*.xml"); while (1) { - std::string file; - if (!dir_iter.next(file)) + std::string file_name; + if (!dir_iter.next(file_name)) { break; // no more files } - // Get the ".xml" out of the file name to get the filter name - std::string filter_name = file.substr(0,file.length()-4); - mFiltersList.push_back(filter_name); + // Get the ".xml" out of the file name to get the filter name. That's the one known in strings.xml + std::string filter_name = file_name.substr(0,file_name.length()-4); + // Get the localized name for the filter + filter_name = LLTrans::getString(filter_name); - std::string path = gDirUtilp->add(dir, file); - - // For the moment, just output the file found to the log - llinfos << "Merov : loadFiltersFromDir, filter = " << file << ",path = " << path << llendl; + mFiltersList[filter_name] = file_name; } } +// Note : That method is a bit heavy handed but the list of filters is always small (10 or so) +// and that method is typically called only once when building UI widgets. +const std::vector LLImageFiltersManager::getFiltersList() const +{ + std::vector filter_list; + for (std::map::const_iterator it = mFiltersList.begin(); it != mFiltersList.end(); ++it) + { + filter_list.push_back(it->first); + } + return filter_list; +} + std::string LLImageFiltersManager::getFilterPath(const std::string& filter_name) { - // *TODO : we should store (filter name, path) in a std::map - std::string file = filter_name + ".xml"; - std::string dir = getSysDir(); - std::string path = gDirUtilp->add(dir, file); + std::string path = ""; + std::map::const_iterator it = mFiltersList.find(filter_name); + if (it != mFiltersList.end()) + { + // Get the file name for that filter and build the complete path + std::string file = it->second; + std::string dir = get_sys_dir(); + path = gDirUtilp->add(dir, file); + } return path; } diff --git a/indra/newview/llimagefiltersmanager.h b/indra/newview/llimagefiltersmanager.h index 5591e14a41..4751933065 100644 --- a/indra/newview/llimagefiltersmanager.h +++ b/indra/newview/llimagefiltersmanager.h @@ -1,6 +1,6 @@ /** * @file llimagefiltersmanager.h - * @brief Load and execute image filters. Mostly used for Flickr at the moment. + * @brief Load image filters list and retrieve their path. Mostly used for Flickr UI at the moment. * * $LicenseInfo:firstyear=2000&license=viewerlgpl$ * Second Life Viewer Source Code @@ -28,49 +28,28 @@ #define LL_LLIMAGEFILTERSMANAGER_H #include "llsingleton.h" -#include "llimage.h" -/* -typedef enum e_vignette_mode -{ - VIGNETTE_MODE_NONE = 0, - VIGNETTE_MODE_BLEND = 1, - VIGNETTE_MODE_FADE = 2 -} EVignetteMode; -typedef enum e_screen_mode -{ - SCREEN_MODE_2DSINE = 0, - SCREEN_MODE_LINE = 1 -} EScreenMode; -*/ //============================================================================ -// library initialization class +// LLImageFiltersManager class class LLImageFiltersManager : public LLSingleton { LOG_CLASS(LLImageFiltersManager); public: - // getFilters(); get a vector of std::string containing the filter names - //LLSD loadFilter(const std::string& filter_name); - //void executeFilter(const LLSD& filter_data, LLPointer raw_image); - const std::vector &getFiltersList() const { return mFiltersList; } + const std::vector getFiltersList() const; std::string getFilterPath(const std::string& filter_name); -protected: private: void loadAllFilters(); void loadFiltersFromDir(const std::string& dir); -// LLSD loadFilter(const std::string& path); - - static std::string getSysDir(); friend class LLSingleton; /*virtual*/ void initSingleton(); LLImageFiltersManager(); ~LLImageFiltersManager(); - // List of filters - std::vector mFiltersList; + // List of filters : first is the user friendly localized name, second is the xml file name + std::map mFiltersList; }; #endif // LL_LLIMAGEFILTERSMANAGER_H diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp index c38798bbea..21abdd2675 100644 --- a/indra/newview/llsnapshotlivepreview.cpp +++ b/indra/newview/llsnapshotlivepreview.cpp @@ -591,11 +591,17 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update) // Filter the thumbnail if (getFilter() != "") { - LLImageFilter filter; std::string filter_path = LLImageFiltersManager::getInstance()->getFilterPath(getFilter()); - filter.loadFromFile(filter_path); - filter.executeFilter(raw); - //raw->filterGrayScale(); + if (filter_path != "") + { + LLImageFilter filter; + filter.loadFromFile(filter_path); + filter.executeFilter(raw); + } + else + { + llwarns << "Couldn't find a path to the following filter : " << getFilter() << llendl; + } } mThumbnailImage = LLViewerTextureManager::getLocalTexture(raw.get(), FALSE); mThumbnailUpToDate = TRUE ; @@ -704,11 +710,17 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) // Apply the filter to mPreviewImage if (previewp->getFilter() != "") { - LLImageFilter filter; std::string filter_path = LLImageFiltersManager::getInstance()->getFilterPath(previewp->getFilter()); - filter.loadFromFile(filter_path); - filter.executeFilter(previewp->mPreviewImage); - //previewp->mPreviewImage->filterGrayScale(); + if (filter_path != "") + { + LLImageFilter filter; + filter.loadFromFile(filter_path); + filter.executeFilter(previewp->mPreviewImage); + } + else + { + llwarns << "Couldn't find a path to the following filter : " << previewp->getFilter() << llendl; + } } // delete any existing image diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index d226a72d7b..92913f678d 100755 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -168,6 +168,18 @@ Please try logging in again in a minute. Problem posting to Twitter Problem disconnecting from Twitter + + Black & White + 1970's Colors + Heat Wave + Intense + Jules Verne + Newspaper + Overcast + Sepia + Spotlight + Video + Person (no name) -- cgit v1.3 From d7f5afdc5dbbc5f2b9da031322d9e24669978c46 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Fri, 7 Feb 2014 11:31:04 -0800 Subject: ACME-1312 : Show the filter name without the Missing string prefix for filters that are not localized --- indra/newview/llimagefiltersmanager.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'indra/newview/llimagefiltersmanager.cpp') diff --git a/indra/newview/llimagefiltersmanager.cpp b/indra/newview/llimagefiltersmanager.cpp index 0633dcaefc..ee6b39efac 100644 --- a/indra/newview/llimagefiltersmanager.cpp +++ b/indra/newview/llimagefiltersmanager.cpp @@ -74,10 +74,14 @@ void LLImageFiltersManager::loadFiltersFromDir(const std::string& dir) } // Get the ".xml" out of the file name to get the filter name. That's the one known in strings.xml - std::string filter_name = file_name.substr(0,file_name.length()-4); + std::string filter_name_untranslated = file_name.substr(0,file_name.length()-4); + // Get the localized name for the filter - filter_name = LLTrans::getString(filter_name); + std::string filter_name_translated; + bool translated = LLTrans::findString(filter_name_translated, filter_name_untranslated); + std::string filter_name = (translated ? filter_name_translated: filter_name_untranslated); + // Store the filter in the list with its associated file name mFiltersList[filter_name] = file_name; } } -- cgit v1.3