| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  | /*************************************************************************
 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:03:23 +00:00
										 |  |  |  *  OpenOffice.org - a multi-platform office productivity suite | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:03:23 +00:00
										 |  |  |  *  $RCSfile: activitiesqueue.hxx,v $ | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2007-07-17 14:01:06 +00:00
										 |  |  |  *  $Revision: 1.8 $ | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2007-07-17 14:01:06 +00:00
										 |  |  |  *  last change: $Author: obo $ $Date: 2007-07-17 15:01:06 $ | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:03:23 +00:00
										 |  |  |  *  The Contents of this file are made available subject to | 
					
						
							|  |  |  |  *  the terms of GNU Lesser General Public License Version 2.1. | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:03:23 +00:00
										 |  |  |  *    GNU Lesser General Public License Version 2.1 | 
					
						
							|  |  |  |  *    ============================================= | 
					
						
							|  |  |  |  *    Copyright 2005 by Sun Microsystems, Inc. | 
					
						
							|  |  |  |  *    901 San Antonio Road, Palo Alto, CA 94303, USA | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:03:23 +00:00
										 |  |  |  *    This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  *    modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  |  *    License version 2.1, as published by the Free Software Foundation. | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:03:23 +00:00
										 |  |  |  *    This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  |  *    Lesser General Public License for more details. | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:03:23 +00:00
										 |  |  |  *    You should have received a copy of the GNU Lesser General Public | 
					
						
							|  |  |  |  *    License along with this library; if not, write to the Free Software | 
					
						
							|  |  |  |  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 
					
						
							|  |  |  |  *    MA  02111-1307  USA | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  ************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-07-17 14:01:06 +00:00
										 |  |  | #ifndef INCLUDED_SLIDESHOW_ACTIVITIESQUEUE_HXX
 | 
					
						
							|  |  |  | #define INCLUDED_SLIDESHOW_ACTIVITIESQUEUE_HXX
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-30 07:09:09 +00:00
										 |  |  | #include <deque>
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-12-13 14:50:23 +00:00
										 |  |  | #include "activity.hxx"
 | 
					
						
							|  |  |  | #include "unoviewcontainer.hxx"
 | 
					
						
							| 
									
										
										
										
											2005-03-10 12:53:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-12-13 14:50:23 +00:00
										 |  |  | #include <canvas/elapsedtime.hxx>
 | 
					
						
							| 
									
										
										
										
											2005-03-10 12:53:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <boost/shared_ptr.hpp>
 | 
					
						
							|  |  |  | #include <boost/utility.hpp> // for boost::noncopyable
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Definition of ActivitiesQueue class */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-12-13 14:50:23 +00:00
										 |  |  | namespace slideshow | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  | { | 
					
						
							|  |  |  |     namespace internal | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         /** This class handles the XSprite updates needed for
 | 
					
						
							|  |  |  |             animations, such as moves, scales etc. You can add | 
					
						
							|  |  |  |             activity objects to this class, which are called in a | 
					
						
							|  |  |  |             round-robin fashion. | 
					
						
							|  |  |  |         */ | 
					
						
							| 
									
										
										
										
											2005-03-10 12:53:27 +00:00
										 |  |  |         class ActivitiesQueue : private ::boost::noncopyable | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |         { | 
					
						
							|  |  |  |         public: | 
					
						
							|  |  |  |             /** Create an ActivitiesQueue.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-10 12:53:27 +00:00
										 |  |  |                 @param pPresTimer | 
					
						
							|  |  |  |                 Pointer to global presentation timer. Used for | 
					
						
							|  |  |  |                 adjusting and holding global presentation time. | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |              */ | 
					
						
							| 
									
										
										
										
											2005-03-10 12:53:27 +00:00
										 |  |  |             ActivitiesQueue( | 
					
						
							| 
									
										
										
										
											2007-07-17 14:01:06 +00:00
										 |  |  |                 const ::boost::shared_ptr< ::canvas::tools::ElapsedTime >&  pPresTimer ); | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |             ~ActivitiesQueue(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             /** Add the given activity to the queue.
 | 
					
						
							|  |  |  |              */ | 
					
						
							| 
									
										
										
										
											2005-03-30 07:09:09 +00:00
										 |  |  |             bool addActivity( const ActivitySharedPtr& pActivity ); | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             /** Process the activities queue.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 This method performs the smallest atomic processing | 
					
						
							|  |  |  |                 possible on the queue (typically, this means one | 
					
						
							|  |  |  |                 activity get processed). | 
					
						
							|  |  |  |              */ | 
					
						
							|  |  |  |             void process(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-07-17 14:01:06 +00:00
										 |  |  |             /** Call all dequeued activities' dequeued() method
 | 
					
						
							|  |  |  |              */ | 
					
						
							|  |  |  |             void processDequeued(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |             /** Query state of the queue
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 @return false, if queue is empty, true otherwise | 
					
						
							|  |  |  |              */ | 
					
						
							| 
									
										
										
										
											2006-02-09 13:48:56 +00:00
										 |  |  |             bool isEmpty() const; | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             /** Remove all pending activities from the queue.
 | 
					
						
							|  |  |  |              */ | 
					
						
							|  |  |  |             void clear(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-10 12:53:27 +00:00
										 |  |  |             /** Gets the queue's timer object.
 | 
					
						
							|  |  |  |              */ | 
					
						
							|  |  |  |             ::boost::shared_ptr< ::canvas::tools::ElapsedTime > const & | 
					
						
							|  |  |  |             getTimer() const { return mpTimer; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |         private: | 
					
						
							| 
									
										
										
										
											2005-03-10 12:53:27 +00:00
										 |  |  |             ::boost::shared_ptr< ::canvas::tools::ElapsedTime > mpTimer; | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-30 07:09:09 +00:00
										 |  |  |             typedef ::std::deque< ActivitySharedPtr > ActivityQueue; | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             ActivityQueue           maCurrentActivitiesWaiting;  // currently running
 | 
					
						
							|  |  |  |                                                                  // activities, that still
 | 
					
						
							|  |  |  |                                                                  // await processing for this
 | 
					
						
							|  |  |  |                                                                  // round
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             ActivityQueue           maCurrentActivitiesReinsert;    // currently running
 | 
					
						
							|  |  |  |                                                                       // activities, that are
 | 
					
						
							|  |  |  |                                                                       // already processed for
 | 
					
						
							|  |  |  |                                                                       // this round, and wants
 | 
					
						
							|  |  |  |                                                                     // to be reinserted next
 | 
					
						
							|  |  |  |                                                                     // round
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-07-17 14:01:06 +00:00
										 |  |  |             ActivityQueue           maDequeuedActivities; // This list collects all activities which did not request
 | 
					
						
							|  |  |  |                                                           // a reinsertion. After the screen update has been
 | 
					
						
							|  |  |  |                                                           // performed, those are notified via dequeued(). This
 | 
					
						
							|  |  |  |                                                           // facilitates cleanup actions taking place _after_ the
 | 
					
						
							|  |  |  |                                                           // current frame has been displayed.
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:11:35 +00:00
										 |  |  |         }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2007-07-17 14:01:06 +00:00
										 |  |  | #endif /* INCLUDED_SLIDESHOW_ACTIVITIESQUEUE_HXX */
 |