summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMuthu Subramanian <sumuthu@suse.com>2012-12-13 12:37:18 +0530
committerMuthu Subramanian <sumuthu@suse.com>2012-12-13 12:37:18 +0530
commit634ee953f1d090871834f6bc53faafaa7b96b874 (patch)
treef2d37725cfb5cb805c4af66d41f0d62934e6b52e /vcl
parent6b5059c7b7129c3b9f00d784b6fa5248a24a6d4b (diff)
fdo#56402: SVG in About Dialog.
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/vcl/svapp.hxx1
-rw-r--r--vcl/inc/vcl/svgdata.hxx1
-rw-r--r--vcl/source/app/brand.cxx46
-rw-r--r--vcl/source/gdi/svgdata.cxx29
4 files changed, 40 insertions, 37 deletions
diff --git a/vcl/inc/vcl/svapp.hxx b/vcl/inc/vcl/svapp.hxx
index 0a1aa569d5cf..48b87d151b62 100644
--- a/vcl/inc/vcl/svapp.hxx
+++ b/vcl/inc/vcl/svapp.hxx
@@ -267,6 +267,7 @@ public:
static void SetAppName( const String& rUniqueName );
static String GetAppName();
static bool LoadBrandBitmap (const char* pName, BitmapEx &rBitmap);
+ static bool LoadBrandSVG( const char *pName, BitmapEx &rBitmap );
// default name of the application for message dialogs and printing
static void SetDisplayName( const UniString& rDisplayName );
diff --git a/vcl/inc/vcl/svgdata.hxx b/vcl/inc/vcl/svgdata.hxx
index 488092ce8a34..dc4c9e5e8db2 100644
--- a/vcl/inc/vcl/svgdata.hxx
+++ b/vcl/inc/vcl/svgdata.hxx
@@ -57,6 +57,7 @@ private:
public:
SvgData(const SvgDataArray& rSvgDataArray, sal_uInt32 nSvgDataArrayLength, const rtl::OUString& rPath);
+ SvgData(const rtl::OUString& rPath);
/// data read
const SvgDataArray& getSvgDataArray() const { return maSvgDataArray; }
diff --git a/vcl/source/app/brand.cxx b/vcl/source/app/brand.cxx
index 33b8bddcbc1a..03e999ad8a07 100644
--- a/vcl/source/app/brand.cxx
+++ b/vcl/source/app/brand.cxx
@@ -24,6 +24,7 @@
#include <tools/stream.hxx>
#include <vcl/pngread.hxx>
#include <vcl/svapp.hxx>
+#include <vcl/svgdata.hxx>
namespace {
static bool loadPng(const char *pPath, const rtl::OUString &rName, BitmapEx &rBitmap)
@@ -40,27 +41,6 @@ namespace {
else
return false;
}
-
-#ifdef FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
- static vcl::RenderGraphicRasterizer loadSvg(const char *pPath, const rtl::OUString &rName)
- {
- rtl::OUString uri = rtl::OUString::createFromAscii( pPath ) + rName;
- rtl::Bootstrap::expandMacros( uri );
- INetURLObject aObj( uri );
- SvFileStream aStrm( aObj.PathToFileName(), STREAM_STD_READ );
-
- vcl::RenderGraphic aRenderGraphic;
- vcl::RenderGraphic aRasterizer ( aRenderGraphic );
-
- if ( !aStrm.GetError() ) {
- vcl::SVGReader aSVGReader( aStrm );
- aRenderGraphic = aSVGReader.GetRenderGraphic();
- vcl::RenderGraphic aNewRasterizer ( aRenderGraphic );
- aRasterizer = aNewRasterizer;
- }
- return aRasterizer;
- }
-#endif
}
bool Application::LoadBrandBitmap (const char* pName, BitmapEx &rBitmap)
@@ -86,8 +66,7 @@ bool Application::LoadBrandBitmap (const char* pName, BitmapEx &rBitmap)
loadPng ("$BRAND_BASE_DIR/program", aName, rBitmap) );
}
-#ifdef FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
-vcl::RenderGraphicRasterizer Application::LoadBrandSVG (const char* pName)
+bool Application::LoadBrandSVG (const char *pName, BitmapEx &rBitmap)
{
rtl::OUString aBaseName = ( rtl::OUString("/") +
rtl::OUString::createFromAscii( pName ) );
@@ -101,20 +80,13 @@ vcl::RenderGraphicRasterizer Application::LoadBrandSVG (const char* pName)
rtl::OUString aLocaleName = ( aBaseName + rtl::OUString("-") +
aLanguageTag.getBcp47() +
aSvg );
-
- vcl::RenderGraphicRasterizer aRasterizer = loadSvg ("$BRAND_BASE_DIR/program/edition", aLocaleName);
- if (!aRasterizer.GetRenderGraphic().IsEmpty())
- return aRasterizer;
- aRasterizer = loadSvg ("$BRAND_BASE_DIR/program", aLocaleName);
- if (!aRasterizer.GetRenderGraphic().IsEmpty())
- return aRasterizer;
- aRasterizer = loadSvg ("$BRAND_BASE_DIR/program/edition", aName);
- if (!aRasterizer.GetRenderGraphic().IsEmpty())
- return aRasterizer;
-
- aRasterizer = loadSvg ("$BRAND_BASE_DIR/program", aName);
- return aRasterizer;
+ //rtl::OUString uri = rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ) + aLocaleName;
+ rtl::OUString uri = rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ) + aBaseName+aSvg;
+ rtl::Bootstrap::expandMacros( uri );
+ INetURLObject aObj( uri );
+ SvgData aSvgData(aObj.PathToFileName());
+ rBitmap = aSvgData.getReplacement();
+ return true;
}
-#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/gdi/svgdata.cxx b/vcl/source/gdi/svgdata.cxx
index 9efce0816322..f98abcdc1e55 100644
--- a/vcl/source/gdi/svgdata.cxx
+++ b/vcl/source/gdi/svgdata.cxx
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <tools/stream.hxx>
#include <vcl/svgdata.hxx>
#include <comphelper/processfactory.hxx>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -164,6 +165,34 @@ SvgData::SvgData(const SvgDataArray& rSvgDataArray, sal_uInt32 nSvgDataArrayLeng
}
//////////////////////////////////////////////////////////////////////////////
+SvgData::SvgData(const OUString& rPath):
+ maSvgDataArray(NULL),
+ mnSvgDataArrayLength(0),
+ maPath(rPath),
+ maRange(),
+ maSequence(),
+ maReplacement()
+{
+ SvFileStream rIStm(rPath, STREAM_STD_READ);
+ if(rIStm.GetError())
+ return;
+ const sal_uInt32 nStmPos(rIStm.Tell());
+ const sal_uInt32 nStmLen(rIStm.Seek(STREAM_SEEK_TO_END) - nStmPos);
+ if(nStmLen)
+ {
+ SvgDataArray aNewData(new sal_uInt8[nStmLen]);
+ rIStm.Seek(nStmPos);
+ rIStm.Read(aNewData.get(), nStmLen);
+
+ if(!rIStm.GetError())
+ {
+ maSvgDataArray = aNewData;
+ mnSvgDataArrayLength = nStmLen;
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
const basegfx::B2DRange& SvgData::getRange() const
{