[Libreoffice-commits] .: svx/Library_svx.mk svx/source
Stephan Bergmann
sbergmann at kemper.freedesktop.org
Fri Sep 30 10:43:17 PDT 2011
svx/Library_svx.mk | 6
svx/source/accessibility/DGColorNameLookUp.cxx | 140 ----------------------
svx/source/accessibility/DescriptionGenerator.cxx | 4
svx/source/accessibility/lookupcolorname.cxx | 134 +++++++++++++++++++++
svx/source/accessibility/lookupcolorname.hxx | 66 ++++++++++
svx/source/inc/DGColorNameLookUp.hxx | 92 --------------
6 files changed, 205 insertions(+), 237 deletions(-)
New commits:
commit cce442bc139b93ec4263173d26cdd94dbbf5f3b0
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Sep 30 19:43:09 2011 +0200
Cleaned up DGColorNameLookUp.
diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk
index ddc8f58..3754d8b 100644
--- a/svx/Library_svx.mk
+++ b/svx/Library_svx.mk
@@ -85,15 +85,15 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
svx/source/accessibility/AccessibleShapeTreeInfo \
svx/source/accessibility/AccessibleTextEventQueue \
svx/source/accessibility/AccessibleTextHelper \
- svx/source/accessibility/charmapacc \
svx/source/accessibility/ChildrenManager \
svx/source/accessibility/ChildrenManagerImpl \
svx/source/accessibility/DescriptionGenerator \
- svx/source/accessibility/DGColorNameLookUp \
svx/source/accessibility/GraphCtlAccessibleContext \
svx/source/accessibility/ShapeTypeHandler \
- svx/source/accessibility/svxrectctaccessiblecontext \
svx/source/accessibility/SvxShapeTypes \
+ svx/source/accessibility/charmapacc \
+ svx/source/accessibility/lookupcolorname \
+ svx/source/accessibility/svxrectctaccessiblecontext \
svx/source/customshapes/EnhancedCustomShape3d \
svx/source/customshapes/EnhancedCustomShapeEngine \
svx/source/customshapes/EnhancedCustomShapeFontWork \
diff --git a/svx/source/accessibility/DGColorNameLookUp.cxx b/svx/source/accessibility/DGColorNameLookUp.cxx
deleted file mode 100644
index ca67301..0000000
--- a/svx/source/accessibility/DGColorNameLookUp.cxx
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-#include "DGColorNameLookUp.hxx"
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <comphelper/processfactory.hxx>
-#include <osl/mutex.hxx>
-#include <vcl/svapp.hxx>
-
-
-using ::rtl::OUString;
-using namespace ::com::sun::star;
-
-namespace accessibility {
-
-namespace
-{
- class theDGColorNameLookUp
- : public rtl::Static< DGColorNameLookUp, theDGColorNameLookUp >
- {
- };
-}
-
-DGColorNameLookUp& DGColorNameLookUp::Instance()
-{
- return theDGColorNameLookUp::get();
-}
-
-OUString DGColorNameLookUp::LookUpColor (long int nColor) const
-{
- OUString sColorName;
- tColorValueToNameMap::const_iterator I;
- I = maColorValueToNameMap.find (nColor);
- if (I != maColorValueToNameMap.end())
- // Found the color value. Return the associated name.
- sColorName = I->second;
- else
- {
- // Did not find the given color. Append its rgb tuple to the
- // description.
- ::rtl::OUStringBuffer sNameBuffer;
- sNameBuffer.append (sal_Unicode('#'));
- sNameBuffer.append (nColor, 16);
- sColorName = sNameBuffer.makeStringAndClear();
- }
- return sColorName;
-}
-
-
-
-
-DGColorNameLookUp::DGColorNameLookUp()
-{
- uno::Sequence<OUString> aNames;
- uno::Reference<container::XNameAccess> xNA;
-
- try
- {
- // Create color table in which to look up the given color.
- uno::Reference<container::XNameContainer> xColorTable (
- ::comphelper::getProcessServiceFactory()->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.ColorTable")) ),
- uno::UNO_QUERY);
-
- // Get list of color names in order to iterate over the color table.
- xNA = uno::Reference<container::XNameAccess>(xColorTable, uno::UNO_QUERY);
- if (xNA.is())
- {
- // Look the solar mutex here as workarround for missing lock in
- // called function.
- SolarMutexGuard aGuard;
- aNames = xNA->getElementNames();
- }
- }
- catch (uno::RuntimeException const&)
- {
- // When an exception occurred then whe have an empty name sequence
- // and the loop below is not entered.
- }
-
- // Fill the map to convert from numerical color values to names.
- if (xNA.is())
- for (long int i=0; i<aNames.getLength(); i++)
- {
- // Get the numerical value for the i-th color name.
- try
- {
- uno::Any aColor (xNA->getByName (aNames[i]));
- long nColor = 0;
- aColor >>= nColor;
- maColorValueToNameMap[nColor] = aNames[i];
- }
- catch (uno::RuntimeException const&)
- {
- // Ignore the exception: the color who lead to the exception
- // is not included into the map.
- }
- }
-}
-
-
-
-
-DGColorNameLookUp::~DGColorNameLookUp()
-{
- maColorValueToNameMap.clear();
-}
-
-} // end of namespace accessibility
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/accessibility/DescriptionGenerator.cxx b/svx/source/accessibility/DescriptionGenerator.cxx
index 4d0dc1d..b98799e 100644
--- a/svx/source/accessibility/DescriptionGenerator.cxx
+++ b/svx/source/accessibility/DescriptionGenerator.cxx
@@ -58,7 +58,7 @@
#include <svx/xdef.hxx>
#include "svx/unoapi.hxx"
#include "accessibility.hrc"
-#include "DGColorNameLookUp.hxx"
+#include "lookupcolorname.hxx"
using namespace ::rtl;
using namespace ::com::sun::star;
@@ -291,7 +291,7 @@ void DescriptionGenerator::AddColor (const OUString& sPropertyName,
aValue >>= nValue;
}
- msDescription.append (DGColorNameLookUp::Instance().LookUpColor (nValue));
+ msDescription.append (lookUpColorName(nValue));
}
catch (::com::sun::star::beans::UnknownPropertyException)
{
diff --git a/svx/source/accessibility/lookupcolorname.cxx b/svx/source/accessibility/lookupcolorname.cxx
new file mode 100644
index 0000000..6a03ac3
--- /dev/null
+++ b/svx/source/accessibility/lookupcolorname.cxx
@@ -0,0 +1,134 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "precompiled_svx.hxx"
+#include "sal/config.h"
+
+#include "boost/noncopyable.hpp"
+#include "boost/unordered_map.hpp"
+#include "com/sun/star/container/XNameAccess.hpp"
+#include "com/sun/star/container/XNameContainer.hpp"
+#include "com/sun/star/lang/XMultiServiceFactory.hpp"
+#include "com/sun/star/uno/Any.hxx"
+#include "com/sun/star/uno/Reference.hxx"
+#include "com/sun/star/uno/RuntimeException.hpp"
+#include "com/sun/star/uno/Sequence.hxx"
+#include "comphelper/processfactory.hxx"
+#include "rtl/ustring.h"
+#include "rtl/ustring.hxx"
+#include "vcl/svapp.hxx"
+
+namespace {
+
+namespace css = com::sun::star;
+
+class ColorNameMap: private boost::noncopyable {
+public:
+ ColorNameMap();
+
+ rtl::OUString lookUp(long color) const;
+
+private:
+ typedef boost::unordered_map< long, rtl::OUString > Map;
+
+ Map map_;
+};
+
+ColorNameMap::ColorNameMap() {
+ css::uno::Sequence< rtl::OUString > aNames;
+ css::uno::Reference< css::container::XNameAccess > xNA;
+
+ try
+ {
+ // Create color table in which to look up the given color.
+ css::uno::Reference< css::container::XNameContainer > xColorTable (
+ comphelper::getProcessServiceFactory()->createInstance(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.ColorTable")) ),
+ css::uno::UNO_QUERY);
+
+ // Get list of color names in order to iterate over the color table.
+ xNA = css::uno::Reference< css::container::XNameAccess >(xColorTable, css::uno::UNO_QUERY);
+ if (xNA.is())
+ {
+ // Look the solar mutex here as workarround for missing lock in
+ // called function.
+ SolarMutexGuard aGuard;
+ aNames = xNA->getElementNames();
+ }
+ }
+ catch (css::uno::RuntimeException const&)
+ {
+ // When an exception occurred then whe have an empty name sequence
+ // and the loop below is not entered.
+ }
+
+ // Fill the map to convert from numerical color values to names.
+ if (xNA.is())
+ for (long int i=0; i<aNames.getLength(); i++)
+ {
+ // Get the numerical value for the i-th color name.
+ try
+ {
+ css::uno::Any aColor (xNA->getByName (aNames[i]));
+ long nColor = 0;
+ aColor >>= nColor;
+ map_[nColor] = aNames[i];
+ }
+ catch (css::uno::RuntimeException const&)
+ {
+ // Ignore the exception: the color who lead to the exception
+ // is not included into the map.
+ }
+ }
+}
+
+rtl::OUString ColorNameMap::lookUp(long color) const {
+ Map::const_iterator i(map_.find(color));
+ if (i != map_.end()) {
+ return i->second;
+ }
+ // Did not find the given color; return its RGB tuple representation:
+ rtl::OUStringBuffer buf;
+ buf.append(sal_Unicode('#'));
+ buf.append(color, 16);
+ return buf.makeStringAndClear();
+}
+
+struct theColorNameMap: public rtl::Static< ColorNameMap, theColorNameMap > {};
+
+}
+
+namespace accessibility {
+
+rtl::OUString lookUpColorName(long color) {
+ return theColorNameMap::get().lookUp(color);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/accessibility/lookupcolorname.hxx b/svx/source/accessibility/lookupcolorname.hxx
new file mode 100644
index 0000000..92000e0
--- /dev/null
+++ b/svx/source/accessibility/lookupcolorname.hxx
@@ -0,0 +1,66 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SVX_SOURCE_ACCESSIBILITY_LOOKUPCOLORNAME_HXX
+#define INCLUDED_SVX_SOURCE_ACCESSIBILITY_LOOKUPCOLORNAME_HXX
+
+#include "sal/config.h"
+
+namespace rtl { class OUString; }
+
+namespace accessibility {
+
+/** This is a color name lookup targeted to be used by the accessibility
+ <type>DescriptionGenerator</type> class. It encapsulates a
+ <type>com.sun.star.drawing.ColorTable</type> and provides an inverse look
+ up of color names for given numerical color descriptions (the RGB values
+ encoded as an integer).
+
+ <p>The implementation uses as singleton so that the
+ <type>com.sun.star.drawing.ColorTable</type> object needs to be created
+ only once. That singleton instance for now lives until the application
+ terminates. However, the color table from which it takes its values may
+ change during this time. Reacting to these changes remains a task for the
+ future.</p>
+
+ @param nColor
+ This integer is the sum of the 8 Bit red value shifted left 16 Bits, the
+ green value shifted left 8 Bits, and the unshifted blue value.
+
+ @return
+ The returned string is either the color name of the specified color or,
+ when no name exists, a string of the form "#RRGGBB" with two hexadecimal
+ digits for each color component.
+*/
+rtl::OUString lookUpColorName(long color);
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/inc/DGColorNameLookUp.hxx b/svx/source/inc/DGColorNameLookUp.hxx
deleted file mode 100644
index 0b0068d..0000000
--- a/svx/source/inc/DGColorNameLookUp.hxx
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _SVX_ACCESSIBILITY_DG_COLOR_NAME_LOOK_UP_HXX
-#define _SVX_ACCESSIBILITY_DG_COLOR_NAME_LOOK_UP_HXX
-
-#include <rtl/ustrbuf.hxx>
-#include <rtl/instance.hxx>
-#include <boost/unordered_map.hpp>
-#include <boost/noncopyable.hpp>
-
-namespace accessibility {
-
-/** This is a color name lookup targeted to be used by the accessibility
- <type>DescriptionGenerator</type> class (hence the DG prefix). It
- encapsulates a <type>com.sun.star.drawing.ColorTable</type> and provides
- an inverse look up of color names for given a numerical color
- descriptions--the RGB values encoded as integer.
-
- <p>The class itself is designed as singleton so that the
- <type>com.sun.star.drawing.ColorTable</type> object needs to be created
- only once.</p>
-
- <p>The singleton instance of this class lives at the moment until the
- application terminates. However, the color table from which it takes
- its values may change during this time. Reacting to these changes
- remains a task for the future.</p>
-*/
-class DGColorNameLookUp : private ::boost::noncopyable
-{
-public:
- /** Return the single instance of this class. Use this to look up
- color names with the <member>LookUpColor()</member> method.
- */
- static DGColorNameLookUp& Instance();
-
- /** Return the color name of the color expressed by the given integer.
- @param nColor
- This integer is the sum of the 8 Bit red value shifted left 16
- Bits, the green value shifted left 8 Bits, and the unshifted
- blue value.
- @return
- The returned string is either the color name of the specified
- color or, when no name exists, a string of the form "#RRGGBB"
- with two hexadecimal digits for each color component.
- */
- ::rtl::OUString LookUpColor (long int nColor) const;
-
-private:
- /// Define hash map type to convert numerical color values to names.
- typedef boost::unordered_map<long int, ::rtl::OUString>
- tColorValueToNameMap;
-
- /// This ma translates from numerical color values to names.
- tColorValueToNameMap maColorValueToNameMap;
-
-public:
- /// Can only construct via singleton
- DGColorNameLookUp();
- ~DGColorNameLookUp();
-};
-
-} // end of namespace accessibility
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list