Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

PNMFileType Class Reference

This is the base class of a family of classes that represent particular image file types that PNMImage supports. More...

#include <pnmFileType.h>

Inheritance diagram for PNMFileType:

TypedWritable TypedObject PNMFileTypeAlias PNMFileTypeBMP PNMFileTypeIMG PNMFileTypeJPG PNMFileTypeJPG2000 PNMFileTypeSGI PNMFileTypeSoftImage PNMFileTypeTGA PNMFileTypeTIFF List of all members.

Public Member Functions

virtual ~PNMFileType ()
virtual string get_name () const=0
virtual int get_num_extensions () const
 Returns the number of different possible filename extensions associated with this particular file type.

virtual string get_extension (int n) const
 Returns the nth possible filename extension associated with this particular file type, without a leading dot.

virtual string get_suggested_extension () const
 Returns a suitable filename extension (without a leading dot) to suggest for files of this type, or empty string if no suggestions are available.

virtual bool has_magic_number () const
 Returns true if this particular file type uses a magic number to identify it, false otherwise.

virtual bool matches_magic_number (const string &magic_number) const
 Returns true if the indicated "magic number" byte stream (the initial few bytes read from the file) matches this particular file type, false otherwise.

virtual PNMReadermake_reader (istream *file, bool owns_file=true, const string &magic_number=string())
 Allocates and returns a new PNMReader suitable for reading from this file type, if possible.

virtual PNMWritermake_writer (ostream *file, bool owns_file=true)
 Allocates and returns a new PNMWriter suitable for reading from this file type, if possible.

virtual void write_datagram (BamWriter *writer, Datagram &datagram)
 Fills the indicated datagram up with a binary representation of the current object, in preparation for writing to a Bam file.

virtual TypeHandle get_type () const
virtual TypeHandle force_init_type ()
virtual int complete_pointers (TypedWritable **p_list, BamReader *manager)
 Receives an array of pointers, one for each time manager->read_pointer() was called in fillin().

virtual void finalize ()
 Called by the BamReader to perform any final actions needed for setting up the object after all objects have been read and all pointers have been completed.

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

bool is_of_type (TypeHandle handle) const
 Returns true if the current object is or derives from the indicated type.

bool is_exact_type (TypeHandle handle) const
 Returns true if the current object is the indicated type exactly.


Static Public Member Functions

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


Static Public Attributes

TypedWritable *const Null = (TypedWritable*)0L

Protected Member Functions

 PNMFileType ()
void fillin (DatagramIterator &scan, BamReader *manager)
 This internal function is intended to be called by each class's make_from_bam() method to read in all of the relevant data from the BamFile for the new object.


Static Protected Member Functions

void init_pnm ()
 Initializes the underlying PNM library, if it has not already been initialized.

TypedWritablemake_PNMFileType (const FactoryParams &params)

Static Private Attributes

bool _did_init_pnm = false
TypeHandle _type_handle

Detailed Description

This is the base class of a family of classes that represent particular image file types that PNMImage supports.

Definition at line 47 of file pnmFileType.h.


Constructor & Destructor Documentation

PNMFileType::PNMFileType  )  [protected]
 

Definition at line 40 of file pnmFileType.cxx.

PNMFileType::~PNMFileType  )  [virtual]
 

Definition at line 51 of file pnmFileType.cxx.


Member Function Documentation

int TypedWritable::complete_pointers TypedWritable **  p_list,
BamReader manager
[virtual, inherited]
 

Receives an array of pointers, one for each time manager->read_pointer() was called in fillin().

Returns the number of pointers processed.

This is the callback function that is made by the BamReader at some later point, after all of the required pointers have been filled in. It is necessary because there might be forward references in a bam file; when we call read_pointer() in fillin(), the object may not have been read from the file yet, so we do not have a pointer available at that time. Thus, instead of returning a pointer, read_pointer() simply reserves a later callback. This function provides that callback. The calling object is responsible for keeping track of the number of times it called read_pointer() and extracting the same number of pointers out of the supplied vector, and storing them appropriately within the object.

Reimplemented in AnimBundleNode, AnimGroup, PartBundleNode, PartGroup, Character, CharacterJoint, CollisionNode, GeomSprite, PiecewiseCurve, ClipPlaneAttrib, FogAttrib, LensNode, LightAttrib, MaterialAttrib, RenderEffects, RenderState, TextureAttrib, Person, and Child.

Definition at line 94 of file typedWritable.cxx.

Referenced by RenderState::do_invert_compose().

void TypedWritable::fillin DatagramIterator scan,
BamReader manager
[protected, inherited]
 

This internal function is intended to be called by each class's make_from_bam() method to read in all of the relevant data from the BamFile for the new object.

It is defined at the TypedWritable level so that derived classes may call up the inheritance chain from their own fillin() method.

Reimplemented in AnimBundle, AnimBundleNode, AnimChannelBase, AnimChannelMatrixXfmTable, AnimChannelScalarTable, AnimGroup, MovingPart< SwitchType >, PartBundleNode, PartGroup, Character, CharacterJoint, ComputedVertices, DynamicVertices, CollisionNode, CollisionPlane, CollisionPolygon, CollisionRay, CollisionSegment, CollisionSolid, CollisionSphere, dDrawable, Geom, GeomLine, GeomLinestrip, GeomPoint, GeomSprite, ImageBuffer, Material, Texture, ClassicNurbsCurve, CubicCurveseg, HermiteCurve, ParametricCurve, PiecewiseCurve, RopeNode, AlphaTestAttrib, AmbientLight, BillboardEffect, Camera, ClipPlaneAttrib, ColorAttrib, ColorBlendAttrib, ColorScaleAttrib, ColorWriteAttrib, CompassEffect, CullBinAttrib, CullFaceAttrib, DecalEffect, DepthOffsetAttrib, DepthTestAttrib, DepthWriteAttrib, DirectionalLight, Fog, FogAttrib, GeomNode, LensNode, LightAttrib, LightLensNode, LightNode, LODNode, MaterialAttrib, ModelNode, ModelRoot, PandaNode, PlaneNode, PointLight, RenderAttrib, RenderEffect, RenderEffects, RenderModeAttrib, RenderState, SequenceNode, ShowBoundsEffect, Spotlight, SwitchNode, TexMatrixAttrib, TextureApplyAttrib, TextureAttrib, TransformState, TransparencyAttrib, MovingPart< ACScalarSwitchType >, and MovingPart< ACMatrixSwitchType >.

Definition at line 139 of file typedWritable.cxx.

Referenced by PandaNode::reparent().

void TypedWritable::finalize void   )  [virtual, inherited]
 

Called by the BamReader to perform any final actions needed for setting up the object after all objects have been read and all pointers have been completed.

Reimplemented in PartBundle, RenderAttrib, RenderEffect, RenderEffects, RenderState, and TransformState.

Definition at line 112 of file typedWritable.cxx.

Referenced by BamReader::skip_pointer().

virtual TypeHandle PNMFileType::force_init_type void   )  [inline, virtual]
 

Reimplemented from TypedWritable.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 94 of file pnmFileType.h.

TypeHandle PNMFileType::get_class_type void   )  [inline, static]
 

Reimplemented from TypedWritable.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 83 of file pnmFileType.h.

References TypedWritable::get_class_type().

string PNMFileType::get_extension int  n  )  const [virtual]
 

Returns the nth possible filename extension associated with this particular file type, without a leading dot.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 82 of file pnmFileType.cxx.

virtual string PNMFileType::get_name  )  const [pure virtual]
 

Implemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Referenced by PNMImageHeader::make_reader(), and PNMImageHeader::make_writer().

int PNMFileType::get_num_extensions  )  const [virtual]
 

Returns the number of different possible filename extensions associated with this particular file type.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 65 of file pnmFileType.cxx.

References nassertr.

string PNMFileType::get_suggested_extension  )  const [virtual]
 

Returns a suitable filename extension (without a leading dot) to suggest for files of this type, or empty string if no suggestions are available.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 100 of file pnmFileType.cxx.

virtual TypeHandle PNMFileType::get_type void   )  const [inline, virtual]
 

Reimplemented from TypedWritable.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 91 of file pnmFileType.h.

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 71 of file typedObject.I.

References TypeHandle::get_name(), TypedObject::get_type(), and INLINE.

bool PNMFileType::has_magic_number  )  const [virtual]
 

Returns true if this particular file type uses a magic number to identify it, false otherwise.

Reimplemented in PNMFileTypeBMP, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, and PNMFileTypeTIFF.

Definition at line 118 of file pnmFileType.cxx.

References NULL.

void PNMFileType::init_pnm  )  [static, protected]
 

Initializes the underlying PNM library, if it has not already been initialized.

This should be called by every implementation of make_reader() and make_writer(), to ensure that the library is properly initialized before any I/O is attempted.

Definition at line 190 of file pnmFileType.cxx.

Referenced by PNMFileTypeTGA::get_extension(), PNMFileTypeIMG::get_extension(), PNMFileTypeAlias::get_extension(), PNMFileTypeTGA::get_suggested_extension(), PNMFileTypeIMG::get_suggested_extension(), PNMFileTypeAlias::get_suggested_extension(), PNMFileTypeTIFF::has_magic_number(), PNMFileTypeSoftImage::has_magic_number(), PNMFileTypeSGI::has_magic_number(), PNMFileTypeJPG2000::has_magic_number(), and PNMFileTypeJPG::has_magic_number().

void PNMFileType::init_type void   )  [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 TypedWritable.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 86 of file pnmFileType.h.

References TypedWritable::get_class_type(), and TypedWritable::init_type().

Referenced by ConfigureFn().

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

Returns true if the current object is the indicated type exactly.

Definition at line 101 of file typedObject.I.

Referenced by PT(), and CollisionNode::xform().

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 86 of file typedObject.I.

Referenced by EggMaterialCollection::collapse_equivalent_materials(), EggTextureCollection::collapse_equivalent_textures(), DeferredNodeProperty::compose(), AnimBundleMaker::create_s_channel(), CharacterMaker::create_slider(), ProjectionScreen::cull_callback(), DataNode::define_output(), EggNode::determine_draw_order(), CharacterMaker::egg_to_index(), EggGroupUniquifier::EggGroupUniquifier(), EggPoolUniquifier::EggPoolUniquifier(), EggGroupNode::find_textures(), StaticTextFont::get_glyph(), EggMaterialCollection::insert_materials(), EggTextureCollection::insert_textures(), CharacterJoint::make_copy(), PT(), EggGroupNode::r_flatten_transforms(), EggGroupNode::r_transform_vertices(), EggGroupNode::recompute_polygon_normals(), CollisionLevelState::reserve(), PandaFramework::reset_frame_rate(), PandaFramework::set_texture(), EggGroupNode::steal_children(), and DataGraphTraverser::traverse().

TypedWritable* PNMFileType::make_PNMFileType const FactoryParams params  )  [static, protected]
 

PNMReader * PNMFileType::make_reader istream *  file,
bool  owns_file = true,
const string &  magic_number = string()
[virtual]
 

Allocates and returns a new PNMReader suitable for reading from this file type, if possible.

If reading from this file type is not supported, returns NULL.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 152 of file pnmFileType.cxx.

PNMWriter * PNMFileType::make_writer ostream *  file,
bool  owns_file = true
[virtual]
 

Allocates and returns a new PNMWriter suitable for reading from this file type, if possible.

If writing files of this type is not supported, returns NULL.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 169 of file pnmFileType.cxx.

Referenced by PNMImageHeader::make_writer().

bool PNMFileType::matches_magic_number const string &  magic_number  )  const [virtual]
 

Returns true if the indicated "magic number" byte stream (the initial few bytes read from the file) matches this particular file type, false otherwise.

Reimplemented in PNMFileTypeBMP, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, and PNMFileTypeTIFF.

Definition at line 135 of file pnmFileType.cxx.

References _did_init_pnm.

void PNMFileType::register_with_read_factory void   )  [static]
 

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

void PNMFileType::write_datagram BamWriter writer,
Datagram datagram
[virtual]
 

Fills the indicated datagram up with a binary representation of the current object, in preparation for writing to a Bam file.

None of the particular PNMFileType objects store any extra data--at least, not yet--so we just define this up here to do nothing.

Reimplemented from TypedWritable.

Definition at line 243 of file pnmFileType.cxx.


Member Data Documentation

bool PNMFileType::_did_init_pnm = false [static, private]
 

Definition at line 29 of file pnmFileType.cxx.

Referenced by matches_magic_number().

TypeHandle PNMFileType::_type_handle [static, private]
 

Reimplemented from TypedWritable.

Reimplemented in PNMFileTypeAlias, PNMFileTypeBMP, PNMFileTypeIMG, PNMFileTypeJPG, PNMFileTypeJPG2000, PNMFileTypeSGI, PNMFileTypeSoftImage, PNMFileTypeTGA, and PNMFileTypeTIFF.

Definition at line 30 of file pnmFileType.cxx.

TypedWritable *const TypedWritable::Null = (TypedWritable*)0L [static, inherited]
 

Definition at line 25 of file typedWritable.cxx.

Referenced by Child::complete_pointers(), Parent::complete_pointers(), Person::complete_pointers(), LoaderFileTypeBam::get_extension(), PartGroup::pick_channel_index(), BamReader::read_pointer(), and AnimGroup::write_datagram().


The documentation for this class was generated from the following files:
Generated on Fri May 2 00:53:47 2003 for Panda by doxygen1.3