summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llimagefiltersmanager.cpp58
-rw-r--r--indra/newview/llimagefiltersmanager.h31
-rw-r--r--indra/newview/llsnapshotlivepreview.cpp28
-rwxr-xr-xindra/newview/skins/default/xui/en/strings.xml12
4 files changed, 73 insertions, 56 deletions
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<std::string> LLImageFiltersManager::getFiltersList() const
+{
+ std::vector<std::string> filter_list;
+ for (std::map<std::string,std::string>::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<std::string,std::string>::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<LLImageFiltersManager>
{
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<LLImageRaw> raw_image);
- const std::vector<std::string> &getFiltersList() const { return mFiltersList; }
+ const std::vector<std::string> 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<LLImageFiltersManager>;
/*virtual*/ void initSingleton();
LLImageFiltersManager();
~LLImageFiltersManager();
- // List of filters
- std::vector<std::string> mFiltersList;
+ // List of filters : first is the user friendly localized name, second is the xml file name
+ std::map<std::string,std::string> 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.</string>
<string name="SocialTwitterErrorPosting">Problem posting to Twitter</string>
<string name="SocialTwitterErrorDisconnecting">Problem disconnecting from Twitter</string>
+ <!-- SLShare: User Friendly Filter Names Translation -->
+ <string name="BlackAndWhite">Black &amp; White</string>
+ <string name="Colors1970">1970&apos;s Colors</string>
+ <string name="Heatwave">Heat Wave</string>
+ <string name="Intense">Intense</string>
+ <string name="JulesVerne">Jules Verne</string>
+ <string name="Newspaper">Newspaper</string>
+ <string name="Overcast">Overcast</string>
+ <string name="Sepia">Sepia</string>
+ <string name="Spotlight">Spotlight</string>
+ <string name="Video">Video</string>
+
<!-- Tooltip -->
<string name="TooltipPerson">Person</string><!-- Object under mouse pointer is an avatar -->
<string name="TooltipNoName">(no name)</string> <!-- No name on an object -->