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

WinGraphicsPipe Class Reference

This is an abstract base class for wglGraphicsPipe and wdxGraphicsPipe; that is, those graphics pipes that are specialized for working with Microsoft Windows. More...

#include "winGraphicsPipe.h"

Inheritance diagram for WinGraphicsPipe:
GraphicsPipe TypedReferenceCount TypedObject ReferenceCount MemoryBase MemoryBase wdxGraphicsPipe8 wdxGraphicsPipe9 wglGraphicsPipe

List of all members.

Public Types

enum  BufferCreationFlags {
  BF_refuse_parasite = 0x0001, BF_require_parasite = 0x0002, BF_refuse_window = 0x0004, BF_require_window = 0x0008,
  BF_can_bind_color = 0x0040, BF_can_bind_every = 0x0080, BF_resizeable = 0x0100, BF_size_track_host = 0x0200,
  BF_rtt_cumulative = 0x0400, BF_fb_props_optional = 0x0800, BF_size_square = 0x1000, BF_size_power_2 = 0x2000
}
enum  OutputTypes { OT_window = 0x0001, OT_fullscreen_window = 0x0002, OT_buffer = 0x0004, OT_texture_buffer = 0x0008 }
enum  PreferredWindowThread { PWT_app, PWT_draw }

Public Member Functions

TypedObjectas_typed_object ()
 Returns the object, upcast (if necessary) to a TypedObject pointer.
const TypedObjectas_typed_object () const
 Returns the object, upcast (if necessary) to a TypedObject pointer.
virtual TypeHandle force_init_type ()
int get_best_parent_from_Set (const std::set< int > &) const
GraphicsDeviceget_device () const
 Returns a pointer to device object.
int get_display_height () const
 Returns the height of the entire display, if it is known.
DisplayInformationget_display_information ()
 Gets the pipe's DisplayInformation.
int get_display_width () const
 Returns the width of the entire display, if it is known.
virtual string get_interface_name () const =0
virtual PreferredWindowThread get_preferred_window_thread () const
 Returns an indication of the thread in which this GraphicsPipe requires its window processing to be performed: typically either the app thread (e.g.
int get_ref_count () const
 Returns the current reference count.
int get_supported_types () const
 Returns the mask of bits that represents the kinds of GraphicsOutput objects this pipe might be able to successfully create.
virtual TypeHandle get_type () const
int get_type_index () const
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object.
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.
bool is_exact_type (TypeHandle handle) const
 Returns true if the current object is the indicated type exactly.
bool is_of_type (TypeHandle handle) const
 Returns true if the current object is or derives from the indicated type.
bool is_valid () const
 Returns false if this pipe is known to be invalid, meaning that an attempt to create a GraphicsWindow with the pipe will certainly fail.
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.
virtual void lookup_cpu_data ()
 Looks up the detailed CPU information and stores it in _display_information, if supported by the OS.
void operator delete (void *ptr)
void operator delete (void *ptr, void *)
void operator delete (void *ptr)
void operator delete (void *ptr, void *)
void operator delete[] (void *ptr)
void operator delete[] (void *ptr)
void operator delete[] (void *, void *)
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 * 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)
virtual PT (GraphicsDevice) make_device(void *scrn
void ref () const
 Explicitly increments the reference count.
bool supports_type (int flags) const
 A convenience function to ask if a particular type or types of GraphicsObjects are supported.
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 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.

Static Public Member Functions

static TypeHandle get_class_type ()
static void init_type ()
 This function is declared non-inline to work around a compiler bug in g++ 2.96.

Protected Member Functions

virtual void close_gsg (GraphicsStateGuardian *gsg)
 This will be called in the draw thread (the same thread in which the GSG was created via make_gsg, above) to close the indicated GSG and free its associated graphics objects just before it is destructed.
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.
virtual PT (GraphicsOutput) make_output(const string &name
 PT (GraphicsDevice) _device

Protected Attributes

int _display_height
DisplayInformation_display_information
int _display_width
bool _is_valid
LightMutex _lock
int _supported_types
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
engine
virtual const
FrameBufferProperties
fb_prop
virtual const
FrameBufferProperties const
WindowProperties int 
flags
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
GraphicsStateGuardian
gsg
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
GraphicsStateGuardian
GraphicsOutput
host
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
GraphicsStateGuardian
GraphicsOutput int bool & 
precertify
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
GraphicsStateGuardian
GraphicsOutput int 
retry
virtual const
FrameBufferProperties const
WindowProperties
win_prop

Static Protected Attributes

static const int strip_properties []

Friends

class WinGraphicsWindow

Detailed Description

This is an abstract base class for wglGraphicsPipe and wdxGraphicsPipe; that is, those graphics pipes that are specialized for working with Microsoft Windows.

There isn't much code here, since most of the fancy stuff is handled in WinGraphicsWindow. You could make a case that we don't even need a WinGraphicsPipe class at all, but it is provided mainly for completeness.

Definition at line 35 of file winGraphicsPipe.h.


Member Function Documentation

TypedObject * TypedObject::as_typed_object ( ) [inline, inherited]

Returns the object, upcast (if necessary) to a TypedObject pointer.

Definition at line 99 of file typedObject.I.

const TypedObject * TypedObject::as_typed_object ( ) const [inline, inherited]

Returns the object, upcast (if necessary) to a TypedObject pointer.

Definition at line 110 of file typedObject.I.

void GraphicsPipe::close_gsg ( GraphicsStateGuardian gsg) [protected, virtual, inherited]

This will be called in the draw thread (the same thread in which the GSG was created via make_gsg, above) to close the indicated GSG and free its associated graphics objects just before it is destructed.

This method exists to provide a hook for the graphics pipe to do any necessary cleanup, if any.

Definition at line 115 of file graphicsPipe.cxx.

References GraphicsStateGuardian::close_gsg().

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().

GraphicsDevice * GraphicsPipe::get_device ( ) const [inline, inherited]

Returns a pointer to device object.

Definition at line 102 of file graphicsPipe.I.

Referenced by wdxGraphicsWindow9::open_window(), and wdxGraphicsWindow8::open_window().

int GraphicsPipe::get_display_height ( ) const [inline, inherited]

Returns the height of the entire display, if it is known.

This may return 0. See the caveats for get_display_width().

Definition at line 92 of file graphicsPipe.I.

Referenced by x11GraphicsWindow::set_properties_now(), and eglGraphicsWindow::set_properties_now().

DisplayInformation * GraphicsPipe::get_display_information ( ) [inherited]

Gets the pipe's DisplayInformation.

Definition at line 147 of file graphicsPipe.cxx.

int GraphicsPipe::get_display_width ( ) const [inline, inherited]

Returns the width of the entire display, if it is known.

This may return 0. This is not a guarantee that windows (particularly fullscreen windows) may not be created larger than this width, but it is intended to provide a hint to the application.

Definition at line 80 of file graphicsPipe.I.

Referenced by x11GraphicsWindow::set_properties_now(), and eglGraphicsWindow::set_properties_now().

GraphicsPipe::PreferredWindowThread GraphicsPipe::get_preferred_window_thread ( ) const [virtual, inherited]

Returns an indication of the thread in which this GraphicsPipe requires its window processing to be performed: typically either the app thread (e.g.

X) or the draw thread (Windows).

Reimplemented in eglGraphicsPipe, IPhoneGraphicsPipe, osxGraphicsPipe, and x11GraphicsPipe.

Definition at line 86 of file graphicsPipe.cxx.

int ReferenceCount::get_ref_count ( ) const [inline, inherited]
int GraphicsPipe::get_supported_types ( ) const [inline, inherited]

Returns the mask of bits that represents the kinds of GraphicsOutput objects this pipe might be able to successfully create.

The return value is the union of bits in GraphicsPipe::OutputTypes that represents the set of GraphicsOutput types.

A 1 bit in a particular position is not a guarantee of success, but a 0 bit is a guarantee of failure.

Definition at line 47 of file graphicsPipe.I.

int TypedObject::get_type_index ( ) const [inline, inherited]

Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.

This is equivalent to get_type().get_index().

Definition at line 52 of file typedObject.I.

References TypeHandle::get_index().

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 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().

static void WinGraphicsPipe::init_type ( ) [inline, static]

This function is declared non-inline to work around a compiler bug in g++ 2.96.

Making it inline seems to cause problems in the optimizer.

Reimplemented from GraphicsPipe.

Reimplemented in wdxGraphicsPipe8, wdxGraphicsPipe9, and wglGraphicsPipe.

Definition at line 51 of file winGraphicsPipe.h.

References GraphicsPipe::init_type().

Referenced by wglGraphicsPipe::init_type(), wdxGraphicsPipe9::init_type(), and wdxGraphicsPipe8::init_type().

bool TypedObject::is_exact_type ( TypeHandle  handle) const [inline, inherited]
bool TypedObject::is_of_type ( TypeHandle  handle) const [inline, inherited]

Returns true if the current object is or derives from the indicated type.

Definition at line 63 of file typedObject.I.

References TypeHandle::is_derived_from().

Referenced by EggSliderData::add_back_pointer(), EggJointData::add_back_pointer(), CIntervalManager::add_c_interval(), XFileNode::add_child(), CollisionTraverser::add_collider(), CollisionHandlerPhysical::add_collider(), EggXfmSAnim::add_data(), CharacterJointBundle::add_node(), NonlinearImager::add_screen(), EggGroupNode::apply_first_attribute(), EggGroupNode::apply_last_attribute(), DeferredNodeProperty::apply_to_node(), RecorderController::begin_playback(), NodePath::clear_clip_plane(), EggGroupNode::clear_connected_shading(), NodePath::clear_light(), EggBase::convert_paths(), NodePath::decode_from_bam_stream(), VrpnClient::disconnect_device(), PhysicsManager::do_physics(), GraphicsStateGuardian::fetch_specified_part(), EggRenderState::fill_state(), AnimBundleNode::find_anim_bundle(), EggGroupNode::find_coordsys_entry(), XFile::find_data_object(), Character::find_joint(), EggGroupNode::find_materials(), Character::find_slider(), XFile::find_template(), EggGroupNode::find_textures(), EggMaterialCollection::find_used_materials(), EggTextureCollection::find_used_textures(), EggGroupNode::force_filenames(), EggJointData::force_initial_rest_frame(), WindowFramework::get_aspect_2d(), EggPoolUniquifier::get_category(), EggGroupUniquifier::get_category(), EggGroupNode::get_connected_shading(), PandaFramework::get_mouse(), FactoryParams::get_param_of_type(), EggGroupNode::has_absolute_pathnames(), NodePath::has_clip_plane(), NodePath::has_clip_plane_off(), NodePath::has_light(), PandaFramework::hide_collision_solids(), x11GraphicsWindow::open_window(), eglGraphicsWindow::open_window(), EggNode::parse_egg(), CharacterMaker::part_to_node(), EggGroupNode::post_apply_flat_attribute(), EggBinner::prepare_node(), PortalClipper::prepare_portal(), NodePath::project_texture(), EggMatrixTablePointer::quantize_channels(), ParametricCurveCollection::r_add_curves(), SceneGraphReducer::r_collect_vertex_data(), EggGroupNode::r_load_externals(), EggGroupNode::rebuild_vertex_pools(), EggGroupNode::recompute_polygon_normals(), EggGroupNode::remove_invalid_primitives(), EggGroupNode::remove_unused_vertices(), EggLoader::reparent_decals(), EggMaterialCollection::replace_materials(), EggTextureCollection::replace_textures(), EggGroupNode::resolve_filenames(), EggGroupNode::reverse_vertex_ordering(), NodePath::set_clip_plane(), NodePath::set_clip_plane_off(), NodePath::set_light(), ProjectionScreen::set_projector(), NonlinearImager::set_source_camera(), EggXfmSAnim::set_value(), NonlinearImager::set_viewer_camera(), PandaFramework::show_collision_solids(), BamCache::store(), XFileToEggConverter::strip_nodes(), EggGroupNode::strip_normals(), DataGraphTraverser::traverse(), DataGraphTraverser::traverse_below(), EggGroupNode::triangulate_polygons(), EggGroupNode::unify_attributes(), EggNameUniquifier::uniquify(), NodeCullCallbackData::upcall(), PhysicsCollisionHandler::validate_target(), EggXfmSAnim::write(), EggGroup::write(), EggToDXFLayer::write_3d_face(), and EggToDXFLayer::write_entities().

bool GraphicsPipe::is_valid ( ) const [inline, inherited]

Returns false if this pipe is known to be invalid, meaning that an attempt to create a GraphicsWindow with the pipe will certainly fail.

Returns true if the pipe is probably valid (is this case, an attempt to create a GraphicsWindow should succeed, but might still fail).

Use the GraphicsEngine class to create a GraphicsWindow on a particular pipe.

Definition at line 30 of file graphicsPipe.I.

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 WinGraphicsPipe::lookup_cpu_data ( ) [virtual]

Looks up the detailed CPU information and stores it in _display_information, if supported by the OS.

This may take a second or two.

Reimplemented from GraphicsPipe.

Definition at line 894 of file winGraphicsPipe.cxx.

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 GraphicsPipe::supports_type ( int  flags) const [inline, inherited]

A convenience function to ask if a particular type or types of GraphicsObjects are supported.

The parameter is a union of one or more bits defined in GrpahicsPipe::OutputTypes.

Returns true if all of the requested types are listed in the supported_types mask, false if any one of them is not. This is not a guarantee that the indicated output type will successfully be created when it is attempted.

Definition at line 66 of file graphicsPipe.I.

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 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