[Libreoffice-commits] core.git: 8 commits - postprocess/CustomTarget_images.mk solenv/bin vcl/inc vcl/source
Jan Holesovsky
kendy at collabora.com
Sat Nov 22 18:16:27 PST 2014
postprocess/CustomTarget_images.mk | 10 -
solenv/bin/packimages.pl | 2
vcl/inc/impimagetree.hxx | 58 +++++---
vcl/source/gdi/impimagetree.cxx | 263 ++++++++++++++++++-------------------
4 files changed, 167 insertions(+), 166 deletions(-)
New commits:
commit 96811dbda3c61115ead7837b19f664533b86f6b5
Author: Jan Holesovsky <kendy at collabora.com>
Date: Sun Nov 23 03:14:51 2014 +0100
icons: Kill now irrelevant warning.
Change-Id: I2ce348fe97cfc0fdaf1ad5e1063a28d069accdf5
diff --git a/solenv/bin/packimages.pl b/solenv/bin/packimages.pl
index d6231b3..0e98566 100644
--- a/solenv/bin/packimages.pl
+++ b/solenv/bin/packimages.pl
@@ -381,8 +381,6 @@ sub create_zip_archive
if ( !$member ) {
print_error("can't add file '$path' to image zip archive: $!", 5);
}
- } else {
- print_warning("file '$path' not found");
}
}
my $status = $zip->writeToFileNamed($tmp_out_file);
commit b6bdc6771199b7b05d4f9840b66ebce3bb61d7db
Author: Jan Holesovsky <kendy at collabora.com>
Date: Sun Nov 23 03:07:44 2014 +0100
icons: Package only the icons that are in the theme.
The fallback is now implemented directly in vcl, no need to waste space any
more.
Change-Id: Ia027fda5e92d2bac7369139f3277d73b0521bef2
diff --git a/postprocess/CustomTarget_images.mk b/postprocess/CustomTarget_images.mk
index cbc9cef..5d995b7 100644
--- a/postprocess/CustomTarget_images.mk
+++ b/postprocess/CustomTarget_images.mk
@@ -13,10 +13,6 @@ $(eval $(call gb_CustomTarget_CustomTarget,postprocess/images))
packimages_DIR := $(call gb_CustomTarget_get_workdir,postprocess/images)
helpimages_DIR := $(call gb_CustomTarget_get_workdir,helpcontent2/source/auxiliary)
-# Custom sets, at 24x24 & 16x16 fall-back to Tango preferentially
-# (Tango fallbacks to Industrial for the missing icons)
-packimages_CUSTOM_FALLBACKS := -c $(SRCDIR)/icon-themes/tango -c $(SRCDIR)/icon-themes/industrial
-
$(eval $(call gb_CustomTarget_register_targets,postprocess/images,\
$(foreach theme,$(WITH_THEMES),images_$(theme).zip) \
commandimagelist.ilst \
@@ -36,11 +32,9 @@ $(packimages_DIR)/%.zip : \
$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),PRL,2)
$(call gb_Helper_abbreviate_dirs, \
$(PERL) $(SRCDIR)/solenv/bin/packimages.pl \
- -g $(SRCDIR)/icon-themes/galaxy \
- -m $(SRCDIR)/icon-themes/galaxy \
$(if $(DEFAULT_THEME),\
- -c $(packimages_DIR),\
- -c $(SRCDIR)/icon-themes/$(subst images_,,$*) $(packimages_CUSTOM_FALLBACKS) \
+ -g $(packimages_DIR) -m $(packimages_DIR) -c $(packimages_DIR),\
+ -g $(SRCDIR)/icon-themes/$(subst images_,,$*) -m $(SRCDIR)/icon-themes/$(subst images_,,$*) -c $(SRCDIR)/icon-themes/$(subst images_,,$*) \
) \
$(call gb_Helper_optional,HELP,-l $(helpimages_DIR) ) \
-l $(packimages_DIR) \
commit 78bf950a3e988f20bb5db61c966faa3b8de6d0e3
Author: Jan Holesovsky <kendy at collabora.com>
Date: Sun Nov 23 03:06:27 2014 +0100
icons: Implement the fallback mechanism for icons.
When an icon is not found in eg. images_sifr.zip, search it in
images_tango.zip, etc.
Change-Id: I8af952a1bd8e9e02531f84012e8ce39e75422313
diff --git a/vcl/inc/impimagetree.hxx b/vcl/inc/impimagetree.hxx
index 7e8dda7..e66e754 100644
--- a/vcl/inc/impimagetree.hxx
+++ b/vcl/inc/impimagetree.hxx
@@ -95,8 +95,17 @@ private:
bool findImage(std::vector< OUString > const & paths, BitmapEx & bitmap );
void loadImageLinks();
+
void parseLinkFile(boost::shared_ptr< SvStream > stream);
+
+ /// Return name of a real .png according to links.txt.
OUString const & getRealImageName(OUString const & name);
+
+ /** Rerurn name of the fallback style for the provided one.
+
+ Must not be cyclic :-) The last theme in the chain returns an empty string.
+ */
+ OUString fallbackStyle(const OUString &style);
};
typedef salhelper::SingletonRef< ImplImageTree > ImplImageTreeSingletonRef;
diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/gdi/impimagetree.cxx
index 9ce7fd2..8955902 100644
--- a/vcl/source/gdi/impimagetree.cxx
+++ b/vcl/source/gdi/impimagetree.cxx
@@ -101,21 +101,39 @@ ImplImageTree::~ImplImageTree()
{
}
+OUString ImplImageTree::fallbackStyle(const OUString &style)
+{
+ if (style == "galaxy")
+ return OUString();
+ else if (style == "industrial")
+ return OUString("galaxy");
+ else if (style == "tango")
+ return OUString("industrial");
+ else if (style == "breeze")
+ return OUString("sifr");
+
+ return OUString("tango");
+}
+
bool ImplImageTree::loadImage(OUString const & name, OUString const & style, BitmapEx & bitmap,
bool localized, bool loadMissing)
{
- bool found = false;
- try {
- found = doLoadImage(name, style, bitmap, localized);
- } catch (css::uno::RuntimeException &) {
- if (!loadMissing)
- throw;
+ OUString aStyle(style);
+ while (!aStyle.isEmpty())
+ {
+ try {
+ if (doLoadImage(name, aStyle, bitmap, localized))
+ return true;
+ }
+ catch (css::uno::RuntimeException &) {}
+
+ aStyle = fallbackStyle(aStyle);
}
- if (found || !loadMissing)
- return found;
- SAL_INFO("vcl", "ImplImageTree::loadImage exception couldn't load \""
- << name << "\", fetching default image");
+ if (!loadMissing)
+ return false;
+
+ SAL_INFO("vcl", "ImplImageTree::loadImage couldn't load \"" << name << "\", fetching default image");
return loadDefaultImage(style, bitmap);
}
commit 10c7500c46d33ee5d35c943322e2a0603ca72f18
Author: Jan Holesovsky <kendy at collabora.com>
Date: Sun Nov 23 02:10:02 2014 +0100
icons: Even the cache and links are now stored per-style.
Change-Id: I7d2bfd3e8aa102e88c107de445fa77c004867fe7
diff --git a/vcl/inc/impimagetree.hxx b/vcl/inc/impimagetree.hxx
index 94a5469..7e8dda7 100644
--- a/vcl/inc/impimagetree.hxx
+++ b/vcl/inc/impimagetree.hxx
@@ -50,17 +50,22 @@ public:
OUString const & style,
BitmapEx& bitmap);
-/** a crude form of life cycle control (called from DeInitVCL; otherwise,
- * if the ImplImageTree singleton were destroyed during exit that would
- * be too late for the destructors of the bitmaps in m_iconCache)*/
+ /** a crude form of life cycle control (called from DeInitVCL; otherwise,
+ * if the ImplImageTree singleton were destroyed during exit that would
+ * be too late for the destructors of the bitmaps in maIconCache)*/
void shutDown();
css::uno::Reference< css::container::XNameAccess > getNameAccess();
private:
+ typedef boost::unordered_map<OUString, std::pair<bool, BitmapEx>, OUStringHash> IconCache;
+ typedef boost::unordered_map<OUString, OUString, OUStringHash> IconLinkHash;
+
struct IconSet {
OUString maURL;
css::uno::Reference<css::container::XNameAccess> maNameAccess;
+ IconCache maIconCache;
+ IconLinkHash maLinkHash;
IconSet() {}
IconSet(const OUString &aURL) : maURL(aURL) {}
@@ -69,24 +74,21 @@ private:
/// Map between the theme name(s) and the content.
typedef boost::unordered_map<OUString, IconSet, OUStringHash> StyleIconSet;
+ /// Remember all the (used) icon styles and individual icons in them.
StyleIconSet maIconSet;
+ /// Styly used for the current operations; switches switch several times during fallback search.
+ OUString maCurrentStyle;
+
bool doLoadImage(
OUString const & name, OUString const & style,
BitmapEx & bitmap, bool localized);
- typedef boost::unordered_map<OUString, std::pair<bool, BitmapEx>, OUStringHash> IconCache;
- typedef boost::unordered_map<OUString, OUString, OUStringHash> IconLinkHash;
-
- OUString m_style;
- IconCache m_iconCache;
- IconLinkHash m_linkHash;
-
bool checkPathAccess();
void setStyle(OUString const & style );
- void resetPaths();
+ void createStyle();
bool iconCacheLookup( OUString const & name, bool localized, BitmapEx & bitmap );
diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/gdi/impimagetree.cxx
index d76070d..9ce7fd2 100644
--- a/vcl/source/gdi/impimagetree.cxx
+++ b/vcl/source/gdi/impimagetree.cxx
@@ -165,57 +165,60 @@ bool ImplImageTree::doLoadImage(OUString const & name, OUString const & style, B
}
if (found)
- m_iconCache[name.intern()] = std::make_pair(localized, bitmap);
+ maIconSet[maCurrentStyle].maIconCache[name.intern()] = std::make_pair(localized, bitmap);
return found;
}
void ImplImageTree::shutDown()
{
- m_style.clear();
- // for safety; empty m_style means "not initialized"
- m_iconCache.clear();
- m_linkHash.clear();
+ maCurrentStyle.clear();
+ for (StyleIconSet::iterator it = maIconSet.begin(); it != maIconSet.end(); ++it)
+ {
+ it->second.maIconCache.clear();
+ it->second.maLinkHash.clear();
+ }
}
void ImplImageTree::setStyle(OUString const & style)
{
- OSL_ASSERT(!style.isEmpty()); // empty m_style means "not initialized"
- if (style != m_style)
+ assert(!style.isEmpty());
+ if (style != maCurrentStyle)
{
- m_style = style;
- resetPaths();
- m_iconCache.clear();
- m_linkHash.clear();
- loadImageLinks();
+ maCurrentStyle = style;
+ createStyle();
}
}
-void ImplImageTree::resetPaths()
+void ImplImageTree::createStyle()
{
- if (maIconSet.find(m_style) != maIconSet.end())
+ if (maIconSet.find(maCurrentStyle) != maIconSet.end())
return;
OUString url( "$BRAND_BASE_DIR/" LIBO_SHARE_FOLDER "/config/" );
rtl::Bootstrap::expandMacros(url);
- if ( m_style != "default" )
+ if (maCurrentStyle != "default")
{
INetURLObject u(url);
OSL_ASSERT(!u.HasError());
- bool ok = u.Append("images_" + m_style, INetURLObject::ENCODE_ALL);
+ bool ok = u.Append("images_" + maCurrentStyle, INetURLObject::ENCODE_ALL);
OSL_ASSERT(ok); (void) ok;
url = u.GetMainURL(INetURLObject::NO_DECODE);
}
else
url += "images";
- maIconSet[m_style] = IconSet(url);
+ maIconSet[maCurrentStyle] = IconSet(url);
+
+ loadImageLinks();
}
bool ImplImageTree::iconCacheLookup(OUString const & name, bool localized, BitmapEx & bitmap)
{
- IconCache::iterator i(m_iconCache.find(getRealImageName(name)));
- if (i != m_iconCache.end() && i->second.first == localized)
+ IconCache &rIconCache = maIconSet[maCurrentStyle].maIconCache;
+
+ IconCache::iterator i(rIconCache.find(getRealImageName(name)));
+ if (i != rIconCache.end() && i->second.first == localized)
{
bitmap = i->second.second;
return true;
@@ -228,7 +231,7 @@ bool ImplImageTree::findImage(std::vector<OUString> const & paths, BitmapEx & bi
if (!checkPathAccess())
return false;
- const uno::Reference<container::XNameAccess> &rNameAccess = maIconSet[m_style].maNameAccess;
+ const uno::Reference<container::XNameAccess> &rNameAccess = maIconSet[maCurrentStyle].maNameAccess;
for (std::vector<OUString>::const_reverse_iterator j(paths.rbegin()); j != paths.rend(); ++j)
{
@@ -252,7 +255,7 @@ void ImplImageTree::loadImageLinks()
if (!checkPathAccess())
return;
- const uno::Reference<container::XNameAccess> &rNameAccess = maIconSet[m_style].maNameAccess;
+ const uno::Reference<container::XNameAccess> &rNameAccess = maIconSet[maCurrentStyle].maNameAccess;
if (rNameAccess->hasByName(aLinkFilename))
{
@@ -288,32 +291,35 @@ void ImplImageTree::parseLinkFile(boost::shared_ptr< SvStream > pStream)
continue;
}
- m_linkHash[aLink] = aOriginal;
+ maIconSet[maCurrentStyle].maLinkHash[aLink] = aOriginal;
}
}
OUString const & ImplImageTree::getRealImageName(OUString const & name)
{
- IconLinkHash::iterator it(m_linkHash.find(name));
- if (it == m_linkHash.end())
+ IconLinkHash &rLinkHash = maIconSet[maCurrentStyle].maLinkHash;
+
+ IconLinkHash::iterator it(rLinkHash.find(name));
+ if (it == rLinkHash.end())
return name;
+
return it->second;
}
bool ImplImageTree::checkPathAccess()
{
- uno::Reference<container::XNameAccess> &rNameAccess = maIconSet[m_style].maNameAccess;
+ uno::Reference<container::XNameAccess> &rNameAccess = maIconSet[maCurrentStyle].maNameAccess;
if (rNameAccess.is())
return true;
try {
- rNameAccess = css::packages::zip::ZipFileAccess::createWithURL(comphelper::getProcessComponentContext(), maIconSet[m_style].maURL + ".zip");
+ rNameAccess = css::packages::zip::ZipFileAccess::createWithURL(comphelper::getProcessComponentContext(), maIconSet[maCurrentStyle].maURL + ".zip");
}
catch (const css::uno::RuntimeException &) {
throw;
}
catch (const css::uno::Exception & e) {
- SAL_INFO("vcl", "ImplImageTree::zip file location exception " << e.Message << " for " << maIconSet[m_style].maURL);
+ SAL_INFO("vcl", "ImplImageTree::zip file location exception " << e.Message << " for " << maIconSet[maCurrentStyle].maURL);
return false;
}
return rNameAccess.is();
@@ -322,7 +328,7 @@ bool ImplImageTree::checkPathAccess()
css::uno::Reference<css::container::XNameAccess> ImplImageTree::getNameAccess()
{
checkPathAccess();
- return maIconSet[m_style].maNameAccess;
+ return maIconSet[maCurrentStyle].maNameAccess;
}
/// Recursively dump all names ...
commit 3820d954535b7b0b0e976ccd01251de848e3faea
Author: Jan Holesovsky <kendy at collabora.com>
Date: Sun Nov 23 01:36:24 2014 +0100
icons: Store paths of more styles at the same time.
Change-Id: I9a13aa3ed928b989eaa2b2da8d1acfc5a37f506e
diff --git a/vcl/inc/impimagetree.hxx b/vcl/inc/impimagetree.hxx
index 22075862..94a5469 100644
--- a/vcl/inc/impimagetree.hxx
+++ b/vcl/inc/impimagetree.hxx
@@ -58,17 +58,27 @@ public:
css::uno::Reference< css::container::XNameAccess > getNameAccess();
private:
+ struct IconSet {
+ OUString maURL;
+ css::uno::Reference<css::container::XNameAccess> maNameAccess;
+
+ IconSet() {}
+ IconSet(const OUString &aURL) : maURL(aURL) {}
+ };
+
+ /// Map between the theme name(s) and the content.
+ typedef boost::unordered_map<OUString, IconSet, OUStringHash> StyleIconSet;
+
+ StyleIconSet maIconSet;
+
bool doLoadImage(
OUString const & name, OUString const & style,
BitmapEx & bitmap, bool localized);
- typedef std::pair<OUString, css::uno::Reference<css::container::XNameAccess>> Path;
-
typedef boost::unordered_map<OUString, std::pair<bool, BitmapEx>, OUStringHash> IconCache;
typedef boost::unordered_map<OUString, OUString, OUStringHash> IconLinkHash;
OUString m_style;
- Path m_path;
IconCache m_iconCache;
IconLinkHash m_linkHash;
diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/gdi/impimagetree.cxx
index 63a5c56..d76070d 100644
--- a/vcl/source/gdi/impimagetree.cxx
+++ b/vcl/source/gdi/impimagetree.cxx
@@ -47,6 +47,8 @@
#include "impimagetree.hxx"
#include <vcldemo-debug.hxx>
+using namespace css;
+
namespace {
static OUString createPath(OUString const & name, sal_Int32 pos, OUString const & locale)
@@ -191,6 +193,9 @@ void ImplImageTree::setStyle(OUString const & style)
void ImplImageTree::resetPaths()
{
+ if (maIconSet.find(m_style) != maIconSet.end())
+ return;
+
OUString url( "$BRAND_BASE_DIR/" LIBO_SHARE_FOLDER "/config/" );
rtl::Bootstrap::expandMacros(url);
if ( m_style != "default" )
@@ -203,8 +208,8 @@ void ImplImageTree::resetPaths()
}
else
url += "images";
- m_path = std::make_pair(
- url, css::uno::Reference< css::container::XNameAccess >());
+
+ maIconSet[m_style] = IconSet(url);
}
bool ImplImageTree::iconCacheLookup(OUString const & name, bool localized, BitmapEx & bitmap)
@@ -223,14 +228,16 @@ bool ImplImageTree::findImage(std::vector<OUString> const & paths, BitmapEx & bi
if (!checkPathAccess())
return false;
- for (std::vector< OUString >::const_reverse_iterator j(paths.rbegin());
- j != paths.rend(); ++j)
+ const uno::Reference<container::XNameAccess> &rNameAccess = maIconSet[m_style].maNameAccess;
+
+ for (std::vector<OUString>::const_reverse_iterator j(paths.rbegin()); j != paths.rend(); ++j)
{
- if (m_path.second->hasByName(*j))
+ if (rNameAccess->hasByName(*j))
{
css::uno::Reference< css::io::XInputStream > s;
- bool ok = m_path.second->getByName(*j) >>= s;
- OSL_ASSERT(ok); (void) ok;
+ bool ok = rNameAccess->getByName(*j) >>= s;
+ assert(ok);
+
loadImageFromStream( wrapStream(s), *j, bitmap );
return true;
}
@@ -245,11 +252,13 @@ void ImplImageTree::loadImageLinks()
if (!checkPathAccess())
return;
- if ( m_path.second->hasByName(aLinkFilename) )
+ const uno::Reference<container::XNameAccess> &rNameAccess = maIconSet[m_style].maNameAccess;
+
+ if (rNameAccess->hasByName(aLinkFilename))
{
css::uno::Reference< css::io::XInputStream > s;
- bool ok = m_path.second->getByName(aLinkFilename) >>= s;
- OSL_ASSERT(ok); (void) ok;
+ bool ok = rNameAccess->getByName(aLinkFilename) >>= s;
+ assert(ok);
parseLinkFile( wrapStream(s) );
return;
@@ -293,25 +302,27 @@ OUString const & ImplImageTree::getRealImageName(OUString const & name)
bool ImplImageTree::checkPathAccess()
{
- if (m_path.second.is())
+ uno::Reference<container::XNameAccess> &rNameAccess = maIconSet[m_style].maNameAccess;
+ if (rNameAccess.is())
return true;
try {
- m_path.second = css::packages::zip::ZipFileAccess::createWithURL(comphelper::getProcessComponentContext(), m_path.first + ".zip");
- } catch (const css::uno::RuntimeException &) {
+ rNameAccess = css::packages::zip::ZipFileAccess::createWithURL(comphelper::getProcessComponentContext(), maIconSet[m_style].maURL + ".zip");
+ }
+ catch (const css::uno::RuntimeException &) {
throw;
- } catch (const css::uno::Exception & e) {
- SAL_INFO("vcl", "ImplImageTree::zip file location exception "
- << e.Message << " for " << m_path.first);
+ }
+ catch (const css::uno::Exception & e) {
+ SAL_INFO("vcl", "ImplImageTree::zip file location exception " << e.Message << " for " << maIconSet[m_style].maURL);
return false;
}
- return m_path.second.is();
+ return rNameAccess.is();
}
css::uno::Reference<css::container::XNameAccess> ImplImageTree::getNameAccess()
{
checkPathAccess();
- return m_path.second;
+ return maIconSet[m_style].maNameAccess;
}
/// Recursively dump all names ...
@@ -319,8 +330,7 @@ css::uno::Sequence<OUString> ImageTree_getAllImageNames()
{
static ImplImageTreeSingletonRef aImageTree;
- css::uno::Reference< css::container::XNameAccess > xRef(
- aImageTree->getNameAccess() );
+ css::uno::Reference<css::container::XNameAccess> xRef(aImageTree->getNameAccess());
return xRef->getElementNames();
}
commit 9e4a1396d602b010f2dbdb0b7f1249dfe1abd01a
Author: Jan Holesovsky <kendy at collabora.com>
Date: Sun Nov 23 00:00:30 2014 +0100
icons: Kill an unused function + bring some consistency to the file.
Change-Id: I346d751cef124b534784f0b3b335c9578c56e024
diff --git a/vcl/inc/impimagetree.hxx b/vcl/inc/impimagetree.hxx
index 233893e..22075862 100644
--- a/vcl/inc/impimagetree.hxx
+++ b/vcl/inc/impimagetree.hxx
@@ -80,7 +80,7 @@ private:
bool iconCacheLookup( OUString const & name, bool localized, BitmapEx & bitmap );
- bool find(std::vector< OUString > const & paths, BitmapEx & bitmap );
+ bool findImage(std::vector< OUString > const & paths, BitmapEx & bitmap );
void loadImageLinks();
void parseLinkFile(boost::shared_ptr< SvStream > stream);
diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/gdi/impimagetree.cxx
index ecfaf20..63a5c56 100644
--- a/vcl/source/gdi/impimagetree.cxx
+++ b/vcl/source/gdi/impimagetree.cxx
@@ -49,34 +49,12 @@
namespace {
-static OUString createPath(
- OUString const & name, sal_Int32 pos, OUString const & locale)
+static OUString createPath(OUString const & name, sal_Int32 pos, OUString const & locale)
{
return name.copy(0, pos + 1) + locale + name.copy(pos);
}
-static boost::shared_ptr< SvStream > wrapFile(osl::File & file)
-{
- // This could use SvInputStream instead if that did not have a broken
- // SeekPos implementation for an XInputStream that is not also XSeekable
- // (cf. "@@@" at tags/DEV300_m37/svtools/source/misc1/strmadpt.cxx at 264807
- // l. 593):
- boost::shared_ptr< SvStream > s(new SvMemoryStream);
- for (;;) {
- void *data[2048];
- sal_uInt64 n;
- file.read(data, 2048, n);
- s->Write(data, n);
- if (n < 2048) {
- break;
- }
- }
- s->Seek(0);
- return s;
-}
-
-static boost::shared_ptr< SvStream > wrapStream(
- css::uno::Reference< css::io::XInputStream > const & stream)
+static boost::shared_ptr< SvStream > wrapStream(css::uno::Reference< css::io::XInputStream > const & stream)
{
// This could use SvInputStream instead if that did not have a broken
// SeekPos implementation for an XInputStream that is not also XSeekable
@@ -84,29 +62,29 @@ static boost::shared_ptr< SvStream > wrapStream(
// l. 593):
OSL_ASSERT(stream.is());
boost::shared_ptr< SvStream > s(new SvMemoryStream);
- for (;;) {
+ for (;;)
+ {
sal_Int32 const size = 2048;
css::uno::Sequence< sal_Int8 > data(size);
sal_Int32 n = stream->readBytes(data, size);
s->Write(data.getConstArray(), n);
- if (n < size) {
+ if (n < size)
break;
- }
}
s->Seek(0);
return s;
}
-static void loadImageFromStream(
- boost::shared_ptr< SvStream > pStream,
- OUString const & rPath, BitmapEx & rBitmap)
+static void loadImageFromStream(boost::shared_ptr< SvStream > pStream, OUString const & rPath, BitmapEx & rBitmap)
{
if (rPath.endsWith(".png"))
{
vcl::PNGReader aPNGReader( *pStream );
aPNGReader.SetIgnoreGammaChunk( true );
rBitmap = aPNGReader.Read();
- } else {
+ }
+ else
+ {
ReadDIBBitmapEx(rBitmap, *pStream);
}
}
@@ -121,9 +99,8 @@ ImplImageTree::~ImplImageTree()
{
}
-bool ImplImageTree::loadImage(
- OUString const & name, OUString const & style, BitmapEx & bitmap,
- bool localized, bool loadMissing )
+bool ImplImageTree::loadImage(OUString const & name, OUString const & style, BitmapEx & bitmap,
+ bool localized, bool loadMissing)
{
bool found = false;
try {
@@ -141,17 +118,14 @@ bool ImplImageTree::loadImage(
return loadDefaultImage(style, bitmap);
}
-bool ImplImageTree::loadDefaultImage(
- OUString const & style,
- BitmapEx& bitmap)
+bool ImplImageTree::loadDefaultImage(OUString const & style, BitmapEx& bitmap)
{
return doLoadImage(
OUString("res/grafikde.png"),
style, bitmap, false);
}
-bool ImplImageTree::doLoadImage(
- OUString const & name, OUString const & style, BitmapEx & bitmap,
+bool ImplImageTree::doLoadImage(OUString const & name, OUString const & style, BitmapEx & bitmap,
bool localized)
{
setStyle(style);
@@ -164,11 +138,12 @@ bool ImplImageTree::doLoadImage(
std::vector< OUString > paths;
paths.push_back(getRealImageName(name));
- if (localized) {
+ if (localized)
+ {
sal_Int32 pos = name.lastIndexOf('/');
if (pos != -1)
{
- // find() uses a reverse iterator, so push in reverse order.
+ // findImage() uses a reverse iterator, so push in reverse order.
std::vector< OUString > aFallbacks( Application::GetSettings().GetUILanguageTag().getFallbackStrings(true));
for (std::vector< OUString >::reverse_iterator it( aFallbacks.rbegin());
it != aFallbacks.rend(); ++it)
@@ -177,9 +152,10 @@ bool ImplImageTree::doLoadImage(
}
}
}
+
bool found = false;
try {
- found = find(paths, bitmap);
+ found = findImage(paths, bitmap);
} catch (css::uno::RuntimeException &) {
throw;
} catch (const css::uno::Exception & e) {
@@ -192,16 +168,19 @@ bool ImplImageTree::doLoadImage(
return found;
}
-void ImplImageTree::shutDown() {
+void ImplImageTree::shutDown()
+{
m_style.clear();
// for safety; empty m_style means "not initialized"
m_iconCache.clear();
m_linkHash.clear();
}
-void ImplImageTree::setStyle(OUString const & style) {
+void ImplImageTree::setStyle(OUString const & style)
+{
OSL_ASSERT(!style.isEmpty()); // empty m_style means "not initialized"
- if (style != m_style) {
+ if (style != m_style)
+ {
m_style = style;
resetPaths();
m_iconCache.clear();
@@ -210,7 +189,8 @@ void ImplImageTree::setStyle(OUString const & style) {
}
}
-void ImplImageTree::resetPaths() {
+void ImplImageTree::resetPaths()
+{
OUString url( "$BRAND_BASE_DIR/" LIBO_SHARE_FOLDER "/config/" );
rtl::Bootstrap::expandMacros(url);
if ( m_style != "default" )
@@ -227,19 +207,18 @@ void ImplImageTree::resetPaths() {
url, css::uno::Reference< css::container::XNameAccess >());
}
-bool ImplImageTree::iconCacheLookup(
- OUString const & name, bool localized, BitmapEx & bitmap)
+bool ImplImageTree::iconCacheLookup(OUString const & name, bool localized, BitmapEx & bitmap)
{
IconCache::iterator i(m_iconCache.find(getRealImageName(name)));
- if (i != m_iconCache.end() && i->second.first == localized) {
+ if (i != m_iconCache.end() && i->second.first == localized)
+ {
bitmap = i->second.second;
return true;
}
return false;
}
-bool ImplImageTree::find(
- std::vector< OUString > const & paths, BitmapEx & bitmap)
+bool ImplImageTree::findImage(std::vector<OUString> const & paths, BitmapEx & bitmap)
{
if (!checkPathAccess())
return false;
@@ -247,7 +226,8 @@ bool ImplImageTree::find(
for (std::vector< OUString >::const_reverse_iterator j(paths.rbegin());
j != paths.rend(); ++j)
{
- if (m_path.second->hasByName(*j)) {
+ if (m_path.second->hasByName(*j))
+ {
css::uno::Reference< css::io::XInputStream > s;
bool ok = m_path.second->getByName(*j) >>= s;
OSL_ASSERT(ok); (void) ok;
@@ -328,14 +308,14 @@ bool ImplImageTree::checkPathAccess()
return m_path.second.is();
}
-css::uno::Reference< css::container::XNameAccess > ImplImageTree::getNameAccess()
+css::uno::Reference<css::container::XNameAccess> ImplImageTree::getNameAccess()
{
checkPathAccess();
return m_path.second;
}
/// Recursively dump all names ...
-css::uno::Sequence< OUString > ImageTree_getAllImageNames()
+css::uno::Sequence<OUString> ImageTree_getAllImageNames()
{
static ImplImageTreeSingletonRef aImageTree;
commit 44e02826bfc46cb5647d3805283b303bc964385f
Author: Jan Holesovsky <kendy at collabora.com>
Date: Sat Nov 22 22:23:04 2014 +0100
icons: m_cacheIcons is always true, kill it.
Change-Id: Ie63f8780093a2605ecd4d1e80ccb05e16b486cf1
diff --git a/vcl/inc/impimagetree.hxx b/vcl/inc/impimagetree.hxx
index c8c8fab..233893e 100644
--- a/vcl/inc/impimagetree.hxx
+++ b/vcl/inc/impimagetree.hxx
@@ -70,7 +70,6 @@ private:
OUString m_style;
Path m_path;
IconCache m_iconCache;
- bool m_cacheIcons;
IconLinkHash m_linkHash;
bool checkPathAccess();
diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/gdi/impimagetree.cxx
index fb07567..ecfaf20 100644
--- a/vcl/source/gdi/impimagetree.cxx
+++ b/vcl/source/gdi/impimagetree.cxx
@@ -113,9 +113,13 @@ static void loadImageFromStream(
}
-ImplImageTree::ImplImageTree() { m_cacheIcons = true; }
+ImplImageTree::ImplImageTree()
+{
+}
-ImplImageTree::~ImplImageTree() {}
+ImplImageTree::~ImplImageTree()
+{
+}
bool ImplImageTree::loadImage(
OUString const & name, OUString const & style, BitmapEx & bitmap,
@@ -151,18 +155,19 @@ bool ImplImageTree::doLoadImage(
bool localized)
{
setStyle(style);
- if (m_cacheIcons && iconCacheLookup(name, localized, bitmap)) {
+ if (iconCacheLookup(name, localized, bitmap))
return true;
- }
- if (!bitmap.IsEmpty()) {
+
+ if (!bitmap.IsEmpty())
bitmap.SetEmpty();
- }
+
std::vector< OUString > paths;
paths.push_back(getRealImageName(name));
if (localized) {
sal_Int32 pos = name.lastIndexOf('/');
- if (pos != -1) {
+ if (pos != -1)
+ {
// find() uses a reverse iterator, so push in reverse order.
std::vector< OUString > aFallbacks( Application::GetSettings().GetUILanguageTag().getFallbackStrings(true));
for (std::vector< OUString >::reverse_iterator it( aFallbacks.rbegin());
@@ -180,9 +185,10 @@ bool ImplImageTree::doLoadImage(
} catch (const css::uno::Exception & e) {
SAL_INFO("vcl", "ImplImageTree::doLoadImage exception " << e.Message);
}
- if (m_cacheIcons && found) {
+
+ if (found)
m_iconCache[name.intern()] = std::make_pair(localized, bitmap);
- }
+
return found;
}
@@ -235,20 +241,6 @@ bool ImplImageTree::iconCacheLookup(
bool ImplImageTree::find(
std::vector< OUString > const & paths, BitmapEx & bitmap)
{
- if (!m_cacheIcons) {
- for (std::vector< OUString >::const_reverse_iterator j(
- paths.rbegin());
- j != paths.rend(); ++j)
- {
- osl::File file(m_path.first + "/" + *j);
- if (file.open(osl_File_OpenFlag_Read) == ::osl::FileBase::E_None) {
- loadImageFromStream( wrapFile(file), *j, bitmap );
- file.close();
- return true;
- }
- }
- }
-
if (!checkPathAccess())
return false;
@@ -270,17 +262,6 @@ void ImplImageTree::loadImageLinks()
{
const OUString aLinkFilename("links.txt");
- if (!m_cacheIcons)
- {
- osl::File file(m_path.first + "/" + aLinkFilename);
- if (file.open(osl_File_OpenFlag_Read) == ::osl::FileBase::E_None)
- {
- parseLinkFile( wrapFile(file) );
- file.close();
- return;
- }
- }
-
if (!checkPathAccess())
return;
commit f09b39a65ddd60dabf4e47cb5e82acbd32305b31
Author: Jan Holesovsky <kendy at collabora.com>
Date: Sat Nov 22 22:09:16 2014 +0100
icons: Unused CheckStyleCache.
Change-Id: I9097b2704b7a961f448c58572f091f335847e951
diff --git a/vcl/inc/impimagetree.hxx b/vcl/inc/impimagetree.hxx
index 9e4f579..c8c8fab 100644
--- a/vcl/inc/impimagetree.hxx
+++ b/vcl/inc/impimagetree.hxx
@@ -62,16 +62,10 @@ private:
OUString const & name, OUString const & style,
BitmapEx & bitmap, bool localized);
- typedef std::pair<
- OUString,
- css::uno::Reference< css::container::XNameAccess > > Path;
-
- typedef boost::unordered_map<
- OUString, bool, OUStringHash > CheckStyleCache;
- typedef boost::unordered_map<
- OUString, std::pair< bool, BitmapEx >, OUStringHash > IconCache;
- typedef boost::unordered_map<
- OUString, OUString, OUStringHash > IconLinkHash;
+ typedef std::pair<OUString, css::uno::Reference<css::container::XNameAccess>> Path;
+
+ typedef boost::unordered_map<OUString, std::pair<bool, BitmapEx>, OUStringHash> IconCache;
+ typedef boost::unordered_map<OUString, OUString, OUStringHash> IconLinkHash;
OUString m_style;
Path m_path;
More information about the Libreoffice-commits
mailing list