1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski #ifndef _CHART2_DRAW_VIEW_WRAPPER_HXX
24*b1cdbd2cSJim Jagielski #define _CHART2_DRAW_VIEW_WRAPPER_HXX
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski #include <svx/view3d.hxx>
27*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/XShape.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XModel.hpp>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski class SdrModel;
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski //.............................................................................
33*b1cdbd2cSJim Jagielski namespace chart
34*b1cdbd2cSJim Jagielski {
35*b1cdbd2cSJim Jagielski //.............................................................................
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
38*b1cdbd2cSJim Jagielski /** The DrawViewWrapper should help us to reduce effort if the underlying DrawingLayer changes.
39*b1cdbd2cSJim Jagielski Another task is to hide functionality we do not need, for example more than one page.
40*b1cdbd2cSJim Jagielski */
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski class MarkHandleProvider
43*b1cdbd2cSJim Jagielski {
44*b1cdbd2cSJim Jagielski public:
45*b1cdbd2cSJim Jagielski     virtual bool getMarkHandles( SdrHdlList& rHdlList ) =0;
46*b1cdbd2cSJim Jagielski     virtual bool getFrameDragSingles() =0;
47*b1cdbd2cSJim Jagielski };
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski class DrawViewWrapper : public E3dView
50*b1cdbd2cSJim Jagielski {
51*b1cdbd2cSJim Jagielski public:
52*b1cdbd2cSJim Jagielski 	DrawViewWrapper(SdrModel* pModel, OutputDevice* pOut, bool bPaintPageForEditMode);
53*b1cdbd2cSJim Jagielski 	virtual ~DrawViewWrapper();
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski     //triggers the use of an updated first page
56*b1cdbd2cSJim Jagielski     void    ReInit();
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski     /// tries to get an OutputDevice from the XParent of the model to use as reference device
59*b1cdbd2cSJim Jagielski     void attachParentReferenceDevice(
60*b1cdbd2cSJim Jagielski         const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & xChartModel );
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski     //fill list of selection handles 'aHdl'
63*b1cdbd2cSJim Jagielski     virtual void SetMarkHandles();
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski     SdrPageView*    GetPageView() const;
66*b1cdbd2cSJim Jagielski 
67*b1cdbd2cSJim Jagielski     SdrObject* getHitObject( const Point& rPnt ) const;
68*b1cdbd2cSJim Jagielski     //sal_Bool PickObj(const Point& rPnt, short nTol, SdrObject*& rpObj, SdrPageView*& rpPV, sal_uLong nOptions, SdrObject** ppRootObj, sal_uLong* pnMarkNum=NULL, sal_uInt16* pnPassNum=NULL) const;
69*b1cdbd2cSJim Jagielski     //sal_Bool PickObj(const Point& rPnt, short nTol, SdrObject*& rpObj, SdrPageView*& rpPV, sal_uLong nOptions=0) const;
70*b1cdbd2cSJim Jagielski     //sal_Bool PickObj(const Point& rPnt, SdrObject*& rpObj, SdrPageView*& rpPV, sal_uLong nOptions=0) const { return PickObj(rPnt,nHitTolLog,rpObj,rpPV,nOptions); }
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski     //void MarkObj(SdrObject* pObj, SdrPageView* pPV, sal_Bool bUnmark=sal_False, sal_Bool bImpNoSetMarkHdl=sal_False);
73*b1cdbd2cSJim Jagielski     void MarkObject( SdrObject* pObj );
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski     //----------------------
76*b1cdbd2cSJim Jagielski     //pMarkHandleProvider can be NULL; ownership is not taken
77*b1cdbd2cSJim Jagielski     void setMarkHandleProvider( MarkHandleProvider* pMarkHandleProvider );
78*b1cdbd2cSJim Jagielski     void CompleteRedraw(OutputDevice* pOut, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0);
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski     SdrObject*   getSelectedObject() const;
81*b1cdbd2cSJim Jagielski     SdrObject*   getTextEditObject() const;
82*b1cdbd2cSJim Jagielski     SdrOutliner* getOutliner() const;
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski     SfxItemSet   getPositionAndSizeItemSetFromMarkedObject() const;
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski     SdrObject* getNamedSdrObject( const rtl::OUString& rName ) const;
87*b1cdbd2cSJim Jagielski     bool IsObjectHit( SdrObject* pObj, const Point& rPnt ) const;
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski     virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski     static SdrObject* getSdrObject( const ::com::sun::star::uno::Reference<
92*b1cdbd2cSJim Jagielski                     ::com::sun::star::drawing::XShape >& xShape );
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski private:
95*b1cdbd2cSJim Jagielski     mutable MarkHandleProvider*     m_pMarkHandleProvider;
96*b1cdbd2cSJim Jagielski 
97*b1cdbd2cSJim Jagielski     ::std::auto_ptr< SdrOutliner >  m_apOutliner;
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski     // #i79965# scroll back view when ending text edit
100*b1cdbd2cSJim Jagielski     bool m_bRestoreMapMode;
101*b1cdbd2cSJim Jagielski     MapMode m_aMapModeToRestore;
102*b1cdbd2cSJim Jagielski };
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski //.............................................................................
105*b1cdbd2cSJim Jagielski } //namespace chart
106*b1cdbd2cSJim Jagielski //.............................................................................
107*b1cdbd2cSJim Jagielski #endif
108*b1cdbd2cSJim Jagielski 
109