20 #ifndef GNASH_DISPLAY_OBJECT_H 21 #define GNASH_DISPLAY_OBJECT_H 32 #include <boost/noncopyable.hpp> 33 #include <boost/logic/tribool.hpp> 59 class movie_definition;
61 class InteractiveObject;
125 void copyMatrix(
const DisplayObject& from, DisplayObject& to);
135 SWFMatrix
getWorldMatrix(
const DisplayObject&
d,
bool includeRoot =
true);
195 static const int lowerAccessibleBound = -16384;
200 static const int upperAccessibleBound = 2130690044;
205 static const int staticDepthOffset = lowerAccessibleBound;
222 static const int removedDepthOffset = -32769;
230 static const int noClipDepthValue = -1000000;
237 assert(_parent !=
nullptr);
238 return _parent->get_environment();
285 int getWorldVolume()
const;
304 void setMatrix(
const SWFMatrix&
m,
bool updateCache =
false);
313 void set_x_scale(
double factor);
322 void set_y_scale(
double factor);
333 void set_rotation(
double rot);
342 virtual void setWidth(
double width);
354 if (_transform.colorTransform != cx) {
356 _transform.colorTransform = cx;
363 if (r != _ratio) set_invalidated();
392 return (m_clip_depth != noClipDepthValue && !_maskee);
412 #if GNASH_PARANOIA_LEVEL > 1 413 if (_mask) assert(_mask->_maskee ==
this);
442 std::unique_ptr<ExecutableCode> get_event_handler(
const event_id&
id)
const;
480 virtual SWFRect getBounds()
const = 0;
501 virtual bool pointInShape(std::int32_t
x, std::int32_t
y)
const = 0;
518 if (isDynamicMask() || isMaskLayer())
return false;
519 return pointInShape(x, y);
575 return ! _scriptTransformed && ! _dynamicallyCreated;
593 return _dynamicallyCreated;
598 _dynamicallyCreated =
true;
613 _scriptTransformed =
true;
620 void set_visible(
bool visible);
632 bool hasEventHandler(
const event_id&
id)
const;
649 if (
this != dragging &&
visible() && pointInVisibleShape(x, y)) {
663 return _child_invalidated;
692 void set_invalidated();
693 void set_invalidated(
const char* debug_file,
int debug_line);
706 void set_child_invalidated();
721 _invalidated =
false;
722 _child_invalidated =
false;
723 m_old_invalidated_ranges.setNull();
765 saveOriginalTarget();
782 virtual void getLoadedMovie(
Movie* newMovie);
801 virtual void destroy();
815 bool boundsInClippingArea(
Renderer& renderer)
const;
821 std::string getTargetPath()
const;
854 typedef tree<std::pair<std::string, std::string> > InfoTree;
864 virtual InfoTree::iterator getMovieInfo(InfoTree& tr,
865 InfoTree::iterator it);
873 BLENDMODE_UNDEFINED = 0,
874 BLENDMODE_NORMAL = 1,
887 BLENDMODE_HARDLIGHT = 14
900 typedef std::map<event_id, BufferList>
Events;
943 virtual void markReachableResources()
const;
993 _origTarget=getTarget();
998 return _event_handlers;
1001 void set_event_handlers(
const Events& copyfrom);
1044 Events _event_handlers;
1049 double _xscale, _yscale, _rotation;
1052 std::int32_t _depth;
1054 boost::tribool _focusRect;
1066 std::uint16_t _ratio;
1076 std::string _origTarget;
1089 bool _scriptTransformed;
1091 bool _dynamicallyCreated;
1112 bool _child_invalidated;
1162 return d ? d->
object() :
nullptr;
1172 #ifdef DEBUG_SET_INVALIDATED 1173 #define set_invalidated() set_invalidated(__FILE__, __LINE__) 1177 #endif // GNASH_CHARACTER_H void setCxForm(const SWFCxForm &cx)
Definition: DisplayObject.h:352
bool unloaded() const
Return true if this DisplayObject was unloaded from the stage.
Definition: DisplayObject.h:785
int get_clip_depth() const
Definition: DisplayObject.h:375
virtual bool pointInVisibleShape(std::int32_t x, std::int32_t y) const
true if the given point falls in this DisplayObject's visible shape
Definition: DisplayObject.h:515
void set_clip_depth(int d)
See get_clip_depth()
Definition: DisplayObject.h:378
Definition: DisplayObject.h:882
virtual void killFocus()
Some DisplayObjects require actions on losing focus.
Definition: DisplayObject.h:917
Definition: GnashKey.h:150
virtual bool handleFocus()
Set the current focus to this DisplayObject.
Definition: DisplayObject.h:910
SWFMatrix getWorldMatrix(const DisplayObject &d, bool includeRoot=true)
Get concatenated SWFMatrix (all ancestor transforms and our SWFMatrix)
Definition: DisplayObject.h:1131
bool childInvalidated() const
Return whether this DisplayObject has and invalidated child or not.
Definition: DisplayObject.h:662
Definition: DisplayObject.h:875
A MovieClip is a container for DisplayObjects.
Definition: MovieClip.h:83
bool getDisplayObjectProperty(DisplayObject &obj, const ObjectURI &uri, as_value &val)
DisplayObject property lookup.
Definition: DisplayObject.cpp:897
as_object * _object
Definition: Array_as.cpp:680
DisplayObject is the base class for all DisplayList objects.
Definition: DisplayObject.h:168
virtual bool unloadChildren()
Definition: DisplayObject.h:978
ActionScript value type.
Definition: as_value.h:94
std::map< event_id, BufferList > Events
Definition: DisplayObject.h:900
void transform(geometry::Point2d &p) const
Transform a given point by our SWFMatrix.
Definition: SWFMatrix.cpp:99
virtual void markOwnResources() const
Called by markReachableResources()
Definition: DisplayObject.h:948
virtual void update()
Notify a change in the DisplayObject's appearance.
Definition: DisplayObject.h:667
Definition: SWFMatrix.h:53
DisplayObject * parent() const
Return the parent of this DisplayObject, or NULL if the DisplayObject has no parent.
Definition: DisplayObject.h:252
bool isReferenceable(const DisplayObject &d)
Returns true if the DisplayObject is referenceable in ActionScript.
Definition: DisplayObject.h:1149
virtual const DisplayObject * findDropTarget(std::int32_t x, std::int32_t y, DisplayObject *dragging) const
Point coordinates in global twips.
Definition: DisplayObject.h:646
DisplayObject * getMask() const
Return the DisplayObject masking this instance (if any)
Definition: DisplayObject.h:410
double scaleX() const
Definition: DisplayObject.h:923
Definition: DisplayObject.h:877
bool isMaskLayer() const
Definition: DisplayObject.h:390
uri
Definition: test.py:12
Definition: DisplayObject.h:881
A top-level, standalone Movie that can be loaded and played.
Definition: Movie.h:46
std::uint16_t get_ratio() const
Definition: DisplayObject.h:360
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
Render a dynamic mask for a specified DisplayObject.
Definition: DisplayObject.h:968
int getVolume() const
Get sound volume for this DisplayObject.
Definition: DisplayObject.h:273
void clear_invalidated()
Definition: DisplayObject.h:720
void set_name(const ObjectURI &uri)
Set DisplayObject name, initializing the original target member.
Definition: DisplayObject.h:428
const ObjectURI & get_name() const
Definition: DisplayObject.h:432
BlendMode getBlendMode() const
Definition: DisplayObject.h:890
Definition: klash_part.cpp:329
virtual ~DisplayObject()
Definition: DisplayObject.h:184
virtual InteractiveObject * topmostMouseEntity(std::int32_t, std::int32_t)
DisplayObjects are not a mouse entity by default.
Definition: DisplayObject.h:637
bool invalidated() const
Return whether this DisplayObject has been invalidated or not.
Definition: DisplayObject.h:657
The base class for all ActionScript objects.
Definition: as_object.h:161
Definition: GnashKey.h:161
virtual int getDefinitionVersion() const
DisplayObjects can return the version of the SWF they were parsed from.
Definition: DisplayObject.h:288
Base class for render handlers.
Definition: Renderer.h:188
movie_root & stage() const
Get the movie_root to which this DisplayObject belongs.
Definition: DisplayObject.h:981
Definition: DisplayObject.h:876
SWFCxForm getWorldCxForm(const DisplayObject &d)
Get concatenated color transform of a DisplayObject.
Definition: DisplayObject.h:1141
virtual Movie * get_root() const
Return the relative root of this DisplayObject.
Definition: DisplayObject.h:531
void set_parent(DisplayObject *parent)
Set the parent of this DisplayObject.
Definition: DisplayObject.h:261
Definition: DisplayObject.h:879
A URI for describing as_objects.
Definition: ObjectURI.h:44
code
Definition: GnashKey.h:43
bool visible() const
Definition: DisplayObject.h:623
Definition: GnashKey.h:164
Definition: DisplayObject.h:880
std::vector< const action_buffer * > BufferList
Definition: DisplayObject.h:899
Provides information about timeline context.
Definition: as_environment.h:50
double rotation() const
Definition: DisplayObject.h:919
std::ostream & operator<<(std::ostream &o, const ShapeRecord &sh)
Definition: ShapeRecord.cpp:600
void setIndexedProperty(size_t index, DisplayObject &o, const as_value &val)
Set a property by its numeric index.
Definition: DisplayObject.cpp:853
Definition: klash_part.cpp:329
void getIndexedProperty(size_t index, DisplayObject &o, as_value &val)
Get a property by its numeric index.
Definition: DisplayObject.cpp:870
Definition: DisplayObject.h:885
double scaleY() const
Definition: DisplayObject.h:927
bool visible(const Property &prop, int version)
Is this member supposed to be visible by a VM of given version ?
Definition: Property.h:423
void set_depth(int d)
Definition: DisplayObject.h:270
virtual StaticText * getStaticText(std::vector< const SWF::TextRecord *> &, size_t &)
Search for StaticText objects.
Definition: DisplayObject.h:475
const Events & get_event_handlers() const
Definition: DisplayObject.h:996
std::int32_t x
Definition: BitmapData_as.cpp:434
void transformedByScript()
Call this function when the sprite has been transformed due to ActionScript code. ...
Definition: DisplayObject.h:611
const std::string & getOrigTarget() const
Definition: DisplayObject.h:829
void setVolume(int vol)
Set sound volume for this DisplayObject.
Definition: DisplayObject.h:276
#define DSOEXPORT
Definition: dsodefs.h:55
DisplayObject * _parent
Definition: DisplayObject.h:1006
bool isDestroyed() const
Return true if this DisplayObject was destroyed.
Definition: DisplayObject.h:807
void set_ratio(std::uint16_t r)
Definition: DisplayObject.h:362
bool setDisplayObjectProperty(DisplayObject &obj, const ObjectURI &uri, const as_value &val)
Set special properties.
Definition: DisplayObject.cpp:961
bool isDynamic() const
Was this DisplayObject dynamically created ?
Definition: DisplayObject.h:592
bool pointInBounds(std::int32_t x, std::int32_t y) const
Return true if the given point falls in this DisplayObject's bounds.
Definition: DisplayObject.h:488
bool isDynamicMask() const
Definition: DisplayObject.h:404
void setBlendMode(BlendMode bm)
Definition: DisplayObject.h:894
The base class for interactive objects.
Definition: InteractiveObject.h:44
virtual as_environment & get_environment()
Return a reference to the variable scope of this DisplayObject.
Definition: DisplayObject.h:233
Definition: DisplayObject.h:886
BlendMode
Definition: DisplayObject.h:871
const SWFCxForm & getCxForm(const DisplayObject &o)
Definition: DisplayObject.h:1125
std::int32_t y
Definition: BitmapData_as.cpp:435
Definition: DisplayObject.h:884
Static text fields, SWF-defined with read-only text.
Definition: StaticText.h:43
as_object * object() const
Definition: DisplayObject.h:931
Rectangle class, see swf defined rectangle record.
Definition: SWFRect.h:44
const Transform & transform() const
Definition: DisplayObject.h:292
virtual void construct(as_object *=nullptr)
Callback invoked whenever a DisplayObject is placed on stage.
Definition: DisplayObject.h:763
#define DSOTEXPORT
Definition: dsodefs.h:63
const SWFMatrix & getMatrix(const DisplayObject &o)
Get local transform SWFMatrix for this DisplayObject.
Definition: DisplayObject.h:1119
Definition: DisplayObject.h:883
virtual bool isSelectableTextField() const
Return true if this DisplayObject is a selectable TextField.
Definition: DisplayObject.h:845
void copyMatrix(const DisplayObject &from, DisplayObject &to)
Copy SWFMatrix and caches from given DisplayObjecta.
Definition: GnashKey.h:159
A class to identify 'static' SWF events (system events).
Definition: event_id.h:52
void concatenate(const SWFMatrix &m)
Concatenate m's transform onto ours.
Definition: SWFMatrix.cpp:148
InvalidatedRanges m_old_invalidated_ranges
Bounds of this DisplayObject instance before first invalidation since last call to clear_invalidated(...
Definition: DisplayObject.h:1029
Collectable resource.
Definition: GC.h:74
virtual void omit_display()
Definition: DisplayObject.h:750
void saveOriginalTarget()
Definition: DisplayObject.h:991
virtual void visitNonProperties(KeyVisitor &) const
Enumerate any non-proper properties.
Definition: DisplayObject.h:247
boost::tribool focusRect() const
Definition: DisplayObject.h:950
void focusRect(boost::tribool focus)
Definition: DisplayObject.h:954
A code segment.
Definition: action_buffer.h:49
bool get_accept_anim_moves() const
Return true if PlaceObjects tag are allowed to move this DisplayObject.
Definition: DisplayObject.h:573
Parameters/environment for builtin or user-defined functions callable from ActionScript.
Definition: fn_call.h:117
Definition: DisplayObject.h:878
bool point_test(std::int32_t x, std::int32_t y) const
Return true if the given point is inside this SWFRect.
Definition: SWFRect.h:143
An abstract key visitor.
Definition: PropertyList.h:58
std::size_t key
Definition: string_table.h:83
void setHeight(DisplayObject &o, const as_value &val)
Definition: DisplayObject.cpp:365
Definition: GnashKey.h:331
void setDynamic()
Mark this DisplayObject as dynamically created.
Definition: DisplayObject.h:597
as_object * getObject(const DisplayObject *d)
Return the as_object associated with a DisplayObject if it exists.
Definition: DisplayObject.h:1160
virtual MovieClip * to_movie()
Definition: DisplayObject.h:266
int get_depth() const
Definition: DisplayObject.h:268
ObjectURI _name
Name of this DisplayObject (if any)
Definition: DisplayObject.h:1004
This class represents the 'Stage' and top-level movie.
Definition: movie_root.h:150