This file is indexed.

/usr/include/gnash/asobj/InteractiveObject.h is in gnash-dev 0.8.11~git20160109-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
// 
//   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
//   Free Software Foundation, Inc
// 
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
// 
// This program 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 General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

#ifndef GNASH_INTERACTIVE_DISPLAY_OBJECT_H
#define GNASH_INTERACTIVE_DISPLAY_OBJECT_H

#include <vector>
#include <cassert>

#include "DisplayObject.h" // for inheritance
#include "log.h"
#include "as_object.h" // for getRoot()

namespace gnash {
    class StaticText;
    namespace SWF {
        class TextRecord;
    }
}

namespace gnash {

/// The base class for interactive objects.
//
/// Objects of type InteractiveObject can receive focus, mouse events,
/// and key events for user interaction.
//
/// Derived classes include TextField, Button, and MovieClip.
class InteractiveObject : public DisplayObject
{

public:

	InteractiveObject(as_object* object, DisplayObject* parent)
		:
		DisplayObject(getRoot(*object), object, parent)
	{
        // It's a bit too late for this assertion as we've already
        // deferenced it. All InteractiveObjects are AS-referenceable,
        // so they must have an object.
        assert(object);
	}

    virtual ~InteractiveObject() {}

    /// Render this InteractiveObject
	virtual void display(Renderer& renderer, const Transform& xform) = 0;

    /// Whether the DisplayObject can handle a mouse event.
    //
    /// @return     true if the DisplayObject can handle mouse
    ///             events
	virtual bool mouseEnabled() const = 0;

    /// ActionScript property of Buttons and MovieClips altering mouse handling
    virtual bool trackAsMenu() {
        return false;
    }

    /// Allow extraction of static text.
    //
    /// Default returns 0, implemented only for DefineText though
    /// DisplayObject.
    virtual StaticText* getStaticText(std::vector<const SWF::TextRecord*>&,
            size_t&) {
        return nullptr;
    }

    /// Returns local, untransformed bounds of this DisplayObject in TWIPS
    //
    /// Container DisplayObjects (sprite and buttons) return the composite
    /// bounds of all their children, appropriately transformed with
    /// their local SWFMatrix.
    virtual SWFRect getBounds() const = 0;

    /// \brief
    /// Return the topmost entity covering the given point
    /// and enabled to receive mouse events.
    //
    /// Return NULL if no "active" entity is found under the pointer.
    ///
    /// Coordinates of the point are given in parent's coordinate space.
    /// This means that in order to convert the point to the local coordinate
    /// space you need to apply an inverse transformation using this
    /// DisplayObject SWFMatrix. Example:
    ///
    /// point p(x,y);
    /// getMatrix().transform_by_inverse(p);
    /// -- p is now in local coordinates
    ///
    /// Don't blame me for this mess, I'm just trying to document the existing
    /// functions ... --strk
    ///
    /// @param x
    ///     X ordinate of the pointer, in parent's coordinate space.
    ///
    /// @param y
    ///     Y ordinate of the pointer, in parent's coordiante space.
    ///
    virtual InteractiveObject* topmostMouseEntity(std::int32_t /*x*/,
            std::int32_t /*y*/) = 0;

    /// Called whenever a mouse event affects this InteractiveObject.
    //
    /// All InteractiveObjects (Button, MovieClip, TextField) can handle
    /// mouse input, so must override this function.
    virtual void mouseEvent(const event_id& id) = 0;

    /// Return true if the given point falls in this DisplayObject's shape
    //
    /// Point coordinates are in world TWIPS
    ///
    /// The default implementation warns about a missing
    /// override and invokes pointInBounds().
    ///
    ///
    virtual bool pointInShape(std::int32_t x, std::int32_t y) const
    {
        log_error("Character %s did not override pointInShape() - "
                "using pointInBounds() instead", typeid(*this).name());
        return pointInBounds(x, y);
    }

	void add_invalidated_bounds(InvalidatedRanges& ranges, bool force) = 0;

};


} // namespace gnash


#endif 


// Local Variables:
// mode: C++
// indent-tabs-mode: t
// End: