xref: /AOO41X/main/avmedia/source/macavf/macavf_window.hxx (revision 4ba1660956c80eb18b1e904dd49c2cd0d4b9c49e)
1*4ba16609SHerbert Dürr /**************************************************************
2*4ba16609SHerbert Dürr  *
3*4ba16609SHerbert Dürr  * Licensed to the Apache Software Foundation (ASF) under one
4*4ba16609SHerbert Dürr  * or more contributor license agreements.  See the NOTICE file
5*4ba16609SHerbert Dürr  * distributed with this work for additional information
6*4ba16609SHerbert Dürr  * regarding copyright ownership.  The ASF licenses this file
7*4ba16609SHerbert Dürr  * to you under the Apache License, Version 2.0 (the
8*4ba16609SHerbert Dürr  * "License"); you may not use this file except in compliance
9*4ba16609SHerbert Dürr  * with the License.  You may obtain a copy of the License at
10*4ba16609SHerbert Dürr  *
11*4ba16609SHerbert Dürr  *   http://www.apache.org/licenses/LICENSE-2.0
12*4ba16609SHerbert Dürr  *
13*4ba16609SHerbert Dürr  * Unless required by applicable law or agreed to in writing,
14*4ba16609SHerbert Dürr  * software distributed under the License is distributed on an
15*4ba16609SHerbert Dürr  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*4ba16609SHerbert Dürr  * KIND, either express or implied.  See the License for the
17*4ba16609SHerbert Dürr  * specific language governing permissions and limitations
18*4ba16609SHerbert Dürr  * under the License.
19*4ba16609SHerbert Dürr  *
20*4ba16609SHerbert Dürr  *************************************************************/
21*4ba16609SHerbert Dürr 
22*4ba16609SHerbert Dürr #ifndef MACAVF_WINDOW_HXX
23*4ba16609SHerbert Dürr #define MACAVF_WINDOW_HXX
24*4ba16609SHerbert Dürr 
25*4ba16609SHerbert Dürr #include "macavf_common.hxx"
26*4ba16609SHerbert Dürr 
27*4ba16609SHerbert Dürr #include <cppuhelper/interfacecontainer.h>
28*4ba16609SHerbert Dürr 
29*4ba16609SHerbert Dürr #include "com/sun/star/media/XPlayerWindow.hdl"
30*4ba16609SHerbert Dürr 
31*4ba16609SHerbert Dürr // ---------------
32*4ba16609SHerbert Dürr // - MyMediaView -
33*4ba16609SHerbert Dürr // ---------------
34*4ba16609SHerbert Dürr 
35*4ba16609SHerbert Dürr @interface MyMediaView : NSView
36*4ba16609SHerbert Dürr @property (nonatomic, readonly, strong) AVPlayer* player;
37*4ba16609SHerbert Dürr @property (nonatomic, readonly, strong) AVPlayerLayer* playerLayer;
38*4ba16609SHerbert Dürr @property (nonatomic, retain) NSURL* videoURL;
39*4ba16609SHerbert Dürr - (void) play;
40*4ba16609SHerbert Dürr @end
41*4ba16609SHerbert Dürr 
42*4ba16609SHerbert Dürr namespace avmedia { namespace macavf {
43*4ba16609SHerbert Dürr 
44*4ba16609SHerbert Dürr // ---------------
45*4ba16609SHerbert Dürr // - Window -
46*4ba16609SHerbert Dürr // ---------------
47*4ba16609SHerbert Dürr 
48*4ba16609SHerbert Dürr class Player;
49*4ba16609SHerbert Dürr 
50*4ba16609SHerbert Dürr class Window
51*4ba16609SHerbert Dürr :   public MacAVObserverHandler
52*4ba16609SHerbert Dürr ,   public ::cppu::WeakImplHelper2 < ::com::sun::star::media::XPlayerWindow,
53*4ba16609SHerbert Dürr                                      ::com::sun::star::lang::XServiceInfo >
54*4ba16609SHerbert Dürr {
55*4ba16609SHerbert Dürr public:
56*4ba16609SHerbert Dürr 
57*4ba16609SHerbert Dürr             Window( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& i_rxMgr,
58*4ba16609SHerbert Dürr                     Player& i_rPlayer,
59*4ba16609SHerbert Dürr                     NSView* i_pParentView
60*4ba16609SHerbert Dürr                     );
61*4ba16609SHerbert Dürr     virtual ~Window();
62*4ba16609SHerbert Dürr 
63*4ba16609SHerbert Dürr     bool    create( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments );
64*4ba16609SHerbert Dürr     void    processGraphEvent();
65*4ba16609SHerbert Dürr     void    updatePointer();
66*4ba16609SHerbert Dürr 
67*4ba16609SHerbert Dürr     // XPlayerWindow
68*4ba16609SHerbert Dürr     virtual void SAL_CALL update(  ) throw (::com::sun::star::uno::RuntimeException);
69*4ba16609SHerbert Dürr     virtual sal_Bool SAL_CALL setZoomLevel( ::com::sun::star::media::ZoomLevel ZoomLevel ) throw (::com::sun::star::uno::RuntimeException);
70*4ba16609SHerbert Dürr     virtual ::com::sun::star::media::ZoomLevel SAL_CALL getZoomLevel(  ) throw (::com::sun::star::uno::RuntimeException);
71*4ba16609SHerbert Dürr     virtual void SAL_CALL setPointerType( sal_Int32 nPointerType ) throw (::com::sun::star::uno::RuntimeException);
72*4ba16609SHerbert Dürr 
73*4ba16609SHerbert Dürr     // XWindow
74*4ba16609SHerbert Dürr     virtual void SAL_CALL setPosSize( sal_Int32 X, sal_Int32 Y, sal_Int32 Width, sal_Int32 Height, sal_Int16 Flags ) throw (::com::sun::star::uno::RuntimeException);
75*4ba16609SHerbert Dürr     virtual ::com::sun::star::awt::Rectangle SAL_CALL getPosSize(  ) throw (::com::sun::star::uno::RuntimeException);
76*4ba16609SHerbert Dürr     virtual void SAL_CALL setVisible( sal_Bool Visible ) throw (::com::sun::star::uno::RuntimeException);
77*4ba16609SHerbert Dürr     virtual void SAL_CALL setEnable( sal_Bool Enable ) throw (::com::sun::star::uno::RuntimeException);
78*4ba16609SHerbert Dürr     virtual void SAL_CALL setFocus(  ) throw (::com::sun::star::uno::RuntimeException);
79*4ba16609SHerbert Dürr     virtual void SAL_CALL addWindowListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
80*4ba16609SHerbert Dürr     virtual void SAL_CALL removeWindowListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
81*4ba16609SHerbert Dürr     virtual void SAL_CALL addFocusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
82*4ba16609SHerbert Dürr     virtual void SAL_CALL removeFocusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
83*4ba16609SHerbert Dürr     virtual void SAL_CALL addKeyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XKeyListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
84*4ba16609SHerbert Dürr     virtual void SAL_CALL removeKeyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XKeyListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
85*4ba16609SHerbert Dürr     virtual void SAL_CALL addMouseListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
86*4ba16609SHerbert Dürr     virtual void SAL_CALL removeMouseListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
87*4ba16609SHerbert Dürr     virtual void SAL_CALL addMouseMotionListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseMotionListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
88*4ba16609SHerbert Dürr     virtual void SAL_CALL removeMouseMotionListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseMotionListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
89*4ba16609SHerbert Dürr     virtual void SAL_CALL addPaintListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XPaintListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
90*4ba16609SHerbert Dürr     virtual void SAL_CALL removePaintListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XPaintListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
91*4ba16609SHerbert Dürr 
92*4ba16609SHerbert Dürr     // XComponent
93*4ba16609SHerbert Dürr     virtual void SAL_CALL dispose(  ) throw (::com::sun::star::uno::RuntimeException);
94*4ba16609SHerbert Dürr     virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
95*4ba16609SHerbert Dürr     virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
96*4ba16609SHerbert Dürr 
97*4ba16609SHerbert Dürr     // XServiceInfo
98*4ba16609SHerbert Dürr     virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw (::com::sun::star::uno::RuntimeException);
99*4ba16609SHerbert Dürr     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
100*4ba16609SHerbert Dürr     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw (::com::sun::star::uno::RuntimeException);
101*4ba16609SHerbert Dürr 
102*4ba16609SHerbert Dürr     virtual bool handleObservation( NSString* pKeyPath );
103*4ba16609SHerbert Dürr 
104*4ba16609SHerbert Dürr private:
105*4ba16609SHerbert Dürr 
106*4ba16609SHerbert Dürr     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMgr;
107*4ba16609SHerbert Dürr 
108*4ba16609SHerbert Dürr     ::osl::Mutex                                maMutex;
109*4ba16609SHerbert Dürr     ::cppu::OMultiTypeInterfaceContainerHelper  maListeners;
110*4ba16609SHerbert Dürr     ::com::sun::star::media::ZoomLevel          meZoomLevel;
111*4ba16609SHerbert Dürr     Player&                                     mrPlayer;
112*4ba16609SHerbert Dürr     int                                         mnPointerType;
113*4ba16609SHerbert Dürr 
114*4ba16609SHerbert Dürr     NSView*                                     mpView; // parent-view == movie-view
115*4ba16609SHerbert Dürr     AVPlayerLayer*                              mpPlayerLayer;
116*4ba16609SHerbert Dürr 
117*4ba16609SHerbert Dürr     void                                        ImplLayoutVideoWindow();
118*4ba16609SHerbert Dürr };
119*4ba16609SHerbert Dürr 
120*4ba16609SHerbert Dürr } // namespace macavf
121*4ba16609SHerbert Dürr } // namespace avmedia
122*4ba16609SHerbert Dürr 
123*4ba16609SHerbert Dürr #endif // _WINDOW_HXX
124*4ba16609SHerbert Dürr 
125