Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
46cea346
Kaydet (Commit)
46cea346
authored
May 17, 2014
tarafından
Jan Holesovsky
Kaydeden (comit)
Zolnai Tamás
Tem 20, 2014
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
opengl charts: Move the init from sc to chart2, to have the right parent.
Change-Id: I1e23329345e00e7d8e1f269c832e84d015824c0a
üst
df5202ff
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
82 additions
and
51 deletions
+82
-51
Library_chartcontroller.mk
chart2/Library_chartcontroller.mk
+1
-0
ChartController.cxx
chart2/source/controller/main/ChartController.cxx
+3
-0
ChartWindow.cxx
chart2/source/controller/main/ChartWindow.cxx
+29
-4
ChartWindow.hxx
chart2/source/controller/main/ChartWindow.hxx
+6
-3
ChartModel.cxx
chart2/source/model/main/ChartModel.cxx
+0
-1
GL3DBarChart.cxx
chart2/source/view/charttypes/GL3DBarChart.cxx
+32
-22
GL3DBarChart.hxx
chart2/source/view/inc/GL3DBarChart.hxx
+4
-2
ChartView.cxx
chart2/source/view/main/ChartView.cxx
+7
-1
fuins2.cxx
sc/source/ui/drawfunc/fuins2.cxx
+0
-18
No files found.
chart2/Library_chartcontroller.mk
Dosyayı görüntüle @
46cea346
...
...
@@ -43,6 +43,7 @@ $(eval $(call gb_Library_use_libraries,chartcontroller,\
ucbhelper \
utl \
vcl \
vclopengl \
$(gb_UWINAPI) \
))
...
...
chart2/source/controller/main/ChartController.cxx
Dosyayı görüntüle @
46cea346
...
...
@@ -726,6 +726,9 @@ void SAL_CALL ChartController::dispose()
//--release all resources and references
{
uno
::
Reference
<
chart2
::
X3DChartWindowProvider
>
x3DWindowProvider
(
getModel
(),
uno
::
UNO_QUERY_THROW
);
x3DWindowProvider
->
setWindow
(
0
);
uno
::
Reference
<
util
::
XModeChangeBroadcaster
>
xViewBroadcaster
(
m_xChartView
,
uno
::
UNO_QUERY
);
if
(
xViewBroadcaster
.
is
()
)
xViewBroadcaster
->
removeModeChangeListener
(
this
);
...
...
chart2/source/controller/main/ChartWindow.cxx
Dosyayı görüntüle @
46cea346
...
...
@@ -22,8 +22,11 @@
#include "HelpIds.hrc"
#include <vcl/help.hxx>
#include <vcl/openglwin.hxx>
#include <vcl/settings.hxx>
#include <com/sun/star/chart2/X3DChartWindowProvider.hpp>
using
namespace
::
com
::
sun
::
star
;
namespace
...
...
@@ -42,10 +45,11 @@ namespace
namespace
chart
{
ChartWindow
::
ChartWindow
(
WindowController
*
pWindow
Controller
,
Window
*
pParent
,
WinBits
nStyle
)
ChartWindow
::
ChartWindow
(
ChartController
*
p
Controller
,
Window
*
pParent
,
WinBits
nStyle
)
:
Window
(
pParent
,
nStyle
)
,
m_pWindowController
(
p
Window
Controller
)
,
m_pWindowController
(
pController
)
,
m_bInPaint
(
false
)
,
m_pOpenGLWindow
(
new
OpenGLWindow
(
this
))
{
this
->
SetHelpId
(
HID_SCH_WIN_DOCUMENT
);
this
->
SetMapMode
(
MapMode
(
MAP_100TH_MM
)
);
...
...
@@ -55,10 +59,21 @@ ChartWindow::ChartWindow( WindowController* pWindowController, Window* pParent,
EnableRTL
(
false
);
if
(
pParent
)
pParent
->
EnableRTL
(
false
);
// #i96215# necessary for a correct position of the context menu in rtl mode
m_pOpenGLWindow
->
Show
();
uno
::
Reference
<
chart2
::
X3DChartWindowProvider
>
x3DWindowProvider
(
pController
->
getModel
(),
uno
::
UNO_QUERY_THROW
);
sal_uInt64
nWindowPtr
=
reinterpret_cast
<
sal_uInt64
>
(
m_pOpenGLWindow
);
x3DWindowProvider
->
setWindow
(
nWindowPtr
);
}
ChartWindow
::~
ChartWindow
()
{
if
(
m_pWindowController
&&
m_pWindowController
->
getModel
().
is
())
{
uno
::
Reference
<
chart2
::
X3DChartWindowProvider
>
x3DWindowProvider
(
m_pWindowController
->
getModel
(),
uno
::
UNO_QUERY_THROW
);
x3DWindowProvider
->
setWindow
(
0
);
}
delete
m_pOpenGLWindow
;
}
void
ChartWindow
::
clear
()
...
...
@@ -79,10 +94,18 @@ void ChartWindow::PrePaint()
void
ChartWindow
::
Paint
(
const
Rectangle
&
rRect
)
{
m_bInPaint
=
true
;
if
(
m_pWindowController
)
m_pWindowController
->
execute_Paint
(
rRect
);
if
(
m_pOpenGLWindow
&&
m_pOpenGLWindow
->
IsVisible
())
{
m_pOpenGLWindow
->
Paint
(
rRect
);
}
else
if
(
m_pWindowController
)
{
m_pWindowController
->
execute_Paint
(
rRect
);
}
else
{
Window
::
Paint
(
rRect
);
}
m_bInPaint
=
false
;
}
...
...
@@ -124,6 +147,8 @@ void ChartWindow::Resize()
m_pWindowController
->
execute_Resize
();
else
Window
::
Resize
();
m_pOpenGLWindow
->
SetSizePixel
(
GetSizePixel
());
}
void
ChartWindow
::
Activate
()
...
...
chart2/source/controller/main/ChartWindow.hxx
Dosyayı görüntüle @
46cea346
...
...
@@ -21,10 +21,12 @@
#include <vcl/window.hxx>
class
OpenGLWindow
;
namespace
chart
{
class
Window
Controller
;
class
Chart
Controller
;
/** The ChartWindow collects events from the window and forwards them the to the controller
thus the controller can perform appropriate actions
...
...
@@ -33,7 +35,7 @@ thus the controller can perform appropriate actions
class
ChartWindow
:
public
Window
{
public
:
ChartWindow
(
WindowController
*
pWindow
Controller
,
Window
*
pParent
,
WinBits
nStyle
);
ChartWindow
(
ChartController
*
p
Controller
,
Window
*
pParent
,
WinBits
nStyle
);
virtual
~
ChartWindow
();
void
clear
();
...
...
@@ -63,8 +65,9 @@ public:
virtual
::
com
::
sun
::
star
::
uno
::
Reference
<
::
com
::
sun
::
star
::
accessibility
::
XAccessible
>
CreateAccessible
()
SAL_OVERRIDE
;
private
:
WindowController
*
m_pWindowController
;
ChartController
*
m_pWindowController
;
bool
m_bInPaint
;
OpenGLWindow
*
m_pOpenGLWindow
;
void
adjustHighContrastMode
();
};
...
...
chart2/source/model/main/ChartModel.cxx
Dosyayı görüntüle @
46cea346
...
...
@@ -1412,7 +1412,6 @@ void ChartModel::setWindow( const sal_uInt64 nWindowPtr )
{
void
*
pPtr
=
(
void
*
)
nWindowPtr
;
OpenGLWindow
*
pWindow
=
reinterpret_cast
<
OpenGLWindow
*>
(
pPtr
);
assert
(
pWindow
);
mpOpenGLWindow
=
pWindow
;
}
...
...
chart2/source/view/charttypes/GL3DBarChart.cxx
Dosyayı görüntüle @
46cea346
...
...
@@ -47,8 +47,8 @@ void RenderThread::renderFrame()
if
(
!
mpChart
->
mbValidContext
)
return
;
mpChart
->
m
rWindow
.
getContext
().
makeCurrent
();
Size
aSize
=
mpChart
->
m
rWindow
.
GetSizePixel
();
mpChart
->
m
pWindow
->
getContext
().
makeCurrent
();
Size
aSize
=
mpChart
->
m
pWindow
->
GetSizePixel
();
mpChart
->
mpRenderer
->
SetSize
(
aSize
);
if
(
mpChart
->
mbNeedsNewRender
)
{
...
...
@@ -64,7 +64,7 @@ void RenderThread::renderFrame()
}
mpChart
->
mpRenderer
->
ProcessUnrenderedShape
(
mpChart
->
mbNeedsNewRender
);
mpChart
->
mbNeedsNewRender
=
false
;
mpChart
->
m
rWindow
.
getContext
().
swapBuffers
();
mpChart
->
m
pWindow
->
getContext
().
swapBuffers
();
}
...
...
@@ -127,10 +127,10 @@ void RenderAnimationThread::execute()
GL3DBarChart
::
GL3DBarChart
(
const
css
::
uno
::
Reference
<
css
::
chart2
::
XChartType
>&
xChartType
,
OpenGLWindow
&
r
Window
)
:
OpenGLWindow
*
p
Window
)
:
mxChartType
(
xChartType
),
mpRenderer
(
new
opengl3D
::
OpenGL3DRenderer
()),
m
rWindow
(
r
Window
),
m
pWindow
(
p
Window
),
mpCamera
(
NULL
),
mbValidContext
(
true
),
mpTextCache
(
new
opengl3D
::
TextCache
()),
...
...
@@ -142,9 +142,13 @@ GL3DBarChart::GL3DBarChart(
mbNeedsNewRender
(
true
),
mbCameraInit
(
false
)
{
Size
aSize
=
mrWindow
.
GetSizePixel
();
Size
aSize
;
if
(
mpWindow
)
{
mpWindow
->
setRenderer
(
this
);
Size
aSize
=
mpWindow
->
GetSizePixel
();
}
mpRenderer
->
SetSize
(
aSize
);
mrWindow
.
setRenderer
(
this
);
mpRenderer
->
init
();
}
...
...
@@ -162,8 +166,8 @@ GL3DBarChart::~GL3DBarChart()
if
(
mpRenderThread
.
is
())
mpRenderThread
->
join
();
osl
::
MutexGuard
aGuard
(
maMutex
);
if
(
mbValidContext
)
m
rWindow
.
setRenderer
(
NULL
);
if
(
mbValidContext
&&
mpWindow
)
m
pWindow
->
setRenderer
(
NULL
);
}
namespace
{
...
...
@@ -288,7 +292,7 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer
BarInformation
(
glm
::
vec3
(
nXPos
,
nYPos
,
float
(
nVal
/
nMaxVal
)),
nVal
,
nIndex
,
nSeriesIndex
)));
maShapes
.
push_back
(
new
opengl3D
::
Bar
(
mpRenderer
.
get
(),
aBarPosition
,
nColor
,
nId
));
//
maShapes.push_back(new opengl3D::Bar(mpRenderer.get(), aBarPosition, nColor, nId));
nId
+=
ID_STEP
;
}
...
...
@@ -403,10 +407,10 @@ void GL3DBarChart::update()
{
if
(
mpRenderThread
.
is
())
mpRenderThread
->
join
();
Size
aSize
=
m
rWindow
.
GetSizePixel
();
m
rWindow
.
getContext
().
setWinSize
(
aSize
);
Size
aSize
=
m
pWindow
->
GetSizePixel
();
m
pWindow
->
getContext
().
setWinSize
(
aSize
);
mpRenderThread
=
rtl
::
Reference
<
RenderThread
>
(
new
RenderOneFrameThread
(
this
));
m
rWindow
.
getContext
().
resetCurrent
();
m
pWindow
->
getContext
().
resetCurrent
();
mpRenderThread
->
launch
();
}
...
...
@@ -438,10 +442,10 @@ void GL3DBarChart::moveToDefault()
if
(
mpRenderThread
.
is
())
mpRenderThread
->
join
();
Size
aSize
=
m
rWindow
.
GetSizePixel
();
m
rWindow
.
getContext
().
setWinSize
(
aSize
);
Size
aSize
=
m
pWindow
->
GetSizePixel
();
m
pWindow
->
getContext
().
setWinSize
(
aSize
);
mpRenderThread
=
rtl
::
Reference
<
RenderThread
>
(
new
RenderAnimationThread
(
this
,
maCameraPosition
,
maDefaultCameraPosition
,
STEPS
));
m
rWindow
.
getContext
().
resetCurrent
();
m
pWindow
->
getContext
().
resetCurrent
();
mpRenderThread
->
launch
();
/*
...
...
@@ -496,10 +500,10 @@ void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons)
glm
::
vec3
maTargetPosition
=
rBarInfo
.
maPos
;
maTargetPosition
.
z
+=
240
;
maTargetPosition
.
y
+=
BAR_SIZE_Y
/
2.0
f
;
Size
aSize
=
m
rWindow
.
GetSizePixel
();
m
rWindow
.
getContext
().
setWinSize
(
aSize
);
Size
aSize
=
m
pWindow
->
GetSizePixel
();
m
pWindow
->
getContext
().
setWinSize
(
aSize
);
mpRenderThread
=
rtl
::
Reference
<
RenderThread
>
(
new
RenderAnimationThread
(
this
,
maCameraPosition
,
maTargetPosition
,
STEPS
));
m
rWindow
.
getContext
().
resetCurrent
();
m
pWindow
->
getContext
().
resetCurrent
();
mpRenderThread
->
launch
();
/*
...
...
@@ -577,11 +581,11 @@ void GL3DBarChart::moveToCorner()
if
(
mpRenderThread
.
is
())
mpRenderThread
->
join
();
Size
aSize
=
m
rWindow
.
GetSizePixel
();
m
rWindow
.
getContext
().
setWinSize
(
aSize
);
Size
aSize
=
m
pWindow
->
GetSizePixel
();
m
pWindow
->
getContext
().
setWinSize
(
aSize
);
mpRenderThread
=
rtl
::
Reference
<
RenderThread
>
(
new
RenderAnimationThread
(
this
,
getCornerPosition
(
mnCornerId
),
maCameraPosition
,
STEPS
));
m
rWindow
.
getContext
().
resetCurrent
();
m
pWindow
->
getContext
().
resetCurrent
();
mpRenderThread
->
launch
();
// TODO: moggi: add to thread
...
...
@@ -604,6 +608,12 @@ void GL3DBarChart::contextDestroyed()
mbValidContext
=
false
;
}
void
GL3DBarChart
::
setOpenGLWindow
(
OpenGLWindow
*
pWindow
)
{
if
(
mpWindow
!=
pWindow
)
mpWindow
=
pWindow
;
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
chart2/source/view/inc/GL3DBarChart.hxx
Dosyayı görüntüle @
46cea346
...
...
@@ -49,7 +49,7 @@ class GL3DBarChart : public GL3DPlotterBase, public IRenderer
public
:
GL3DBarChart
(
const
css
::
uno
::
Reference
<
css
::
chart2
::
XChartType
>&
xChartType
,
OpenGLWindow
&
r
Context
);
OpenGLWindow
*
p
Context
);
virtual
~
GL3DBarChart
();
...
...
@@ -65,6 +65,8 @@ public:
virtual
void
scroll
(
long
nDelta
)
SAL_OVERRIDE
;
virtual
void
contextDestroyed
()
SAL_OVERRIDE
;
void
setOpenGLWindow
(
OpenGLWindow
*
pWindow
);
private
:
void
moveToCorner
();
...
...
@@ -75,7 +77,7 @@ private:
boost
::
ptr_vector
<
opengl3D
::
Renderable3DObject
>
maShapes
;
boost
::
scoped_ptr
<
opengl3D
::
OpenGL3DRenderer
>
mpRenderer
;
OpenGLWindow
&
mr
Window
;
OpenGLWindow
*
mp
Window
;
opengl3D
::
Camera
*
mpCamera
;
bool
mbValidContext
;
...
...
chart2/source/view/main/ChartView.cxx
Dosyayı görüntüle @
46cea346
...
...
@@ -3250,7 +3250,13 @@ void ChartView::createShapes3D()
if
(
!
m_pGL3DPlotter
)
{
m_pGL3DPlotter
.
reset
(
new
GL3DBarChart
(
xChartType
,
*
pWindow
));
m_pGL3DPlotter
.
reset
(
new
GL3DBarChart
(
xChartType
,
pWindow
));
}
else
{
GL3DBarChart
*
pChart
=
dynamic_cast
<
GL3DBarChart
*>
(
m_pGL3DPlotter
.
get
());
if
(
pChart
)
pChart
->
setOpenGLWindow
(
pWindow
);
}
uno
::
Reference
<
XDataSeriesContainer
>
xDataSeriesContainer
(
xChartType
,
uno
::
UNO_QUERY
);
...
...
sc/source/ui/drawfunc/fuins2.cxx
Dosyayı görüntüle @
46cea346
...
...
@@ -544,22 +544,6 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView*
ScDocument
&
rScDoc
=
pScDocSh
->
GetDocument
();
bool
bUndo
(
rScDoc
.
IsUndoEnabled
());
Window
*
pParentWindow
=
rData
.
GetActiveWin
();
OpenGLWindow
*
pChildWindow
=
new
OpenGLWindow
(
pParentWindow
);
Size
aWindowSize
=
pChildWindow
->
LogicToPixel
(
aSize
,
MapMode
(
MAP_100TH_MM
)
);
pChildWindow
->
SetSizePixel
(
aWindowSize
);
pChildWindow
->
Show
();
uno
::
Reference
<
chart2
::
X3DChartWindowProvider
>
x3DWindowProvider
(
xChartModel
,
uno
::
UNO_QUERY_THROW
);
sal_uInt64
nWindowPtr
=
reinterpret_cast
<
sal_uInt64
>
(
pChildWindow
);
x3DWindowProvider
->
setWindow
(
nWindowPtr
);
ScGridWindow
*
pGridWindow
=
dynamic_cast
<
ScGridWindow
*>
(
pParentWindow
);
if
(
pGridWindow
)
{
pGridWindow
->
AddChildWindow
(
pChildWindow
);
}
else
SAL_WARN
(
"sc"
,
"not a grid window. You are in serious trouble"
);
if
(
pReqArgs
)
{
const
SfxPoolItem
*
pItem
;
...
...
@@ -634,7 +618,6 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView*
// get chart position (from window size and data range)
aStart
=
pViewSh
->
GetChartInsertPos
(
aSize
,
aPositionRange
);
}
pChildWindow
->
SetPosPixel
(
pChildWindow
->
LogicToPixel
(
aStart
,
MapMode
(
MAP_100TH_MM
)));
Rectangle
aRect
(
aStart
,
aSize
);
SdrOle2Obj
*
pObj
=
new
SdrOle2Obj
(
svt
::
EmbeddedObjectRef
(
xObj
,
nAspect
),
aName
,
aRect
);
...
...
@@ -729,7 +712,6 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView*
sal_Int16
nDialogRet
=
xDialog
->
execute
();
if
(
nDialogRet
==
ui
::
dialogs
::
ExecutableDialogResults
::
CANCEL
)
{
pGridWindow
->
DeleteChildWindow
(
pChildWindow
);
// leave OLE inplace mode and unmark
OSL_ASSERT
(
pViewShell
);
OSL_ASSERT
(
pView
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment