Panda3D
Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends

MouseWatcherGroup Class Reference

This represents a collection of MouseWatcherRegions that may be managed as a group. More...

#include "mouseWatcherGroup.h"

Inheritance diagram for MouseWatcherGroup:
ReferenceCount MemoryBase MouseWatcher PGMouseWatcherGroup

List of all members.

Public Member Functions

void add_region (MouseWatcherRegion *region)
 Adds the indicated region to the set of regions in the group.
void clear_regions ()
 Removes all the regions from the group.
MouseWatcherRegionfind_region (const string &name) const
 Returns a pointer to the first region found with the indicated name.
int get_num_regions () const
 Returns the number of regions in the group.
int get_ref_count () const
 Returns the current reference count.
MouseWatcherRegionget_region (int n) const
 Returns the nth region of the group; returns NULL if there is no nth region.
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object.
bool has_region (MouseWatcherRegion *region) const
 Returns true if the indicated region has already been added to the MouseWatcherGroup, false otherwise.
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.
void hide_regions ()
 Stops the visualization created by a previous call to show_regions().
bool is_sorted () const
 Returns true if the group has already been sorted, false otherwise.
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.
 MAKE_SEQ (get_regions, get_num_regions, get_region)
void operator delete (void *ptr, void *)
void operator delete (void *ptr)
void operator delete[] (void *ptr)
void operator delete[] (void *, void *)
void * operator new (size_t size)
void * operator new (size_t size, void *ptr)
void * operator new[] (size_t size, void *ptr)
void * operator new[] (size_t size)
void output (ostream &out) const
void ref () const
 Explicitly increments the reference count.
bool remove_region (MouseWatcherRegion *region)
 Removes the indicated region from the group.
void set_color (const Colorf &color)
 Specifies the color used to draw the region rectangles for the regions visualized by show_regions().
void show_regions (const NodePath &render2d, const string &bin_name, int draw_order)
 Enables the visualization of all of the regions handled by this MouseWatcherGroup.
void sort_regions ()
 Sorts all the regions in this group into pointer order.
bool test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus.
bool test_ref_count_nonzero () const
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus.
virtual bool unref () const
 Explicitly decrements the reference count.
void update_regions ()
 Refreshes the visualization created by show_regions().
void weak_ref (WeakPointerToVoid *ptv)
 Adds the indicated PointerToVoid as a weak reference to this object.
void weak_unref (WeakPointerToVoid *ptv)
 Removes the indicated PointerToVoid as a weak reference to this object.
void write (ostream &out, int indent_level=0) const

Static Public Member Functions

static TypeHandle get_class_type ()
static void init_type ()

Protected Types

typedef pvector< PT(MouseWatcherRegion) > Regions

Protected Member Functions

virtual void do_hide_regions ()
 The protected implementation of hide_regions().
bool do_remove_region (MouseWatcherRegion *region)
 The internal implementation of remove_region(); assumes the lock is already held.
virtual void do_show_regions (const NodePath &render2d, const string &bin_name, int draw_order)
 The protected implementation of show_regions().
void do_sort_regions ()
 Sorts all the regions in this group into pointer order.
bool do_test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus.
bool do_test_ref_count_nonzero () const
 Returns true if the reference count is nonzero, false otherwise.
void do_update_regions ()
 Internally regenerates the show_regions() visualization.

Protected Attributes

LightMutex _lock
Regions _regions
bool _sorted

Friends

class BlobWatcher
class MouseWatcher

Detailed Description

This represents a collection of MouseWatcherRegions that may be managed as a group.

Definition at line 32 of file mouseWatcherGroup.h.


Member Function Documentation

void MouseWatcherGroup::add_region ( MouseWatcherRegion region)

Adds the indicated region to the set of regions in the group.

It is an error to add the same region to the set more than once.

Definition at line 55 of file mouseWatcherGroup.cxx.

void MouseWatcherGroup::clear_regions ( )

Removes all the regions from the group.

Definition at line 146 of file mouseWatcherGroup.cxx.

References NodePath::node(), and PandaNode::remove_all_children().

void MouseWatcherGroup::do_hide_regions ( ) [protected, virtual]

The protected implementation of hide_regions().

This assumes the lock is already held.

Reimplemented in MouseWatcher.

Definition at line 383 of file mouseWatcherGroup.cxx.

References NodePath::remove_node().

Referenced by do_show_regions(), hide_regions(), MouseWatcher::remove_group(), and MouseWatcher::replace_group().

bool MouseWatcherGroup::do_remove_region ( MouseWatcherRegion region) [protected]

The internal implementation of remove_region(); assumes the lock is already held.

Definition at line 323 of file mouseWatcherGroup.cxx.

References NodePath::node(), and PandaNode::remove_child().

Referenced by remove_region(), and MouseWatcher::remove_region().

void MouseWatcherGroup::do_show_regions ( const NodePath render2d,
const string &  bin_name,
int  draw_order 
) [protected, virtual]

The protected implementation of show_regions().

This assumes the lock is already held.

Reimplemented in MouseWatcher.

Definition at line 365 of file mouseWatcherGroup.cxx.

References NodePath::attach_new_node(), do_hide_regions(), do_update_regions(), and NodePath::set_bin().

Referenced by MouseWatcher::replace_group(), and show_regions().

void MouseWatcherGroup::do_sort_regions ( ) [protected]

Sorts all the regions in this group into pointer order.

Assumes the lock is already held.

Definition at line 309 of file mouseWatcherGroup.cxx.

Referenced by MouseWatcher::remove_group(), MouseWatcher::replace_group(), and sort_regions().

bool ReferenceCount::do_test_ref_count_integrity ( ) const [protected, inherited]

Does some easy checks to make sure that the reference count isn't completely bogus.

Returns true if ok, false otherwise.

Reimplemented in NodeReferenceCount, CachedTypedWritableReferenceCount, and NodeCachedReferenceCount.

Definition at line 29 of file referenceCount.cxx.

Referenced by ReferenceCount::do_test_ref_count_nonzero(), and ReferenceCount::test_ref_count_integrity().

bool ReferenceCount::do_test_ref_count_nonzero ( ) const [protected, inherited]

Returns true if the reference count is nonzero, false otherwise.

Definition at line 56 of file referenceCount.cxx.

References ReferenceCount::do_test_ref_count_integrity().

Referenced by ReferenceCount::test_ref_count_nonzero().

void MouseWatcherGroup::do_update_regions ( ) [protected]

Internally regenerates the show_regions() visualization.

Assumes the lock is already held.

Definition at line 399 of file mouseWatcherGroup.cxx.

References LightMutexDirect::debug_is_locked(), NodePath::node(), and PandaNode::remove_all_children().

Referenced by do_show_regions(), MouseWatcher::replace_group(), set_color(), and update_regions().

MouseWatcherRegion * MouseWatcherGroup::find_region ( const string &  name) const

Returns a pointer to the first region found with the indicated name.

If multiple regions share the same name, the one that is returned is indeterminate.

Definition at line 126 of file mouseWatcherGroup.cxx.

int MouseWatcherGroup::get_num_regions ( ) const

Returns the number of regions in the group.

Definition at line 191 of file mouseWatcherGroup.cxx.

int ReferenceCount::get_ref_count ( ) const [inline, inherited]
MouseWatcherRegion * MouseWatcherGroup::get_region ( int  n) const

Returns the nth region of the group; returns NULL if there is no nth region.

Note that this is not thread-safe; another thread might have removed the nth region before you called this method.

Definition at line 206 of file mouseWatcherGroup.cxx.

WeakReferenceList * ReferenceCount::get_weak_list ( ) const [inline, inherited]

Returns the WeakReferenceList associated with this ReferenceCount object.

If there has never been a WeakReferenceList associated with this object, creates one now.

Definition at line 307 of file referenceCount.I.

Referenced by ReferenceCount::weak_ref().

bool MouseWatcherGroup::has_region ( MouseWatcherRegion region) const

Returns true if the indicated region has already been added to the MouseWatcherGroup, false otherwise.

Definition at line 89 of file mouseWatcherGroup.cxx.

bool ReferenceCount::has_weak_list ( ) const [inline, inherited]

Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.

In general, this will be true if there was ever a WeakPointerTo created for this object (even if there is not any for it now).

Definition at line 294 of file referenceCount.I.

Referenced by ReferenceCount::weak_unref().

void MouseWatcherGroup::hide_regions ( )

Stops the visualization created by a previous call to show_regions().

Definition at line 281 of file mouseWatcherGroup.cxx.

References do_hide_regions().

Referenced by MouseWatcher::do_hide_regions().

bool MouseWatcherGroup::is_sorted ( ) const

Returns true if the group has already been sorted, false otherwise.

Definition at line 179 of file mouseWatcherGroup.cxx.

void ReferenceCount::local_object ( ) [inline, inherited]

This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.

This allows the object to be passed to functions that will increment and decrement the object's reference count temporarily, and it will prevent the object from being deleted (inappropriately), when the reference count returns to zero. It actually achieves this by setting a large positive value in the reference count field.

Definition at line 276 of file referenceCount.I.

Referenced by PGTop::cull_callback(), BoundingSphere::extend_by_hexahedron(), AsyncTaskManager::find_task(), AsyncTaskManager::find_tasks(), and AsyncTaskManager::find_tasks_matching().

void ReferenceCount::ref ( ) const [inline, inherited]

Explicitly increments the reference count.

User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.

This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.

Definition at line 179 of file referenceCount.I.

References ReferenceCount::test_ref_count_integrity().

Referenced by CachedTypedWritableReferenceCount::cache_ref(), TypedWritable::decode_raw_from_bam_stream(), NodeCachedReferenceCount::node_ref(), NodeReferenceCount::node_ref(), BamCacheRecord::set_data(), CullableObject::set_draw_callback(), and ModelRoot::set_reference().

bool MouseWatcherGroup::remove_region ( MouseWatcherRegion region)

Removes the indicated region from the group.

Returns true if it was successfully removed, or false if it wasn't there in the first place.

Reimplemented in MouseWatcher.

Definition at line 113 of file mouseWatcherGroup.cxx.

References do_remove_region().

void MouseWatcherGroup::set_color ( const Colorf color)

Specifies the color used to draw the region rectangles for the regions visualized by show_regions().

Definition at line 265 of file mouseWatcherGroup.cxx.

References do_update_regions().

void MouseWatcherGroup::show_regions ( const NodePath render2d,
const string &  bin_name,
int  draw_order 
)

Enables the visualization of all of the regions handled by this MouseWatcherGroup.

The supplied NodePath should be the root of the 2-d scene graph for the window.

Definition at line 250 of file mouseWatcherGroup.cxx.

References do_show_regions().

Referenced by MouseWatcher::add_group(), and MouseWatcher::do_show_regions().

void MouseWatcherGroup::sort_regions ( )

Sorts all the regions in this group into pointer order.

Definition at line 167 of file mouseWatcherGroup.cxx.

References do_sort_regions().

bool ReferenceCount::test_ref_count_integrity ( ) const [inline, inherited]
bool ReferenceCount::test_ref_count_nonzero ( ) const [inline, inherited]

Does some easy checks to make sure that the reference count isn't zero, or completely bogus.

Returns true if ok, false otherwise.

Definition at line 252 of file referenceCount.I.

References ReferenceCount::do_test_ref_count_nonzero().

Referenced by CopyOnWritePointer::test_ref_count_nonzero().

bool ReferenceCount::unref ( ) const [inline, virtual, inherited]

Explicitly decrements the reference count.

Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic.) However, see the helper function unref_delete().

User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.

This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.

The return value is true if the new reference count is nonzero, false if it is zero.

Reimplemented in GeomVertexArrayFormat, GeomVertexFormat, InternalName, RenderAttrib, RenderEffects, RenderState, and TransformState.

Definition at line 214 of file referenceCount.I.

References ReferenceCount::test_ref_count_integrity().

Referenced by CachedTypedWritableReferenceCount::cache_unref(), TypedWritable::decode_raw_from_bam_stream(), RenderEffect::finalize(), NodeCachedReferenceCount::node_unref(), NodeReferenceCount::node_unref(), TransformState::unref(), RenderState::unref(), RenderEffects::unref(), RenderAttrib::unref(), InternalName::unref(), GeomVertexFormat::unref(), and GeomVertexArrayFormat::unref().

void MouseWatcherGroup::update_regions ( )

Refreshes the visualization created by show_regions().

Definition at line 295 of file mouseWatcherGroup.cxx.

References do_update_regions().

void ReferenceCount::weak_ref ( WeakPointerToVoid ptv) [inline, inherited]

Adds the indicated PointerToVoid as a weak reference to this object.

Definition at line 321 of file referenceCount.I.

References WeakReferenceList::add_reference(), and ReferenceCount::get_weak_list().

void ReferenceCount::weak_unref ( WeakPointerToVoid ptv) [inline, inherited]

Removes the indicated PointerToVoid as a weak reference to this object.

It must have previously been added via a call to weak_ref().

Definition at line 334 of file referenceCount.I.

References WeakReferenceList::clear_reference(), and ReferenceCount::has_weak_list().


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations