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