summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2014-08-25 21:47:34 +0200
committerMarkus Mohrhard <markus.mohrhard@collabora.co.uk>2014-08-29 17:40:35 +0200
commitf61e453f8463fcc02629b1e8cdfeb73a3a932307 (patch)
tree6e8fffa2e97c6b09fde4c02b8f6875c91e2da5ea
parent5d622c55ef776f31ec8a0a5dfcbbadd03c35e5a1 (diff)
the DUMMY_CHART_FACTORY variable is not the only indicator for OpenGl charts
Change-Id: Idab33c8611526dc4749b4dbe4fe84e68138b4f73
-rw-r--r--chart2/inc/ChartModel.hxx2
-rw-r--r--chart2/source/model/main/ChartModel.cxx7
-rw-r--r--offapi/com/sun/star/chart2/XChartDocument.idl4
-rw-r--r--svtools/source/misc/embedhlp.cxx13
4 files changed, 25 insertions, 1 deletions
diff --git a/chart2/inc/ChartModel.hxx b/chart2/inc/ChartModel.hxx
index 5ec13f1c8fef..79a17466bb18 100644
--- a/chart2/inc/ChartModel.hxx
+++ b/chart2/inc/ChartModel.hxx
@@ -438,6 +438,8 @@ public:
virtual void SAL_CALL createDefaultChart() throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+ virtual sal_Bool SAL_CALL isOpenGLChart() throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
// ____ XDataReceiver (public API) ____
virtual void SAL_CALL
attachDataProvider( const ::com::sun::star::uno::Reference<
diff --git a/chart2/source/model/main/ChartModel.cxx b/chart2/source/model/main/ChartModel.cxx
index ed0d24e0b2ff..a3d97c243482 100644
--- a/chart2/source/model/main/ChartModel.cxx
+++ b/chart2/source/model/main/ChartModel.cxx
@@ -32,6 +32,7 @@
#include "NameContainer.hxx"
#include "UndoManager.hxx"
#include "ChartView.hxx"
+#include "GL3DHelper.hxx"
#include <vcl/openglwin.hxx>
@@ -964,6 +965,12 @@ void SAL_CALL ChartModel::createDefaultChart()
insertDefaultChart();
}
+sal_Bool SAL_CALL ChartModel::isOpenGLChart()
+ throw (css::uno::RuntimeException, std::exception)
+{
+ return GL3DHelper::isGL3DDiagram(m_xDiagram);
+}
+
// ____ XTitled ____
uno::Reference< chart2::XTitle > SAL_CALL ChartModel::getTitleObject()
throw (uno::RuntimeException, std::exception)
diff --git a/offapi/com/sun/star/chart2/XChartDocument.idl b/offapi/com/sun/star/chart2/XChartDocument.idl
index 0055cbb83fd2..57bcfc9c259f 100644
--- a/offapi/com/sun/star/chart2/XChartDocument.idl
+++ b/offapi/com/sun/star/chart2/XChartDocument.idl
@@ -127,6 +127,10 @@ interface XChartDocument : ::com::sun::star::frame::XModel
/** Creates a default chart type for a brand-new chart object.
*/
void createDefaultChart();
+
+ /** Returns true if the chart is based on OpenGL
+ */
+ boolean isOpenGLChart();
};
} ; // chart2
diff --git a/svtools/source/misc/embedhlp.cxx b/svtools/source/misc/embedhlp.cxx
index d320b30ffec7..b8d588396bc1 100644
--- a/svtools/source/misc/embedhlp.cxx
+++ b/svtools/source/misc/embedhlp.cxx
@@ -804,7 +804,18 @@ bool EmbeddedObjectRef::IsChart(const ::com::sun::star::uno::Reference < ::com::
bool EmbeddedObjectRef::IsGLChart(const ::com::sun::star::uno::Reference < ::com::sun::star::embed::XEmbeddedObject >& xObj)
{
static const char* env = getenv("CHART_DUMMY_FACTORY");
- return IsChart(xObj) && env;
+ if (IsChart(xObj))
+ {
+ if (env)
+ return true;
+
+ uno::Reference< chart2::XChartDocument > xChartDoc(xObj->getComponent(), uno::UNO_QUERY);
+ if (!xChartDoc.is())
+ return false;
+
+ return xChartDoc->isOpenGLChart();
+ }
+ return false;
}
void EmbeddedObjectRef::UpdateReplacement()