1 //
2 //   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
3 //   Free Software Foundation, Inc
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18 
19 #ifndef GNASH_CONTROL_TAG_H
20 #define GNASH_CONTROL_TAG_H
21 
22 #include <boost/noncopyable.hpp>
23 #include "ref_counted.h"
24 
25 // Forward declarations
26 namespace gnash {
27     class MovieClip;
28     class DisplayList;
29 }
30 
31 namespace gnash {
32 namespace SWF {
33 
34 /// Control tags are swf tags that control the operation of the movie.
35 //
36 /// These are the events associated with a frame.
37 ///
38 /// TODO: check whether this needs to be ref_counted. They are generally owned
39 /// by a sprite_definition or a SWFMovieDefinition.
40 //
41 /// TODO: rename this class so it's not the same as the SWF spec. It doesn't
42 /// exactly correspond to the ControlTag defined there.
43 class ControlTag : public ref_counted, boost::noncopyable
44 {
45 public:
46 
47     /// Type of ControlTag
48     enum Type
49     {
50         TAG_ACTION = 1 << 0,
51         TAG_DLIST  = 1 << 1
52     };
53 
~ControlTag()54 	virtual ~ControlTag()
55 	{
56 	}
57 
58     /// Execute Action tags
59     //
60     /// Not all tags that have ActionScript code are considered Action tags.
executeActions(MovieClip *,DisplayList &)61     virtual void executeActions(MovieClip* /*m*/, DisplayList& /*dlist*/) const
62 	{
63 	}
64 
65 	/// Execute "state" or "DisplayList" tags
66 	//
67 	/// State tags exist to control the state of MovieClips along the timeline.
68     /// They are executed even for skipped frames so that the state is
69     /// consistent at each frame. Some tags are considered state tags even
70     /// though they only contain ActionScript, e.g. the DoInitAction tag.
executeState(MovieClip *,DisplayList &)71 	virtual void executeState(MovieClip* /*m*/,  DisplayList& /*dlist*/) const
72 	{
73 	}
74 
75 };
76 
77 } // namespace SWF
78 } // namespace gnash
79 
80 #endif
81 
82 
83 // Local Variables:
84 // mode: C++
85 // indent-tabs-mode: t
86 // End:
87