1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef INCLUDED_SLIDESHOW_VIEWEVENTHANDLER_HXX
25 #define INCLUDED_SLIDESHOW_VIEWEVENTHANDLER_HXX
26 
27 #include <boost/shared_ptr.hpp>
28 #include <boost/weak_ptr.hpp>
29 
30 #include "unoview.hxx"
31 
32 
33 /* Definition of ViewEventHandler interface */
34 
35 namespace slideshow
36 {
37     namespace internal
38     {
39 
40         /** Interface for handling view events.
41 
42         	Classes implementing this interface can be added to an
43         	EventMultiplexer object, and are called from there to
44         	handle view events.
45          */
46         class ViewEventHandler
47         {
48         public:
~ViewEventHandler()49             virtual ~ViewEventHandler() {}
50 
51             /** Notify new view.
52 
53             	@param rView
54                 The newly added view
55              */
56             virtual void viewAdded( const UnoViewSharedPtr& rView ) = 0;
57 
58             /** Notify removed view.
59 
60             	@param rView
61                 The removed view
62              */
63             virtual void viewRemoved( const UnoViewSharedPtr& rView ) = 0;
64 
65             /** Notify changed view.
66 
67                 Reasons for a viewChanged notification can be
68                 different view size, transformation, or other device
69                 properties (color resolution or profile, etc.)
70 
71             	@param rView
72                 The changed view
73              */
74             virtual void viewChanged( const UnoViewSharedPtr& rView ) = 0;
75 
76             /** Notify that all views changed.
77 
78                 Reasons for a viewChanged notification can be
79                 different view size, transformation, or other device
80                 properties (color resolution or profile, etc.)
81 
82                 Note that this method avoids hidden inefficiencies
83                 (O(n^2) behaviour when viewChanged() needs to perform
84                 linear searches)
85              */
86             virtual void viewsChanged() = 0;
87         };
88 
89         typedef ::boost::shared_ptr< ViewEventHandler > ViewEventHandlerSharedPtr;
90         typedef ::boost::weak_ptr< ViewEventHandler >   ViewEventHandlerWeakPtr;
91 
92     }
93 }
94 
95 #endif /* INCLUDED_SLIDESHOW_VIEWEVENTHANDLER_HXX */
96