1730992849
3 3
9 libp3gobj 4 qQJq 12 panda3d.core 
1562
1601 11 AdaptiveLru 0 260 3163 24 AdaptiveLru::AdaptiveLru 0 1 1 10
/**
 *
 */
81
explicit AdaptiveLru::AdaptiveLru(std::string const &name, std::size_t max_size);

1602 12 ~AdaptiveLru 0 516 3163 25 AdaptiveLru::~AdaptiveLru 0 0 10
/**
 *
 */
32
AdaptiveLru::~AdaptiveLru(void);

1603 14 get_total_size 0 4 3163 27 AdaptiveLru::get_total_size 0 1 2 77
/**
 * Returns the total size of all objects currently active on the LRU.
 */
59
inline std::size_t AdaptiveLru::get_total_size(void) const;

1604 12 get_max_size 0 4 3163 25 AdaptiveLru::get_max_size 0 1 3 91
/**
 * Returns the max size of all objects that are allowed to be active on the
 * LRU.
 */
57
inline std::size_t AdaptiveLru::get_max_size(void) const;

1605 12 set_max_size 0 4 3163 25 AdaptiveLru::set_max_size 0 1 4 143
/**
 * Changes the max size of all objects that are allowed to be active on the
 * LRU.
 *
 * If the size is (size_t)-1, there is no limit.
 */
60
inline void AdaptiveLru::set_max_size(std::size_t max_size);

1606 17 count_active_size 0 4 3163 30 AdaptiveLru::count_active_size 0 1 5 106
/**
 * Returns the total size of the pages that were enqueued since the last call
 * to begin_epoch().
 */
55
std::size_t AdaptiveLru::count_active_size(void) const;

1607 14 consider_evict 0 4 3163 27 AdaptiveLru::consider_evict 0 1 6 61
/**
 * Evicts a sequence of objects if the queue is full.
 */
46
inline void AdaptiveLru::consider_evict(void);

1608 8 evict_to 0 4 3163 21 AdaptiveLru::evict_to 0 1 7 132
/**
 * Evicts a sequence of objects until the queue fits within the indicated
 * target size, regardless of its normal max size.
 */
59
inline void AdaptiveLru::evict_to(std::size_t target_size);

1609 11 begin_epoch 0 4 3163 24 AdaptiveLru::begin_epoch 0 1 8 184
/**
 * Marks the end of the previous epoch and the beginning of the next one.
 * This will evict any objects that are pending eviction, and also update any
 * internal bookkeeping.
 */
36
void AdaptiveLru::begin_epoch(void);

1610 8 validate 0 4 3163 21 AdaptiveLru::validate 0 1 9 125
/**
 * Checks that the LRU is internally self-consistent.  Returns true if
 * successful, false if there is some problem.
 */
40
inline bool AdaptiveLru::validate(void);

1611 6 output 0 4 3163 19 AdaptiveLru::output 0 1 10 10
/**
 *
 */
50
void AdaptiveLru::output(std::ostream &out) const;

1612 5 write 0 4 3163 18 AdaptiveLru::write 0 1 11 10
/**
 *
 */
67
void AdaptiveLru::write(std::ostream &out, int indent_level) const;

1613 10 set_weight 0 4 3163 23 AdaptiveLru::set_weight 0 1 12 283
// The following methods are specific to AdaptiveLru, and do not exist in
// the SimpleLru implementation.  In most cases, the defaults will be
// sufficient, so you do not need to mess with them.

/**
 * Specifies the weight value used to compute the exponential moving average.
 */
56
inline void AdaptiveLru::set_weight(PN_stdfloat weight);

1614 10 get_weight 0 4 3163 23 AdaptiveLru::get_weight 0 1 13 83
/**
 * Returns the weight value used to compute the exponential moving average.
 */
55
inline PN_stdfloat AdaptiveLru::get_weight(void) const;

1615 25 set_max_updates_per_frame 0 4 3163 38 AdaptiveLru::set_max_updates_per_frame 0 1 14 214
/**
 * Specifies the maximum number of pages the AdaptiveLru will update each
 * frame.  This is a performance optimization: keeping this number low limits
 * the impact of the AdaptiveLru's adaptive algorithm.
 */
78
inline void AdaptiveLru::set_max_updates_per_frame(int max_updates_per_frame);

1616 25 get_max_updates_per_frame 0 4 3163 38 AdaptiveLru::get_max_updates_per_frame 0 1 15 86
/**
 * Returns the maximum number of pages the AdaptiveLru will update each frame.
 */
62
inline int AdaptiveLru::get_max_updates_per_frame(void) const;

1617 36 upcast_to_AdaptiveLruPageDynamicList 0 12 3165 53 AdaptiveLruPage::upcast_to_AdaptiveLruPageDynamicList 0 0 57
upcast from AdaptiveLruPage to AdaptiveLruPageDynamicList
88
AdaptiveLruPageDynamicList *AdaptiveLruPage::upcast_to_AdaptiveLruPageDynamicList(void);

1618 27 downcast_to_AdaptiveLruPage 0 12 3166 55 AdaptiveLruPageDynamicList::downcast_to_AdaptiveLruPage 0 0 59
downcast from AdaptiveLruPageDynamicList to AdaptiveLruPage
79
AdaptiveLruPage *AdaptiveLruPageDynamicList::downcast_to_AdaptiveLruPage(void);

1619 35 upcast_to_AdaptiveLruPageStaticList 0 12 3165 52 AdaptiveLruPage::upcast_to_AdaptiveLruPageStaticList 0 0 56
upcast from AdaptiveLruPage to AdaptiveLruPageStaticList
86
AdaptiveLruPageStaticList *AdaptiveLruPage::upcast_to_AdaptiveLruPageStaticList(void);

1620 27 downcast_to_AdaptiveLruPage 0 12 3167 54 AdaptiveLruPageStaticList::downcast_to_AdaptiveLruPage 0 0 58
downcast from AdaptiveLruPageStaticList to AdaptiveLruPage
78
AdaptiveLruPage *AdaptiveLruPageStaticList::downcast_to_AdaptiveLruPage(void);

1621 15 AdaptiveLruPage 0 260 3165 32 AdaptiveLruPage::AdaptiveLruPage 0 2 16 17 22
/**
 *
 */

/**
 *
 */
127
explicit AdaptiveLruPage::AdaptiveLruPage(std::size_t lru_size);
AdaptiveLruPage::AdaptiveLruPage(AdaptiveLruPage const &copy);

1622 10 operator = 0 4 3165 27 AdaptiveLruPage::operator = 0 1 18 0
62
void AdaptiveLruPage::operator =(AdaptiveLruPage const &copy);

1623 16 ~AdaptiveLruPage 0 518 3165 33 AdaptiveLruPage::~AdaptiveLruPage 0 0 10
/**
 *
 */
48
virtual AdaptiveLruPage::~AdaptiveLruPage(void);

1624 7 get_lru 0 4 3165 24 AdaptiveLruPage::get_lru 0 1 19 104
/**
 * Returns the LRU that manages this page, or NULL if it is not currently
 * managed by any LRU.
 */
57
inline AdaptiveLru *AdaptiveLruPage::get_lru(void) const;

1625 11 enqueue_lru 0 4 3165 28 AdaptiveLruPage::enqueue_lru 0 1 20 183
/**
 * Adds the page to the LRU for the first time, or marks it recently-accessed
 * if it has already been added.
 *
 * If lru is NULL, it means to remove this page from its LRU.
 */
52
void AdaptiveLruPage::enqueue_lru(AdaptiveLru *lru);

1626 11 dequeue_lru 0 4 3165 28 AdaptiveLruPage::dequeue_lru 0 1 21 49
/**
 * Removes the page from its AdaptiveLru.
 */
47
inline void AdaptiveLruPage::dequeue_lru(void);

1627 13 mark_used_lru 0 4 3165 30 AdaptiveLruPage::mark_used_lru 0 2 22 23 341
/**
 * To be called when the page is used; this will move it to the tail of the
 * AdaptiveLru queue it is already on.
 *
 * This method is const because it's not technically modifying the contents of
 * the page itself.
 */

/**
 * To be called when the page is used; this will move it to the tail of the
 * specified AdaptiveLru queue.
 */
117
inline void AdaptiveLruPage::mark_used_lru(void) const;
inline void AdaptiveLruPage::mark_used_lru(AdaptiveLru *lru);

1628 12 get_lru_size 0 4 3165 29 AdaptiveLruPage::get_lru_size 0 1 24 85
/**
 * Returns the size of this page as reported to the LRU, presumably in bytes.
 */
61
inline std::size_t AdaptiveLruPage::get_lru_size(void) const;

1629 12 set_lru_size 0 4 3165 29 AdaptiveLruPage::set_lru_size 0 1 25 98
/**
 * Specifies the size of this page, presumably in bytes, although any unit is
 * possible.
 */
64
inline void AdaptiveLruPage::set_lru_size(std::size_t lru_size);

1630 9 evict_lru 0 6 3165 26 AdaptiveLruPage::evict_lru 0 1 26 455
/**
 * Evicts the page from the LRU.  Called internally when the LRU determines
 * that it is full.  May also be called externally when necessary to
 * explicitly evict the page.
 *
 * It is legal for this method to either evict the page as requested, do
 * nothing (in which case the eviction will be requested again at the next
 * epoch), or requeue itself on the tail of the queue (in which case the
 * eviction will be requested again much later).
 */
46
virtual void AdaptiveLruPage::evict_lru(void);

1631 6 output 0 6 3165 23 AdaptiveLruPage::output 0 1 27 10
/**
 *
 */
62
virtual void AdaptiveLruPage::output(std::ostream &out) const;

1632 5 write 0 6 3165 22 AdaptiveLruPage::write 0 1 28 10
/**
 *
 */
79
virtual void AdaptiveLruPage::write(std::ostream &out, int indent_level) const;

1633 14 get_num_frames 0 4 3165 31 AdaptiveLruPage::get_num_frames 0 1 29 157
// Not defined in SimpleLruPage.

/**
 * Returns the number of frames since the page was first added to its LRU.
 * Returns 0 if it does not have an LRU.
 */
57
unsigned int AdaptiveLruPage::get_num_frames(void) const;

1634 23 get_num_inactive_frames 0 4 3165 40 AdaptiveLruPage::get_num_inactive_frames 0 1 30 125
/**
 * Returns the number of frames since the page was last accessed on its LRU.
 * Returns 0 if it does not have an LRU.
 */
66
unsigned int AdaptiveLruPage::get_num_inactive_frames(void) const;

1635 9 GeomEnums 0 260 3168 20 GeomEnums::GeomEnums 0 2 31 32 0
102
inline GeomEnums::GeomEnums(void) = default;
inline GeomEnums::GeomEnums(GeomEnums const &) = default;

1636 10 ~GeomEnums 0 516 3168 21 GeomEnums::~GeomEnums 0 0 0
28
GeomEnums::~GeomEnums(void);

1637 23 GeomVertexAnimationSpec 0 260 3176 48 GeomVertexAnimationSpec::GeomVertexAnimationSpec 0 2 33 34 22
/**
 *
 */

/**
 *
 */
157
inline GeomVertexAnimationSpec::GeomVertexAnimationSpec(void);
inline GeomVertexAnimationSpec::GeomVertexAnimationSpec(GeomVertexAnimationSpec const &other);

1638 10 operator = 0 4 3176 35 GeomVertexAnimationSpec::operator = 0 1 35 0
86
inline void GeomVertexAnimationSpec::operator =(GeomVertexAnimationSpec const &other);

1639 18 get_animation_type 0 4 3176 43 GeomVertexAnimationSpec::get_animation_type 0 1 36 66
/**
 * Returns the type of animation represented by this spec.
 */
88
inline GeomEnums::AnimationType GeomVertexAnimationSpec::get_animation_type(void) const;

1640 18 get_num_transforms 0 4 3176 43 GeomVertexAnimationSpec::get_num_transforms 0 1 37 202
/**
 * This is only meaningful for animation_type AT_hardware.  It specifies the
 * maximum number of transforms that might be simultaneously applied to any
 * one vertex by the data in this format.
 */
67
inline int GeomVertexAnimationSpec::get_num_transforms(void) const;

1641 22 get_indexed_transforms 0 4 3176 47 GeomVertexAnimationSpec::get_indexed_transforms 0 1 38 231
/**
 * This is only meaningful for animation_type AT_hardware.  If true, it
 * indicates that the format uses indexed animation tables.  It is false if
 * each vertex will reference the first _num_transforms table entries only.
 */
72
inline bool GeomVertexAnimationSpec::get_indexed_transforms(void) const;

1642 8 set_none 0 4 3176 33 GeomVertexAnimationSpec::set_none 0 1 39 74
/**
 * Specifies that no vertex animation is represented by this spec.
 */
52
inline void GeomVertexAnimationSpec::set_none(void);

1643 9 set_panda 0 4 3176 34 GeomVertexAnimationSpec::set_panda 0 1 40 168
/**
 * Specifies that vertex animation is to be performed by Panda.  This is the
 * most general setting and can handle any kind of vertex animation
 * represented.
 */
53
inline void GeomVertexAnimationSpec::set_panda(void);

1644 12 set_hardware 0 4 3176 37 GeomVertexAnimationSpec::set_hardware 0 1 41 391
/**
 * Specifies that vertex animation is to be performed by the graphics hardware
 * (or at least by the graphics backend API, which is actually still free to
 * animate the vertices on the CPU).
 *
 * This is only legal if the graphics hardware can support the specified
 * limits on number of transforms and/or indexed transforms.  Also, no current
 * graphics API's support morphing.
 */
95
inline void GeomVertexAnimationSpec::set_hardware(int num_transforms, bool indexed_transforms);

1645 6 output 0 4 3176 31 GeomVertexAnimationSpec::output 0 1 42 10
/**
 *
 */
62
void GeomVertexAnimationSpec::output(std::ostream &out) const;

1646 24 ~GeomVertexAnimationSpec 0 516 3176 49 GeomVertexAnimationSpec::~GeomVertexAnimationSpec 0 0 0
56
GeomVertexAnimationSpec::~GeomVertexAnimationSpec(void);

1647 4 make 0 4 3179 18 InternalName::make 0 2 43 44 650
// These versions are exposed to Python, which have additional logic to map
// from Python interned strings.

/**
 * The public interface for constructing an InternalName pointer.  This will
 * return a new InternalName representing the indicated name, if this is the
 * first time the particular name has been requested; if the name is already
 * in use, it will return the existing pointer.
 *
 * If the string contains the '.' character, the string will be divided at the
 * dots and the so-defined hierarchy of names will be registered.  This is
 * handled transparently.
 */

/**
 * Make using a string and an integer.  Concatenates the two.
 */
156
static PointerTo< InternalName > InternalName::make(std::string const &name, int index);
static PointerTo< InternalName > InternalName::make(PyObject *str);

1648 6 append 0 4 3179 20 InternalName::append 0 1 45 221
/**
 * Constructs a new InternalName based on this name, with the indicated string
 * following it.  This is a cheaper way to construct a hierarchical name than
 * InternalName::make(parent->get_name() + ".basename").
 */
76
PointerTo< InternalName > InternalName::append(std::string const &basename);

1649 10 get_parent 0 4 3179 24 InternalName::get_parent 0 1 46 101
/**
 * Return the parent of this InternalName.  All names have a parent, except
 * the root name.
 */
58
inline InternalName *InternalName::get_parent(void) const;

1650 8 get_name 0 4 3179 22 InternalName::get_name 0 1 47 95
/**
 * Returns the complete name represented by the InternalName and all of its
 * parents.
 */
47
std::string InternalName::get_name(void) const;

1651 4 join 0 4 3179 18 InternalName::join 0 1 48 69
/**
 * Like get_name, but uses a custom separator instead of ".".
 */
61
std::string InternalName::join(std::string const &sep) const;

1652 12 get_basename 0 4 3179 26 InternalName::get_basename 0 1 49 159
/**
 * Return the name represented by just this particular InternalName object,
 * ignoring its parents names.  This is everything after the rightmost dot.
 */
65
inline std::string const &InternalName::get_basename(void) const;

1653 13 find_ancestor 0 4 3179 27 InternalName::find_ancestor 0 1 50 293
/**
 * Returns the index of the ancestor with the indicated basename, or -1 if no
 * ancestor has that basename.  Returns 0 if this name has the basename.
 *
 * This index value may be passed to get_ancestor() or get_net_basename() to
 * retrieve more information about the indicated name.
 */
67
int InternalName::find_ancestor(std::string const &basename) const;

1654 12 get_ancestor 0 4 3179 26 InternalName::get_ancestor 0 1 51 222
/**
 * Returns the ancestor with the indicated index number.  0 is this name
 * itself, 1 is the name's parent, 2 is the parent's parent, and so on.  If
 * there are not enough ancestors, returns the root InternalName.
 */
60
InternalName const *InternalName::get_ancestor(int n) const;

1655 7 get_top 0 4 3179 21 InternalName::get_top 0 1 52 206
/**
 * Returns the oldest ancestor in the InternalName's chain, not counting the
 * root.  This will be the first name in the string, e.g.  "texcoord.foo.bar"
 * will return the InternalName "texcoord".
 */
54
InternalName const *InternalName::get_top(void) const;

1656 16 get_net_basename 0 4 3179 30 InternalName::get_net_basename 0 1 53 192
/**
 * Returns the basename of this name prefixed by the indicated number of
 * ancestors.  0 is this name's basename, 1 is parent.basename, 2 is
 * grandparent.parent.basename, and so on.
 */
56
std::string InternalName::get_net_basename(int n) const;

1657 6 output 0 4 3179 20 InternalName::output 0 1 54 10
/**
 *
 */
51
void InternalName::output(std::ostream &out) const;

1658 8 get_root 0 4 3179 22 InternalName::get_root 0 1 55 210
// Some predefined built-in names.

/**
 * Returns the standard root InternalName.  This is the root of all other
 * InternalNames.  It has no name itself, and it is the only InternalName with
 * no parent.
 */
69
static inline PointerTo< InternalName > InternalName::get_root(void);

1659 9 get_error 0 4 3179 23 InternalName::get_error 0 1 56 53
/**
 * Returns the standard InternalName "error".
 */
70
static inline PointerTo< InternalName > InternalName::get_error(void);

1660 10 get_vertex 0 4 3179 24 InternalName::get_vertex 0 1 57 148
/**
 * Returns the standard InternalName "vertex".  This is the column header for
 * the 3-d or 4-d vertex position information for each vertex.
 */
71
static inline PointerTo< InternalName > InternalName::get_vertex(void);

1661 10 get_normal 0 4 3179 24 InternalName::get_normal 0 1 58 129
/**
 * Returns the standard InternalName "normal".  This is the column header for
 * the 3-d lighting normal for each vertex.
 */
71
static inline PointerTo< InternalName > InternalName::get_normal(void);

1662 11 get_tangent 0 4 3179 25 InternalName::get_tangent 0 1 59 295
/**
 * Returns the standard InternalName "tangent".  This is the column header for
 * the tangent vector associated with each vertex, which is a unit vector
 * usually perpendicular to the normal and in the direction of the U texture
 * coordinate change.  It is used for deriving bump maps.
 */
72
static inline PointerTo< InternalName > InternalName::get_tangent(void);

1663 16 get_tangent_name 0 4 3179 30 InternalName::get_tangent_name 0 1 60 184
/**
 * Returns the InternalName "tangent.name", where name is the supplied string.
 * This is the column header for the tangent associated with the named texture
 * coordinate set.
 */
96
static inline PointerTo< InternalName > InternalName::get_tangent_name(std::string const &name);

1664 12 get_binormal 0 4 3179 26 InternalName::get_binormal 0 1 61 321
/**
 * Returns the standard InternalName "binormal".  This is the column header
 * for the tangent vector associated with each vertex, which is a unit vector
 * usually perpendicular to both the normal and the tangent, and in the
 * direction of the V texture coordinate change.  It is used for deriving bump
 * maps.
 */
73
static inline PointerTo< InternalName > InternalName::get_binormal(void);

1665 17 get_binormal_name 0 4 3179 31 InternalName::get_binormal_name 0 1 62 187
/**
 * Returns the InternalName "binormal.name", where name is the supplied
 * string.  This is the column header for the binormal associated with the
 * named texture coordinate set.
 */
97
static inline PointerTo< InternalName > InternalName::get_binormal_name(std::string const &name);

1666 12 get_texcoord 0 4 3179 26 InternalName::get_texcoord 0 1 63 232
/**
 * Returns the standard InternalName "texcoord".  This is the column header
 * for the default texture coordinate set for each vertex.  It is also used
 * for identifying the default texture coordinate set in a TextureStage.
 */
73
static inline PointerTo< InternalName > InternalName::get_texcoord(void);

1667 17 get_texcoord_name 0 4 3179 31 InternalName::get_texcoord_name 0 1 64 262
/**
 * Returns the InternalName "texcoord.name", where name is the supplied
 * string.  This is the column header for the named texture coordinate set for
 * each vertex.  It is also used for identifying the named texture coordinate
 * set in a TextureStage.
 */
97
static inline PointerTo< InternalName > InternalName::get_texcoord_name(std::string const &name);

1668 9 get_color 0 4 3179 23 InternalName::get_color 0 1 65 132
/**
 * Returns the standard InternalName "color".  This is the column header for
 * the 4-component color value for each vertex.
 */
70
static inline PointerTo< InternalName > InternalName::get_color(void);

1669 10 get_rotate 0 4 3179 24 InternalName::get_rotate 0 1 66 217
/**
 * Returns the standard InternalName "rotate".  This is the column header for
 * the floating-point rotate value, which represents a number of degrees
 * counter-clockwise to rotate each point or point sprite.
 */
71
static inline PointerTo< InternalName > InternalName::get_rotate(void);

1670 8 get_size 0 4 3179 22 InternalName::get_size 0 1 67 225
/**
 * Returns the standard InternalName "size".  This is the column header for
 * the floating-point size value, which overrides the thickness parameter of
 * the RenderModeAttrib on a per-vertex (e.g.  per-point) basis.
 */
69
static inline PointerTo< InternalName > InternalName::get_size(void);

1671 16 get_aspect_ratio 0 4 3179 30 InternalName::get_aspect_ratio 0 1 68 250
/**
 * Returns the standard InternalName "aspect_ratio". This is the column header
 * for the floating-point aspect ratio value, which is used to define non-
 * square points.  This number is the ratio x / y, where y is the point size
 * (above).
 */
77
static inline PointerTo< InternalName > InternalName::get_aspect_ratio(void);

1672 19 get_transform_blend 0 4 3179 33 InternalName::get_transform_blend 0 1 69 264
/**
 * Returns the standard InternalName "transform_blend". This is the column
 * header for the integer transform_blend index, which is used to define
 * vertex animation on the CPU by indexing to a particular vertex weighting
 * from the TransformBlendTable.
 */
80
static inline PointerTo< InternalName > InternalName::get_transform_blend(void);

1673 20 get_transform_weight 0 4 3179 34 InternalName::get_transform_weight 0 1 70 474
/**
 * Returns the standard InternalName "transform_weight". This is the column
 * header for the n-component transform_weight value, which is used in
 * conjuntion with "transform_index" to define vertex animation on the
 * graphics card.  The transform_weight value specifies the weight of the nth
 * transform.  By convention, there are 1 fewer weight values than transforms,
 * since the weights are assumed to sum to 1 (and the last value is therefore
 * implicit).
 */
81
static inline PointerTo< InternalName > InternalName::get_transform_weight(void);

1674 19 get_transform_index 0 4 3179 33 InternalName::get_transform_index 0 1 71 444
/**
 * Returns the standard InternalName "transform_index". This is the column
 * header for the n-component transform_index value, which is used in
 * conjuntion with "transform_weight" to define vertex animation on the
 * graphics card.  The transform_index value specifies the nth transform, by
 * lookup in the TransformTable.  The transform_index column may be omitted,
 * in which case the nth transform is the nth entry in the table.
 */
80
static inline PointerTo< InternalName > InternalName::get_transform_index(void);

1675 9 get_morph 0 4 3179 23 InternalName::get_morph 0 1 72 348
/**
 * Returns an InternalName derived from the given base column name and the
 * given slider name, which is the column header for the offset vector that
 * should be applied to the base column name when the named morph slider is
 * engaged.
 *
 * Each morph slider requires a set of n morph columns, one for each base
 * column it applies to.
 */
113
static inline PointerTo< InternalName > InternalName::get_morph(InternalName *column, std::string const &slider);

1676 9 get_index 0 4 3179 23 InternalName::get_index 0 1 73 233
/**
 * Returns the standard InternalName "index".  This is the column header for
 * the integer vertex index.  It is not used in the vertex data itself, but is
 * used in the GeomPrimitive structure to index into the vertex data.
 */
70
static inline PointerTo< InternalName > InternalName::get_index(void);

1677 9 get_world 0 4 3179 23 InternalName::get_world 0 1 74 108
/**
 * Returns the standard InternalName "world".  This is used as a keyword in
 * the shader subsystem.
 */
70
static inline PointerTo< InternalName > InternalName::get_world(void);

1678 10 get_camera 0 4 3179 24 InternalName::get_camera 0 1 75 109
/**
 * Returns the standard InternalName "camera".  This is used as a keyword in
 * the shader subsystem.
 */
71
static inline PointerTo< InternalName > InternalName::get_camera(void);

1679 9 get_model 0 4 3179 23 InternalName::get_model 0 1 76 108
/**
 * Returns the standard InternalName "model".  This is used as a keyword in
 * the shader subsystem.
 */
70
static inline PointerTo< InternalName > InternalName::get_model(void);

1680 8 get_view 0 4 3179 22 InternalName::get_view 0 1 77 107
/**
 * Returns the standard InternalName "view".  This is used as a keyword in the
 * shader subsystem.
 */
69
static inline PointerTo< InternalName > InternalName::get_view(void);

1681 14 get_class_type 0 4 3179 28 InternalName::get_class_type 0 1 78 0
53
static TypeHandle InternalName::get_class_type(void);

1682 16 GeomVertexColumn 0 260 3185 34 GeomVertexColumn::GeomVertexColumn 0 2 79 80 107
/**
 * Creates an invalid column.  Used only when constructing from a bam file.
 */

/**
 *
 */

/**
 *
 */
317
inline explicit GeomVertexColumn::GeomVertexColumn(CPT_InternalName name, int num_components, GeomEnums::NumericType numeric_type, GeomEnums::Contents contents, int start, int column_alignment = 0, int num_elements = 0, int element_stride = 0);
inline GeomVertexColumn::GeomVertexColumn(GeomVertexColumn const &copy);

1683 10 operator = 0 4 3185 28 GeomVertexColumn::operator = 0 1 81 0
64
void GeomVertexColumn::operator =(GeomVertexColumn const &copy);

1684 17 ~GeomVertexColumn 0 516 3185 35 GeomVertexColumn::~GeomVertexColumn 0 0 10
/**
 *
 */
49
inline GeomVertexColumn::~GeomVertexColumn(void);

1685 8 get_name 0 4 3185 26 GeomVertexColumn::get_name 0 1 82 267
/**
 * Returns the name of this particular data field, e.g.  "vertex" or "normal".
 * The name may be a user-defined string, or it may be one of the standard
 * system-defined field types.  Only the system-defined field types are used
 * for the actual rendering.
 */
66
inline InternalName const *GeomVertexColumn::get_name(void) const;

1686 18 get_num_components 0 4 3185 36 GeomVertexColumn::get_num_components 0 1 83 194
/**
 * Returns the number of components of the column: the number of instances of
 * the NumericType in each element.  This is usually, but not always, the same
 * thing as get_num_values().
 */
60
inline int GeomVertexColumn::get_num_components(void) const;

1687 14 get_num_values 0 4 3185 32 GeomVertexColumn::get_num_values 0 1 84 337
/**
 * Returns the number of numeric values of the column: the number of distinct
 * numeric values that go into each element.  This is usually, but not always,
 * the same thing as get_num_components(); the difference is in the case of a
 * composite numeric type like NT_packed_dcba, which has four numeric values
 * per component.
 */
56
inline int GeomVertexColumn::get_num_values(void) const;

1688 16 get_num_elements 0 4 3185 34 GeomVertexColumn::get_num_elements 0 1 85 107
/**
 * Returns the number of times this column is repeated.  This is usually 1,
 * except for matrices.
 */
58
inline int GeomVertexColumn::get_num_elements(void) const;

1689 16 get_numeric_type 0 4 3185 34 GeomVertexColumn::get_numeric_type 0 1 86 79
/**
 * Returns the token representing the numeric type of the data storage.
 */
77
inline GeomEnums::NumericType GeomVertexColumn::get_numeric_type(void) const;

1690 12 get_contents 0 4 3185 30 GeomVertexColumn::get_contents 0 1 87 83
/**
 * Returns the token representing the semantic meaning of the stored value.
 */
70
inline GeomEnums::Contents GeomVertexColumn::get_contents(void) const;

1691 9 get_start 0 4 3185 27 GeomVertexColumn::get_start 0 1 88 145
/**
 * Returns the byte within the array record at which this column starts.  This
 * can be set to non-zero to implement interleaved arrays.
 */
51
inline int GeomVertexColumn::get_start(void) const;

1692 20 get_column_alignment 0 4 3185 38 GeomVertexColumn::get_column_alignment 0 1 89 299
/**
 * Returns the alignment requirements for this column.  If this is greater
 * than 1, it restricts the column to appear only on memory addresses that are
 * integer multiples of this value; this has implications for this column's
 * start value, as well as the stride of the resulting array.
 */
62
inline int GeomVertexColumn::get_column_alignment(void) const;

1693 18 get_element_stride 0 4 3185 36 GeomVertexColumn::get_element_stride 0 1 90 133
/**
 * This value is only relevant for matrix types.  Returns the number of bytes
 * to add to access the next row of the matrix.
 */
60
inline int GeomVertexColumn::get_element_stride(void) const;

1694 19 get_component_bytes 0 4 3185 37 GeomVertexColumn::get_component_bytes 0 1 91 111
/**
 * Returns the number of bytes used by each component (that is, by one element
 * of the numeric type).
 */
61
inline int GeomVertexColumn::get_component_bytes(void) const;

1695 15 get_total_bytes 0 4 3185 33 GeomVertexColumn::get_total_bytes 0 1 92 111
/**
 * Returns the number of bytes used by each element of the column:
 * component_bytes * num_components.
 */
57
inline int GeomVertexColumn::get_total_bytes(void) const;

1696 21 has_homogeneous_coord 0 4 3185 39 GeomVertexColumn::has_homogeneous_coord 0 1 93 392
/**
 * Returns true if this Contents type is one that includes a homogeneous
 * coordinate in the fourth component, or false otherwise.  If this is true,
 * correct operation on the vertex data may require scaling by the homogeneous
 * coordinate from time to time (but in general this is handled automatically
 * if you use the 3-component or smaller forms of get_data() and set_data()).
 */
64
inline bool GeomVertexColumn::has_homogeneous_coord(void) const;

1697 13 overlaps_with 0 4 3185 31 GeomVertexColumn::overlaps_with 0 1 94 118
/**
 * Returns true if this column overlaps with any of the bytes in the indicated
 * range, false if it does not.
 */
81
inline bool GeomVertexColumn::overlaps_with(int start_byte, int num_bytes) const;

1698 22 is_bytewise_equivalent 0 4 3185 40 GeomVertexColumn::is_bytewise_equivalent 0 1 95 159
/**
 * Returns true if the data store of this column is exactly the same as that
 * of the other, irrespective of name or start position within the record.
 */
90
inline bool GeomVertexColumn::is_bytewise_equivalent(GeomVertexColumn const &other) const;

1699 8 set_name 0 4 3185 26 GeomVertexColumn::set_name 0 1 96 148
/**
 * Replaces the name of an existing column.  This is only legal on an
 * unregistered format (i.e.  when constructing the format initially).
 */
52
void GeomVertexColumn::set_name(InternalName *name);

1700 18 set_num_components 0 4 3185 36 GeomVertexColumn::set_num_components 0 1 97 163
/**
 * Changes the number of components of an existing column.  This is only legal
 * on an unregistered format (i.e.  when constructing the format initially).
 */
62
void GeomVertexColumn::set_num_components(int num_components);

1701 16 set_numeric_type 0 4 3185 34 GeomVertexColumn::set_numeric_type 0 1 98 152
/**
 * Changes the numeric type an existing column.  This is only legal on an
 * unregistered format (i.e.  when constructing the format initially).
 */
77
void GeomVertexColumn::set_numeric_type(GeomEnums::NumericType numeric_type);

1702 12 set_contents 0 4 3185 30 GeomVertexColumn::set_contents 0 1 99 159
/**
 * Changes the semantic meaning of an existing column.  This is only legal on
 * an unregistered format (i.e.  when constructing the format initially).
 */
66
void GeomVertexColumn::set_contents(GeomEnums::Contents contents);

1703 9 set_start 0 4 3185 27 GeomVertexColumn::set_start 0 1 100 153
/**
 * Changes the start byte of an existing column.  This is only legal on an
 * unregistered format (i.e.  when constructing the format initially).
 */
44
void GeomVertexColumn::set_start(int start);

1704 20 set_column_alignment 0 4 3185 38 GeomVertexColumn::set_column_alignment 0 1 101 159
/**
 * Changes the column alignment of an existing column.  This is only legal on
 * an unregistered format (i.e.  when constructing the format initially).
 */
66
void GeomVertexColumn::set_column_alignment(int column_alignment);

1705 6 output 0 4 3185 24 GeomVertexColumn::output 0 1 102 10
/**
 *
 */
55
void GeomVertexColumn::output(std::ostream &out) const;

1706 37 upcast_to_TypedWritableReferenceCount 0 12 3186 60 GeomVertexArrayFormat::upcast_to_TypedWritableReferenceCount 0 1 138 64
upcast from GeomVertexArrayFormat to TypedWritableReferenceCount
96
TypedWritableReferenceCount *GeomVertexArrayFormat::upcast_to_TypedWritableReferenceCount(void);

1707 33 downcast_to_GeomVertexArrayFormat 0 12 3180 62 TypedWritableReferenceCount::downcast_to_GeomVertexArrayFormat 0 0 66
downcast from TypedWritableReferenceCount to GeomVertexArrayFormat
92
GeomVertexArrayFormat *TypedWritableReferenceCount::downcast_to_GeomVertexArrayFormat(void);

1708 19 upcast_to_GeomEnums 0 12 3186 42 GeomVertexArrayFormat::upcast_to_GeomEnums 0 1 139 46
upcast from GeomVertexArrayFormat to GeomEnums
60
GeomEnums *GeomVertexArrayFormat::upcast_to_GeomEnums(void);

1709 33 downcast_to_GeomVertexArrayFormat 0 12 3168 44 GeomEnums::downcast_to_GeomVertexArrayFormat 0 0 48
downcast from GeomEnums to GeomVertexArrayFormat
74
GeomVertexArrayFormat *GeomEnums::downcast_to_GeomVertexArrayFormat(void);

1710 21 GeomVertexArrayFormat 0 260 3186 44 GeomVertexArrayFormat::GeomVertexArrayFormat 0 6 103 104 105 106 107 108 70
/**
 *
 */

/**
 *
 */

/**
 *
 */

/**
 *
 */

/**
 *
 */

/**
 *
 */
1456
GeomVertexArrayFormat::GeomVertexArrayFormat(void);
GeomVertexArrayFormat::GeomVertexArrayFormat(GeomVertexArrayFormat const &copy);
GeomVertexArrayFormat::GeomVertexArrayFormat(CPT_InternalName name0, int num_components0, GeomEnums::NumericType numeric_type0, GeomEnums::Contents contents0);
GeomVertexArrayFormat::GeomVertexArrayFormat(CPT_InternalName name0, int num_components0, GeomEnums::NumericType numeric_type0, GeomEnums::Contents contents0, CPT_InternalName name1, int num_components1, GeomEnums::NumericType numeric_type1, GeomEnums::Contents contents1);
GeomVertexArrayFormat::GeomVertexArrayFormat(CPT_InternalName name0, int num_components0, GeomEnums::NumericType numeric_type0, GeomEnums::Contents contents0, CPT_InternalName name1, int num_components1, GeomEnums::NumericType numeric_type1, GeomEnums::Contents contents1, CPT_InternalName name2, int num_components2, GeomEnums::NumericType numeric_type2, GeomEnums::Contents contents2);
GeomVertexArrayFormat::GeomVertexArrayFormat(CPT_InternalName name0, int num_components0, GeomEnums::NumericType numeric_type0, GeomEnums::Contents contents0, CPT_InternalName name1, int num_components1, GeomEnums::NumericType numeric_type1, GeomEnums::Contents contents1, CPT_InternalName name2, int num_components2, GeomEnums::NumericType numeric_type2, GeomEnums::Contents contents2, CPT_InternalName name3, int num_components3, GeomEnums::NumericType numeric_type3, GeomEnums::Contents contents3);

1711 10 operator = 0 4 3186 33 GeomVertexArrayFormat::operator = 0 1 109 0
74
void GeomVertexArrayFormat::operator =(GeomVertexArrayFormat const &copy);

1712 22 ~GeomVertexArrayFormat 0 518 3186 45 GeomVertexArrayFormat::~GeomVertexArrayFormat 0 0 10
/**
 *
 */
60
virtual GeomVertexArrayFormat::~GeomVertexArrayFormat(void);

1713 5 unref 0 6 3186 28 GeomVertexArrayFormat::unref 0 1 110 123
/**
 * This method overrides ReferenceCount::unref() to unregister the object when
 * its reference count goes to zero.
 */
54
virtual bool GeomVertexArrayFormat::unref(void) const;

1714 13 is_registered 0 4 3186 36 GeomVertexArrayFormat::is_registered 0 1 111 198
/**
 * Returns true if this format has been registered, false if it has not.  It
 * may not be used for a Geom until it has been registered, but once
 * registered, it may no longer be modified.
 */
61
inline bool GeomVertexArrayFormat::is_registered(void) const;

1715 15 register_format 0 4 3186 38 GeomVertexArrayFormat::register_format 0 1 112 421
/**
 * Adds the indicated format to the registry, if there is not an equivalent
 * format already there; in either case, returns the pointer to the equivalent
 * format now in the registry.
 *
 * This is similar to GeomVertexFormat::register_format(), except that you
 * generally need not call it explicitly.  Calling
 * GeomVertexFormat::register_format() automatically registers all of the
 * nested array formats.
 */
130
static inline ConstPointerTo< GeomVertexArrayFormat > GeomVertexArrayFormat::register_format(GeomVertexArrayFormat const *format);

1716 10 get_stride 0 4 3186 33 GeomVertexArrayFormat::get_stride 0 1 113 83
/**
 * Returns the total number of bytes reserved in the array for each vertex.
 */
57
inline int GeomVertexArrayFormat::get_stride(void) const;

1717 10 set_stride 0 4 3186 33 GeomVertexArrayFormat::set_stride 0 1 114 297
/**
 * Changes the total number of bytes reserved in the array for each vertex.
 * You may not reduce this below get_total_bytes(), but you may increase it
 * arbitrarily.
 *
 * You should avoid arrays with stride higher than 2048, which is the typical
 * limit supported by graphics hardware.
 */
58
inline void GeomVertexArrayFormat::set_stride(int stride);

1718 10 get_pad_to 0 4 3186 33 GeomVertexArrayFormat::get_pad_to 0 1 115 347
/**
 * Returns the byte divisor to which the data record must be padded to meet
 * hardware limitations.  For instance, if this is 4, the stride will be
 * automatically rounded up to the next multiple of 4 bytes.  This value is
 * automatically increased as needed to ensure the individual numeric
 * components in the array are word-aligned.
 */
57
inline int GeomVertexArrayFormat::get_pad_to(void) const;

1719 10 set_pad_to 0 4 3186 33 GeomVertexArrayFormat::set_pad_to 0 1 116 355
/**
 * Explicitly sets the byte divisor to which the data record must be padded to
 * meet hardware limitations.  See get_pad_to().  Normally it is not necessary
 * to call this unless you have some specific requirements for row-to-row data
 * alignment.  Note that this value may be automatically increased at each
 * subsequent call to add_column().
 */
58
inline void GeomVertexArrayFormat::set_pad_to(int pad_to);

1720 11 get_divisor 0 4 3186 34 GeomVertexArrayFormat::get_divisor 0 1 117 214
/**
 * Returns the divisor attribute for the data in this array.  If 0, it
 * contains per-vertex data.  If 1, it contains per-instance data.  If higher
 * than 1, the read row is advanced for each n instances.
 */
58
inline int GeomVertexArrayFormat::get_divisor(void) const;

1721 11 set_divisor 0 4 3186 34 GeomVertexArrayFormat::set_divisor 0 1 118 206
/**
 * Set this to 0 to indicate that this array contains per-vertex data, or to 1
 * to indicate that it contains per-instance data.  If higher than 1, the read
 * row is advanced for each n instances.
 */
60
inline void GeomVertexArrayFormat::set_divisor(int divisor);

1722 15 get_total_bytes 0 4 3186 38 GeomVertexArrayFormat::get_total_bytes 0 1 119 122
/**
 * Returns the total number of bytes used by the data types within the format,
 * including gaps between elements.
 */
62
inline int GeomVertexArrayFormat::get_total_bytes(void) const;

1723 10 add_column 0 4 3186 33 GeomVertexArrayFormat::add_column 0 2 120 121 792
/**
 * Adds a new column to the specification.  This is a table of per-vertex
 * floating-point numbers such as "vertex" or "normal"; you must specify where
 * in each record the table starts, and how many components (dimensions) exist
 * per vertex.
 *
 * The return value is the index number of the new data type.
 */

/**
 * Adds a new column to the specification.  This is a table of per-vertex
 * floating-point numbers such as "vertex" or "normal"; you must specify where
 * in each record the table starts, and how many components (dimensions) exist
 * per vertex.
 *
 * Adding a column with the same name as a previous type, or that overlaps
 * with one or more previous types, quietly removes the previous type(s).
 *
 * The return value is the index number of the new data type.
 */
261
int GeomVertexArrayFormat::add_column(CPT_InternalName name, int num_components, GeomEnums::NumericType numeric_type, GeomEnums::Contents contents, int start = -1, int column_alignment = 0);
int GeomVertexArrayFormat::add_column(GeomVertexColumn const &column);

1724 13 remove_column 0 4 3186 36 GeomVertexArrayFormat::remove_column 0 1 122 107
/**
 * Removes the column with the indicated name, if any.  This leaves a gap in
 * the byte structure.
 */
68
void GeomVertexArrayFormat::remove_column(InternalName const *name);

1725 13 clear_columns 0 4 3186 36 GeomVertexArrayFormat::clear_columns 0 1 123 104
/**
 * Removes all columns previously added, sets the stride to zero, and prepares
 * to start over.
 */
48
void GeomVertexArrayFormat::clear_columns(void);

1726 12 pack_columns 0 4 3186 35 GeomVertexArrayFormat::pack_columns 0 1 124 48
/**
 * Removes wasted space between columns.
 */
47
void GeomVertexArrayFormat::pack_columns(void);

1727 27 align_columns_for_animation 0 4 3186 50 GeomVertexArrayFormat::align_columns_for_animation 0 1 125 319
/**
 * Reprocesses the columns in the format to align the C_point and C_vector
 * columns to 16-byte boundaries to allow for the more efficient SSE2
 * operations (assuming SSE2 is enabled in the build).
 *
 * The caller is responsible for testing vertex_animation_align_16 to decide
 * whether to call this method.
 */
62
void GeomVertexArrayFormat::align_columns_for_animation(void);

1728 15 get_num_columns 0 4 3186 38 GeomVertexArrayFormat::get_num_columns 0 1 126 64
/**
 * Returns the number of different columns in the array.
 */
62
inline int GeomVertexArrayFormat::get_num_columns(void) const;

1729 10 get_column 0 4 3186 33 GeomVertexArrayFormat::get_column 0 3 127 128 129 273
/**
 * Returns the ith column of the array.
 */

/**
 * Returns the specification with the indicated name, or NULL if the name is
 * not used.
 */

/**
 * Returns the first specification that overlaps with any of the indicated
 * bytes in the range, or NULL if none do.
 */
265
inline GeomVertexColumn const *GeomVertexArrayFormat::get_column(int i) const;
GeomVertexColumn const *GeomVertexArrayFormat::get_column(InternalName const *name) const;
GeomVertexColumn const *GeomVertexArrayFormat::get_column(int start_byte, int num_bytes) const;

1730 10 has_column 0 4 3186 33 GeomVertexArrayFormat::has_column 0 1 130 75
/**
 * Returns true if the array has the named column, false otherwise.
 */
78
inline bool GeomVertexArrayFormat::has_column(InternalName const *name) const;

1731 17 is_data_subset_of 0 4 3186 40 GeomVertexArrayFormat::is_data_subset_of 0 1 131 309
/**
 * Returns true if all of the fields in this array format are also present and
 * equivalent in the other array format, and in the same byte positions, and
 * the stride is the same.  That is, true if this format can share the same
 * data pointer as the other format (with possibly some unused gaps).
 */
88
bool GeomVertexArrayFormat::is_data_subset_of(GeomVertexArrayFormat const &other) const;

1732 18 count_unused_space 0 4 3186 41 GeomVertexArrayFormat::count_unused_space 0 1 132 83
/**
 * Returns the number of bytes per row that are not assigned to any column.
 */
58
int GeomVertexArrayFormat::count_unused_space(void) const;

1733 6 output 0 4 3186 29 GeomVertexArrayFormat::output 0 1 133 10
/**
 *
 */
60
void GeomVertexArrayFormat::output(std::ostream &out) const;

1734 5 write 0 4 3186 28 GeomVertexArrayFormat::write 0 1 134 10
/**
 *
 */
81
void GeomVertexArrayFormat::write(std::ostream &out, int indent_level = 0) const;

1735 15 write_with_data 0 4 3186 38 GeomVertexArrayFormat::write_with_data 0 1 135 10
/**
 *
 */
126
void GeomVertexArrayFormat::write_with_data(std::ostream &out, int indent_level, GeomVertexArrayData const *array_data) const;

1736 17 get_format_string 0 4 3186 40 GeomVertexArrayFormat::get_format_string 0 1 136 242
/**
 * Returns a string with format codes representing the exact memory layout of
 * the columns in memory, as understood by Python's struct module.  If pad is
 * true, extra padding bytes are added to the end as 'x' characters as needed.
 */
76
std::string GeomVertexArrayFormat::get_format_string(bool pad = true) const;

1737 14 get_class_type 0 4 3186 37 GeomVertexArrayFormat::get_class_type 0 1 137 0
62
static TypeHandle GeomVertexArrayFormat::get_class_type(void);

1738 37 upcast_to_TypedWritableReferenceCount 0 12 3189 55 GeomVertexFormat::upcast_to_TypedWritableReferenceCount 0 1 199 59
upcast from GeomVertexFormat to TypedWritableReferenceCount
91
TypedWritableReferenceCount *GeomVertexFormat::upcast_to_TypedWritableReferenceCount(void);

1739 28 downcast_to_GeomVertexFormat 0 12 3180 57 TypedWritableReferenceCount::downcast_to_GeomVertexFormat 0 0 61
downcast from TypedWritableReferenceCount to GeomVertexFormat
82
GeomVertexFormat *TypedWritableReferenceCount::downcast_to_GeomVertexFormat(void);

1740 19 upcast_to_GeomEnums 0 12 3189 37 GeomVertexFormat::upcast_to_GeomEnums 0 1 200 41
upcast from GeomVertexFormat to GeomEnums
55
GeomEnums *GeomVertexFormat::upcast_to_GeomEnums(void);

1741 28 downcast_to_GeomVertexFormat 0 12 3168 39 GeomEnums::downcast_to_GeomVertexFormat 0 0 43
downcast from GeomEnums to GeomVertexFormat
64
GeomVertexFormat *GeomEnums::downcast_to_GeomVertexFormat(void);

1742 16 GeomVertexFormat 0 260 3189 34 GeomVertexFormat::GeomVertexFormat 0 3 140 141 142 34
/**
 *
 */

/**
 *
 */

/**
 *
 */
186
GeomVertexFormat::GeomVertexFormat(void);
GeomVertexFormat::GeomVertexFormat(GeomVertexArrayFormat const *array_format);
GeomVertexFormat::GeomVertexFormat(GeomVertexFormat const &copy);

1743 10 operator = 0 4 3189 28 GeomVertexFormat::operator = 0 1 143 0
64
void GeomVertexFormat::operator =(GeomVertexFormat const &copy);

1744 17 ~GeomVertexFormat 0 518 3189 35 GeomVertexFormat::~GeomVertexFormat 0 0 10
/**
 *
 */
50
virtual GeomVertexFormat::~GeomVertexFormat(void);

1745 5 unref 0 6 3189 23 GeomVertexFormat::unref 0 1 144 123
/**
 * This method overrides ReferenceCount::unref() to unregister the object when
 * its reference count goes to zero.
 */
49
virtual bool GeomVertexFormat::unref(void) const;

1746 13 is_registered 0 4 3189 31 GeomVertexFormat::is_registered 0 1 145 198
/**
 * Returns true if this format has been registered, false if it has not.  It
 * may not be used for a Geom until it has been registered, but once
 * registered, it may no longer be modified.
 */
56
inline bool GeomVertexFormat::is_registered(void) const;

1747 15 register_format 0 4 3189 33 GeomVertexFormat::register_format 0 2 146 147 604
/**
 * Adds the indicated format to the registry, if there is not an equivalent
 * format already there; in either case, returns the pointer to the equivalent
 * format now in the registry.
 *
 * This must be called before a format may be used in a Geom.  After this
 * call, you should discard the original pointer you passed in (which may or
 * may not now be invalid) and let its reference count decrement normally; you
 * should use only the returned value from this point on.
 */

/**
 * This flavor of register_format() implicitly creates a one-array vertex
 * format from the array definition.
 */
236
static inline ConstPointerTo< GeomVertexFormat > GeomVertexFormat::register_format(GeomVertexFormat const *format);
static inline ConstPointerTo< GeomVertexFormat > GeomVertexFormat::register_format(GeomVertexArrayFormat const *format);

1748 13 get_animation 0 4 3189 31 GeomVertexFormat::get_animation 0 1 148 117
/**
 * Returns the GeomVertexAnimationSpec that indicates how this format's
 * vertices are set up for animation.
 */
82
inline GeomVertexAnimationSpec const &GeomVertexFormat::get_animation(void) const;

1749 13 set_animation 0 4 3189 31 GeomVertexFormat::set_animation 0 1 149 260
/**
 * Resets the GeomVertexAnimationSpec that indicates how this format's
 * vertices are set up for animation.  You should also, of course, change the
 * columns in the tables accordingly.
 *
 * This may not be called once the format has been registered.
 */
86
inline void GeomVertexFormat::set_animation(GeomVertexAnimationSpec const &animation);

1750 24 get_post_animated_format 0 4 3189 42 GeomVertexFormat::get_post_animated_format 0 1 150 325
/**
 * Returns a suitable vertex format for sending the animated vertices to the
 * graphics backend.  This is the same format as the source format, with the
 * CPU-animation data elements removed.
 *
 * This may only be called after the format has been registered.  The return
 * value will have been already registered.
 */
90
ConstPointerTo< GeomVertexFormat > GeomVertexFormat::get_post_animated_format(void) const;

1751 16 get_union_format 0 4 3189 34 GeomVertexFormat::get_union_format 0 1 151 447
/**
 * Returns a new GeomVertexFormat that includes all of the columns defined in
 * either this GeomVertexFormat or the other one.  If any column is defined in
 * both formats with different sizes (for instance, texcoord2 vs.  texcoord3),
 * the new format will include the larger of the two definitions.
 *
 * This may only be called after both source formats have been registered.
 * The return value will also have been already registered.
 */
107
ConstPointerTo< GeomVertexFormat > GeomVertexFormat::get_union_format(GeomVertexFormat const *other) const;

1752 14 get_num_arrays 0 4 3189 32 GeomVertexFormat::get_num_arrays 0 1 152 223
/**
 * Returns the number of individual arrays required by the format.  If the
 * array data is completely interleaved, this will be 1; if it is completely
 * parallel, this will be the same as the number of data types.
 */
64
inline std::size_t GeomVertexFormat::get_num_arrays(void) const;

1753 9 get_array 0 4 3189 27 GeomVertexFormat::get_array 0 1 153 71
/**
 * Returns the description of the nth array used by the format.
 */
89
inline GeomVertexArrayFormat const *GeomVertexFormat::get_array(std::size_t array) const;

1754 12 modify_array 0 4 3189 30 GeomVertexFormat::modify_array 0 1 154 190
/**
 * Returns a modifiable pointer to the indicated array.  This means
 * duplicating it if it is shared or registered.
 *
 * This may not be called once the format has been registered.
 */
73
GeomVertexArrayFormat *GeomVertexFormat::modify_array(std::size_t array);

1755 9 set_array 0 4 3189 27 GeomVertexFormat::set_array 0 1 155 124
/**
 * Replaces the definition of the indicated array.
 *
 * This may not be called once the format has been registered.
 */
89
void GeomVertexFormat::set_array(std::size_t array, GeomVertexArrayFormat const *format);

1756 12 remove_array 0 4 3189 30 GeomVertexFormat::remove_array 0 1 156 115
/**
 * Removes the nth array from the format.
 *
 * This may not be called once the format has been registered.
 */
55
void GeomVertexFormat::remove_array(std::size_t array);

1757 9 add_array 0 4 3189 27 GeomVertexFormat::add_array 0 1 157 243
/**
 * Adds the indicated array definition to the list of arrays included within
 * this vertex format definition.  The return value is the index number of the
 * new array.
 *
 * This may not be called once the format has been registered.
 */
83
std::size_t GeomVertexFormat::add_array(GeomVertexArrayFormat const *array_format);

1758 12 insert_array 0 4 3189 30 GeomVertexFormat::insert_array 0 1 158 275
/**
 * Adds the indicated array definition to the list of arrays at the indicated
 * position.  This works just like add_array(), except that you can specify
 * which array index the new array should have.
 *
 * This may not be called once the format has been registered.
 */
98
void GeomVertexFormat::insert_array(std::size_t array, GeomVertexArrayFormat const *array_format);

1759 12 clear_arrays 0 4 3189 30 GeomVertexFormat::clear_arrays 0 1 159 146
/**
 * Removes all of the array definitions from the format and starts over.
 *
 * This may not be called once the format has been registered.
 */
42
void GeomVertexFormat::clear_arrays(void);

1760 19 remove_empty_arrays 0 4 3189 37 GeomVertexFormat::remove_empty_arrays 0 1 160 119
/**
 * Removes the arrays that define no columns.
 *
 * This may not be called once the format has been registered.
 */
49
void GeomVertexFormat::remove_empty_arrays(void);

1761 15 get_num_columns 0 4 3189 33 GeomVertexFormat::get_num_columns 0 1 161 100
/**
 * Returns the total number of different columns in the specification, across
 * all arrays.
 */
58
std::size_t GeomVertexFormat::get_num_columns(void) const;

1762 14 get_array_with 0 4 3189 32 GeomVertexFormat::get_array_with 0 2 162 163 699
/**
 * Returns the index number of the array with the ith column.
 *
 * The return value can be passed to get_array_format() to get the format of
 * the array.  It may also be passed to GeomVertexData::get_array_data() or
 * get_data() or set_data() to manipulate the actual array data.
 */

/**
 * Returns the index number of the array with the indicated column, or -1 if
 * no arrays contained that name.
 *
 * The return value can be passed to get_array_format() to get the format of
 * the array.  It may also be passed to GeomVertexData::get_array_data() or
 * get_data() or set_data() to manipulate the actual array data.
 *
 * This may only be called after the format has been registered.
 */
128
int GeomVertexFormat::get_array_with(std::size_t i) const;
int GeomVertexFormat::get_array_with(InternalName const *name) const;

1763 10 get_column 0 4 3189 28 GeomVertexFormat::get_column 0 2 164 165 255
/**
 * Returns the ith column of the specification, across all arrays.
 */

/**
 * Returns the specification with the indicated name, or NULL if the name is
 * not used.  Use get_array_with() to determine which array this column is
 * associated with.
 */
160
GeomVertexColumn const *GeomVertexFormat::get_column(std::size_t i) const;
GeomVertexColumn const *GeomVertexFormat::get_column(InternalName const *name) const;

1764 10 has_column 0 4 3189 28 GeomVertexFormat::has_column 0 1 166 76
/**
 * Returns true if the format has the named column, false otherwise.
 */
73
inline bool GeomVertexFormat::has_column(InternalName const *name) const;

1765 15 get_column_name 0 4 3189 33 GeomVertexFormat::get_column_name 0 1 167 65
/**
 * Returns the name of the ith column, across all arrays.
 */
75
InternalName const *GeomVertexFormat::get_column_name(std::size_t i) const;

1766 13 remove_column 0 4 3189 31 GeomVertexFormat::remove_column 0 1 168 370
/**
 * Removes the named column from the format, from whichever array it exists
 * in.  If there are other columns remaining in the array, the array is left
 * with a gap where the column used to be; if this was the only column in the
 * array, the array is removed (unless keep_empty_array is true).
 *
 * This may not be called once the format has been registered.
 */
94
void GeomVertexFormat::remove_column(InternalName const *name, bool keep_empty_array = false);

1767 12 pack_columns 0 4 3189 30 GeomVertexFormat::pack_columns 0 1 169 48
/**
 * Removes wasted space between columns.
 */
42
void GeomVertexFormat::pack_columns(void);

1768 27 align_columns_for_animation 0 4 3189 45 GeomVertexFormat::align_columns_for_animation 0 1 170 259
/**
 * Reprocesses the columns in the format to align the C_point and C_vector
 * columns to 16-byte boundaries to allow for the more efficient SSE2
 * operations (assuming SSE2 is enabled in the build).
 *
 * Also see maybe_align_columns_for_animation().
 */
57
void GeomVertexFormat::align_columns_for_animation(void);

1769 33 maybe_align_columns_for_animation 0 4 3189 51 GeomVertexFormat::maybe_align_columns_for_animation 0 1 171 172
/**
 * Calls align_columns_for_animation() if this format's AnimationSpec
 * indicates that it contains animated vertices, and if vertex-animation-
 * align-16 is true.
 */
63
void GeomVertexFormat::maybe_align_columns_for_animation(void);

1770 14 get_num_points 0 4 3189 32 GeomVertexFormat::get_num_points 0 1 172 161
/**
 * Returns the number of columns within the format that represent points in
 * space.
 *
 * This may only be called after the format has been registered.
 */
64
inline std::size_t GeomVertexFormat::get_num_points(void) const;

1771 9 get_point 0 4 3189 27 GeomVertexFormat::get_point 0 1 173 219
/**
 * Returns the name of the nth point column.  This represents a point in
 * space, which should be transformed by any spatial transform matrix.
 *
 * This may only be called after the format has been registered.
 */
76
inline InternalName const *GeomVertexFormat::get_point(std::size_t n) const;

1772 15 get_num_vectors 0 4 3189 33 GeomVertexFormat::get_num_vectors 0 1 174 165
/**
 * Returns the number of columns within the format that represent directional
 * vectors.
 *
 * This may only be called after the format has been registered.
 */
65
inline std::size_t GeomVertexFormat::get_num_vectors(void) const;

1773 10 get_vector 0 4 3189 28 GeomVertexFormat::get_vector 0 1 175 239
/**
 * Returns the name of the nth vector column.  This represents a directional
 * vector, which should be transformed by any spatial transform matrix as a
 * vector.
 *
 * This may only be called after the format has been registered.
 */
77
inline InternalName const *GeomVertexFormat::get_vector(std::size_t n) const;

1774 17 get_num_texcoords 0 4 3189 35 GeomVertexFormat::get_num_texcoords 0 1 176 165
/**
 * Returns the number of columns within the format that represent texture
 * coordinates.
 *
 * This may only be called after the format has been registered.
 */
67
inline std::size_t GeomVertexFormat::get_num_texcoords(void) const;

1775 12 get_texcoord 0 4 3189 30 GeomVertexFormat::get_texcoord 0 1 177 165
/**
 * Returns the name of the nth texcoord column.  This represents a texture
 * coordinate.
 *
 * This may only be called after the format has been registered.
 */
79
inline InternalName const *GeomVertexFormat::get_texcoord(std::size_t n) const;

1776 14 get_num_morphs 0 4 3189 32 GeomVertexFormat::get_num_morphs 0 1 178 158
/**
 * Returns the number of columns within the format that represent morph
 * deltas.
 *
 * This may only be called after the format has been registered.
 */
64
inline std::size_t GeomVertexFormat::get_num_morphs(void) const;

1777 16 get_morph_slider 0 4 3189 34 GeomVertexFormat::get_morph_slider 0 1 179 288
/**
 * Returns the slider name associated with the nth morph column.  This is the
 * name of the slider that will control the morph, and should be defined
 * within the SliderTable associated with the GeomVertexData.
 *
 * This may only be called after the format has been registered.
 */
83
inline InternalName const *GeomVertexFormat::get_morph_slider(std::size_t n) const;

1778 14 get_morph_base 0 4 3189 32 GeomVertexFormat::get_morph_base 0 1 180 265
/**
 * Returns the name of the base column that the nth morph modifies.  This
 * column will also be defined within the format, and can be retrieved via
 * get_array_with() and/or get_column().
 *
 * This may only be called after the format has been registered.
 */
81
inline InternalName const *GeomVertexFormat::get_morph_base(std::size_t n) const;

1779 15 get_morph_delta 0 4 3189 33 GeomVertexFormat::get_morph_delta 0 1 181 356
/**
 * Returns the name of the column that defines the nth morph.  This contains
 * the delta offsets that are to be applied to the column defined by
 * get_morph_base().  This column will be defined within the format, and can
 * be retrieved via get_array_with() and/or get_column().
 *
 * This may only be called after the format has been registered.
 */
82
inline InternalName const *GeomVertexFormat::get_morph_delta(std::size_t n) const;

1780 6 output 0 4 3189 24 GeomVertexFormat::output 0 1 182 10
/**
 *
 */
55
void GeomVertexFormat::output(std::ostream &out) const;

1781 5 write 0 4 3189 23 GeomVertexFormat::write 0 1 183 10
/**
 *
 */
76
void GeomVertexFormat::write(std::ostream &out, int indent_level = 0) const;

1782 15 write_with_data 0 4 3189 33 GeomVertexFormat::write_with_data 0 1 184 10
/**
 *
 */
110
void GeomVertexFormat::write_with_data(std::ostream &out, int indent_level, GeomVertexData const *data) const;

1783 9 get_empty 0 4 3189 27 GeomVertexFormat::get_empty 0 1 185 115
/**
 * Returns a standard vertex format containing no arrays at all, useful for
 * pull-style vertex rendering.
 */
72
static inline GeomVertexFormat const *GeomVertexFormat::get_empty(void);

1784 6 get_v3 0 4 3189 24 GeomVertexFormat::get_v3 0 1 186 288
// Some standard vertex formats.  No particular requirement to use one of
// these, but the DirectX renderers can use these formats directly, whereas
// any other format will have to be converted first.

/**
 * Returns a standard vertex format with just a 3-component vertex position.
 */
69
static inline GeomVertexFormat const *GeomVertexFormat::get_v3(void);

1785 8 get_v3n3 0 4 3189 26 GeomVertexFormat::get_v3n3 0 1 187 107
/**
 * Returns a standard vertex format with a 3-component normal and a
 * 3-component vertex position.
 */
71
static inline GeomVertexFormat const *GeomVertexFormat::get_v3n3(void);

1786 8 get_v3t2 0 4 3189 26 GeomVertexFormat::get_v3t2 0 1 188 124
/**
 * Returns a standard vertex format with a 2-component texture coordinate pair
 * and a 3-component vertex position.
 */
71
static inline GeomVertexFormat const *GeomVertexFormat::get_v3t2(void);

1787 10 get_v3n3t2 0 4 3189 28 GeomVertexFormat::get_v3n3t2 0 1 189 147
/**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a 3-component normal, and a 3-component vertex position.
 */
73
static inline GeomVertexFormat const *GeomVertexFormat::get_v3n3t2(void);

1788 8 get_v3cp 0 4 3189 26 GeomVertexFormat::get_v3cp 0 1 190 372
// These formats, with the DirectX-style packed color, may not be supported
// directly by OpenGL.  If you use them and the driver does not support
// them, the GLGraphicsStateGuardian will automatically convert to native
// OpenGL form (with a small runtime overhead).

/**
 * Returns a standard vertex format with a packed color and a 3-component
 * vertex position.
 */
71
static inline GeomVertexFormat const *GeomVertexFormat::get_v3cp(void);

1789 10 get_v3cpt2 0 4 3189 28 GeomVertexFormat::get_v3cpt2 0 1 191 141
/**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a packed color, and a 3-component vertex position.
 */
73
static inline GeomVertexFormat const *GeomVertexFormat::get_v3cpt2(void);

1790 10 get_v3n3cp 0 4 3189 28 GeomVertexFormat::get_v3n3cp 0 1 192 124
/**
 * Returns a standard vertex format with a packed color, a 3-component normal,
 * and a 3-component vertex position.
 */
73
static inline GeomVertexFormat const *GeomVertexFormat::get_v3n3cp(void);

1791 12 get_v3n3cpt2 0 4 3189 30 GeomVertexFormat::get_v3n3cpt2 0 1 193 166
/**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a packed color, a 3-component normal, and a 3-component vertex
 * position.
 */
75
static inline GeomVertexFormat const *GeomVertexFormat::get_v3n3cpt2(void);

1792 8 get_v3c4 0 4 3189 26 GeomVertexFormat::get_v3c4 0 1 194 426
// These formats, with an OpenGL-style four-byte color, are not supported
// directly by DirectX.  If you use them, the DXGraphicsStateGuardian will
// automatically convert to DirectX form (with a larger runtime overhead,
// since DirectX8, and old DirectX9 drivers, require everything to be
// interleaved together).

/**
 * Returns a standard vertex format with a 4-component color and a 3-component
 * vertex position.
 */
71
static inline GeomVertexFormat const *GeomVertexFormat::get_v3c4(void);

1793 10 get_v3c4t2 0 4 3189 28 GeomVertexFormat::get_v3c4t2 0 1 195 146
/**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a 4-component color, and a 3-component vertex position.
 */
73
static inline GeomVertexFormat const *GeomVertexFormat::get_v3c4t2(void);

1794 10 get_v3n3c4 0 4 3189 28 GeomVertexFormat::get_v3n3c4 0 1 196 129
/**
 * Returns a standard vertex format with a 4-component color, a 3-component
 * normal, and a 3-component vertex position.
 */
73
static inline GeomVertexFormat const *GeomVertexFormat::get_v3n3c4(void);

1795 12 get_v3n3c4t2 0 4 3189 30 GeomVertexFormat::get_v3n3c4t2 0 1 197 171
/**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a 4-component color, a 3-component normal, and a 3-component vertex
 * position.
 */
75
static inline GeomVertexFormat const *GeomVertexFormat::get_v3n3c4t2(void);

1796 14 get_class_type 0 4 3189 32 GeomVertexFormat::get_class_type 0 1 198 0
57
static TypeHandle GeomVertexFormat::get_class_type(void);

1797 24 upcast_to_LinkedListNode 0 12 3195 35 SimpleLru::upcast_to_LinkedListNode 0 1 212 39
upcast from SimpleLru to LinkedListNode
58
LinkedListNode *SimpleLru::upcast_to_LinkedListNode(void);

1798 21 downcast_to_SimpleLru 0 12 3196 37 LinkedListNode::downcast_to_SimpleLru 0 0 41
downcast from LinkedListNode to SimpleLru
55
SimpleLru *LinkedListNode::downcast_to_SimpleLru(void);

1799 17 upcast_to_Namable 0 12 3195 28 SimpleLru::upcast_to_Namable 0 1 213 32
upcast from SimpleLru to Namable
44
Namable *SimpleLru::upcast_to_Namable(void);

1800 21 downcast_to_SimpleLru 0 12 3164 30 Namable::downcast_to_SimpleLru 0 0 34
downcast from Namable to SimpleLru
48
SimpleLru *Namable::downcast_to_SimpleLru(void);

1801 9 SimpleLru 0 260 3195 20 SimpleLru::SimpleLru 0 1 201 10
/**
 *
 */
77
explicit SimpleLru::SimpleLru(std::string const &name, std::size_t max_size);

1802 10 ~SimpleLru 0 516 3195 21 SimpleLru::~SimpleLru 0 0 10
/**
 *
 */
28
SimpleLru::~SimpleLru(void);

1803 14 get_total_size 0 4 3195 25 SimpleLru::get_total_size 0 1 202 77
/**
 * Returns the total size of all objects currently active on the LRU.
 */
57
inline std::size_t SimpleLru::get_total_size(void) const;

1804 12 get_max_size 0 4 3195 23 SimpleLru::get_max_size 0 1 203 91
/**
 * Returns the max size of all objects that are allowed to be active on the
 * LRU.
 */
55
inline std::size_t SimpleLru::get_max_size(void) const;

1805 12 set_max_size 0 4 3195 23 SimpleLru::set_max_size 0 1 204 143
/**
 * Changes the max size of all objects that are allowed to be active on the
 * LRU.
 *
 * If the size is (size_t)-1, there is no limit.
 */
58
inline void SimpleLru::set_max_size(std::size_t max_size);

1806 17 count_active_size 0 4 3195 28 SimpleLru::count_active_size 0 1 205 106
/**
 * Returns the total size of the pages that were enqueued since the last call
 * to begin_epoch().
 */
53
std::size_t SimpleLru::count_active_size(void) const;

1807 14 consider_evict 0 4 3195 25 SimpleLru::consider_evict 0 1 206 61
/**
 * Evicts a sequence of objects if the queue is full.
 */
44
inline void SimpleLru::consider_evict(void);

1808 8 evict_to 0 4 3195 19 SimpleLru::evict_to 0 1 207 132
/**
 * Evicts a sequence of objects until the queue fits within the indicated
 * target size, regardless of its normal max size.
 */
57
inline void SimpleLru::evict_to(std::size_t target_size);

1809 11 begin_epoch 0 4 3195 22 SimpleLru::begin_epoch 0 1 208 184
/**
 * Marks the end of the previous epoch and the beginning of the next one.
 * This will evict any objects that are pending eviction, and also update any
 * internal bookkeeping.
 */
41
inline void SimpleLru::begin_epoch(void);

1810 8 validate 0 4 3195 19 SimpleLru::validate 0 1 209 125
/**
 * Checks that the LRU is internally self-consistent.  Returns true if
 * successful, false if there is some problem.
 */
38
inline bool SimpleLru::validate(void);

1811 6 output 0 4 3195 17 SimpleLru::output 0 1 210 10
/**
 *
 */
48
void SimpleLru::output(std::ostream &out) const;

1812 5 write 0 4 3195 16 SimpleLru::write 0 1 211 10
/**
 *
 */
65
void SimpleLru::write(std::ostream &out, int indent_level) const;

1813 24 upcast_to_LinkedListNode 0 12 3197 39 SimpleLruPage::upcast_to_LinkedListNode 0 1 227 43
upcast from SimpleLruPage to LinkedListNode
62
LinkedListNode *SimpleLruPage::upcast_to_LinkedListNode(void);

1814 25 downcast_to_SimpleLruPage 0 12 3196 41 LinkedListNode::downcast_to_SimpleLruPage 0 0 45
downcast from LinkedListNode to SimpleLruPage
63
SimpleLruPage *LinkedListNode::downcast_to_SimpleLruPage(void);

1815 13 SimpleLruPage 0 260 3197 28 SimpleLruPage::SimpleLruPage 0 2 214 215 22
/**
 *
 */

/**
 *
 */
131
inline explicit SimpleLruPage::SimpleLruPage(std::size_t lru_size);
inline SimpleLruPage::SimpleLruPage(SimpleLruPage const &copy);

1816 10 operator = 0 4 3197 25 SimpleLruPage::operator = 0 1 216 0
65
inline void SimpleLruPage::operator =(SimpleLruPage const &copy);

1817 14 ~SimpleLruPage 0 518 3197 29 SimpleLruPage::~SimpleLruPage 0 0 10
/**
 *
 */
44
virtual SimpleLruPage::~SimpleLruPage(void);

1818 7 get_lru 0 4 3197 22 SimpleLruPage::get_lru 0 1 217 104
/**
 * Returns the LRU that manages this page, or NULL if it is not currently
 * managed by any LRU.
 */
53
inline SimpleLru *SimpleLruPage::get_lru(void) const;

1819 11 enqueue_lru 0 4 3197 26 SimpleLruPage::enqueue_lru 0 1 218 183
/**
 * Adds the page to the LRU for the first time, or marks it recently-accessed
 * if it has already been added.
 *
 * If lru is NULL, it means to remove this page from its LRU.
 */
48
void SimpleLruPage::enqueue_lru(SimpleLru *lru);

1820 11 dequeue_lru 0 4 3197 26 SimpleLruPage::dequeue_lru 0 1 219 47
/**
 * Removes the page from its SimpleLru.
 */
45
inline void SimpleLruPage::dequeue_lru(void);

1821 13 mark_used_lru 0 4 3197 28 SimpleLruPage::mark_used_lru 0 2 220 221 337
/**
 * To be called when the page is used; this will move it to the tail of the
 * SimpleLru queue it is already on.
 *
 * This method is const because it's not technically modifying the contents of
 * the page itself.
 */

/**
 * To be called when the page is used; this will move it to the tail of the
 * specified SimpleLru queue.
 */
111
inline void SimpleLruPage::mark_used_lru(void) const;
inline void SimpleLruPage::mark_used_lru(SimpleLru *lru);

1822 12 get_lru_size 0 4 3197 27 SimpleLruPage::get_lru_size 0 1 222 85
/**
 * Returns the size of this page as reported to the LRU, presumably in bytes.
 */
59
inline std::size_t SimpleLruPage::get_lru_size(void) const;

1823 12 set_lru_size 0 4 3197 27 SimpleLruPage::set_lru_size 0 1 223 98
/**
 * Specifies the size of this page, presumably in bytes, although any unit is
 * possible.
 */
62
inline void SimpleLruPage::set_lru_size(std::size_t lru_size);

1824 9 evict_lru 0 6 3197 24 SimpleLruPage::evict_lru 0 1 224 455
/**
 * Evicts the page from the LRU.  Called internally when the LRU determines
 * that it is full.  May also be called externally when necessary to
 * explicitly evict the page.
 *
 * It is legal for this method to either evict the page as requested, do
 * nothing (in which case the eviction will be requested again at the next
 * epoch), or requeue itself on the tail of the queue (in which case the
 * eviction will be requested again much later).
 */
44
virtual void SimpleLruPage::evict_lru(void);

1825 6 output 0 6 3197 21 SimpleLruPage::output 0 1 225 10
/**
 *
 */
60
virtual void SimpleLruPage::output(std::ostream &out) const;

1826 5 write 0 6 3197 20 SimpleLruPage::write 0 1 226 10
/**
 *
 */
77
virtual void SimpleLruPage::write(std::ostream &out, int indent_level) const;

1827 24 upcast_to_LinkedListNode 0 12 3198 41 SimpleAllocator::upcast_to_LinkedListNode 0 1 238 45
upcast from SimpleAllocator to LinkedListNode
64
LinkedListNode *SimpleAllocator::upcast_to_LinkedListNode(void);

1828 27 downcast_to_SimpleAllocator 0 12 3196 43 LinkedListNode::downcast_to_SimpleAllocator 0 0 47
downcast from LinkedListNode to SimpleAllocator
67
SimpleAllocator *LinkedListNode::downcast_to_SimpleAllocator(void);

1829 15 SimpleAllocator 0 260 3198 32 SimpleAllocator::SimpleAllocator 0 1 228 40
/**
 *
 */

/**
 * Move constructor.
 */
84
inline explicit SimpleAllocator::SimpleAllocator(std::size_t max_size, Mutex &lock);

1830 16 ~SimpleAllocator 0 518 3198 33 SimpleAllocator::~SimpleAllocator 0 0 10
/**
 *
 */
48
virtual SimpleAllocator::~SimpleAllocator(void);

1831 5 alloc 0 4 3198 22 SimpleAllocator::alloc 0 1 229 198
/**
 * Allocates a new block.  Returns NULL if a block of the requested size
 * cannot be allocated.
 *
 * To free the allocated block, call block->free(), or simply delete the block
 * pointer.
 */
97
inline SimpleAllocatorBlock *SimpleAllocator::alloc(std::size_t size, std::size_t alignment = 1);

1832 8 is_empty 0 4 3198 25 SimpleAllocator::is_empty 0 1 230 108
/**
 * Returns true if there are no blocks allocated on this page, or false if
 * there is at least one.
 */
50
inline bool SimpleAllocator::is_empty(void) const;

1833 14 get_total_size 0 4 3198 31 SimpleAllocator::get_total_size 0 1 231 55
/**
 * Returns the total size of allocated objects.
 */
63
inline std::size_t SimpleAllocator::get_total_size(void) const;

1834 12 get_max_size 0 4 3198 29 SimpleAllocator::get_max_size 0 1 232 61
/**
 * Returns the available space for allocated objects.
 */
61
inline std::size_t SimpleAllocator::get_max_size(void) const;

1835 12 set_max_size 0 4 3198 29 SimpleAllocator::set_max_size 0 1 233 172
/**
 * Changes the available space for allocated objects.  This will not affect
 * any already-allocated objects, but will have an effect on future calls to
 * alloc().
 */
64
inline void SimpleAllocator::set_max_size(std::size_t max_size);

1836 14 get_contiguous 0 4 3198 31 SimpleAllocator::get_contiguous 0 1 234 299
/**
 * Returns an upper-bound estimate of the size of the largest contiguous block
 * that may be allocated.  It is guaranteed that an attempt to allocate a
 * block larger than this will fail, though it is not guaranteed that an
 * attempt to allocate a block this size or smaller will succeed.
 */
63
inline std::size_t SimpleAllocator::get_contiguous(void) const;

1837 15 get_first_block 0 4 3198 32 SimpleAllocator::get_first_block 0 1 235 103
/**
 * Returns a pointer to the first allocated block, or NULL if there are no
 * allocated blocks.
 */
74
inline SimpleAllocatorBlock *SimpleAllocator::get_first_block(void) const;

1838 6 output 0 4 3198 23 SimpleAllocator::output 0 1 236 10
/**
 *
 */
54
void SimpleAllocator::output(std::ostream &out) const;

1839 5 write 0 4 3198 22 SimpleAllocator::write 0 1 237 10
/**
 *
 */
53
void SimpleAllocator::write(std::ostream &out) const;

1840 21 ~SimpleAllocatorBlock 0 516 3199 43 SimpleAllocatorBlock::~SimpleAllocatorBlock 0 0 66
/**
 * The block automatically frees itself when it destructs.
 */
57
inline SimpleAllocatorBlock::~SimpleAllocatorBlock(void);

1841 4 free 0 4 3199 26 SimpleAllocatorBlock::free 0 1 239 40
/**
 * Releases the allocated space.
 */
45
inline void SimpleAllocatorBlock::free(void);

1842 13 get_allocator 0 4 3199 35 SimpleAllocatorBlock::get_allocator 0 1 240 113
/**
 * Returns the SimpleAllocator object that owns this block.  Returns NULL if
 * the block has been freed.
 */
72
inline SimpleAllocator *SimpleAllocatorBlock::get_allocator(void) const;

1843 9 get_start 0 4 3199 31 SimpleAllocatorBlock::get_start 0 1 241 113
/**
 * Returns the starting point of this block.  It is an error to call this if
 * the block has been freed.
 */
63
inline std::size_t SimpleAllocatorBlock::get_start(void) const;

1844 8 get_size 0 4 3199 30 SimpleAllocatorBlock::get_size 0 1 242 103
/**
 * Returns the size of this block.  It is an error to call this if the block
 * has been freed.
 */
62
inline std::size_t SimpleAllocatorBlock::get_size(void) const;

1845 7 is_free 0 4 3199 29 SimpleAllocatorBlock::is_free 0 1 243 80
/**
 * Returns true if the block has been freed, false if it is still valid.
 */
54
inline bool SimpleAllocatorBlock::is_free(void) const;

1846 12 get_max_size 0 4 3199 34 SimpleAllocatorBlock::get_max_size 0 1 244 107
/**
 * Returns the maximum size this block can be reallocated to, as limited by
 * the following block.
 */
66
inline std::size_t SimpleAllocatorBlock::get_max_size(void) const;

1847 7 realloc 0 4 3199 29 SimpleAllocatorBlock::realloc 0 1 245 144
/**
 * Changes the size of this block to the specified size.  Returns true if the
 * change is accepted, false if there was not enough room.
 */
60
inline bool SimpleAllocatorBlock::realloc(std::size_t size);

1848 14 get_next_block 0 4 3199 36 SimpleAllocatorBlock::get_next_block 0 1 246 120
/**
 * Returns a pointer to the next allocated block in the chain, or NULL if
 * there are no more allocated blocks.
 */
78
inline SimpleAllocatorBlock *SimpleAllocatorBlock::get_next_block(void) const;

1849 6 output 0 4 3199 28 SimpleAllocatorBlock::output 0 1 247 10
/**
 *
 */
59
void SimpleAllocatorBlock::output(std::ostream &out) const;

1850 8 is_valid 0 4 3200 28 VertexDataSaveFile::is_valid 0 1 248 119
/**
 * Returns true if the save file was successfully created and is ready for
 * use, false if there was an error.
 */
53
inline bool VertexDataSaveFile::is_valid(void) const;

1851 19 get_total_file_size 0 4 3200 39 VertexDataSaveFile::get_total_file_size 0 1 249 95
/**
 * Returns the amount of space consumed by the save file, including unused
 * portions.
 */
71
inline std::size_t VertexDataSaveFile::get_total_file_size(void) const;

1852 18 get_used_file_size 0 4 3200 38 VertexDataSaveFile::get_used_file_size 0 1 250 85
/**
 * Returns the amount of space within the save file that is currently in use.
 */
70
inline std::size_t VertexDataSaveFile::get_used_file_size(void) const;

1853 25 upcast_to_SimpleAllocator 0 12 3201 41 VertexDataPage::upcast_to_SimpleAllocator 0 1 269 45
upcast from VertexDataPage to SimpleAllocator
65
SimpleAllocator *VertexDataPage::upcast_to_SimpleAllocator(void);

1854 26 downcast_to_VertexDataPage 0 12 3198 43 SimpleAllocator::downcast_to_VertexDataPage 0 0 47
downcast from SimpleAllocator to VertexDataPage
66
VertexDataPage *SimpleAllocator::downcast_to_VertexDataPage(void);

1855 23 upcast_to_SimpleLruPage 0 12 3201 39 VertexDataPage::upcast_to_SimpleLruPage 0 1 270 43
upcast from VertexDataPage to SimpleLruPage
61
SimpleLruPage *VertexDataPage::upcast_to_SimpleLruPage(void);

1856 26 downcast_to_VertexDataPage 0 12 3197 41 SimpleLruPage::downcast_to_VertexDataPage 0 0 45
downcast from SimpleLruPage to VertexDataPage
64
VertexDataPage *SimpleLruPage::downcast_to_VertexDataPage(void);

1857 13 get_ram_class 0 4 3201 29 VertexDataPage::get_ram_class 0 1 251 135
/**
 * Returns the current ram class of the array.  If this is other than
 * RC_resident, the array data is not resident in memory.
 */
74
inline VertexDataPage::RamClass VertexDataPage::get_ram_class(void) const;

1858 21 get_pending_ram_class 0 4 3201 37 VertexDataPage::get_pending_ram_class 0 1 252 212
/**
 * Returns the pending ram class of the array.  If this is different from
 * get_ram_class(), this page has been queued to be processed by the thread.
 * Eventually the page will be set to this ram class.
 */
82
inline VertexDataPage::RamClass VertexDataPage::get_pending_ram_class(void) const;

1859 16 request_resident 0 4 3201 32 VertexDataPage::request_resident 0 1 253 128
/**
 * Ensures that the page will become resident soon.  Future calls to
 * get_page_data() will eventually return non-NULL.
 */
51
inline void VertexDataPage::request_resident(void);

1860 5 alloc 0 4 3201 21 VertexDataPage::alloc 0 1 254 198
/**
 * Allocates a new block.  Returns NULL if a block of the requested size
 * cannot be allocated.
 *
 * To free the allocated block, call block->free(), or simply delete the block
 * pointer.
 */
64
inline VertexDataBlock *VertexDataPage::alloc(std::size_t size);

1861 15 get_first_block 0 4 3201 31 VertexDataPage::get_first_block 0 1 255 103
/**
 * Returns a pointer to the first allocated block, or NULL if there are no
 * allocated blocks.
 */
68
inline VertexDataBlock *VertexDataPage::get_first_block(void) const;

1862 8 get_book 0 4 3201 24 VertexDataPage::get_book 0 1 256 61
/**
 * Returns a pointer to the book that owns this page.
 */
60
inline VertexDataBook *VertexDataPage::get_book(void) const;

1863 14 get_global_lru 0 4 3201 30 VertexDataPage::get_global_lru 0 1 257 119
/**
 * Returns a pointer to the global LRU object that manages the
 * VertexDataPage's with the indicated RamClass.
 */
89
static inline SimpleLru *VertexDataPage::get_global_lru(VertexDataPage::RamClass rclass);

1864 15 get_pending_lru 0 4 3201 31 VertexDataPage::get_pending_lru 0 1 258 133
/**
 * Returns a pointer to the global LRU object that manages the
 * VertexDataPage's that are pending processing by the thread.
 */
63
static inline SimpleLru *VertexDataPage::get_pending_lru(void);

1865 13 get_save_file 0 4 3201 29 VertexDataPage::get_save_file 0 1 259 121
/**
 * Returns the global VertexDataSaveFile that will be used to save vertex data
 * buffers to disk when necessary.
 */
70
static inline VertexDataSaveFile *VertexDataPage::get_save_file(void);

1866 12 save_to_disk 0 4 3201 28 VertexDataPage::save_to_disk 0 1 260 205
/**
 * Writes the page to disk, but does not evict it from memory or affect its
 * LRU status.  If it gets evicted later without having been modified, it will
 * not need to write itself to disk again.
 */
47
inline bool VertexDataPage::save_to_disk(void);

1867 15 get_num_threads 0 4 3201 31 VertexDataPage::get_num_threads 0 1 261 285
/**
 * Returns the number of threads that have been spawned to service vertex
 * paging requests, or 0 if no threads have been spawned (which may mean
 * either that all paging requests will be handled by the main thread, or
 * simply that no paging requests have yet been issued).
 */
56
static inline int VertexDataPage::get_num_threads(void);

1868 21 get_num_pending_reads 0 4 3201 37 VertexDataPage::get_num_pending_reads 0 1 262 94
/**
 * Returns the number of read requests that are waiting to be serviced by a
 * thread.
 */
62
static inline int VertexDataPage::get_num_pending_reads(void);

1869 22 get_num_pending_writes 0 4 3201 38 VertexDataPage::get_num_pending_writes 0 1 263 95
/**
 * Returns the number of write requests that are waiting to be serviced by a
 * thread.
 */
63
static inline int VertexDataPage::get_num_pending_writes(void);

1870 12 stop_threads 0 4 3201 28 VertexDataPage::stop_threads 0 1 264 141
/**
 * Call this to stop the paging threads, if they were started.  This may block
 * until all of the pending tasks have been completed.
 */
47
static void VertexDataPage::stop_threads(void);

1871 13 flush_threads 0 4 3201 29 VertexDataPage::flush_threads 0 1 265 80
/**
 * Waits for all of the pending thread tasks to finish before returning.
 */
48
static void VertexDataPage::flush_threads(void);

1872 6 output 0 6 3201 22 VertexDataPage::output 0 1 266 10
/**
 *
 */
61
virtual void VertexDataPage::output(std::ostream &out) const;

1873 5 write 0 6 3201 21 VertexDataPage::write 0 1 267 10
/**
 *
 */
78
virtual void VertexDataPage::write(std::ostream &out, int indent_level) const;

1874 14 get_class_type 0 4 3201 30 VertexDataPage::get_class_type 0 1 268 0
55
static TypeHandle VertexDataPage::get_class_type(void);

1875 14 VertexDataBook 0 260 3204 30 VertexDataBook::VertexDataBook 0 1 271 10
/**
 *
 */
64
explicit VertexDataBook::VertexDataBook(std::size_t block_size);

1876 15 ~VertexDataBook 0 516 3204 31 VertexDataBook::~VertexDataBook 0 0 10
/**
 *
 */
38
VertexDataBook::~VertexDataBook(void);

1877 5 alloc 0 4 3204 21 VertexDataBook::alloc 0 1 272 78
/**
 * Allocates and returns a new VertexDataBuffer of the requested size.
 */
64
inline VertexDataBlock *VertexDataBook::alloc(std::size_t size);

1878 13 get_num_pages 0 4 3204 29 VertexDataBook::get_num_pages 0 1 273 60
/**
 * Returns the number of pages created for the book.
 */
61
inline std::size_t VertexDataBook::get_num_pages(void) const;

1879 21 count_total_page_size 0 4 3204 37 VertexDataBook::count_total_page_size 0 2 274 275 209
/**
 * Returns the total size of all bytes owned by all pages owned by this book.
 */

/**
 * Returns the total size of all bytes owned by all pages owned by this book
 * that have the indicated ram class.
 */
155
std::size_t VertexDataBook::count_total_page_size(void) const;
std::size_t VertexDataBook::count_total_page_size(VertexDataPage::RamClass ram_class) const;

1880 20 count_allocated_size 0 4 3204 36 VertexDataBook::count_allocated_size 0 2 276 277 220
/**
 * Returns the total size of all bytes allocated within pages owned by this
 * book.
 */

/**
 * Returns the total size of all bytes allocated within pages owned by this
 * book that have the indicated ram class.
 */
153
std::size_t VertexDataBook::count_allocated_size(void) const;
std::size_t VertexDataBook::count_allocated_size(VertexDataPage::RamClass ram_class) const;

1881 12 save_to_disk 0 4 3204 28 VertexDataBook::save_to_disk 0 1 278 223
/**
 * Writes all pages to disk immediately, just in case they get evicted later.
 * It makes sense to make this call just before taking down a loading screen,
 * to minimize chugs from saving pages inadvertently later.
 */
40
void VertexDataBook::save_to_disk(void);

1882 30 upcast_to_SimpleAllocatorBlock 0 12 3205 47 VertexDataBlock::upcast_to_SimpleAllocatorBlock 0 1 281 51
upcast from VertexDataBlock to SimpleAllocatorBlock
76
SimpleAllocatorBlock *VertexDataBlock::upcast_to_SimpleAllocatorBlock(void);

1883 27 downcast_to_VertexDataBlock 0 12 3199 49 SimpleAllocatorBlock::downcast_to_VertexDataBlock 0 0 53
downcast from SimpleAllocatorBlock to VertexDataBlock
73
VertexDataBlock *SimpleAllocatorBlock::downcast_to_VertexDataBlock(void);

1884 24 upcast_to_ReferenceCount 0 12 3205 41 VertexDataBlock::upcast_to_ReferenceCount 0 1 282 45
upcast from VertexDataBlock to ReferenceCount
64
ReferenceCount *VertexDataBlock::upcast_to_ReferenceCount(void);

1885 27 downcast_to_VertexDataBlock 0 12 3206 43 ReferenceCount::downcast_to_VertexDataBlock 0 0 47
downcast from ReferenceCount to VertexDataBlock
67
VertexDataBlock *ReferenceCount::downcast_to_VertexDataBlock(void);

1886 8 get_page 0 4 3205 25 VertexDataBlock::get_page 0 1 279 65
/**
 * Returns the page from which this buffer was allocated.
 */
61
inline VertexDataPage *VertexDataBlock::get_page(void) const;

1887 14 get_next_block 0 4 3205 31 VertexDataBlock::get_next_block 0 1 280 120
/**
 * Returns a pointer to the next allocated block in the chain, or NULL if
 * there are no more allocated blocks.
 */
68
inline VertexDataBlock *VertexDataBlock::get_next_block(void) const;

1888 16 ~VertexDataBlock 0 516 3205 33 VertexDataBlock::~VertexDataBlock 0 0 0
40
VertexDataBlock::~VertexDataBlock(void);

1889 27 upcast_to_CopyOnWriteObject 0 12 3207 48 GeomVertexArrayData::upcast_to_CopyOnWriteObject 0 1 317 52
upcast from GeomVertexArrayData to CopyOnWriteObject
74
CopyOnWriteObject *GeomVertexArrayData::upcast_to_CopyOnWriteObject(void);

1890 31 downcast_to_GeomVertexArrayData 0 12 3208 50 CopyOnWriteObject::downcast_to_GeomVertexArrayData 0 0 54
downcast from CopyOnWriteObject to GeomVertexArrayData
78
GeomVertexArrayData *CopyOnWriteObject::downcast_to_GeomVertexArrayData(void);

1891 23 upcast_to_SimpleLruPage 0 12 3207 44 GeomVertexArrayData::upcast_to_SimpleLruPage 0 1 318 48
upcast from GeomVertexArrayData to SimpleLruPage
66
SimpleLruPage *GeomVertexArrayData::upcast_to_SimpleLruPage(void);

1892 31 downcast_to_GeomVertexArrayData 0 12 3197 46 SimpleLruPage::downcast_to_GeomVertexArrayData 0 0 50
downcast from SimpleLruPage to GeomVertexArrayData
74
GeomVertexArrayData *SimpleLruPage::downcast_to_GeomVertexArrayData(void);

1893 19 upcast_to_GeomEnums 0 12 3207 40 GeomVertexArrayData::upcast_to_GeomEnums 0 1 319 44
upcast from GeomVertexArrayData to GeomEnums
58
GeomEnums *GeomVertexArrayData::upcast_to_GeomEnums(void);

1894 31 downcast_to_GeomVertexArrayData 0 12 3168 42 GeomEnums::downcast_to_GeomVertexArrayData 0 0 46
downcast from GeomEnums to GeomVertexArrayData
70
GeomVertexArrayData *GeomEnums::downcast_to_GeomVertexArrayData(void);

1895 19 GeomVertexArrayData 0 260 3207 40 GeomVertexArrayData::GeomVertexArrayData 0 2 283 284 118
/**
 * Constructs an invalid object.  This is only used when reading from the bam
 * file.
 */

/**
 *
 */

/**
 *
 */
201
explicit GeomVertexArrayData::GeomVertexArrayData(GeomVertexArrayFormat const *array_format, GeomEnums::UsageHint usage_hint);
GeomVertexArrayData::GeomVertexArrayData(GeomVertexArrayData const &copy);

1896 10 operator = 0 4 3207 31 GeomVertexArrayData::operator = 0 1 285 0
70
void GeomVertexArrayData::operator =(GeomVertexArrayData const &copy);

1897 20 ~GeomVertexArrayData 0 518 3207 41 GeomVertexArrayData::~GeomVertexArrayData 0 0 10
/**
 *
 */
56
virtual GeomVertexArrayData::~GeomVertexArrayData(void);

1898 12 operator new 0 4 3207 33 GeomVertexArrayData::operator new 0 1 286 0
142
inline void *GeomVertexArrayData::operator new(std::size_t size);
inline void *GeomVertexArrayData::operator new(std::size_t size, void *ptr);

1899 15 operator delete 0 4 3207 36 GeomVertexArrayData::operator delete 0 0 0
126
inline void GeomVertexArrayData::operator delete(void *ptr);
inline void GeomVertexArrayData::operator delete(void *, void *);

1900 12 validate_ptr 0 4 3207 33 GeomVertexArrayData::validate_ptr 0 0 0
70
static inline bool GeomVertexArrayData::validate_ptr(void const *ptr);

1901 10 compare_to 0 4 3207 31 GeomVertexArrayData::compare_to 0 1 287 96
/**
 * Returns 0 if the two arrays are equivalent, even if they are not the same
 * pointer.
 */
76
int GeomVertexArrayData::compare_to(GeomVertexArrayData const &other) const;

1902 16 get_array_format 0 4 3207 37 GeomVertexArrayData::get_array_format 0 1 288 63
/**
 * Returns the format object that describes this array.
 */
86
inline GeomVertexArrayFormat const *GeomVertexArrayData::get_array_format(void) const;

1903 14 get_usage_hint 0 4 3207 35 GeomVertexArrayData::get_usage_hint 0 1 289 154
/**
 * Returns the usage hint that describes to the rendering backend how often
 * the vertex data will be modified and/or rendered.  See geomEnums.h.
 */
76
inline GeomEnums::UsageHint GeomVertexArrayData::get_usage_hint(void) const;

1904 14 set_usage_hint 0 4 3207 35 GeomVertexArrayData::set_usage_hint 0 1 290 228
/**
 * Changes the UsageHint hint for this array.  See get_usage_hint().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
74
void GeomVertexArrayData::set_usage_hint(GeomEnums::UsageHint usage_hint);

1905 10 has_column 0 4 3207 31 GeomVertexArrayData::has_column 0 1 291 153
/**
 * Returns true if the array has the named column, false otherwise.  This is
 * really just a shortcut for asking the same thing from the format.
 */
76
inline bool GeomVertexArrayData::has_column(InternalName const *name) const;

1906 12 get_num_rows 0 4 3207 33 GeomVertexArrayData::get_num_rows 0 1 292 187
/**
 * Returns the number of rows stored in the array, based on the number of
 * bytes and the stride.  This should be the same for all arrays within a
 * given GeomVertexData object.
 */
57
inline int GeomVertexArrayData::get_num_rows(void) const;

1907 12 set_num_rows 0 4 3207 33 GeomVertexArrayData::set_num_rows 0 1 293 659
/**
 * Sets the length of the array to n rows.
 *
 * Normally, you would not call this directly, since all of the arrays in a
 * particular GeomVertexData must have the same number of rows; instead, call
 * GeomVertexData::set_num_rows().
 *
 * The return value is true if the number of rows was changed, false if the
 * object already contained n rows (or if there was some error).
 *
 * The new vertex data is initialized to 0, including the "color" column (but
 * see GeomVertexData::set_num_rows()).
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
53
inline bool GeomVertexArrayData::set_num_rows(int n);

1908 20 unclean_set_num_rows 0 4 3207 41 GeomVertexArrayData::unclean_set_num_rows 0 1 294 423
/**
 * This method behaves like set_num_rows(), except the new data is not
 * initialized.  Furthermore, after this call, *any* of the data in the
 * GeomVertexArrayData may be uninitialized, including the earlier rows.
 *
 * Normally, you would not call this directly, since all of the arrays in a
 * particular GeomVertexData must have the same number of rows; instead, call
 * GeomVertexData::unclean_set_num_rows().
 */
61
inline bool GeomVertexArrayData::unclean_set_num_rows(int n);

1909 16 reserve_num_rows 0 4 3207 37 GeomVertexArrayData::reserve_num_rows 0 1 295 313
/**
 * This ensures that enough memory space for n rows is allocated, so that you
 * may increase the number of rows to n without causing a new memory
 * allocation.  This is a performance optimization only; it is especially
 * useful when you know ahead of time that you will be adding n rows to the
 * data.
 */
57
inline bool GeomVertexArrayData::reserve_num_rows(int n);

1910 10 clear_rows 0 4 3207 31 GeomVertexArrayData::clear_rows 0 1 296 96
/**
 * Removes all of the rows in the array.  Functionally equivalent to
 * set_num_rows(0).
 */
50
inline void GeomVertexArrayData::clear_rows(void);

1911 19 get_data_size_bytes 0 4 3207 40 GeomVertexArrayData::get_data_size_bytes 0 1 297 59
/**
 * Returns the number of bytes stored in the array.
 */
72
inline std::size_t GeomVertexArrayData::get_data_size_bytes(void) const;

1912 12 get_modified 0 4 3207 33 GeomVertexArrayData::get_modified 0 1 298 124
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * the array vertex data is modified.
 */
63
inline UpdateSeq GeomVertexArrayData::get_modified(void) const;

1913 6 output 0 6 3207 27 GeomVertexArrayData::output 0 1 299 10
/**
 *
 */
66
virtual void GeomVertexArrayData::output(std::ostream &out) const;

1914 5 write 0 6 3207 26 GeomVertexArrayData::write 0 1 300 10
/**
 *
 */
87
virtual void GeomVertexArrayData::write(std::ostream &out, int indent_level = 0) const;

1915 16 request_resident 0 4 3207 37 GeomVertexArrayData::request_resident 0 1 301 281
/**
 * Returns true if the vertex data is currently resident in memory.  If this
 * returns true, the next call to get_handle()->get_read_pointer() will
 * probably not block.  If this returns false, the vertex data will be brought
 * back into memory shortly; try again later.
 */
111
inline bool GeomVertexArrayData::request_resident(Thread *current_thread = Thread::get_current_thread()) const;

1916 10 get_handle 0 4 3207 31 GeomVertexArrayData::get_handle 0 1 302 250
/**
 * Returns an object that can be used to read the actual data bytes stored in
 * the array.  Calling this method locks the data, and will block any other
 * threads attempting to read or write the data, until the returned object
 * destructs.
 */
144
inline ConstPointerTo< GeomVertexArrayDataHandle > GeomVertexArrayData::get_handle(Thread *current_thread = Thread::get_current_thread()) const;

1917 13 modify_handle 0 4 3207 34 GeomVertexArrayData::modify_handle 0 1 303 259
/**
 * Returns an object that can be used to read or write the actual data bytes
 * stored in the array.  Calling this method locks the data, and will block
 * any other threads attempting to read or write the data, until the returned
 * object destructs.
 */
136
inline PointerTo< GeomVertexArrayDataHandle > GeomVertexArrayData::modify_handle(Thread *current_thread = Thread::get_current_thread());

1918 7 prepare 0 4 3207 28 GeomVertexArrayData::prepare 0 1 304 344
/**
 * Indicates that the data should be enqueued to be prepared in the indicated
 * prepared_objects at the beginning of the next frame.  This will ensure the
 * data is already loaded into the GSG if it is expected to be rendered soon.
 *
 * Use this function instead of prepare_now() to preload datas from a user
 * interface standpoint.
 */
77
void GeomVertexArrayData::prepare(PreparedGraphicsObjects *prepared_objects);

1919 11 is_prepared 0 4 3207 32 GeomVertexArrayData::is_prepared 0 1 305 131
/**
 * Returns true if the data has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */
87
bool GeomVertexArrayData::is_prepared(PreparedGraphicsObjects *prepared_objects) const;

1920 11 prepare_now 0 4 3207 32 GeomVertexArrayData::prepare_now 0 1 306 527
/**
 * Creates a context for the data on the particular GSG, if it does not
 * already exist.  Returns the new (or old) VertexBufferContext.  This assumes
 * that the GraphicsStateGuardian is the currently active rendering context
 * and that it is ready to accept new datas.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a data does not need to be explicitly prepared by the user before it may be
 * rendered.
 */
129
VertexBufferContext *GeomVertexArrayData::prepare_now(PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg);

1921 7 release 0 4 3207 28 GeomVertexArrayData::release 0 1 307 154
/**
 * Frees the data context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */
77
bool GeomVertexArrayData::release(PreparedGraphicsObjects *prepared_objects);

1922 11 release_all 0 4 3207 32 GeomVertexArrayData::release_all 0 1 308 149
/**
 * Frees the context allocated on all objects for which the data has been
 * declared.  Returns the number of contexts which have been freed.
 */
43
int GeomVertexArrayData::release_all(void);

1923 19 get_independent_lru 0 4 3207 40 GeomVertexArrayData::get_independent_lru 0 1 309 131
/**
 * Returns a pointer to the global LRU object that manages the
 * GeomVertexArrayData's that have not (yet) been paged out.
 */
72
static inline SimpleLru *GeomVertexArrayData::get_independent_lru(void);

1924 13 get_small_lru 0 4 3207 34 GeomVertexArrayData::get_small_lru 0 1 310 138
/**
 * Returns a pointer to the global LRU object that manages the
 * GeomVertexArrayData's that are deemed too small to be paged out.
 */
66
static inline SimpleLru *GeomVertexArrayData::get_small_lru(void);

1925 9 lru_epoch 0 4 3207 30 GeomVertexArrayData::lru_epoch 0 1 311 124
/**
 * Marks that an epoch has passed in each LRU.  Asks the LRU's to consider
 * whether they should perform evictions.
 */
49
static void GeomVertexArrayData::lru_epoch(void);

1926 8 get_book 0 4 3207 29 GeomVertexArrayData::get_book 0 1 312 98
/**
 * Returns the global VertexDataBook that will be used to allocate vertex data
 * buffers.
 */
66
static inline VertexDataBook &GeomVertexArrayData::get_book(void);

1927 13 __getbuffer__ 0 4 3207 34 GeomVertexArrayData::__getbuffer__ 0 2 313 314 0
173
int GeomVertexArrayData::__getbuffer__(PyObject *self, Py_buffer *view, int flags);
int GeomVertexArrayData::__getbuffer__(PyObject *self, Py_buffer *view, int flags) const;

1928 17 __releasebuffer__ 0 4 3207 38 GeomVertexArrayData::__releasebuffer__ 0 1 315 0
83
void GeomVertexArrayData::__releasebuffer__(PyObject *self, Py_buffer *view) const;

1929 14 get_class_type 0 4 3207 35 GeomVertexArrayData::get_class_type 0 1 316 0
60
static TypeHandle GeomVertexArrayData::get_class_type(void);

1930 24 upcast_to_ReferenceCount 0 12 3212 51 GeomVertexArrayDataHandle::upcast_to_ReferenceCount 0 1 344 55
upcast from GeomVertexArrayDataHandle to ReferenceCount
74
ReferenceCount *GeomVertexArrayDataHandle::upcast_to_ReferenceCount(void);

1931 37 downcast_to_GeomVertexArrayDataHandle 0 12 3206 53 ReferenceCount::downcast_to_GeomVertexArrayDataHandle 0 0 57
downcast from ReferenceCount to GeomVertexArrayDataHandle
87
GeomVertexArrayDataHandle *ReferenceCount::downcast_to_GeomVertexArrayDataHandle(void);

1932 19 upcast_to_GeomEnums 0 12 3212 46 GeomVertexArrayDataHandle::upcast_to_GeomEnums 0 1 345 50
upcast from GeomVertexArrayDataHandle to GeomEnums
64
GeomEnums *GeomVertexArrayDataHandle::upcast_to_GeomEnums(void);

1933 37 downcast_to_GeomVertexArrayDataHandle 0 12 3168 48 GeomEnums::downcast_to_GeomVertexArrayDataHandle 0 0 52
downcast from GeomEnums to GeomVertexArrayDataHandle
82
GeomVertexArrayDataHandle *GeomEnums::downcast_to_GeomVertexArrayDataHandle(void);

1934 26 ~GeomVertexArrayDataHandle 0 518 3212 53 GeomVertexArrayDataHandle::~GeomVertexArrayDataHandle 0 0 10
/**
 *
 */
75
virtual inline GeomVertexArrayDataHandle::~GeomVertexArrayDataHandle(void);

1935 10 get_object 0 4 3212 37 GeomVertexArrayDataHandle::get_object 0 2 320 321 22
/**
 *
 */

/**
 *
 */
157
inline GeomVertexArrayData const *GeomVertexArrayDataHandle::get_object(void) const;
inline GeomVertexArrayData *GeomVertexArrayDataHandle::get_object(void);

1936 16 get_array_format 0 4 3212 43 GeomVertexArrayDataHandle::get_array_format 0 1 322 10
/**
 *
 */
92
inline GeomVertexArrayFormat const *GeomVertexArrayDataHandle::get_array_format(void) const;

1937 14 get_usage_hint 0 4 3212 41 GeomVertexArrayDataHandle::get_usage_hint 0 1 323 10
/**
 *
 */
82
inline GeomEnums::UsageHint GeomVertexArrayDataHandle::get_usage_hint(void) const;

1938 12 get_num_rows 0 4 3212 39 GeomVertexArrayDataHandle::get_num_rows 0 1 324 10
/**
 *
 */
63
inline int GeomVertexArrayDataHandle::get_num_rows(void) const;

1939 12 set_num_rows 0 4 3212 39 GeomVertexArrayDataHandle::set_num_rows 0 1 325 10
/**
 *
 */
52
bool GeomVertexArrayDataHandle::set_num_rows(int n);

1940 20 unclean_set_num_rows 0 4 3212 47 GeomVertexArrayDataHandle::unclean_set_num_rows 0 1 326 10
/**
 *
 */
60
bool GeomVertexArrayDataHandle::unclean_set_num_rows(int n);

1941 16 reserve_num_rows 0 4 3212 43 GeomVertexArrayDataHandle::reserve_num_rows 0 1 327 10
/**
 *
 */
56
bool GeomVertexArrayDataHandle::reserve_num_rows(int n);

1942 10 clear_rows 0 4 3212 37 GeomVertexArrayDataHandle::clear_rows 0 1 328 10
/**
 *
 */
56
inline void GeomVertexArrayDataHandle::clear_rows(void);

1943 19 get_data_size_bytes 0 4 3212 46 GeomVertexArrayDataHandle::get_data_size_bytes 0 1 329 10
/**
 *
 */
78
inline std::size_t GeomVertexArrayDataHandle::get_data_size_bytes(void) const;

1944 12 get_modified 0 4 3212 39 GeomVertexArrayDataHandle::get_modified 0 1 330 10
/**
 *
 */
69
inline UpdateSeq GeomVertexArrayDataHandle::get_modified(void) const;

1945 16 request_resident 0 4 3212 43 GeomVertexArrayDataHandle::request_resident 0 1 331 281
/**
 * Returns true if the vertex data is currently resident in memory.  If this
 * returns true, the next call to get_handle()->get_read_pointer() will
 * probably not block.  If this returns false, the vertex data will be brought
 * back into memory shortly; try again later.
 */
68
inline bool GeomVertexArrayDataHandle::request_resident(void) const;

1946 11 prepare_now 0 4 3212 38 GeomVertexArrayDataHandle::prepare_now 0 1 332 527
/**
 * Creates a context for the data on the particular GSG, if it does not
 * already exist.  Returns the new (or old) VertexBufferContext.  This assumes
 * that the GraphicsStateGuardian is the currently active rendering context
 * and that it is ready to accept new datas.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a data does not need to be explicitly prepared by the user before it may be
 * rendered.
 */
148
inline VertexBufferContext *GeomVertexArrayDataHandle::prepare_now(PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg) const;

1947 14 copy_data_from 0 4 3212 41 GeomVertexArrayDataHandle::copy_data_from 0 2 333 334 120
/**
 * Copies the entire data array from the other object.
 */

/**
 * Copies the entire data array from the buffer.
 */
248
void GeomVertexArrayDataHandle::copy_data_from(GeomVertexArrayDataHandle const *other);
void GeomVertexArrayDataHandle::copy_data_from(unsigned char const *source, std::size_t size);
void GeomVertexArrayDataHandle::copy_data_from(PyObject *buffer);

1948 17 copy_subdata_from 0 4 3212 44 GeomVertexArrayDataHandle::copy_subdata_from 0 3 335 336 337 398
/**
 * Copies a portion of the data array from the other object into a portion of
 * the data array of this object.  If to_size != from_size, the size of this
 * data array is adjusted accordingly.
 */

/**
 * Copies a portion of the data array from the buffer into a portion of the
 * data array of this object.  If to_size != from_size, the size of this data
 * array is adjusted accordingly.
 */
621
void GeomVertexArrayDataHandle::copy_subdata_from(std::size_t to_start, std::size_t to_size, GeomVertexArrayDataHandle const *other, std::size_t from_start, std::size_t from_size);
void GeomVertexArrayDataHandle::copy_subdata_from(std::size_t to_start, std::size_t to_size, unsigned char const *source, std::size_t from_start, std::size_t from_size);
void GeomVertexArrayDataHandle::copy_subdata_from(std::size_t to_start, std::size_t to_size, PyObject *buffer);
void GeomVertexArrayDataHandle::copy_subdata_from(std::size_t to_start, std::size_t to_size, PyObject *buffer, std::size_t from_start, std::size_t from_size);

1949 8 get_data 0 4 3212 35 GeomVertexArrayDataHandle::get_data 0 1 338 177
/**
 * Returns the entire raw data of the GeomVertexArrayData object, formatted as
 * a string.  This is primarily for the benefit of high-level languages such
 * as Python.
 */
68
inline vector_uchar GeomVertexArrayDataHandle::get_data(void) const;

1950 8 set_data 0 4 3212 35 GeomVertexArrayDataHandle::set_data 0 1 339 166
/**
 * Replaces the entire raw data array with the contents of the indicated
 * string.  This is primarily for the benefit of high-level languages like
 * Python.
 */
67
void GeomVertexArrayDataHandle::set_data(vector_uchar const &data);

1951 11 get_subdata 0 4 3212 38 GeomVertexArrayDataHandle::get_subdata 0 1 340 182
/**
 * Returns a subset of the raw data of the GeomVertexArrayData object,
 * formatted as a string.  This is primarily for the benefit of high-level
 * languages such as Python.
 */
102
inline vector_uchar GeomVertexArrayDataHandle::get_subdata(std::size_t start, std::size_t size) const;

1952 11 set_subdata 0 4 3212 38 GeomVertexArrayDataHandle::set_subdata 0 1 341 232
/**
 * Replaces a portion of the data array from the indicated string.  If size !=
 * data.size(), the size of this data array is adjusted accordingly.
 *
 * This is primarily for the benefit of high-level languages like Python.
 */
107
void GeomVertexArrayDataHandle::set_subdata(std::size_t start, std::size_t size, vector_uchar const &data);

1953 9 mark_used 0 4 3212 36 GeomVertexArrayDataHandle::mark_used 0 1 342 46
/**
 * Marks the array data recently-used.
 */
61
inline void GeomVertexArrayDataHandle::mark_used(void) const;

1954 14 get_class_type 0 4 3212 41 GeomVertexArrayDataHandle::get_class_type 0 1 343 0
66
static TypeHandle GeomVertexArrayDataHandle::get_class_type(void);

1955 12 set_max_size 0 4 3214 30 GeomCacheManager::set_max_size 0 1 346 482
/**
 * Specifies the maximum number of entries in the cache for storing pre-
 * processed data for rendering vertices.  This limit is flexible, and may be
 * temporarily exceeded if many different Geoms are pre-processed during the
 * space of a single frame.
 *
 * This is not a limit on the actual vertex data, which is what it is; it is
 * also not a limit on the amount of memory used by the video driver or the
 * system graphics interface, which Panda has no control over.
 */
63
inline void GeomCacheManager::set_max_size(int max_size) const;

1956 12 get_max_size 0 4 3214 30 GeomCacheManager::get_max_size 0 1 347 141
/**
 * Returns the maximum number of entries in the cache for storing pre-
 * processed data for rendering vertices.  See set_max_size().
 */
54
inline int GeomCacheManager::get_max_size(void) const;

1957 14 get_total_size 0 4 3214 32 GeomCacheManager::get_total_size 0 1 348 64
/**
 * Returns the number of entries currently in the cache.
 */
56
inline int GeomCacheManager::get_total_size(void) const;

1958 5 flush 0 4 3214 23 GeomCacheManager::flush 0 1 349 57
/**
 * Immediately empties all elements in the cache.
 */
35
void GeomCacheManager::flush(void);

1959 14 get_global_ptr 0 4 3214 32 GeomCacheManager::get_global_ptr 0 1 350 52
/**
 * Returns the global cache manager pointer.
 */
64
static GeomCacheManager *GeomCacheManager::get_global_ptr(void);

1960 10 get_matrix 0 6 3215 27 VertexTransform::get_matrix 0 1 351 0
69
virtual void VertexTransform::get_matrix(LMatrix4 &matrix) const = 0;

1961 11 mult_matrix 0 6 3215 28 VertexTransform::mult_matrix 0 1 352 277
/**
 * Premultiplies this transform's matrix with the indicated previous matrix,
 * so that the result is the net composition of the given transform with this
 * transform.  The result is stored in the parameter "result", which should
 * not be the same matrix as previous.
 */
92
virtual void VertexTransform::mult_matrix(LMatrix4 &result, LMatrix4 const &previous) const;

1962 17 accumulate_matrix 0 6 3215 34 VertexTransform::accumulate_matrix 0 1 353 200
/**
 * Adds the value of this transform's matrix, modified by the indicated
 * weight, into the indicated accumulation matrix.  This is used to compute
 * the result of several blended transforms.
 */
91
virtual void VertexTransform::accumulate_matrix(LMatrix4 &accum, PN_stdfloat weight) const;

1963 12 get_modified 0 4 3215 29 VertexTransform::get_modified 0 1 354 131
/**
 * Returns a sequence number that's guaranteed to change at least every time
 * the value reported by get_matrix() changes.
 */
108
inline UpdateSeq VertexTransform::get_modified(Thread *current_thread = Thread::get_current_thread()) const;

1964 6 output 0 6 3215 23 VertexTransform::output 0 1 355 10
/**
 *
 */
62
virtual void VertexTransform::output(std::ostream &out) const;

1965 5 write 0 6 3215 22 VertexTransform::write 0 1 356 10
/**
 *
 */
79
virtual void VertexTransform::write(std::ostream &out, int indent_level) const;

1966 17 get_next_modified 0 4 3215 34 VertexTransform::get_next_modified 0 1 357 417
/**
 * Returns a monotonically increasing sequence.  Each time this is called, a
 * new sequence number is returned, higher than the previous value.
 *
 * This is used to ensure that all VertexTransform::get_modified() calls
 * return an increasing number in the same space, so that
 * TransformBlend::get_modified() is easy to determine.  It is similar to
 * Geom::get_modified(), but it is in a different space.
 */
76
static UpdateSeq VertexTransform::get_next_modified(Thread *current_thread);

1967 19 get_global_modified 0 4 3215 36 VertexTransform::get_global_modified 0 1 358 197
/**
 * Returns the currently highest VertexTransform::get_modified() value in the
 * world.  This can be used as a quick way to determine if any
 * VertexTransforms have changed value recently.
 */
85
static inline UpdateSeq VertexTransform::get_global_modified(Thread *current_thread);

1968 14 get_class_type 0 4 3215 31 VertexTransform::get_class_type 0 1 359 0
56
static TypeHandle VertexTransform::get_class_type(void);

1969 14 TransformTable 0 260 3216 30 TransformTable::TransformTable 0 2 360 361 22
/**
 *
 */

/**
 *
 */
97
TransformTable::TransformTable(void);
TransformTable::TransformTable(TransformTable const &copy);

1970 10 operator = 0 4 3216 26 TransformTable::operator = 0 1 362 0
60
void TransformTable::operator =(TransformTable const &copy);

1971 13 is_registered 0 4 3216 29 TransformTable::is_registered 0 1 363 228
/**
 * Returns true if this table has been registered.  Once it has been
 * registered, the set of transforms in a TransformTable may not be further
 * modified; but it must be registered before it can be assigned to a Geom.
 */
54
inline bool TransformTable::is_registered(void) const;

1972 14 register_table 0 4 3216 30 TransformTable::register_table 0 1 364 551
/**
 * Registers a TransformTable for use.  This is similar to
 * GeomVertexFormat::register_format().  Once registered, a TransformTable may
 * no longer be modified (although the individual VertexTransform objects may
 * modify their reported transforms).
 *
 * This must be called before a table may be used in a Geom.  After this call,
 * you should discard the original pointer you passed in (which may or may not
 * now be invalid) and let its reference count decrement normally; you should
 * use only the returned value from this point on.
 */
107
static inline ConstPointerTo< TransformTable > TransformTable::register_table(TransformTable const *table);

1973 18 get_num_transforms 0 4 3216 34 TransformTable::get_num_transforms 0 1 365 57
/**
 * Returns the number of transforms in the table.
 */
66
inline std::size_t TransformTable::get_num_transforms(void) const;

1974 13 get_transform 0 4 3216 29 TransformTable::get_transform 0 1 366 50
/**
 * Returns the nth transform in the table.
 */
81
inline VertexTransform const *TransformTable::get_transform(std::size_t n) const;

1975 12 get_modified 0 4 3216 28 TransformTable::get_modified 0 1 367 276
/**
 * Returns a sequence number that's guaranteed to change at least when any
 * VertexTransforms in the table change.  (However, this is only true for a
 * registered table.  An unregistered table may or may not reflect an update
 * here when a VertexTransform changes.)
 */
107
inline UpdateSeq TransformTable::get_modified(Thread *current_thread = Thread::get_current_thread()) const;

1976 13 set_transform 0 4 3216 29 TransformTable::set_transform 0 1 368 75
/**
 * Replaces the nth transform.  Only valid for unregistered tables.
 */
84
void TransformTable::set_transform(std::size_t n, VertexTransform const *transform);

1977 16 insert_transform 0 4 3216 32 TransformTable::insert_transform 0 1 369 321
/**
 * Inserts a new transform to the table at the given index position.  If the
 * index is beyond the end of the table, appends it to the end.  Only valid
 * for unregistered tables.
 *
 * This does not automatically uniquify the pointer; if the transform is
 * already present in the table, it will be added twice.
 */
87
void TransformTable::insert_transform(std::size_t n, VertexTransform const *transform);

1978 16 remove_transform 0 4 3216 32 TransformTable::remove_transform 0 1 370 74
/**
 * Removes the nth transform.  Only valid for unregistered tables.
 */
53
void TransformTable::remove_transform(std::size_t n);

1979 13 add_transform 0 4 3216 29 TransformTable::add_transform 0 1 371 268
/**
 * Adds a new transform to the table and returns the index number of the new
 * transform.  Only valid for unregistered tables.
 *
 * This does not automatically uniquify the pointer; if the transform is
 * already present in the table, it will be added twice.
 */
76
std::size_t TransformTable::add_transform(VertexTransform const *transform);

1980 5 write 0 4 3216 21 TransformTable::write 0 1 372 10
/**
 *
 */
52
void TransformTable::write(std::ostream &out) const;

1981 14 get_class_type 0 4 3216 30 TransformTable::get_class_type 0 1 373 0
55
static TypeHandle TransformTable::get_class_type(void);

1982 14 TransformBlend 0 260 3219 30 TransformBlend::TransformBlend 0 6 374 375 376 377 378 379 70
/**
 *
 */

/**
 *
 */

/**
 *
 */

/**
 *
 */

/**
 *
 */

/**
 *
 */
827
inline TransformBlend::TransformBlend(void);
inline TransformBlend::TransformBlend(VertexTransform const *transform0, PN_stdfloat weight0);
inline TransformBlend::TransformBlend(VertexTransform const *transform0, PN_stdfloat weight0, VertexTransform const *transform1, PN_stdfloat weight1);
inline TransformBlend::TransformBlend(VertexTransform const *transform0, PN_stdfloat weight0, VertexTransform const *transform1, PN_stdfloat weight1, VertexTransform const *transform2, PN_stdfloat weight2);
inline TransformBlend::TransformBlend(VertexTransform const *transform0, PN_stdfloat weight0, VertexTransform const *transform1, PN_stdfloat weight1, VertexTransform const *transform2, PN_stdfloat weight2, VertexTransform const *transform3, PN_stdfloat weight3);
inline TransformBlend::TransformBlend(TransformBlend const &copy);

1983 10 operator = 0 4 3219 26 TransformBlend::operator = 0 1 380 0
67
inline void TransformBlend::operator =(TransformBlend const &copy);

1984 15 ~TransformBlend 0 516 3219 31 TransformBlend::~TransformBlend 0 0 10
/**
 *
 */
45
inline TransformBlend::~TransformBlend(void);

1985 10 compare_to 0 4 3219 26 TransformBlend::compare_to 0 1 381 68
/**
 * Defines an arbitrary ordering for TransformBlend objects.
 */
66
int TransformBlend::compare_to(TransformBlend const &other) const;

1986 10 operator < 0 4 3219 26 TransformBlend::operator < 0 1 382 0
74
inline bool TransformBlend::operator <(TransformBlend const &other) const;

1987 11 operator == 0 4 3219 27 TransformBlend::operator == 0 1 383 0
75
inline bool TransformBlend::operator ==(TransformBlend const &other) const;

1988 11 operator != 0 4 3219 27 TransformBlend::operator != 0 1 384 0
75
inline bool TransformBlend::operator !=(TransformBlend const &other) const;

1989 13 add_transform 0 4 3219 29 TransformBlend::add_transform 0 1 385 112
/**
 * Adds a new transform to the blend.  If the transform already existed,
 * increases its weight factor.
 */
89
void TransformBlend::add_transform(VertexTransform const *transform, PN_stdfloat weight);

1990 16 remove_transform 0 4 3219 32 TransformBlend::remove_transform 0 2 386 387 124
/**
 * Removes the nth transform stored in the blend object.
 */

/**
 * Removes the indicated transform from the blend.
 */
133
void TransformBlend::remove_transform(VertexTransform const *transform);
inline void TransformBlend::remove_transform(std::size_t n);

1991 16 limit_transforms 0 4 3219 32 TransformBlend::limit_transforms 0 1 388 192
/**
 * If the total number of transforms in the blend exceeds max_transforms,
 * removes the n least-important transforms as needed to reduce the number of
 * transforms to max_transforms.
 */
58
void TransformBlend::limit_transforms(int max_transforms);

1992 17 normalize_weights 0 4 3219 33 TransformBlend::normalize_weights 0 1 389 189
/**
 * Rescales all of the weights on the various transforms so that they sum to
 * 1.0.  It is generally a good idea to call this after adding or removing
 * transforms from the blend.
 */
45
void TransformBlend::normalize_weights(void);

1993 13 has_transform 0 4 3219 29 TransformBlend::has_transform 0 1 390 82
/**
 * Returns true if the blend has the indicated transform, false otherwise.
 */
75
bool TransformBlend::has_transform(VertexTransform const *transform) const;

1994 10 get_weight 0 4 3219 26 TransformBlend::get_weight 0 2 391 392 214
/**
 * Returns the weight associated with the nth transform stored in the blend
 * object.
 */

/**
 * Returns the weight associated with the indicated transform, or 0 if there
 * is no entry for the transform.
 */
147
PN_stdfloat TransformBlend::get_weight(VertexTransform const *transform) const;
inline PN_stdfloat TransformBlend::get_weight(std::size_t n) const;

1995 18 get_num_transforms 0 4 3219 34 TransformBlend::get_num_transforms 0 1 393 71
/**
 * Returns the number of transforms stored in the blend object.
 */
66
inline std::size_t TransformBlend::get_num_transforms(void) const;

1996 13 get_transform 0 4 3219 29 TransformBlend::get_transform 0 1 394 64
/**
 * Returns the nth transform stored in the blend object.
 */
81
inline VertexTransform const *TransformBlend::get_transform(std::size_t n) const;

1997 13 set_transform 0 4 3219 29 TransformBlend::set_transform 0 1 395 65
/**
 * Replaces the nth transform stored in the blend object.
 */
91
inline void TransformBlend::set_transform(std::size_t n, VertexTransform const *transform);

1998 10 set_weight 0 4 3219 26 TransformBlend::set_weight 0 1 396 95
/**
 * Replaces the weight associated with the nth transform stored in the blend
 * object.
 */
74
inline void TransformBlend::set_weight(std::size_t n, PN_stdfloat weight);

1999 12 update_blend 0 4 3219 28 TransformBlend::update_blend 0 1 397 156
/**
 * Recomputes the internal representation of the blend value, if necessary.
 * You should call this before calling get_blend() or transform_point().
 */
71
inline void TransformBlend::update_blend(Thread *current_thread) const;

2000 9 get_blend 0 4 3219 25 TransformBlend::get_blend 0 1 398 249
/**
 * Returns the current value of the blend, based on the current value of all
 * of the nested transform objects and their associated weights.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */
86
inline void TransformBlend::get_blend(LMatrix4 &result, Thread *current_thread) const;

2001 15 transform_point 0 4 3219 31 TransformBlend::transform_point 0 4 399 400 401 402 654
/**
 * Transforms the indicated point by the blend matrix.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */

/**
 * Transforms the indicated point by the blend matrix.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */

/**
 * Transforms the indicated point by the blend matrix.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */

/**
 * Transforms the indicated point by the blend matrix.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */
367
inline void TransformBlend::transform_point(LPoint4f &point, Thread *current_thread) const;
inline void TransformBlend::transform_point(LPoint3f &point, Thread *current_thread) const;
inline void TransformBlend::transform_point(LPoint4d &point, Thread *current_thread) const;
inline void TransformBlend::transform_point(LPoint3d &point, Thread *current_thread) const;

2002 16 transform_vector 0 4 3219 32 TransformBlend::transform_vector 0 2 403 404 328
/**
 * Transforms the indicated vector by the blend matrix.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */

/**
 * Transforms the indicated vector by the blend matrix.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */
187
inline void TransformBlend::transform_vector(LVector3f &point, Thread *current_thread) const;
inline void TransformBlend::transform_vector(LVector3d &point, Thread *current_thread) const;

2003 12 get_modified 0 4 3219 28 TransformBlend::get_modified 0 1 405 120
/**
 * Returns a counter which is guaranteed to increment at least as often as the
 * result of get_blend() changes.
 */
107
inline UpdateSeq TransformBlend::get_modified(Thread *current_thread = Thread::get_current_thread()) const;

2004 6 output 0 4 3219 22 TransformBlend::output 0 1 406 10
/**
 *
 */
53
void TransformBlend::output(std::ostream &out) const;

2005 5 write 0 4 3219 21 TransformBlend::write 0 1 407 10
/**
 *
 */
70
void TransformBlend::write(std::ostream &out, int indent_level) const;

2006 14 get_class_type 0 4 3219 30 TransformBlend::get_class_type 0 1 408 0
55
static TypeHandle TransformBlend::get_class_type(void);

2007 19 TransformBlendTable 0 260 3222 40 TransformBlendTable::TransformBlendTable 0 2 409 410 22
/**
 *
 */

/**
 *
 */
122
TransformBlendTable::TransformBlendTable(void);
TransformBlendTable::TransformBlendTable(TransformBlendTable const &copy);

2008 10 operator = 0 4 3222 31 TransformBlendTable::operator = 0 1 411 0
70
void TransformBlendTable::operator =(TransformBlendTable const &copy);

2009 14 get_num_blends 0 4 3222 35 TransformBlendTable::get_num_blends 0 1 412 81
/**
 * Returns the total number of different blend combinations in the table.
 */
67
inline std::size_t TransformBlendTable::get_num_blends(void) const;

2010 9 get_blend 0 4 3222 30 TransformBlendTable::get_blend 0 1 413 46
/**
 * Returns the nth blend in the table.
 */
81
inline TransformBlend const &TransformBlendTable::get_blend(std::size_t n) const;

2011 12 get_modified 0 4 3222 33 TransformBlendTable::get_modified 0 1 414 129
/**
 * Returns a counter which is guaranteed to increment at least when any
 * TransformBlends within the table have changed.
 */
112
inline UpdateSeq TransformBlendTable::get_modified(Thread *current_thread = Thread::get_current_thread()) const;

2012 9 set_blend 0 4 3222 30 TransformBlendTable::set_blend 0 1 415 75
/**
 * Replaces the blend at the nth position with the indicated value.
 */
80
void TransformBlendTable::set_blend(std::size_t n, TransformBlend const &blend);

2013 12 remove_blend 0 4 3222 33 TransformBlendTable::remove_blend 0 1 416 49
/**
 * Removes the blend at the nth position.
 */
54
void TransformBlendTable::remove_blend(std::size_t n);

2014 9 add_blend 0 4 3222 30 TransformBlendTable::add_blend 0 1 417 167
/**
 * Adds a new blend to the table, and returns its index number.  If there is
 * already an identical blend in the table, simply returns that number
 * instead.
 */
72
std::size_t TransformBlendTable::add_blend(TransformBlend const &blend);

2015 18 get_num_transforms 0 4 3222 39 TransformBlendTable::get_num_transforms 0 1 418 299
/**
 * Returns the number of unique VertexTransform objects represented in the
 * table.  This will correspond to the size of the TransformTable object that
 * would represent the same table.  This is also the same limit reflected by
 * GraphicsStateGuardian::get_max_vertex_transform_indices().
 */
63
inline int TransformBlendTable::get_num_transforms(void) const;

2016 31 get_max_simultaneous_transforms 0 4 3222 52 TransformBlendTable::get_max_simultaneous_transforms 0 1 419 217
/**
 * Returns the maximum number of unique VertexTransform objects that are
 * applied to any one vertex simultaneously.  This is the same limit reflected
 * by GraphicsStateGuardian::get_max_vertex_transforms().
 */
76
inline int TransformBlendTable::get_max_simultaneous_transforms(void) const;

2017 8 set_rows 0 4 3222 29 TransformBlendTable::set_rows 0 1 420 134
/**
 * Specifies the subset of rows (vertices) in the associated GeomVertexData
 * that this TransformBlendTable actually affects.
 */
67
inline void TransformBlendTable::set_rows(SparseArray const &rows);

2018 8 get_rows 0 4 3222 29 TransformBlendTable::get_rows 0 1 421 132
/**
 * Returns the subset of rows (vertices) in the associated GeomVertexData that
 * this TransformBlendTable actually affects.
 */
68
inline SparseArray const &TransformBlendTable::get_rows(void) const;

2019 11 modify_rows 0 4 3222 32 TransformBlendTable::modify_rows 0 1 422 192
/**
 * Returns a modifiable reference to the SparseArray that specifies the subset
 * of rows (vertices) in the associated GeomVertexData that this
 * TransformBlendTable actually affects.
 */
59
inline SparseArray &TransformBlendTable::modify_rows(void);

2020 5 write 0 4 3222 26 TransformBlendTable::write 0 1 423 10
/**
 *
 */
75
void TransformBlendTable::write(std::ostream &out, int indent_level) const;

2021 14 get_class_type 0 4 3222 35 TransformBlendTable::get_class_type 0 1 424 0
60
static TypeHandle TransformBlendTable::get_class_type(void);

2022 8 get_name 0 4 3226 22 VertexSlider::get_name 0 1 425 201
/**
 * Returns the name of this particular slider.  Every unique blend shape
 * within a particular Geom must be identified with a different name, which is
 * shared by the slider that controls it.
 */
62
inline InternalName const *VertexSlider::get_name(void) const;

2023 10 get_slider 0 6 3226 24 VertexSlider::get_slider 0 1 426 0
61
virtual PN_stdfloat VertexSlider::get_slider(void) const = 0;

2024 12 get_modified 0 4 3226 26 VertexSlider::get_modified 0 1 427 131
/**
 * Returns a sequence number that's guaranteed to change at least every time
 * the value reported by get_slider() changes.
 */
105
inline UpdateSeq VertexSlider::get_modified(Thread *current_thread = Thread::get_current_thread()) const;

2025 6 output 0 6 3226 20 VertexSlider::output 0 1 428 10
/**
 *
 */
59
virtual void VertexSlider::output(std::ostream &out) const;

2026 5 write 0 6 3226 19 VertexSlider::write 0 1 429 10
/**
 *
 */
76
virtual void VertexSlider::write(std::ostream &out, int indent_level) const;

2027 14 get_class_type 0 4 3226 28 VertexSlider::get_class_type 0 1 430 0
53
static TypeHandle VertexSlider::get_class_type(void);

2028 11 SliderTable 0 260 3227 24 SliderTable::SliderTable 0 2 431 432 22
/**
 *
 */

/**
 *
 */
82
SliderTable::SliderTable(void);
SliderTable::SliderTable(SliderTable const &copy);

2029 10 operator = 0 4 3227 23 SliderTable::operator = 0 1 433 0
54
void SliderTable::operator =(SliderTable const &copy);

2030 13 is_registered 0 4 3227 26 SliderTable::is_registered 0 1 434 222
/**
 * Returns true if this table has been registered.  Once it has been
 * registered, the set of sliders in a SliderTable may not be further
 * modified; but it must be registered before it can be assigned to a Geom.
 */
51
inline bool SliderTable::is_registered(void) const;

2031 14 register_table 0 4 3227 27 SliderTable::register_table 0 1 435 539
/**
 * Registers a SliderTable for use.  This is similar to
 * GeomVertexFormat::register_format().  Once registered, a SliderTable may no
 * longer be modified (although the individual VertexSlider objects may modify
 * their reported sliders).
 *
 * This must be called before a table may be used in a Geom.  After this call,
 * you should discard the original pointer you passed in (which may or may not
 * now be invalid) and let its reference count decrement normally; you should
 * use only the returned value from this point on.
 */
98
static inline ConstPointerTo< SliderTable > SliderTable::register_table(SliderTable const *table);

2032 15 get_num_sliders 0 4 3227 28 SliderTable::get_num_sliders 0 1 436 54
/**
 * Returns the number of sliders in the table.
 */
60
inline std::size_t SliderTable::get_num_sliders(void) const;

2033 10 get_slider 0 4 3227 23 SliderTable::get_slider 0 1 437 47
/**
 * Returns the nth slider in the table.
 */
72
inline VertexSlider const *SliderTable::get_slider(std::size_t n) const;

2034 15 get_slider_rows 0 4 3227 28 SliderTable::get_slider_rows 0 1 438 86
/**
 * Returns the set of rows (vertices) governed by the nth slider in the table.
 */
76
inline SparseArray const &SliderTable::get_slider_rows(std::size_t n) const;

2035 12 find_sliders 0 4 3227 25 SliderTable::find_sliders 0 1 439 174
/**
 * Returns a list of slider indices that represent the list of sliders with
 * the indicated name, or an empty SparseArray if no slider in the table has
 * that name.
 */
84
inline SparseArray const &SliderTable::find_sliders(InternalName const *name) const;

2036 10 has_slider 0 4 3227 23 SliderTable::has_slider 0 1 440 103
/**
 * Returns true if the table has at least one slider by the indicated name,
 * false otherwise.
 */
68
inline bool SliderTable::has_slider(InternalName const *name) const;

2037 8 is_empty 0 4 3227 21 SliderTable::is_empty 0 1 441 82
/**
 * Returns true if the table has no sliders, false if it has at least one.
 */
46
inline bool SliderTable::is_empty(void) const;

2038 12 get_modified 0 4 3227 25 SliderTable::get_modified 0 1 442 270
/**
 * Returns a sequence number that's guaranteed to change at least when any
 * VertexSliders in the table change.  (However, this is only true for a
 * registered table.  An unregistered table may or may not reflect an update
 * here when a VertexSlider changes.)
 */
104
inline UpdateSeq SliderTable::get_modified(Thread *current_thread = Thread::get_current_thread()) const;

2039 10 set_slider 0 4 3227 23 SliderTable::set_slider 0 1 443 72
/**
 * Replaces the nth slider.  Only valid for unregistered tables.
 */
72
void SliderTable::set_slider(std::size_t n, VertexSlider const *slider);

2040 15 set_slider_rows 0 4 3227 28 SliderTable::set_slider_rows 0 1 444 96
/**
 * Replaces the rows affected by the nth slider.  Only valid for unregistered
 * tables.
 */
74
void SliderTable::set_slider_rows(std::size_t n, SparseArray const &rows);

2041 13 remove_slider 0 4 3227 26 SliderTable::remove_slider 0 1 445 71
/**
 * Removes the nth slider.  Only valid for unregistered tables.
 */
47
void SliderTable::remove_slider(std::size_t n);

2042 10 add_slider 0 4 3227 23 SliderTable::add_slider 0 1 446 130
/**
 * Adds a new slider to the table, and returns the index number of the new
 * slider.  Only valid for unregistered tables.
 */
89
std::size_t SliderTable::add_slider(VertexSlider const *slider, SparseArray const &rows);

2043 5 write 0 4 3227 18 SliderTable::write 0 1 447 10
/**
 *
 */
49
void SliderTable::write(std::ostream &out) const;

2044 14 get_class_type 0 4 3227 27 SliderTable::get_class_type 0 1 448 0
52
static TypeHandle SliderTable::get_class_type(void);

2045 27 upcast_to_CopyOnWriteObject 0 12 3228 43 GeomVertexData::upcast_to_CopyOnWriteObject 0 1 507 47
upcast from GeomVertexData to CopyOnWriteObject
69
CopyOnWriteObject *GeomVertexData::upcast_to_CopyOnWriteObject(void);

2046 26 downcast_to_GeomVertexData 0 12 3208 45 CopyOnWriteObject::downcast_to_GeomVertexData 0 0 49
downcast from CopyOnWriteObject to GeomVertexData
68
GeomVertexData *CopyOnWriteObject::downcast_to_GeomVertexData(void);

2047 19 upcast_to_GeomEnums 0 12 3228 35 GeomVertexData::upcast_to_GeomEnums 0 1 508 39
upcast from GeomVertexData to GeomEnums
53
GeomEnums *GeomVertexData::upcast_to_GeomEnums(void);

2048 26 downcast_to_GeomVertexData 0 12 3168 37 GeomEnums::downcast_to_GeomVertexData 0 0 41
downcast from GeomEnums to GeomVertexData
60
GeomVertexData *GeomEnums::downcast_to_GeomVertexData(void);

2049 14 GeomVertexData 0 260 3228 30 GeomVertexData::GeomVertexData 0 3 449 450 451 336
/**
 * Constructs an invalid object.  This is only used when reading from the bam
 * file.
 */

/**
 *
 */

/**
 *
 */

/**
 * This constructor copies all of the basic properties of the source
 * VertexData, like usage_hint and animation tables, but does not copy the
 * actual data, and it allows you to specify a different format.
 */
291
explicit GeomVertexData::GeomVertexData(std::string const &name, GeomVertexFormat const *format, GeomEnums::UsageHint usage_hint);
GeomVertexData::GeomVertexData(GeomVertexData const &copy);
explicit GeomVertexData::GeomVertexData(GeomVertexData const &copy, GeomVertexFormat const *format);

2050 10 operator = 0 4 3228 26 GeomVertexData::operator = 0 1 452 0
60
void GeomVertexData::operator =(GeomVertexData const &copy);

2051 15 ~GeomVertexData 0 518 3228 31 GeomVertexData::~GeomVertexData 0 0 10
/**
 *
 */
46
virtual GeomVertexData::~GeomVertexData(void);

2052 12 operator new 0 4 3228 28 GeomVertexData::operator new 0 1 453 0
132
inline void *GeomVertexData::operator new(std::size_t size);
inline void *GeomVertexData::operator new(std::size_t size, void *ptr);

2053 15 operator delete 0 4 3228 31 GeomVertexData::operator delete 0 0 0
116
inline void GeomVertexData::operator delete(void *ptr);
inline void GeomVertexData::operator delete(void *, void *);

2054 12 validate_ptr 0 4 3228 28 GeomVertexData::validate_ptr 0 0 0
65
static inline bool GeomVertexData::validate_ptr(void const *ptr);

2055 10 compare_to 0 4 3228 26 GeomVertexData::compare_to 0 1 454 97
/**
 * Returns 0 if the two objects are equivalent, even if they are not the same
 * pointer.
 */
66
int GeomVertexData::compare_to(GeomVertexData const &other) const;

2056 8 get_name 0 4 3228 24 GeomVertexData::get_name 0 1 455 133
/**
 * Returns the name passed to the constructor, if any.  This name is reported
 * on the PStats graph for vertex computations.
 */
63
inline std::string const &GeomVertexData::get_name(void) const;

2057 8 set_name 0 4 3228 24 GeomVertexData::set_name 0 1 456 118
/**
 * Changes the name of the vertex data.  This name is reported on the PStats
 * graph for vertex computations.
 */
55
void GeomVertexData::set_name(std::string const &name);

2058 14 get_usage_hint 0 4 3228 30 GeomVertexData::get_usage_hint 0 1 457 438
/**
 * Returns the usage hint that was passed to the constructor, and which will
 * be passed to each array data object created initially, and arrays created
 * as the result of a convert_to() operation.  See geomEnums.h.
 *
 * However, each individual array may be replaced with a different array
 * object with an independent usage hint specified, so there is no guarantee
 * that the individual arrays all have the same usage_hint.
 */
71
inline GeomEnums::UsageHint GeomVertexData::get_usage_hint(void) const;

2059 14 set_usage_hint 0 4 3228 30 GeomVertexData::set_usage_hint 0 1 458 285
/**
 * Changes the UsageHint hint for this vertex data, and for all of the arrays
 * that share this data.  See get_usage_hint().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
69
void GeomVertexData::set_usage_hint(GeomEnums::UsageHint usage_hint);

2060 10 get_format 0 4 3228 26 GeomVertexData::get_format 0 1 459 86
/**
 * Returns a pointer to the GeomVertexFormat structure that defines this data.
 */
70
inline GeomVertexFormat const *GeomVertexData::get_format(void) const;

2061 10 set_format 0 4 3228 26 GeomVertexData::set_format 0 1 460 294
/**
 * Changes the format of the vertex data.  If the data is not empty, this will
 * implicitly change every row to match the new format.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
64
void GeomVertexData::set_format(GeomVertexFormat const *format);

2062 18 unclean_set_format 0 4 3228 34 GeomVertexData::unclean_set_format 0 1 461 440
/**
 * Changes the format of the vertex data, without reformatting the data to
 * match.  The data is exactly the same after this operation, but will be
 * reinterpreted according to the new format.  This assumes that the new
 * format is fundamentally compatible with the old format; in particular, it
 * must have the same number of arrays with the same stride in each one.  No
 * checking is performed that the data remains sensible.
 */
72
void GeomVertexData::unclean_set_format(GeomVertexFormat const *format);

2063 10 has_column 0 4 3228 26 GeomVertexData::has_column 0 1 462 152
/**
 * Returns true if the data has the named column, false otherwise.  This is
 * really just a shortcut for asking the same thing from the format.
 */
71
inline bool GeomVertexData::has_column(InternalName const *name) const;

2064 12 get_num_rows 0 4 3228 28 GeomVertexData::get_num_rows 0 1 463 114
/**
 * Returns the number of rows stored within all the arrays.  All arrays store
 * data for the same n rows.
 */
52
inline int GeomVertexData::get_num_rows(void) const;

2065 12 set_num_rows 0 4 3228 28 GeomVertexData::set_num_rows 0 1 464 736
/**
 * Sets the length of the array to n rows in all of the various arrays
 * (presumably by adding rows).
 *
 * The new vertex data is initialized to 0, except for the "color" column,
 * which is initialized to (1, 1, 1, 1).
 *
 * The return value is true if the number of rows was changed, false if the
 * object already contained n rows (or if there was some error).
 *
 * This can be used when you know exactly how many rows you will be needing.
 * It is faster than reserve_num_rows().  Also see unclean_set_num_rows() if
 * you are planning to fill in all the data yourself.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
48
inline bool GeomVertexData::set_num_rows(int n);

2066 20 unclean_set_num_rows 0 4 3228 36 GeomVertexData::unclean_set_num_rows 0 1 465 518
/**
 * This method behaves like set_num_rows(), except the new data is not
 * initialized.  Furthermore, after this call, *any* of the data in the
 * GeomVertexData may be uninitialized, including the earlier rows.
 *
 * This is intended for applications that are about to completely fill the
 * GeomVertexData with new data anyway; it provides a tiny performance boost
 * over set_num_rows().
 *
 * This can be used when you know exactly how many rows you will be needing.
 * It is faster than reserve_num_rows().
 */
56
inline bool GeomVertexData::unclean_set_num_rows(int n);

2067 16 reserve_num_rows 0 4 3228 32 GeomVertexData::reserve_num_rows 0 1 466 461
/**
 * This ensures that enough memory space for n rows is allocated, so that you
 * may increase the number of rows to n without causing a new memory
 * allocation.  This is a performance optimization only; it is especially
 * useful when you know ahead of time that you will be adding n rows to the
 * data.
 *
 * If you know exactly how many rows you will be needing, it is significantly
 * faster to use set_num_rows() or unclean_set_num_rows() instead.
 */
52
inline bool GeomVertexData::reserve_num_rows(int n);

2068 10 clear_rows 0 4 3228 26 GeomVertexData::clear_rows 0 1 467 263
/**
 * Removes all of the rows from the arrays; functionally equivalent to
 * set_num_rows(0) (but faster).
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
38
void GeomVertexData::clear_rows(void);

2069 14 get_num_arrays 0 4 3228 30 GeomVertexData::get_num_arrays 0 1 468 126
/**
 * Returns the number of individual arrays stored within the data.  This must
 * match get_format()->get_num_arrays().
 */
62
inline std::size_t GeomVertexData::get_num_arrays(void) const;

2070 9 get_array 0 4 3228 25 GeomVertexData::get_array 0 1 469 170
/**
 * Returns a const pointer to the vertex data for the indicated array, for
 * application code to directly examine (but not modify) the underlying vertex
 * data.
 */
92
inline ConstPointerTo< GeomVertexArrayData > GeomVertexData::get_array(std::size_t i) const;

2071 16 get_array_handle 0 4 3228 32 GeomVertexData::get_array_handle 0 1 470 51
/**
 * Equivalent to get_array(i).get_handle().
 */
105
inline ConstPointerTo< GeomVertexArrayDataHandle > GeomVertexData::get_array_handle(std::size_t i) const;

2072 12 modify_array 0 4 3228 28 GeomVertexData::modify_array 0 1 471 419
/**
 * Returns a modifiable pointer to the indicated vertex array, so that
 * application code may directly manipulate the data.  You should avoid
 * changing the length of this array, since all of the arrays should be kept
 * in sync--use set_num_rows() instead.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
84
inline PointerTo< GeomVertexArrayData > GeomVertexData::modify_array(std::size_t i);

2073 19 modify_array_handle 0 4 3228 35 GeomVertexData::modify_array_handle 0 1 472 57
/**
 * Equivalent to modify_array(i).modify_handle().
 */
97
inline PointerTo< GeomVertexArrayDataHandle > GeomVertexData::modify_array_handle(std::size_t i);

2074 9 set_array 0 4 3228 25 GeomVertexData::set_array 0 1 473 363
/**
 * Replaces the indicated vertex data array with a completely new array.  You
 * should be careful that the new array has the same length and format as the
 * old one, unless you know what you are doing.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
87
inline void GeomVertexData::set_array(std::size_t i, GeomVertexArrayData const *array);

2075 19 get_transform_table 0 4 3228 35 GeomVertexData::get_transform_table 0 1 474 494
/**
 * Returns a const pointer to the TransformTable assigned to this data.
 * Vertices within the table will index into this table to indicate their
 * dynamic skinning information; this table is used when the vertex animation
 * is to be performed by the graphics hardware (but also see
 * get_transform_blend_table()).
 *
 * This will return NULL if the vertex data does not have a TransformTable
 * assigned (which implies the vertices will not be animated by the graphics
 * hardware).
 */
77
inline TransformTable const *GeomVertexData::get_transform_table(void) const;

2076 19 set_transform_table 0 4 3228 35 GeomVertexData::set_transform_table 0 1 475 376
/**
 * Replaces the TransformTable on this vertex data with the indicated table.
 * The length of this table should be consistent with the maximum table index
 * assigned to the vertices under the "transform_index" name.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
70
void GeomVertexData::set_transform_table(TransformTable const *table);

2077 21 clear_transform_table 0 4 3228 37 GeomVertexData::clear_transform_table 0 1 476 144
/**
 * Sets the TransformTable pointer to NULL, removing the table from the vertex
 * data.  This disables hardware-driven vertex animation.
 */
56
inline void GeomVertexData::clear_transform_table(void);

2078 25 get_transform_blend_table 0 4 3228 41 GeomVertexData::get_transform_blend_table 0 1 477 467
/**
 * Returns a const pointer to the TransformBlendTable assigned to this data.
 * Vertices within the table will index into this table to indicate their
 * dynamic skinning information; this table is used when the vertex animation
 * is to be performed by the CPU (but also see get_transform_table()).
 *
 * This will return NULL if the vertex data does not have a
 * TransformBlendTable assigned (which implies the vertices will not be
 * animated by the CPU).
 */
99
inline ConstPointerTo< TransformBlendTable > GeomVertexData::get_transform_blend_table(void) const;

2079 28 modify_transform_blend_table 0 4 3228 44 GeomVertexData::modify_transform_blend_table 0 1 478 342
/**
 * Returns a modifiable pointer to the current TransformBlendTable on this
 * vertex data, if any, or NULL if there is not a TransformBlendTable.  See
 * get_transform_blend_table().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
84
PointerTo< TransformBlendTable > GeomVertexData::modify_transform_blend_table(void);

2080 25 set_transform_blend_table 0 4 3228 41 GeomVertexData::set_transform_blend_table 0 1 479 382
/**
 * Replaces the TransformBlendTable on this vertex data with the indicated
 * table.  The length of this table should be consistent with the maximum
 * table index assigned to the vertices under the "transform_blend" name.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
81
void GeomVertexData::set_transform_blend_table(TransformBlendTable const *table);

2081 27 clear_transform_blend_table 0 4 3228 43 GeomVertexData::clear_transform_blend_table 0 1 480 144
/**
 * Sets the TransformBlendTable pointer to NULL, removing the table from the
 * vertex data.  This disables CPU-driven vertex animation.
 */
62
inline void GeomVertexData::clear_transform_blend_table(void);

2082 16 get_slider_table 0 4 3228 32 GeomVertexData::get_slider_table 0 1 481 264
/**
 * Returns a const pointer to the SliderTable assigned to this data.  Vertices
 * within the vertex data will look up their morph offsets, if any, within
 * this table.
 *
 * This will return NULL if the vertex data does not have a SliderTable
 * assigned.
 */
71
inline SliderTable const *GeomVertexData::get_slider_table(void) const;

2083 16 set_slider_table 0 4 3228 32 GeomVertexData::set_slider_table 0 1 482 437
/**
 * Replaces the SliderTable on this vertex data with the indicated table.
 * There should be an entry in this table for each kind of morph offset
 * defined in the vertex data.
 *
 * The SliderTable object must have been registered prior to setting it on the
 * GeomVertexData.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
64
void GeomVertexData::set_slider_table(SliderTable const *table);

2084 18 clear_slider_table 0 4 3228 34 GeomVertexData::clear_slider_table 0 1 483 138
/**
 * Sets the SliderTable pointer to NULL, removing the table from the vertex
 * data.  This disables morph (blend shape) animation.
 */
53
inline void GeomVertexData::clear_slider_table(void);

2085 13 get_num_bytes 0 4 3228 29 GeomVertexData::get_num_bytes 0 1 484 100
/**
 * Returns the total number of bytes consumed by the different arrays of the
 * vertex data.
 */
53
inline int GeomVertexData::get_num_bytes(void) const;

2086 12 get_modified 0 4 3228 28 GeomVertexData::get_modified 0 1 485 118
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * the vertex data is modified.
 */
107
inline UpdateSeq GeomVertexData::get_modified(Thread *current_thread = Thread::get_current_thread()) const;

2087 16 request_resident 0 4 3228 32 GeomVertexData::request_resident 0 1 486 180
/**
 * Returns true if the vertex data is currently resident in memory.  If this
 * returns false, the vertex data will be brought back into memory shortly;
 * try again later.
 */
50
bool GeomVertexData::request_resident(void) const;

2088 9 copy_from 0 4 3228 25 GeomVertexData::copy_from 0 1 487 691
/**
 * Copies all the data from the other array into the corresponding data types
 * in this array, by matching data types name-by-name.
 *
 * keep_data_objects specifies what to do when one or more of the arrays can
 * be copied without the need to apply any conversion operation.  If it is
 * true, the original GeomVertexArrayData objects in this object are retained,
 * and their data arrays are copied byte-by-byte from the source; if it is
 * false, then the GeomVertexArrayData objects are copied pointerwise from the
 * source.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
140
void GeomVertexData::copy_from(GeomVertexData const *source, bool keep_data_objects, Thread *current_thread = Thread::get_current_thread());

2089 13 copy_row_from 0 4 3228 29 GeomVertexData::copy_row_from 0 1 488 335
/**
 * Copies a single row of the data from the other array into the indicated row
 * of this array.  In this case, the source format must exactly match the
 * destination format.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
119
void GeomVertexData::copy_row_from(int dest_row, GeomVertexData const *source, int source_row, Thread *current_thread);

2090 10 convert_to 0 4 3228 26 GeomVertexData::convert_to 0 1 489 162
/**
 * Returns a new GeomVertexData that represents the same contents as this one,
 * with all data types matched up name-by-name to the indicated new format.
 */
102
ConstPointerTo< GeomVertexData > GeomVertexData::convert_to(GeomVertexFormat const *new_format) const;

2091 11 scale_color 0 4 3228 27 GeomVertexData::scale_color 0 2 490 491 517
/**
 * Returns a new GeomVertexData object with the color table modified in-place
 * to apply the indicated scale.
 *
 * If the vertex data does not include a color column, a new one will not be
 * added.
 */

/**
 * Returns a new GeomVertexData object with the color table replaced with a
 * new color table that has been scaled by the indicated value.  The new color
 * table will be added as a new array; if the old color table was interleaved
 * with a previous array, the previous array will not be repacked.
 */
282
ConstPointerTo< GeomVertexData > GeomVertexData::scale_color(LVecBase4 const &color_scale) const;
ConstPointerTo< GeomVertexData > GeomVertexData::scale_color(LVecBase4 const &color_scale, int num_components, GeomEnums::NumericType numeric_type, GeomEnums::Contents contents) const;

2092 9 set_color 0 4 3228 25 GeomVertexData::set_color 0 2 492 493 508
/**
 * Returns a new GeomVertexData object with the color data modified in-place
 * with the new value.
 *
 * If the vertex data does not include a color column, a new one will not be
 * added.
 */

/**
 * Returns a new GeomVertexData object with the color table replaced with a
 * new color table for which each vertex has the indicated value.  The new
 * color table will be added as a new array; if the old color table was
 * interleaved with a previous array, the previous array will not be repacked.
 */
260
ConstPointerTo< GeomVertexData > GeomVertexData::set_color(LColor const &color) const;
ConstPointerTo< GeomVertexData > GeomVertexData::set_color(LColor const &color, int num_components, GeomEnums::NumericType numeric_type, GeomEnums::Contents contents) const;

2093 15 reverse_normals 0 4 3228 31 GeomVertexData::reverse_normals 0 1 494 281
/**
 * Returns a new GeomVertexData object with the normal data modified in-place,
 * so that each lighting normal is now facing in the opposite direction.
 *
 * If the vertex data does not include a normal column, this returns the
 * original GeomVertexData object, unchanged.
 */
77
ConstPointerTo< GeomVertexData > GeomVertexData::reverse_normals(void) const;

2094 16 animate_vertices 0 4 3228 32 GeomVertexData::animate_vertices 0 1 495 861
/**
 * Returns a GeomVertexData that represents the results of computing the
 * vertex animation on the CPU for this GeomVertexData.
 *
 * If there is no CPU-defined vertex animation on this object, this just
 * returns the original object.
 *
 * If there is vertex animation, but the VertexTransform values have not
 * changed since last time, this may return the same pointer it returned
 * previously.  Even if the VertexTransform values have changed, it may still
 * return the same pointer, but with its contents modified (this is preferred,
 * since it allows the graphics backend to update vertex buffers optimally).
 *
 * If force is false, this method may return immediately with stale data, if
 * the vertex data is not completely resident.  If force is true, this method
 * will never return stale data, but may block until the data is available.
 */
108
ConstPointerTo< GeomVertexData > GeomVertexData::animate_vertices(bool force, Thread *current_thread) const;

2095 23 clear_animated_vertices 0 4 3228 39 GeomVertexData::clear_animated_vertices 0 1 496 268
/**
 * Removes the cache of animated vertices computed by a previous call to
 * animate_vertices() within the same frame.  This will force the next call to
 * animate_vertices() to recompute these values from scratch.  Normally it is
 * not necessary to call this.
 */
51
void GeomVertexData::clear_animated_vertices(void);

2096 18 transform_vertices 0 4 3228 34 GeomVertexData::transform_vertices 0 3 497 498 499 616
/**
 * Applies the indicated transform matrix to all of the vertices in the
 * GeomVertexData.  The transform is applied to all "point" and "vector" type
 * columns described in the format.
 */

/**
 * Applies the indicated transform matrix to all of the vertices from
 * begin_row up to but not including end_row.  The transform is applied to all
 * "point" and "vector" type columns described in the format.
 */

/**
 * Applies the indicated transform matrix to all of the vertices mentioned in
 * the sparse array.  The transform is applied to all "point" and "vector"
 * type columns described in the format.
 */
238
void GeomVertexData::transform_vertices(LMatrix4 const &mat);
void GeomVertexData::transform_vertices(LMatrix4 const &mat, int begin_row, int end_row);
void GeomVertexData::transform_vertices(LMatrix4 const &mat, SparseArray const &rows);

2097 14 replace_column 0 4 3228 30 GeomVertexData::replace_column 0 1 500 435
/**
 * Returns a new GeomVertexData object, suitable for modification, with the
 * indicated data type replaced with a new table filled with undefined values.
 * The new table will be added as a new array; if the old table was
 * interleaved with a previous array, the previous array will not be repacked.
 *
 * If num_components is 0, the indicated name is simply removed from the type,
 * without replacing it with anything else.
 */
172
PointerTo< GeomVertexData > GeomVertexData::replace_column(InternalName *name, int num_components, GeomEnums::NumericType numeric_type, GeomEnums::Contents contents) const;

2098 6 output 0 4 3228 22 GeomVertexData::output 0 1 501 10
/**
 *
 */
53
void GeomVertexData::output(std::ostream &out) const;

2099 5 write 0 4 3228 21 GeomVertexData::write 0 1 502 10
/**
 *
 */
74
void GeomVertexData::write(std::ostream &out, int indent_level = 0) const;

2100 15 describe_vertex 0 4 3228 31 GeomVertexData::describe_vertex 0 1 503 90
/**
 * Writes a verbose, human-friendly description of the indicated vertex
 * number.
 */
71
void GeomVertexData::describe_vertex(std::ostream &out, int row) const;

2101 11 clear_cache 0 4 3228 27 GeomVertexData::clear_cache 0 1 504 263
/**
 * Removes all of the previously-cached results of convert_to().
 *
 * This blows away the entire cache, upstream and downstream the pipeline.
 * Use clear_cache_stage() instead if you only want to blow away the cache at
 * the current stage and upstream.
 */
39
void GeomVertexData::clear_cache(void);

2102 17 clear_cache_stage 0 4 3228 33 GeomVertexData::clear_cache_stage 0 1 505 310
/**
 * Removes all of the previously-cached results of convert_to(), at the
 * current pipeline stage and upstream.  Does not affect the downstream cache.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
45
void GeomVertexData::clear_cache_stage(void);

2103 14 get_class_type 0 4 3228 30 GeomVertexData::get_class_type 0 1 506 0
55
static TypeHandle GeomVertexData::get_class_type(void);

2104 22 AnimateVerticesRequest 0 260 3236 46 AnimateVerticesRequest::AnimateVerticesRequest 0 2 509 510 47
/**
 * Create a new AnimateVerticesRequest.
 */
194
inline explicit AnimateVerticesRequest::AnimateVerticesRequest(GeomVertexData *geom_vertex_data);
inline AnimateVerticesRequest::AnimateVerticesRequest(AnimateVerticesRequest const &) = default;

2105 8 is_ready 0 4 3236 32 AnimateVerticesRequest::is_ready 0 1 511 154
/**
 * Returns true if this request has completed, false if it is still pending.
 * Equivalent to `req.done() and not req.cancelled()`.
 * @see done()
 */
57
inline bool AnimateVerticesRequest::is_ready(void) const;

2106 14 get_class_type 0 4 3236 38 AnimateVerticesRequest::get_class_type 0 1 512 0
63
static TypeHandle AnimateVerticesRequest::get_class_type(void);

2107 23 ~AnimateVerticesRequest 0 516 3236 47 AnimateVerticesRequest::~AnimateVerticesRequest 0 0 0
54
AnimateVerticesRequest::~AnimateVerticesRequest(void);

2108 14 get_class_type 0 4 3238 28 SavedContext::get_class_type 0 1 513 0
53
static TypeHandle SavedContext::get_class_type(void);

2109 13 ~SavedContext 0 516 3238 27 SavedContext::~SavedContext 0 0 0
34
SavedContext::~SavedContext(void);

2110 22 upcast_to_SavedContext 0 12 3240 37 BufferContext::upcast_to_SavedContext 0 1 519 41
upcast from BufferContext to SavedContext
58
SavedContext *BufferContext::upcast_to_SavedContext(void);

2111 25 downcast_to_BufferContext 0 12 3238 39 SavedContext::downcast_to_BufferContext 0 0 43
downcast from SavedContext to BufferContext
61
BufferContext *SavedContext::downcast_to_BufferContext(void);

2112 14 ~BufferContext 0 518 3240 29 BufferContext::~BufferContext 0 0 10
/**
 *
 */
44
virtual BufferContext::~BufferContext(void);

2113 19 get_data_size_bytes 0 4 3240 34 BufferContext::get_data_size_bytes 0 1 514 271
/**
 * Returns the number of bytes previously reported for the data object.  This
 * is used to track changes in the data object's allocated size; if it changes
 * from this, we need to create a new buffer.  This is also used to track
 * memory utilization in PStats.
 */
66
inline std::size_t BufferContext::get_data_size_bytes(void) const;

2114 12 get_modified 0 4 3240 27 BufferContext::get_modified 0 1 515 93
/**
 * Returns the UpdateSeq that was recorded the last time mark_loaded() was
 * called.
 */
57
inline UpdateSeq BufferContext::get_modified(void) const;

2115 10 get_active 0 4 3240 25 BufferContext::get_active 0 1 516 141
/**
 * Returns the active flag associated with this object.  An object is
 * considered "active" if it was rendered in the current frame.
 */
50
inline bool BufferContext::get_active(void) const;

2116 12 get_resident 0 4 3240 27 BufferContext::get_resident 0 1 517 152
/**
 * Returns the resident flag associated with this object.  An object is
 * considered "resident" if it appears to be resident in texture memory.
 */
52
inline bool BufferContext::get_resident(void) const;

2117 10 get_object 0 4 3240 25 BufferContext::get_object 0 0 41
/**
 * Returns the associated object.
 */
74
inline TypedWritableReferenceCount *BufferContext::get_object(void) const;

2118 14 get_class_type 0 4 3240 29 BufferContext::get_class_type 0 1 518 0
54
static TypeHandle BufferContext::get_class_type(void);

2119 27 upcast_to_CopyOnWriteObject 0 12 3242 42 GeomPrimitive::upcast_to_CopyOnWriteObject 0 1 597 46
upcast from GeomPrimitive to CopyOnWriteObject
68
CopyOnWriteObject *GeomPrimitive::upcast_to_CopyOnWriteObject(void);

2120 25 downcast_to_GeomPrimitive 0 12 3208 44 CopyOnWriteObject::downcast_to_GeomPrimitive 0 0 48
downcast from CopyOnWriteObject to GeomPrimitive
66
GeomPrimitive *CopyOnWriteObject::downcast_to_GeomPrimitive(void);

2121 19 upcast_to_GeomEnums 0 12 3242 34 GeomPrimitive::upcast_to_GeomEnums 0 1 598 38
upcast from GeomPrimitive to GeomEnums
52
GeomEnums *GeomPrimitive::upcast_to_GeomEnums(void);

2122 25 downcast_to_GeomPrimitive 0 12 3168 36 GeomEnums::downcast_to_GeomPrimitive 0 0 40
downcast from GeomEnums to GeomPrimitive
58
GeomPrimitive *GeomEnums::downcast_to_GeomPrimitive(void);

2123 10 operator = 0 4 3242 25 GeomPrimitive::operator = 0 1 520 0
58
void GeomPrimitive::operator =(GeomPrimitive const &copy);

2124 14 ~GeomPrimitive 0 518 3242 29 GeomPrimitive::~GeomPrimitive 0 0 10
/**
 *
 */
44
virtual GeomPrimitive::~GeomPrimitive(void);

2125 12 operator new 0 4 3242 27 GeomPrimitive::operator new 0 1 521 0
130
inline void *GeomPrimitive::operator new(std::size_t size);
inline void *GeomPrimitive::operator new(std::size_t size, void *ptr);

2126 15 operator delete 0 4 3242 30 GeomPrimitive::operator delete 0 0 0
114
inline void GeomPrimitive::operator delete(void *ptr);
inline void GeomPrimitive::operator delete(void *, void *);

2127 12 validate_ptr 0 4 3242 27 GeomPrimitive::validate_ptr 0 0 0
64
static inline bool GeomPrimitive::validate_ptr(void const *ptr);

2128 9 make_copy 0 6 3242 24 GeomPrimitive::make_copy 0 1 522 0
76
virtual PointerTo< GeomPrimitive > GeomPrimitive::make_copy(void) const = 0;

2129 18 get_primitive_type 0 6 3242 33 GeomPrimitive::get_primitive_type 0 1 523 0
83
virtual GeomEnums::PrimitiveType GeomPrimitive::get_primitive_type(void) const = 0;

2130 18 get_geom_rendering 0 6 3242 33 GeomPrimitive::get_geom_rendering 0 1 524 135
/**
 * Returns the set of GeomRendering bits that represent the rendering
 * properties required to properly render this primitive.
 */
58
virtual int GeomPrimitive::get_geom_rendering(void) const;

2131 15 get_shade_model 0 4 3242 30 GeomPrimitive::get_shade_model 0 1 525 170
/**
 * Returns the ShadeModel hint for this primitive.  This is intended as a hint
 * to the renderer to tell it how the per-vertex colors and normals are
 * applied.
 */
72
inline GeomEnums::ShadeModel GeomPrimitive::get_shade_model(void) const;

2132 15 set_shade_model 0 4 3242 30 GeomPrimitive::set_shade_model 0 1 526 512
/**
 * Changes the ShadeModel hint for this primitive.  This is different from the
 * ShadeModelAttrib that might also be applied from the scene graph.  This
 * does not affect the shade model that is in effect when rendering, but
 * rather serves as a hint to the renderer to tell it how the per-vertex
 * colors and normals on this primitive are applied.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
78
inline void GeomPrimitive::set_shade_model(GeomEnums::ShadeModel shade_model);

2133 14 get_usage_hint 0 4 3242 29 GeomPrimitive::get_usage_hint 0 1 527 554
/**
 * Returns the usage hint for this primitive.  See geomEnums.h.  This has
 * nothing to do with the usage hint associated with the primitive's vertices;
 * this only specifies how often the vertex indices that define the primitive
 * will be modified.
 *
 * It is perfectly legal (and, in fact, common) for a GeomPrimitive to have
 * UH_static on itself, while referencing vertex data with UH_dynamic.  This
 * means that the vertices themselves will be animated, but the primitive will
 * always reference the same set of vertices from the pool.
 */
70
inline GeomEnums::UsageHint GeomPrimitive::get_usage_hint(void) const;

2134 14 set_usage_hint 0 4 3242 29 GeomPrimitive::set_usage_hint 0 1 528 232
/**
 * Changes the UsageHint hint for this primitive.  See get_usage_hint().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
68
void GeomPrimitive::set_usage_hint(GeomEnums::UsageHint usage_hint);

2135 14 get_index_type 0 4 3242 29 GeomPrimitive::get_index_type 0 1 529 114
/**
 * Returns the numeric type of the index column.  Normally, this will be
 * either NT_uint16 or NT_uint32.
 */
72
inline GeomEnums::NumericType GeomPrimitive::get_index_type(void) const;

2136 14 set_index_type 0 4 3242 29 GeomPrimitive::set_index_type 0 1 530 556
/**
 * Changes the numeric type of the index column.  Normally, this should be
 * either NT_uint16 or NT_uint32.
 *
 * The index type must be large enough to include all of the index values in
 * the primitive.  It may be automatically elevated, if necessary, to a larger
 * index type, by a subsequent call to add_index() that names an index value
 * that does not fit in the index type you specify.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
70
void GeomPrimitive::set_index_type(GeomEnums::NumericType index_type);

2137 12 is_composite 0 4 3242 27 GeomPrimitive::is_composite 0 1 531 178
/**
 * Returns true if the primitive is a composite primitive such as a tristrip
 * or trifan, or false if it is a fundamental primitive such as a collection
 * of triangles.
 */
52
inline bool GeomPrimitive::is_composite(void) const;

2138 10 is_indexed 0 4 3242 25 GeomPrimitive::is_indexed 0 1 532 379
/**
 * Returns true if the primitive is indexed, false otherwise.  An indexed
 * primitive stores a table of index numbers into its GeomVertexData, so that
 * it can reference the vertices in any order.  A nonindexed primitive, on the
 * other hand, stores only the first vertex number and number of vertices
 * used, so that it can only reference the vertices consecutively.
 */
50
inline bool GeomPrimitive::is_indexed(void) const;

2139 16 get_first_vertex 0 4 3242 31 GeomPrimitive::get_first_vertex 0 1 533 257
/**
 * Returns the first vertex number referenced by the primitive.  This is
 * particularly important in the case of a nonindexed primitive, in which case
 * get_first_vertex() and get_num_vertices() completely define the extent of
 * the vertex range.
 */
55
inline int GeomPrimitive::get_first_vertex(void) const;

2140 16 get_num_vertices 0 4 3242 31 GeomPrimitive::get_num_vertices 0 1 534 83
/**
 * Returns the number of indices used by all the primitives in this object.
 */
55
inline int GeomPrimitive::get_num_vertices(void) const;

2141 10 get_vertex 0 4 3242 25 GeomPrimitive::get_vertex 0 1 535 53
/**
 * Returns the ith vertex index in the table.
 */
50
inline int GeomPrimitive::get_vertex(int i) const;

2142 10 add_vertex 0 4 3242 25 GeomPrimitive::add_vertex 0 1 536 445
/**
 * Adds the indicated vertex to the list of vertex indices used by the
 * graphics primitive type.  To define a primitive, you must call add_vertex()
 * for each vertex of the new primitive, and then call close_primitive() after
 * you have specified the last vertex of each primitive.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
43
void GeomPrimitive::add_vertex(int vertex);

2143 12 add_vertices 0 4 3242 27 GeomPrimitive::add_vertices 0 3 537 538 539 130
/**
 * Adds several vertices in a row.
 */

/**
 * Adds several vertices in a row.
 */

/**
 * Adds several vertices in a row.
 */
194
inline void GeomPrimitive::add_vertices(int v1, int v2);
inline void GeomPrimitive::add_vertices(int v1, int v2, int v3);
inline void GeomPrimitive::add_vertices(int v1, int v2, int v3, int v4);

2144 24 add_consecutive_vertices 0 4 3242 39 GeomPrimitive::add_consecutive_vertices 0 1 540 244
/**
 * Adds a consecutive sequence of vertices, beginning at start, to the
 * primitive.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
74
void GeomPrimitive::add_consecutive_vertices(int start, int num_vertices);

2145 17 add_next_vertices 0 4 3242 32 GeomPrimitive::add_next_vertices 0 1 541 327
/**
 * Adds the next n vertices in sequence, beginning from the last vertex added
 * to the primitive + 1.
 *
 * This is most useful when you are building up a primitive and a
 * GeomVertexData at the same time, and you just want the primitive to
 * reference the first n vertices from the data, then the next n, and so on.
 */
56
void GeomPrimitive::add_next_vertices(int num_vertices);

2146 20 reserve_num_vertices 0 4 3242 35 GeomPrimitive::reserve_num_vertices 0 1 542 813
/**
 * This ensures that enough memory space for n vertices is allocated, so that
 * you may increase the number of vertices to n without causing a new memory
 * allocation.  This is a performance optimization only; it is especially
 * useful when you know ahead of time that you will be adding n vertices to
 * the primitive.
 *
 * Note that the total you specify here should also include implicit vertices
 * which may be added at each close_primitive() call, according to
 * get_num_unused_vertices_per_primitive().
 *
 * Note also that making this call will implicitly make the primitive indexed
 * if it is not already, which could result in a performance *penalty*.  If
 * you would prefer not to lose the nonindexed nature of your existing
 * GeomPrimitives, check is_indexed() before making this call.
 */
59
void GeomPrimitive::reserve_num_vertices(int num_vertices);

2147 15 close_primitive 0 4 3242 30 GeomPrimitive::close_primitive 0 1 543 345
/**
 * Indicates that the previous n calls to add_vertex(), since the last call to
 * close_primitive(), have fully defined a new primitive.  Returns true if
 * successful, false otherwise.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
42
bool GeomPrimitive::close_primitive(void);

2148 14 clear_vertices 0 4 3242 29 GeomPrimitive::clear_vertices 0 1 544 250
/**
 * Removes all of the vertices and primitives from the object, so they can be
 * re-added.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
41
void GeomPrimitive::clear_vertices(void);

2149 15 offset_vertices 0 4 3242 30 GeomPrimitive::offset_vertices 0 2 545 546 737
/**
 * Adds the indicated offset to all vertices used by the primitive.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */

/**
 * Adds the indicated offset to the indicated segment of vertices used by the
 * primitive.  Unlike the other version of offset_vertices, this makes the
 * geometry indexed if it isn't already.
 *
 * Note that end_row indicates one past the last row that should be offset.
 * In other words, the number of vertices touched is (end_row - begin_row).
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
125
void GeomPrimitive::offset_vertices(int offset);
void GeomPrimitive::offset_vertices(int offset, int begin_row, int end_row);

2150 15 make_nonindexed 0 4 3242 30 GeomPrimitive::make_nonindexed 0 1 547 202
/**
 * Converts the primitive from indexed to nonindexed by duplicating vertices
 * as necessary into the indicated dest GeomVertexData.  Note: does not
 * support primitives with strip cut indices.
 */
88
void GeomPrimitive::make_nonindexed(GeomVertexData *dest, GeomVertexData const *source);

2151 13 pack_vertices 0 4 3242 28 GeomPrimitive::pack_vertices 0 1 548 135
/**
 * Packs the vertices used by the primitive from the indicated source array
 * onto the end of the indicated destination array.
 */
86
void GeomPrimitive::pack_vertices(GeomVertexData *dest, GeomVertexData const *source);

2152 12 make_indexed 0 4 3242 27 GeomPrimitive::make_indexed 0 1 549 466
/**
 * Converts the primitive from nonindexed form to indexed form.  This will
 * simply create an index table that is numbered consecutively from
 * get_first_vertex(); it does not automatically collapse together identical
 * vertices that may have been split apart by a previous call to
 * make_nonindexed().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
39
void GeomPrimitive::make_indexed(void);

2153 18 get_num_primitives 0 4 3242 33 GeomPrimitive::get_num_primitives 0 1 550 119
/**
 * Returns the number of individual primitives stored within this object.  All
 * primitives are the same type.
 */
57
inline int GeomPrimitive::get_num_primitives(void) const;

2154 19 get_primitive_start 0 4 3242 34 GeomPrimitive::get_primitive_start 0 1 551 457
/**
 * Returns the element within the _vertices list at which the nth primitive
 * starts.
 *
 * If i is one more than the highest valid primitive vertex, the return value
 * will be one more than the last valid vertex.  Thus, it is generally true
 * that the vertices used by a particular primitive i are the set
 * get_primitive_start(n) <= vi < get_primitive_start(n + 1) (although this
 * range also includes the unused vertices between primitives).
 */
52
int GeomPrimitive::get_primitive_start(int n) const;

2155 17 get_primitive_end 0 4 3242 32 GeomPrimitive::get_primitive_end 0 1 552 156
/**
 * Returns the element within the _vertices list at which the nth primitive
 * ends.  This is one past the last valid element for the nth primitive.
 */
50
int GeomPrimitive::get_primitive_end(int n) const;

2156 26 get_primitive_num_vertices 0 4 3242 41 GeomPrimitive::get_primitive_num_vertices 0 1 553 145
/**
 * Returns the number of vertices used by the nth primitive.  This is the same
 * thing as get_primitive_end(n) - get_primitive_start(n).
 */
59
int GeomPrimitive::get_primitive_num_vertices(int n) const;

2157 21 get_num_used_vertices 0 4 3242 36 GeomPrimitive::get_num_used_vertices 0 1 554 278
/**
 * Returns the number of vertices used by all of the primitives.  This is the
 * same as summing get_primitive_num_vertices(n) for n in
 * get_num_primitives().  It is like get_num_vertices except that it excludes
 * all of the degenerate vertices and strip-cut indices.
 */
53
int GeomPrimitive::get_num_used_vertices(void) const;

2158 13 get_num_faces 0 4 3242 28 GeomPrimitive::get_num_faces 0 1 555 145
/**
 * Returns the number of triangles or other fundamental type (such as line
 * segments) represented by all the primitives in this object.
 */
52
inline int GeomPrimitive::get_num_faces(void) const;

2159 23 get_primitive_num_faces 0 4 3242 38 GeomPrimitive::get_primitive_num_faces 0 1 556 144
/**
 * Returns the number of triangles or other fundamental type (such as line
 * segments) represented by the nth primitive in this object.
 */
63
inline int GeomPrimitive::get_primitive_num_faces(int n) const;

2160 14 get_min_vertex 0 4 3242 29 GeomPrimitive::get_min_vertex 0 1 557 96
/**
 * Returns the minimum vertex index number used by all the primitives in this
 * object.
 */
53
inline int GeomPrimitive::get_min_vertex(void) const;

2161 24 get_primitive_min_vertex 0 4 3242 39 GeomPrimitive::get_primitive_min_vertex 0 1 558 95
/**
 * Returns the minimum vertex index number used by the nth primitive in this
 * object.
 */
57
int GeomPrimitive::get_primitive_min_vertex(int n) const;

2162 14 get_max_vertex 0 4 3242 29 GeomPrimitive::get_max_vertex 0 1 559 96
/**
 * Returns the maximum vertex index number used by all the primitives in this
 * object.
 */
53
inline int GeomPrimitive::get_max_vertex(void) const;

2163 24 get_primitive_max_vertex 0 4 3242 39 GeomPrimitive::get_primitive_max_vertex 0 1 560 95
/**
 * Returns the maximum vertex index number used by the nth primitive in this
 * object.
 */
57
int GeomPrimitive::get_primitive_max_vertex(int n) const;

2164 9 decompose 0 4 3242 24 GeomPrimitive::decompose 0 1 561 464
/**
 * Decomposes a complex primitive type into a simpler primitive type, for
 * instance triangle strips to triangles, and returns a pointer to the new
 * primitive definition.  If the decomposition cannot be performed, this might
 * return the original object.
 *
 * This method is useful for application code that wants to iterate through
 * the set of triangles on the primitive without having to write handlers for
 * each possible kind of primitive type.
 */
69
ConstPointerTo< GeomPrimitive > GeomPrimitive::decompose(void) const;

2165 6 rotate 0 4 3242 21 GeomPrimitive::rotate 0 1 562 408
/**
 * Returns a new primitive with the shade_model reversed (if it is flat
 * shaded), if possible.  If the primitive type cannot be rotated, returns the
 * original primitive, unrotated.
 *
 * If the current shade_model indicates flat_vertex_last, this should bring
 * the last vertex to the first position; if it indicates flat_vertex_first,
 * this should bring the first vertex to the last position.
 */
66
ConstPointerTo< GeomPrimitive > GeomPrimitive::rotate(void) const;

2166 10 doubleside 0 4 3242 25 GeomPrimitive::doubleside 0 1 563 493
/**
 * Duplicates triangles in the primitive so that each triangle is back-to-back
 * with another triangle facing in the opposite direction.  Note that this
 * doesn't affect vertex normals, so this operation alone won't work in the
 * presence of lighting (but see SceneGraphReducer::doubleside()).
 *
 * Also see CullFaceAttrib, which can enable rendering of both sides of a
 * triangle without having to duplicate it (but which doesn't necessarily work
 * in the presence of lighting).
 */
70
ConstPointerTo< GeomPrimitive > GeomPrimitive::doubleside(void) const;

2167 7 reverse 0 4 3242 22 GeomPrimitive::reverse 0 1 564 477
/**
 * Reverses the winding order in the primitive so that each triangle is facing
 * in the opposite direction it was originally.  Note that this doesn't affect
 * vertex normals, so this operation alone won't work in the presence of
 * lighting (but see SceneGraphReducer::reverse()).
 *
 * Also see CullFaceAttrib, which can change the visible direction of a
 * triangle without having to duplicate it (but which doesn't necessarily work
 * in the presence of lighting).
 */
67
ConstPointerTo< GeomPrimitive > GeomPrimitive::reverse(void) const;

2168 17 match_shade_model 0 4 3242 32 GeomPrimitive::match_shade_model 0 1 565 346
/**
 * Returns a new primitive that is compatible with the indicated shade model,
 * if possible, or NULL if this is not possible.
 *
 * In most cases, this will return either NULL or the original primitive.  In
 * the case of a SM_flat_first_vertex vs.  a SM_flat_last_vertex (or vice-
 * versa), however, it will return a rotated primitive.
 */
106
ConstPointerTo< GeomPrimitive > GeomPrimitive::match_shade_model(GeomEnums::ShadeModel shade_model) const;

2169 11 make_points 0 4 3242 26 GeomPrimitive::make_points 0 1 566 245
/**
 * Returns a new GeomPoints primitive that represents each of the vertices in
 * the original primitive, rendered exactly once.  If the original primitive
 * is already a GeomPoints primitive, returns the original primitive
 * unchanged.
 */
71
ConstPointerTo< GeomPrimitive > GeomPrimitive::make_points(void) const;

2170 10 make_lines 0 4 3242 25 GeomPrimitive::make_lines 0 1 567 233
/**
 * Returns a new GeomLines primitive that represents each of the edges in the
 * original primitive rendered as a line.  If the original primitive is
 * already a GeomLines primitive, returns the original primitive unchanged.
 */
70
ConstPointerTo< GeomPrimitive > GeomPrimitive::make_lines(void) const;

2171 12 make_patches 0 4 3242 27 GeomPrimitive::make_patches 0 1 568 418
/**
 * Decomposes a complex primitive type into a simpler primitive type, for
 * instance triangle strips to triangles, puts these in a new GeomPatches
 * object and returns a pointer to the new primitive definition.  If the
 * decomposition cannot be performed, this might return the original object.
 *
 * This method is useful for application code that wants to use tesselation
 * shaders on arbitrary geometry.
 */
72
ConstPointerTo< GeomPrimitive > GeomPrimitive::make_patches(void) const;

2172 14 make_adjacency 0 6 3242 29 GeomPrimitive::make_adjacency 0 1 569 161
/**
 * Adds adjacency information to this primitive.  May return null if this type
 * of geometry does not support adjacency information.
 *
 * @since 1.10.0
 */
82
virtual ConstPointerTo< GeomPrimitive > GeomPrimitive::make_adjacency(void) const;

2173 13 get_num_bytes 0 4 3242 28 GeomPrimitive::get_num_bytes 0 1 570 91
/**
 * Returns the number of bytes consumed by the primitive and its index
 * table(s).
 */
45
int GeomPrimitive::get_num_bytes(void) const;

2174 19 get_data_size_bytes 0 4 3242 34 GeomPrimitive::get_data_size_bytes 0 1 571 68
/**
 * Returns the number of bytes stored in the vertices array.
 */
58
inline int GeomPrimitive::get_data_size_bytes(void) const;

2175 12 get_modified 0 4 3242 27 GeomPrimitive::get_modified 0 1 572 125
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * the vertex index array is modified.
 */
57
inline UpdateSeq GeomPrimitive::get_modified(void) const;

2176 16 request_resident 0 4 3242 31 GeomPrimitive::request_resident 0 1 573 186
/**
 * Returns true if the primitive data is currently resident in memory.  If
 * this returns false, the primitive data will be brought back into memory
 * shortly; try again later.
 */
98
bool GeomPrimitive::request_resident(Thread *current_thread = Thread::get_current_thread()) const;

2177 11 check_valid 0 4 3242 26 GeomPrimitive::check_valid 0 2 574 575 207
/**
 * Verifies that the primitive only references vertices that actually exist
 * within the indicated GeomVertexData.  Returns true if the primitive appears
 * to be valid, false otherwise.
 */

/**
 *
 */
175
inline bool GeomPrimitive::check_valid(GeomVertexData const *vertex_data) const;
inline bool GeomPrimitive::check_valid(GeomVertexDataPipelineReader const *data_reader) const;

2178 6 output 0 6 3242 21 GeomPrimitive::output 0 1 576 10
/**
 *
 */
60
virtual void GeomPrimitive::output(std::ostream &out) const;

2179 5 write 0 6 3242 20 GeomPrimitive::write 0 1 577 10
/**
 *
 */
77
virtual void GeomPrimitive::write(std::ostream &out, int indent_level) const;

2180 12 get_vertices 0 4 3242 27 GeomPrimitive::get_vertices 0 1 578 479
/**
 * Returns a const pointer to the vertex index array so application code can
 * read it directly.  This might return NULL if the primitive is nonindexed.
 * Do not attempt to modify the returned array; use modify_vertices() or
 * set_vertices() for this.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
85
inline ConstPointerTo< GeomVertexArrayData > GeomPrimitive::get_vertices(void) const;

2181 19 get_vertices_handle 0 4 3242 34 GeomPrimitive::get_vertices_handle 0 1 579 53
/**
 * Equivalent to get_vertices().get_handle().
 */
116
inline ConstPointerTo< GeomVertexArrayDataHandle > GeomPrimitive::get_vertices_handle(Thread *current_thread) const;

2182 15 modify_vertices 0 4 3242 30 GeomPrimitive::modify_vertices 0 1 580 869
/**
 * Returns a modifiable pointer to the vertex index list, so application code
 * can directly fiddle with this data.  Use with caution, since there are no
 * checks that the data will be left in a stable state.
 *
 * If this is called on a nonindexed primitive, it will implicitly be
 * converted to an indexed primitive.
 *
 * If num_vertices is not -1, it specifies an artificial limit to the number
 * of vertices in the array.  Otherwise, all of the vertices in the array will
 * be used.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
87
PointerTo< GeomVertexArrayData > GeomPrimitive::modify_vertices(int num_vertices = -1);

2183 22 modify_vertices_handle 0 4 3242 37 GeomPrimitive::modify_vertices_handle 0 1 581 56
/**
 * Equivalent to modify_vertices().get_handle().
 */
108
inline PointerTo< GeomVertexArrayDataHandle > GeomPrimitive::modify_vertices_handle(Thread *current_thread);

2184 12 set_vertices 0 4 3242 27 GeomPrimitive::set_vertices 0 1 582 711
/**
 * Completely replaces the vertex index list with a new table.  Chances are
 * good that you should also replace the ends list with set_ends() at the same
 * time.
 *
 * If num_vertices is not -1, it specifies an artificial limit to the number
 * of vertices in the array.  Otherwise, all of the vertices in the array will
 * be used.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
93
void GeomPrimitive::set_vertices(GeomVertexArrayData const *vertices, int num_vertices = -1);

2185 23 set_nonindexed_vertices 0 4 3242 38 GeomPrimitive::set_nonindexed_vertices 0 1 583 465
/**
 * Sets the primitive up as a nonindexed primitive, using the indicated vertex
 * range.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
80
void GeomPrimitive::set_nonindexed_vertices(int first_vertex, int num_vertices);

2186 16 get_index_stride 0 4 3242 31 GeomPrimitive::get_index_stride 0 1 584 334
/**
 * A convenience function to return the gap between successive index numbers,
 * in bytes, of the index data.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
55
inline int GeomPrimitive::get_index_stride(void) const;

2187 19 get_strip_cut_index 0 4 3242 34 GeomPrimitive::get_strip_cut_index 0 1 585 454
/**
 * If relevant, returns the index value that may be used in some cases to
 * signify the end of a primitive.  This is typically the highest value that
 * the numeric type can store.
 */

/**
 * Returns the index of the indicated type that is reserved for use as a strip
 * cut index, if enabled for the primitive.  When the renderer encounters this
 * index, it will restart the primitive.  This is guaranteed not to point to
 * an actual vertex.
 */
58
inline int GeomPrimitive::get_strip_cut_index(void) const;

2188 8 get_ends 0 4 3242 23 GeomPrimitive::get_ends 0 1 586 580
/**
 * Returns a const pointer to the primitive ends array so application code can
 * read it directly.  Do not attempt to modify the returned array; use
 * modify_ends() or set_ends() for this.
 *
 * Note that simple primitive types, like triangles, do not have a ends array:
 * since all the primitives have the same number of vertices, it is not
 * needed.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
52
inline CPTA_int GeomPrimitive::get_ends(void) const;

2189 11 modify_ends 0 4 3242 26 GeomPrimitive::modify_ends 0 1 587 755
/**
 * Returns a modifiable pointer to the primitive ends array, so application
 * code can directly fiddle with this data.  Use with caution, since there are
 * no checks that the data will be left in a stable state.
 *
 * Note that simple primitive types, like triangles, do not have a ends array:
 * since all the primitives have the same number of vertices, it is not
 * needed.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
41
PTA_int GeomPrimitive::modify_ends(void);

2190 8 set_ends 0 4 3242 23 GeomPrimitive::set_ends 0 1 588 716
/**
 * Completely replaces the primitive ends array with a new table.  Chances are
 * good that you should also replace the vertices list with set_vertices() at
 * the same time.
 *
 * Note that simple primitive types, like triangles, do not have a ends array:
 * since all the primitives have the same number of vertices, it is not
 * needed.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
43
void GeomPrimitive::set_ends(PTA_int ends);

2191 8 get_mins 0 4 3242 23 GeomPrimitive::get_mins 0 1 589 482
/**
 * Returns a const pointer to the primitive mins array so application code can
 * read it directly.  Do not attempt to modify the returned array; use
 * set_minmax() for this.
 *
 * Note that simple primitive types, like triangles, do not have a mins array.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
81
inline ConstPointerTo< GeomVertexArrayData > GeomPrimitive::get_mins(void) const;

2192 8 get_maxs 0 4 3242 23 GeomPrimitive::get_maxs 0 1 590 473
/**
 * Returns a const pointer to the primitive maxs array so application code can
 * read it directly.  Do not attempt to modify the returned array; use
 * set_minmax().
 *
 * Note that simple primitive types, like triangles, do not have a maxs array.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
81
inline ConstPointerTo< GeomVertexArrayData > GeomPrimitive::get_maxs(void) const;

2193 10 set_minmax 0 4 3242 25 GeomPrimitive::set_minmax 0 1 591 687
/**
 * Explicitly specifies the minimum and maximum vertices, as well as the lists
 * of per-component min and max.
 *
 * Use this method with extreme caution.  It's generally better to let the
 * GeomPrimitive compute these explicitly, unless for some reason you can do
 * it faster and you absolutely need the speed improvement.
 *
 * Note that any modification to the vertex array will normally cause this to
 * be recomputed, unless you set it immediately again.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
117
void GeomPrimitive::set_minmax(int min_vertex, int max_vertex, GeomVertexArrayData *mins, GeomVertexArrayData *maxs);

2194 12 clear_minmax 0 4 3242 27 GeomPrimitive::clear_minmax 0 1 592 339
/**
 * Undoes a previous call to set_minmax(), and allows the minimum and maximum
 * values to be recomputed normally.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
39
void GeomPrimitive::clear_minmax(void);

2195 30 get_num_vertices_per_primitive 0 6 3242 45 GeomPrimitive::get_num_vertices_per_primitive 0 1 593 558
/**
 * If the primitive type is a simple type in which all primitives have the
 * same number of vertices, like triangles, returns the number of vertices per
 * primitive.  If the primitive type is a more complex type in which different
 * primitives might have different numbers of vertices, for instance a
 * triangle strip, returns 0.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
70
virtual int GeomPrimitive::get_num_vertices_per_primitive(void) const;

2196 34 get_min_num_vertices_per_primitive 0 6 3242 49 GeomPrimitive::get_min_num_vertices_per_primitive 0 1 594 336
/**
 * Returns the minimum number of vertices that must be added before
 * close_primitive() may legally be called.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
74
virtual int GeomPrimitive::get_min_num_vertices_per_primitive(void) const;

2197 37 get_num_unused_vertices_per_primitive 0 6 3242 52 GeomPrimitive::get_num_unused_vertices_per_primitive 0 1 595 479
/**
 * Returns the number of vertices that are added between primitives that
 * aren't, strictly speaking, part of the primitives themselves.  This is
 * used, for instance, to define degenerate triangles to connect otherwise
 * disconnected triangle strips.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */
77
virtual int GeomPrimitive::get_num_unused_vertices_per_primitive(void) const;

2198 14 get_class_type 0 4 3242 29 GeomPrimitive::get_class_type 0 1 596 0
54
static TypeHandle GeomPrimitive::get_class_type(void);

2199 12 TextureStage 0 260 3243 26 TextureStage::TextureStage 0 2 599 600 107
/**
 * Initialize the texture stage from other
 */

/**
 * Initialize the texture stage at construction
 */
122
explicit TextureStage::TextureStage(std::string const &name);
inline TextureStage::TextureStage(TextureStage const &copy);

2200 10 operator = 0 4 3243 24 TextureStage::operator = 0 1 601 0
56
void TextureStage::operator =(TextureStage const &copy);

2201 8 set_name 0 4 3243 22 TextureStage::set_name 0 1 602 49
/**
 * Changes the name of this texture stage
 */
60
inline void TextureStage::set_name(std::string const &name);

2202 8 get_name 0 4 3243 22 TextureStage::get_name 0 1 603 49
/**
 * Returns the name of this texture stage
 */
61
inline std::string const &TextureStage::get_name(void) const;

2203 8 set_sort 0 4 3243 22 TextureStage::set_sort 0 1 604 439
/**
 * Changes the order in which the texture associated with this stage is
 * rendered relative to the other texture stages.  When geometry is rendered
 * with multiple textures, the textures are rendered in order from the lowest
 * sort number to the highest sort number.
 *
 * Also see set_priority(), which is used to select the most important
 * textures for rendering when some must be omitted because of hardware
 * limitations.
 */
45
inline void TextureStage::set_sort(int sort);

2204 8 get_sort 0 4 3243 22 TextureStage::get_sort 0 1 605 56
/**
 * Returns the sort order of this texture stage.
 */
46
inline int TextureStage::get_sort(void) const;

2205 12 set_priority 0 4 3243 26 TextureStage::set_priority 0 1 606 555
/**
 * Changes the relative importance of the texture associated with this stage
 * relative to the other texture stages that are applied simultaneously.
 *
 * This is unrelated to set_sort(), which controls the order in which multiple
 * textures are applied.  The priority number is used to decide which of the
 * requested textures are to be selected for rendering when more textures are
 * requested than the hardware will support.  The highest-priority n textures
 * are selected for rendering, and then rendered in order by their sort
 * factor.
 */
53
inline void TextureStage::set_priority(int priority);

2206 12 get_priority 0 4 3243 26 TextureStage::get_priority 0 1 607 163
/**
 * Returns the priority associated with this stage.
 *
 * This is specially helpful for cards that do not support more than n stages
 * of multi-texturing.
 */
50
inline int TextureStage::get_priority(void) const;

2207 17 set_texcoord_name 0 4 3243 31 TextureStage::set_texcoord_name 0 2 608 609 324
/**
 * Indicate which set of UV's this texture stage will use.  Geometry may have
 * any number of associated UV sets, each of which must have a unique name.
 */

/**
 * Indicate which set of UV's this texture stage will use.  Geometry may have
 * any number of associated UV sets, each of which must have a unique name.
 */
143
inline void TextureStage::set_texcoord_name(InternalName *name);
inline void TextureStage::set_texcoord_name(std::string const &texcoord_name);

2208 17 get_texcoord_name 0 4 3243 31 TextureStage::get_texcoord_name 0 1 610 79
/**
 * See set_texcoord_name.  The default is InternalName::get_texcoord().
 */
65
inline InternalName *TextureStage::get_texcoord_name(void) const;

2209 16 get_tangent_name 0 4 3243 30 TextureStage::get_tangent_name 0 1 611 153
/**
 * Returns the set of tangents this texture stage will use.  This is the same
 * as get_texcoord_name(), except that the first part is "tangent".
 */
64
inline InternalName *TextureStage::get_tangent_name(void) const;

2210 17 get_binormal_name 0 4 3243 31 TextureStage::get_binormal_name 0 1 612 155
/**
 * Returns the set of binormals this texture stage will use.  This is the same
 * as get_binormal_name(), except that the first part is "binormal".
 */
65
inline InternalName *TextureStage::get_binormal_name(void) const;

2211 8 set_mode 0 4 3243 22 TextureStage::set_mode 0 1 613 45
/**
 * Set the mode of this texture stage
 */
60
inline void TextureStage::set_mode(TextureStage::Mode mode);

2212 8 get_mode 0 4 3243 22 TextureStage::get_mode 0 1 614 40
/**
 * Return the mode of this stage
 */
61
inline TextureStage::Mode TextureStage::get_mode(void) const;

2213 17 is_fixed_function 0 4 3243 31 TextureStage::is_fixed_function 0 1 615 168
/**
 * Returns true if the TextureStage is relevant to the classic fixed function
 * pipeline.  This excludes texture stages such as normal mapping and the
 * like.
 */
56
inline bool TextureStage::is_fixed_function(void) const;

2214 9 set_color 0 4 3243 23 TextureStage::set_color 0 1 616 39
/**
 * Set the color for this stage
 */
57
inline void TextureStage::set_color(LColor const &color);

2215 9 get_color 0 4 3243 23 TextureStage::get_color 0 1 617 42
/**
 * return the color for this stage
 */
50
inline LColor TextureStage::get_color(void) const;

2216 13 set_rgb_scale 0 4 3243 27 TextureStage::set_rgb_scale 0 1 618 215
/**
 * Sets an additional factor that will scale all three r, g, b components
 * after the texture has been applied.  This is used only when the mode is
 * CM_combine.
 *
 * The only legal values are 1, 2, or 4.
 */
55
inline void TextureStage::set_rgb_scale(int rgb_scale);

2217 13 get_rgb_scale 0 4 3243 27 TextureStage::get_rgb_scale 0 1 619 31
/**
 * See set_rgb_scale().
 */
51
inline int TextureStage::get_rgb_scale(void) const;

2218 15 set_alpha_scale 0 4 3243 29 TextureStage::set_alpha_scale 0 1 620 203
/**
 * Sets an additional factor that will scale the alpha component after the
 * texture has been applied.  This is used only when the mode is CM_combine.
 *
 * The only legal values are 1, 2, or 4.
 */
59
inline void TextureStage::set_alpha_scale(int alpha_scale);

2219 15 get_alpha_scale 0 4 3243 29 TextureStage::get_alpha_scale 0 1 621 33
/**
 * See set_alpha_scale().
 */
53
inline int TextureStage::get_alpha_scale(void) const;

2220 16 set_saved_result 0 4 3243 30 TextureStage::set_saved_result 0 1 622 471
/**
 * Sets the saved_result flag.  When this is true, the output of this stage
 * will be supplied as the "last_saved_result" source for any future stages,
 * until the next TextureStage with a saved_result set true is encountered.
 *
 * This can be used to reuse the results of this texture stage as input to
 * more than one stage later in the pipeline.
 *
 * The last texture in the pipeline (the one with the highest sort value)
 * should not have this flag set.
 */
62
inline void TextureStage::set_saved_result(bool saved_result);

2221 16 get_saved_result 0 4 3243 30 TextureStage::get_saved_result 0 1 623 92
/**
 * Returns the current setting of the saved_result flag.  See
 * set_saved_result().
 */
55
inline bool TextureStage::get_saved_result(void) const;

2222 19 set_tex_view_offset 0 4 3243 33 TextureStage::set_tex_view_offset 0 1 624 342
/**
 * Sets the tex_view_offset value.  This is used only when a special multiview
 * texture is bound to the TextureStage, and it selects the particular view of
 * the texture that is to be used.
 *
 * This value is added to the similar parameter on DisplayRegion to derive the
 * final texture view index that is selected for rendering.
 */
67
inline void TextureStage::set_tex_view_offset(int tex_view_offset);

2223 19 get_tex_view_offset 0 4 3243 33 TextureStage::get_tex_view_offset 0 1 625 93
/**
 * Returns the current setting of the tex_view_offset.  See
 * set_tex_view_offset().
 */
57
inline int TextureStage::get_tex_view_offset(void) const;

2224 15 set_combine_rgb 0 4 3243 29 TextureStage::set_combine_rgb 0 3 626 627 628 452
/**
 * Specifies any of the CombineMode values that represent a one-parameter
 * operation.  Specifically, this is CM_replace only.
 */

/**
 * Specifies any of the CombineMode values that represent a two-parameter
 * operation.  Specifically, this is everything except for CM_replace and
 * CM_interpolate.
 */

/**
 * Specifies any of the CombineMode values that represent a one-parameter
 * operation.  Specifically, this is CM_interpolate only.
 */
680
inline void TextureStage::set_combine_rgb(TextureStage::CombineMode mode, TextureStage::CombineSource source0, TextureStage::CombineOperand operand0);
inline void TextureStage::set_combine_rgb(TextureStage::CombineMode mode, TextureStage::CombineSource source0, TextureStage::CombineOperand operand0, TextureStage::CombineSource source1, TextureStage::CombineOperand operand1);
inline void TextureStage::set_combine_rgb(TextureStage::CombineMode mode, TextureStage::CombineSource source0, TextureStage::CombineOperand operand0, TextureStage::CombineSource source1, TextureStage::CombineOperand operand1, TextureStage::CombineSource source2, TextureStage::CombineOperand operand2);

2225 20 get_combine_rgb_mode 0 4 3243 34 TextureStage::get_combine_rgb_mode 0 1 629 35
/**
 * Get the combine_rgb_mode
 */
80
inline TextureStage::CombineMode TextureStage::get_combine_rgb_mode(void) const;

2226 28 get_num_combine_rgb_operands 0 4 3243 42 TextureStage::get_num_combine_rgb_operands 0 1 630 139
/**
 * Returns the number of meaningful operands that may be retrieved via
 * get_combine_rgb_sourceN() and get_combine_rgb_operandN().
 */
66
inline int TextureStage::get_num_combine_rgb_operands(void) const;

2227 23 get_combine_rgb_source0 0 4 3243 37 TextureStage::get_combine_rgb_source0 0 1 631 42
/**
 * Get source0 of combine_rgb_mode
 */
85
inline TextureStage::CombineSource TextureStage::get_combine_rgb_source0(void) const;

2228 24 get_combine_rgb_operand0 0 4 3243 38 TextureStage::get_combine_rgb_operand0 0 1 632 43
/**
 * Get operand0 of combine_rgb_mode
 */
87
inline TextureStage::CombineOperand TextureStage::get_combine_rgb_operand0(void) const;

2229 23 get_combine_rgb_source1 0 4 3243 37 TextureStage::get_combine_rgb_source1 0 1 633 42
/**
 * Get source1 of combine_rgb_mode
 */
85
inline TextureStage::CombineSource TextureStage::get_combine_rgb_source1(void) const;

2230 24 get_combine_rgb_operand1 0 4 3243 38 TextureStage::get_combine_rgb_operand1 0 1 634 43
/**
 * Get operand1 of combine_rgb_mode
 */
87
inline TextureStage::CombineOperand TextureStage::get_combine_rgb_operand1(void) const;

2231 23 get_combine_rgb_source2 0 4 3243 37 TextureStage::get_combine_rgb_source2 0 1 635 42
/**
 * Get source2 of combine_rgb_mode
 */
85
inline TextureStage::CombineSource TextureStage::get_combine_rgb_source2(void) const;

2232 24 get_combine_rgb_operand2 0 4 3243 38 TextureStage::get_combine_rgb_operand2 0 1 636 43
/**
 * Get operand2 of combine_rgb_mode
 */
87
inline TextureStage::CombineOperand TextureStage::get_combine_rgb_operand2(void) const;

2233 17 set_combine_alpha 0 4 3243 31 TextureStage::set_combine_alpha 0 3 637 638 639 452
/**
 * Specifies any of the CombineMode values that represent a one-parameter
 * operation.  Specifically, this is CM_replace only.
 */

/**
 * Specifies any of the CombineMode values that represent a two-parameter
 * operation.  Specifically, this is everything except for CM_replace and
 * CM_interpolate.
 */

/**
 * Specifies any of the CombineMode values that represent a one-parameter
 * operation.  Specifically, this is CM_interpolate only.
 */
686
inline void TextureStage::set_combine_alpha(TextureStage::CombineMode mode, TextureStage::CombineSource source0, TextureStage::CombineOperand operand0);
inline void TextureStage::set_combine_alpha(TextureStage::CombineMode mode, TextureStage::CombineSource source0, TextureStage::CombineOperand operand0, TextureStage::CombineSource source1, TextureStage::CombineOperand operand1);
inline void TextureStage::set_combine_alpha(TextureStage::CombineMode mode, TextureStage::CombineSource source0, TextureStage::CombineOperand operand0, TextureStage::CombineSource source1, TextureStage::CombineOperand operand1, TextureStage::CombineSource source2, TextureStage::CombineOperand operand2);

2234 22 get_combine_alpha_mode 0 4 3243 36 TextureStage::get_combine_alpha_mode 0 1 640 33
/**
 * Get combine_alpha_mode
 */
82
inline TextureStage::CombineMode TextureStage::get_combine_alpha_mode(void) const;

2235 30 get_num_combine_alpha_operands 0 4 3243 44 TextureStage::get_num_combine_alpha_operands 0 1 641 143
/**
 * Returns the number of meaningful operands that may be retrieved via
 * get_combine_alpha_sourceN() and get_combine_alpha_operandN().
 */
68
inline int TextureStage::get_num_combine_alpha_operands(void) const;

2236 25 get_combine_alpha_source0 0 4 3243 39 TextureStage::get_combine_alpha_source0 0 1 642 44
/**
 * Get source0 of combine_alpha_mode
 */
87
inline TextureStage::CombineSource TextureStage::get_combine_alpha_source0(void) const;

2237 26 get_combine_alpha_operand0 0 4 3243 40 TextureStage::get_combine_alpha_operand0 0 1 643 45
/**
 * Get operand0 of combine_alpha_mode
 */
89
inline TextureStage::CombineOperand TextureStage::get_combine_alpha_operand0(void) const;

2238 25 get_combine_alpha_source1 0 4 3243 39 TextureStage::get_combine_alpha_source1 0 1 644 44
/**
 * Get source1 of combine_alpha_mode
 */
87
inline TextureStage::CombineSource TextureStage::get_combine_alpha_source1(void) const;

2239 26 get_combine_alpha_operand1 0 4 3243 40 TextureStage::get_combine_alpha_operand1 0 1 645 45
/**
 * Get operand1 of combine_alpha_mode
 */
89
inline TextureStage::CombineOperand TextureStage::get_combine_alpha_operand1(void) const;

2240 25 get_combine_alpha_source2 0 4 3243 39 TextureStage::get_combine_alpha_source2 0 1 646 44
/**
 * Get source2 of combine_alpha_mode
 */
87
inline TextureStage::CombineSource TextureStage::get_combine_alpha_source2(void) const;

2241 26 get_combine_alpha_operand2 0 4 3243 40 TextureStage::get_combine_alpha_operand2 0 1 647 45
/**
 * Get operand2 of combine_alpha_mode
 */
89
inline TextureStage::CombineOperand TextureStage::get_combine_alpha_operand2(void) const;

2242 20 involves_color_scale 0 4 3243 34 TextureStage::involves_color_scale 0 1 648 123
/**
 * Returns true if the TextureStage is affected by the setting of the current
 * ColorScaleAttrib, false otherwise.
 */
59
inline bool TextureStage::involves_color_scale(void) const;

2243 10 uses_color 0 4 3243 24 TextureStage::uses_color 0 1 649 120
/**
 * Returns true if the TextureStage makes use of whatever color is specified
 * in set_color(), false otherwise.
 */
49
inline bool TextureStage::uses_color(void) const;

2244 18 uses_primary_color 0 4 3243 32 TextureStage::uses_primary_color 0 1 650 96
/**
 * Returns true if the TextureStage makes use of the CS_primary_color combine
 * source.
 */
57
inline bool TextureStage::uses_primary_color(void) const;

2245 22 uses_last_saved_result 0 4 3243 36 TextureStage::uses_last_saved_result 0 1 651 96
/**
 * Returns true if the TextureStage makes use of the CS_primary_color combine
 * source.
 */
61
inline bool TextureStage::uses_last_saved_result(void) const;

2246 11 operator == 0 4 3243 25 TextureStage::operator == 0 1 652 0
71
inline bool TextureStage::operator ==(TextureStage const &other) const;

2247 11 operator != 0 4 3243 25 TextureStage::operator != 0 1 653 0
71
inline bool TextureStage::operator !=(TextureStage const &other) const;

2248 10 operator < 0 4 3243 24 TextureStage::operator < 0 1 654 0
70
inline bool TextureStage::operator <(TextureStage const &other) const;

2249 10 compare_to 0 4 3243 24 TextureStage::compare_to 0 1 655 267
/**
 * Returns a number less than zero if this TextureStage sorts before the other
 * one, greater than zero if it sorts after, or zero if they are equivalent.
 * The sorting order is arbitrary and largely meaningless, except to
 * differentiate different stages.
 */
62
int TextureStage::compare_to(TextureStage const &other) const;

2250 5 write 0 4 3243 19 TextureStage::write 0 2 656 657 88
/**
 * Writes the details of this stage
 */

/**
 * Writes the details of this stage
 */
119
void TextureStage::write(std::ostream &out) const;
void TextureStage::write(std::ostream &out, int indent_level) const;

2251 6 output 0 4 3243 20 TextureStage::output 0 1 658 36
/**
 * Just a single line output
 */
51
void TextureStage::output(std::ostream &out) const;

2252 11 get_default 0 4 3243 25 TextureStage::get_default 0 1 659 180
/**
 * Returns the default TextureStage that will be used for all texturing that
 * does not name a particular stage.  This generally handles the normal
 * single-texture case.
 */
60
static inline TextureStage *TextureStage::get_default(void);

2253 14 get_class_type 0 4 3243 28 TextureStage::get_class_type 0 1 660 0
53
static TypeHandle TextureStage::get_class_type(void);

2254 27 upcast_to_CopyOnWriteObject 0 12 3252 33 Geom::upcast_to_CopyOnWriteObject 0 1 727 37
upcast from Geom to CopyOnWriteObject
59
CopyOnWriteObject *Geom::upcast_to_CopyOnWriteObject(void);

2255 16 downcast_to_Geom 0 12 3208 35 CopyOnWriteObject::downcast_to_Geom 0 0 39
downcast from CopyOnWriteObject to Geom
48
Geom *CopyOnWriteObject::downcast_to_Geom(void);

2256 19 upcast_to_GeomEnums 0 12 3252 25 Geom::upcast_to_GeomEnums 0 1 728 29
upcast from Geom to GeomEnums
43
GeomEnums *Geom::upcast_to_GeomEnums(void);

2257 16 downcast_to_Geom 0 12 3168 27 GeomEnums::downcast_to_Geom 0 0 31
downcast from GeomEnums to Geom
40
Geom *GeomEnums::downcast_to_Geom(void);

2258 4 Geom 0 260 3252 10 Geom::Geom 0 1 661 59
/**
 *
 */

/**
 * Use make_copy() to duplicate a Geom.
 */
48
explicit Geom::Geom(GeomVertexData const *data);

2259 10 operator = 0 4 3252 16 Geom::operator = 0 1 662 0
40
void Geom::operator =(Geom const &copy);

2260 5 ~Geom 0 518 3252 11 Geom::~Geom 0 0 10
/**
 *
 */
26
virtual Geom::~Geom(void);

2261 12 operator new 0 4 3252 18 Geom::operator new 0 1 663 0
112
inline void *Geom::operator new(std::size_t size);
inline void *Geom::operator new(std::size_t size, void *ptr);

2262 15 operator delete 0 4 3252 21 Geom::operator delete 0 0 0
96
inline void Geom::operator delete(void *ptr);
inline void Geom::operator delete(void *, void *);

2263 12 validate_ptr 0 4 3252 18 Geom::validate_ptr 0 0 0
55
static inline bool Geom::validate_ptr(void const *ptr);

2264 9 make_copy 0 6 3252 15 Geom::make_copy 0 1 664 200
/**
 * Returns a newly-allocated Geom that is a shallow copy of this one.  It will
 * be a different Geom pointer, but its internal data may or may not be shared
 * with that of the original Geom.
 */
42
virtual Geom *Geom::make_copy(void) const;

2265 18 get_primitive_type 0 4 3252 24 Geom::get_primitive_type 0 1 665 361
/**
 * Returns the fundamental primitive type that is common to all GeomPrimitives
 * added within the Geom.  All nested primitives within a particular Geom must
 * be the same type (that is, you can mix triangles and tristrips, because
 * they are both the same fundamental type PT_polygons, but you cannot mix
 * triangles and points withn the same Geom).
 */
69
inline GeomEnums::PrimitiveType Geom::get_primitive_type(void) const;

2266 15 get_shade_model 0 4 3252 21 Geom::get_shade_model 0 1 666 118
/**
 * Returns the shade model common to all of the individual GeomPrimitives that
 * have been added to the geom.
 */
63
inline GeomEnums::ShadeModel Geom::get_shade_model(void) const;

2267 18 get_geom_rendering 0 4 3252 24 Geom::get_geom_rendering 0 1 667 130
/**
 * Returns the set of GeomRendering bits that represent the rendering
 * properties required to properly render this Geom.
 */
48
inline int Geom::get_geom_rendering(void) const;

2268 14 get_usage_hint 0 4 3252 20 Geom::get_usage_hint 0 1 668 189
/**
 * Returns the minimum (i.e.  most dynamic) usage_hint among all of the
 * individual GeomPrimitives that have been added to the geom.
 * @deprecated  This is no longer very useful.
 */
54
GeomEnums::UsageHint Geom::get_usage_hint(void) const;

2269 14 set_usage_hint 0 4 3252 20 Geom::set_usage_hint 0 1 669 273
/**
 * Changes the UsageHint hint for all of the primitives on this Geom to the
 * same value.  See get_usage_hint().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
59
void Geom::set_usage_hint(GeomEnums::UsageHint usage_hint);

2270 15 get_vertex_data 0 4 3252 21 Geom::get_vertex_data 0 1 670 146
/**
 * Returns a const pointer to the GeomVertexData, for application code to
 * directly examine (but not modify) the geom's underlying data.
 */
123
inline ConstPointerTo< GeomVertexData > Geom::get_vertex_data(Thread *current_thread = Thread::get_current_thread()) const;

2271 18 modify_vertex_data 0 4 3252 24 Geom::modify_vertex_data 0 1 671 294
/**
 * Returns a modifiable pointer to the GeomVertexData, so that application
 * code may directly maniuplate the geom's underlying data.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
59
PointerTo< GeomVertexData > Geom::modify_vertex_data(void);

2272 15 set_vertex_data 0 4 3252 21 Geom::set_vertex_data 0 1 672 243
/**
 * Replaces the Geom's underlying vertex data table with a completely new
 * table.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
55
void Geom::set_vertex_data(GeomVertexData const *data);

2273 15 offset_vertices 0 4 3252 21 Geom::offset_vertices 0 1 673 501
/**
 * Replaces a Geom's vertex table with a new table, and simultaneously adds
 * the indicated offset to all vertex references within the Geom's primitives.
 * This is intended to be used to combine multiple GeomVertexDatas from
 * different Geoms into a single big buffer, with each Geom referencing a
 * subset of the vertices in the buffer.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
67
void Geom::offset_vertices(GeomVertexData const *data, int offset);

2274 15 make_nonindexed 0 4 3252 21 Geom::make_nonindexed 0 1 674 414
/**
 * Converts the geom from indexed to nonindexed by duplicating vertices as
 * necessary.  If composite_only is true, then only composite primitives such
 * as trifans and tristrips are converted.  Returns the number of
 * GeomPrimitive objects converted.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
47
int Geom::make_nonindexed(bool composite_only);

2275 24 get_animated_vertex_data 0 4 3252 30 Geom::get_animated_vertex_data 0 1 675 865
/**
 * Returns a GeomVertexData that represents the results of computing the
 * vertex animation on the CPU for this Geom's vertex data.
 *
 * If there is no CPU-defined vertex animation on this object, this just
 * returns the original object.
 *
 * If there is vertex animation, but the VertexTransform values have not
 * changed since last time, this may return the same pointer it returned
 * previously.  Even if the VertexTransform values have changed, it may still
 * return the same pointer, but with its contents modified (this is preferred,
 * since it allows the graphics backend to update vertex buffers optimally).
 *
 * If force is false, this method may return immediately with stale data, if
 * the vertex data is not completely resident.  If force is true, this method
 * will never return stale data, but may block until the data is available.
 */
137
ConstPointerTo< GeomVertexData > Geom::get_animated_vertex_data(bool force, Thread *current_thread = Thread::get_current_thread()) const;

2276 8 is_empty 0 4 3252 14 Geom::is_empty 0 1 676 120
/**
 * Returns true if there appear to be no vertices to be rendered by this Geom,
 * false if has some actual data.
 */
39
inline bool Geom::is_empty(void) const;

2277 18 get_num_primitives 0 4 3252 24 Geom::get_num_primitives 0 1 677 151
/**
 * Returns the number of GeomPrimitive objects stored within the Geom, each of
 * which represents a number of primitives of a particular type.
 */
56
inline std::size_t Geom::get_num_primitives(void) const;

2278 13 get_primitive 0 4 3252 19 Geom::get_primitive 0 1 678 211
/**
 * Returns a const pointer to the ith GeomPrimitive object stored within the
 * Geom.  Use this call only to inspect the ith object; use modify_primitive()
 * or set_primitive() if you want to modify it.
 */
80
inline ConstPointerTo< GeomPrimitive > Geom::get_primitive(std::size_t i) const;

2279 16 modify_primitive 0 4 3252 22 Geom::modify_primitive 0 1 679 331
/**
 * Returns a modifiable pointer to the ith GeomPrimitive object stored within
 * the Geom, so application code can directly manipulate the properties of
 * this primitive.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
72
inline PointerTo< GeomPrimitive > Geom::modify_primitive(std::size_t i);

2280 13 set_primitive 0 4 3252 19 Geom::set_primitive 0 1 680 247
/**
 * Replaces the ith GeomPrimitive object stored within the Geom with the new
 * object.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
72
void Geom::set_primitive(std::size_t i, GeomPrimitive const *primitive);

2281 16 insert_primitive 0 4 3252 22 Geom::insert_primitive 0 1 681 342
/**
 * Inserts a new GeomPrimitive structure to the Geom object.  This specifies a
 * particular subset of vertices that are used to define geometric primitives
 * of the indicated type.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
75
void Geom::insert_primitive(std::size_t i, GeomPrimitive const *primitive);

2282 13 add_primitive 0 4 3252 19 Geom::add_primitive 0 1 682 342
/**
 * Inserts a new GeomPrimitive structure to the Geom object.  This specifies a
 * particular subset of vertices that are used to define geometric primitives
 * of the indicated type.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
64
inline void Geom::add_primitive(GeomPrimitive const *primitive);

2283 16 remove_primitive 0 4 3252 22 Geom::remove_primitive 0 1 683 203
/**
 * Removes the ith primitive from the list.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
43
void Geom::remove_primitive(std::size_t i);

2284 16 clear_primitives 0 4 3252 22 Geom::clear_primitives 0 1 684 332
/**
 * Removes all the primitives from the Geom object (but keeps the same table
 * of vertices).  You may then re-add primitives one at a time via calls to
 * add_primitive().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
34
void Geom::clear_primitives(void);

2285 9 decompose 0 4 3252 15 Geom::decompose 0 1 685 118
/**
 * Decomposes all of the primitives within this Geom, returning the result.
 * See GeomPrimitive::decompose().
 */
53
inline PointerTo< Geom > Geom::decompose(void) const;

2286 10 doubleside 0 4 3252 16 Geom::doubleside 0 1 686 120
/**
 * Doublesides all of the primitives within this Geom, returning the result.
 * See GeomPrimitive::doubleside().
 */
54
inline PointerTo< Geom > Geom::doubleside(void) const;

2287 7 reverse 0 4 3252 13 Geom::reverse 0 1 687 115
/**
 * Reverses all of the primitives within this Geom, returning the result.  See
 * GeomPrimitive::reverse().
 */
51
inline PointerTo< Geom > Geom::reverse(void) const;

2288 6 rotate 0 4 3252 12 Geom::rotate 0 1 688 113
/**
 * Rotates all of the primitives within this Geom, returning the result.  See
 * GeomPrimitive::rotate().
 */
50
inline PointerTo< Geom > Geom::rotate(void) const;

2289 5 unify 0 4 3252 11 Geom::unify 0 1 689 541
/**
 * Unifies all of the primitives contained within this Geom into a single (or
 * as few as possible, within the constraints of max_indices) primitive
 * objects.  This may require decomposing the primitives if, for instance, the
 * Geom contains both triangle strips and triangle fans.
 *
 * max_indices represents the maximum number of indices that will be put in
 * any one GeomPrimitive.  If preserve_order is true, then the primitives will
 * not be reordered during the operation, even if this results in a suboptimal
 * result.
 */
81
inline PointerTo< Geom > Geom::unify(int max_indices, bool preserve_order) const;

2290 11 make_points 0 4 3252 17 Geom::make_points 0 1 690 100
/**
 * Returns a new Geom with points at all the vertices.  See
 * GeomPrimitive::make_points().
 */
55
inline PointerTo< Geom > Geom::make_points(void) const;

2291 10 make_lines 0 4 3252 16 Geom::make_lines 0 1 691 95
/**
 * Returns a new Geom with lines at all the edges.  See
 * GeomPrimitive::make_lines().
 */
54
inline PointerTo< Geom > Geom::make_lines(void) const;

2292 12 make_patches 0 4 3252 18 Geom::make_patches 0 1 692 102
/**
 * Returns a new Geom with each primitive converted into a patch.  Calls
 * decompose() first.
 */
56
inline PointerTo< Geom > Geom::make_patches(void) const;

2293 14 make_adjacency 0 4 3252 20 Geom::make_adjacency 0 1 693 139
/**
 * Returns a new Geom with each primitive converted into a corresponding
 * version with adjacency information.
 *
 * @since 1.10.0
 */
58
inline PointerTo< Geom > Geom::make_adjacency(void) const;

2294 18 decompose_in_place 0 4 3252 24 Geom::decompose_in_place 0 1 694 279
/**
 * Decomposes all of the primitives within this Geom, leaving the results in
 * place.  See GeomPrimitive::decompose().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
36
void Geom::decompose_in_place(void);

2295 19 doubleside_in_place 0 4 3252 25 Geom::doubleside_in_place 0 1 695 281
/**
 * Doublesides all of the primitives within this Geom, leaving the results in
 * place.  See GeomPrimitive::doubleside().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
37
void Geom::doubleside_in_place(void);

2296 16 reverse_in_place 0 4 3252 22 Geom::reverse_in_place 0 1 696 275
/**
 * Reverses all of the primitives within this Geom, leaving the results in
 * place.  See GeomPrimitive::reverse().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
34
void Geom::reverse_in_place(void);

2297 15 rotate_in_place 0 4 3252 21 Geom::rotate_in_place 0 1 697 273
/**
 * Rotates all of the primitives within this Geom, leaving the results in
 * place.  See GeomPrimitive::rotate().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
33
void Geom::rotate_in_place(void);

2298 14 unify_in_place 0 4 3252 20 Geom::unify_in_place 0 1 698 693
/**
 * Unifies all of the primitives contained within this Geom into a single (or
 * as few as possible, within the constraints of max_indices) primitive
 * objects.  This may require decomposing the primitives if, for instance, the
 * Geom contains both triangle strips and triangle fans.
 *
 * max_indices represents the maximum number of indices that will be put in
 * any one GeomPrimitive.  If preserve_order is true, then the primitives will
 * not be reordered during the operation, even if this results in a suboptimal
 * result.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
64
void Geom::unify_in_place(int max_indices, bool preserve_order);

2299 20 make_points_in_place 0 4 3252 26 Geom::make_points_in_place 0 1 699 275
/**
 * Replaces the GeomPrimitives within this Geom with corresponding GeomPoints.
 * See GeomPrimitive::make_points().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
38
void Geom::make_points_in_place(void);

2300 19 make_lines_in_place 0 4 3252 25 Geom::make_lines_in_place 0 1 700 321
/**
 * Replaces the GeomPrimitives within this Geom with corresponding GeomLines,
 * representing a wireframe of the primitives.  See
 * GeomPrimitive::make_lines().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
37
void Geom::make_lines_in_place(void);

2301 21 make_patches_in_place 0 4 3252 27 Geom::make_patches_in_place 0 1 701 278
/**
 * Replaces the GeomPrimitives within this Geom with corresponding
 * GeomPatches.  See GeomPrimitive::make_patches().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
39
void Geom::make_patches_in_place(void);

2302 23 make_adjacency_in_place 0 4 3252 29 Geom::make_adjacency_in_place 0 1 702 324
/**
 * Replaces the GeomPrimitives within this Geom with corresponding versions
 * with adjacency information.  See GeomPrimitive::make_adjacency().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * @since 1.10.0
 */
41
void Geom::make_adjacency_in_place(void);

2303 20 copy_primitives_from 0 6 3252 26 Geom::copy_primitives_from 0 1 703 451
/**
 * Copies the primitives from the indicated Geom into this one.  This does
 * require that both Geoms contain the same fundamental type primitives, both
 * have a compatible shade model, and both use the same GeomVertexData.  Both
 * Geoms must also be the same specific class type (i.e.  if one is a
 * GeomTextGlyph, they both must be.)
 *
 * Returns true if the copy is successful, or false otherwise (because the
 * Geoms were mismatched).
 */
59
virtual bool Geom::copy_primitives_from(Geom const *other);

2304 13 get_num_bytes 0 4 3252 19 Geom::get_num_bytes 0 1 704 119
/**
 * Returns the number of bytes consumed by the geom and its primitives (but
 * not including its vertex table).
 */
36
int Geom::get_num_bytes(void) const;

2305 12 get_modified 0 4 3252 18 Geom::get_modified 0 1 705 281
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * any of the primitives in the Geom is modified, or the set of primitives is
 * modified.  However, this does not include modifications to the vertex data,
 * which should be tested separately.
 */
97
inline UpdateSeq Geom::get_modified(Thread *current_thread = Thread::get_current_thread()) const;

2306 16 request_resident 0 4 3252 22 Geom::request_resident 0 1 706 286
/**
 * Returns true if all the primitive arrays are currently resident in memory.
 * If this returns false, the data will be brought back into memory shortly;
 * try again later.
 *
 * This does not also test the Geom's associated GeomVertexData.  That must be
 * tested separately.
 */
40
bool Geom::request_resident(void) const;

2307 18 transform_vertices 0 4 3252 24 Geom::transform_vertices 0 1 707 477
/**
 * Applies the indicated transform to all of the vertices in the Geom.  If the
 * Geom happens to share a vertex table with another Geom, this operation will
 * duplicate the vertex table instead of breaking the other Geom; however, if
 * multiple Geoms with shared tables are transformed by the same matrix, they
 * will no longer share tables after the operation.  Consider using the
 * GeomTransformer if you will be applying the same transform to multiple
 * Geoms.
 */
51
void Geom::transform_vertices(LMatrix4 const &mat);

2308 11 check_valid 0 4 3252 17 Geom::check_valid 0 2 708 709 423
/**
 * Verifies that the all of the primitives within the geom reference vertices
 * that actually exist within the geom's GeomVertexData.  Returns true if the
 * geom appears to be valid, false otherwise.
 */

/**
 * Verifies that the all of the primitives within the geom reference vertices
 * that actually exist within the indicated GeomVertexData.  Returns true if
 * the geom appears to be valid, false otherwise.
 */
100
bool Geom::check_valid(void) const;
bool Geom::check_valid(GeomVertexData const *vertex_data) const;

2309 10 get_bounds 0 4 3252 16 Geom::get_bounds 0 1 710 52
/**
 * Returns the bounding volume for the Geom.
 */
111
ConstPointerTo< BoundingVolume > Geom::get_bounds(Thread *current_thread = Thread::get_current_thread()) const;

2310 19 get_nested_vertices 0 4 3252 25 Geom::get_nested_vertices 0 1 711 85
/**
 * Returns the number of vertices rendered by all primitives within the Geom.
 */
91
int Geom::get_nested_vertices(Thread *current_thread = Thread::get_current_thread()) const;

2311 17 mark_bounds_stale 0 4 3252 23 Geom::mark_bounds_stale 0 1 712 147
/**
 * Marks the bounding volume of the Geom as stale so that it should be
 * recomputed.  Usually it is not necessary to call this explicitly.
 */
48
inline void Geom::mark_bounds_stale(void) const;

2312 15 set_bounds_type 0 4 3252 21 Geom::set_bounds_type 0 1 713 594
/**
 * Specifies the desired type of bounding volume that will be created for this
 * Geom.  This is normally BoundingVolume::BT_default, which means to set the
 * type according to the config variable "bounds-type".
 *
 * If this is BT_sphere or BT_box, a BoundingSphere or BoundingBox is
 * explicitly created.  If it is BT_best, a BoundingBox is created.
 *
 * This affects the implicit bounding volume only.  If an explicit bounding
 * volume is set on the Geom with set_bounds(), that bounding volume type is
 * used.  (This is different behavior from the similar method on PandaNode.)
 */
74
inline void Geom::set_bounds_type(BoundingVolume::BoundsType bounds_type);

2313 15 get_bounds_type 0 4 3252 21 Geom::get_bounds_type 0 1 714 71
/**
 * Returns the bounding volume type set with set_bounds_type().
 */
68
inline BoundingVolume::BoundsType Geom::get_bounds_type(void) const;

2314 10 set_bounds 0 4 3252 16 Geom::set_bounds 0 1 715 417
/**
 * Resets the bounding volume so that it is the indicated volume.  When it is
 * explicitly set, the bounding volume will no longer be automatically
 * computed; call clear_bounds() if you would like to return the bounding
 * volume to its default behavior.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
59
inline void Geom::set_bounds(BoundingVolume const *volume);

2315 12 clear_bounds 0 4 3252 18 Geom::clear_bounds 0 1 716 317
/**
 * Reverses the effect of a previous call to set_bounds(), and allows the
 * bounding volume to be automatically computed once more based on the
 * vertices.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
37
inline void Geom::clear_bounds(void);

2316 6 output 0 6 3252 12 Geom::output 0 1 717 10
/**
 *
 */
51
virtual void Geom::output(std::ostream &out) const;

2317 5 write 0 6 3252 11 Geom::write 0 1 718 10
/**
 *
 */
72
virtual void Geom::write(std::ostream &out, int indent_level = 0) const;

2318 11 clear_cache 0 4 3252 17 Geom::clear_cache 0 1 719 263
/**
 * Removes all of the previously-cached results of munge_geom().
 *
 * This blows away the entire cache, upstream and downstream the pipeline.
 * Use clear_cache_stage() instead if you only want to blow away the cache at
 * the current stage and upstream.
 */
29
void Geom::clear_cache(void);

2319 17 clear_cache_stage 0 4 3252 23 Geom::clear_cache_stage 0 1 720 310
/**
 * Removes all of the previously-cached results of munge_geom(), at the
 * current pipeline stage and upstream.  Does not affect the downstream cache.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */
53
void Geom::clear_cache_stage(Thread *current_thread);

2320 7 prepare 0 4 3252 13 Geom::prepare 0 1 721 351
/**
 * Indicates that the geom should be enqueued to be prepared in the indicated
 * prepared_objects at the beginning of the next frame.  This will ensure the
 * geom is already loaded into geom memory if it is expected to be rendered
 * soon.
 *
 * Use this function instead of prepare_now() to preload geoms from a user
 * interface standpoint.
 */
62
void Geom::prepare(PreparedGraphicsObjects *prepared_objects);

2321 11 is_prepared 0 4 3252 17 Geom::is_prepared 0 1 722 131
/**
 * Returns true if the geom has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */
72
bool Geom::is_prepared(PreparedGraphicsObjects *prepared_objects) const;

2322 7 release 0 4 3252 13 Geom::release 0 1 723 154
/**
 * Frees the geom context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */
62
bool Geom::release(PreparedGraphicsObjects *prepared_objects);

2323 11 release_all 0 4 3252 17 Geom::release_all 0 1 724 149
/**
 * Frees the context allocated on all objects for which the geom has been
 * declared.  Returns the number of contexts which have been freed.
 */
28
int Geom::release_all(void);

2324 11 prepare_now 0 4 3252 17 Geom::prepare_now 0 1 725 519
/**
 * Creates a context for the geom on the particular GSG, if it does not
 * already exist.  Returns the new (or old) GeomContext.  This assumes that
 * the GraphicsStateGuardian is the currently active rendering context and
 * that it is ready to accept new geoms.  If this is not necessarily the case,
 * you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a geom does not need to be explicitly prepared by the user before it may be
 * rendered.
 */
106
GeomContext *Geom::prepare_now(PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg);

2325 14 get_class_type 0 4 3252 20 Geom::get_class_type 0 1 726 0
45
static TypeHandle Geom::get_class_type(void);

2326 8 get_geom 0 4 3256 21 GeomContext::get_geom 0 1 729 10
/**
 *
 */
47
inline Geom *GeomContext::get_geom(void) const;

2327 14 get_class_type 0 4 3256 27 GeomContext::get_class_type 0 1 730 0
52
static TypeHandle GeomContext::get_class_type(void);

2328 12 ~GeomContext 0 516 3256 25 GeomContext::~GeomContext 0 0 0
32
GeomContext::~GeomContext(void);

2329 9 GeomLines 0 260 3258 20 GeomLines::GeomLines 0 2 731 732 22
/**
 *
 */

/**
 *
 */
108
explicit GeomLines::GeomLines(GeomEnums::UsageHint usage_hint);
GeomLines::GeomLines(GeomLines const &copy);

2330 12 operator new 0 4 3258 23 GeomLines::operator new 0 1 733 0
122
inline void *GeomLines::operator new(std::size_t size);
inline void *GeomLines::operator new(std::size_t size, void *ptr);

2331 15 operator delete 0 4 3258 26 GeomLines::operator delete 0 0 0
106
inline void GeomLines::operator delete(void *ptr);
inline void GeomLines::operator delete(void *, void *);

2332 12 validate_ptr 0 4 3258 23 GeomLines::validate_ptr 0 0 0
60
static inline bool GeomLines::validate_ptr(void const *ptr);

2333 14 get_class_type 0 4 3258 25 GeomLines::get_class_type 0 1 734 0
50
static TypeHandle GeomLines::get_class_type(void);

2334 18 GeomLinesAdjacency 0 260 3259 38 GeomLinesAdjacency::GeomLinesAdjacency 0 2 735 736 22
/**
 *
 */

/**
 *
 */
153
explicit GeomLinesAdjacency::GeomLinesAdjacency(GeomEnums::UsageHint usage_hint);
GeomLinesAdjacency::GeomLinesAdjacency(GeomLinesAdjacency const &copy);

2335 12 operator new 0 4 3259 32 GeomLinesAdjacency::operator new 0 1 737 0
140
inline void *GeomLinesAdjacency::operator new(std::size_t size);
inline void *GeomLinesAdjacency::operator new(std::size_t size, void *ptr);

2336 15 operator delete 0 4 3259 35 GeomLinesAdjacency::operator delete 0 0 0
124
inline void GeomLinesAdjacency::operator delete(void *ptr);
inline void GeomLinesAdjacency::operator delete(void *, void *);

2337 12 validate_ptr 0 4 3259 32 GeomLinesAdjacency::validate_ptr 0 0 0
69
static inline bool GeomLinesAdjacency::validate_ptr(void const *ptr);

2338 14 get_class_type 0 4 3259 34 GeomLinesAdjacency::get_class_type 0 1 738 0
59
static TypeHandle GeomLinesAdjacency::get_class_type(void);

2339 14 GeomLinestrips 0 260 3260 30 GeomLinestrips::GeomLinestrips 0 2 739 740 22
/**
 *
 */

/**
 *
 */
133
explicit GeomLinestrips::GeomLinestrips(GeomEnums::UsageHint usage_hint);
GeomLinestrips::GeomLinestrips(GeomLinestrips const &copy);

2340 12 operator new 0 4 3260 28 GeomLinestrips::operator new 0 1 741 0
132
inline void *GeomLinestrips::operator new(std::size_t size);
inline void *GeomLinestrips::operator new(std::size_t size, void *ptr);

2341 15 operator delete 0 4 3260 31 GeomLinestrips::operator delete 0 0 0
116
inline void GeomLinestrips::operator delete(void *ptr);
inline void GeomLinestrips::operator delete(void *, void *);

2342 12 validate_ptr 0 4 3260 28 GeomLinestrips::validate_ptr 0 0 0
65
static inline bool GeomLinestrips::validate_ptr(void const *ptr);

2343 14 get_class_type 0 4 3260 30 GeomLinestrips::get_class_type 0 1 742 0
55
static TypeHandle GeomLinestrips::get_class_type(void);

2344 23 GeomLinestripsAdjacency 0 260 3261 48 GeomLinestripsAdjacency::GeomLinestripsAdjacency 0 2 743 744 22
/**
 *
 */

/**
 *
 */
178
explicit GeomLinestripsAdjacency::GeomLinestripsAdjacency(GeomEnums::UsageHint usage_hint);
GeomLinestripsAdjacency::GeomLinestripsAdjacency(GeomLinestripsAdjacency const &copy);

2345 12 operator new 0 4 3261 37 GeomLinestripsAdjacency::operator new 0 1 745 0
150
inline void *GeomLinestripsAdjacency::operator new(std::size_t size);
inline void *GeomLinestripsAdjacency::operator new(std::size_t size, void *ptr);

2346 15 operator delete 0 4 3261 40 GeomLinestripsAdjacency::operator delete 0 0 0
134
inline void GeomLinestripsAdjacency::operator delete(void *ptr);
inline void GeomLinestripsAdjacency::operator delete(void *, void *);

2347 12 validate_ptr 0 4 3261 37 GeomLinestripsAdjacency::validate_ptr 0 0 0
74
static inline bool GeomLinestripsAdjacency::validate_ptr(void const *ptr);

2348 14 get_class_type 0 4 3261 39 GeomLinestripsAdjacency::get_class_type 0 1 746 0
64
static TypeHandle GeomLinestripsAdjacency::get_class_type(void);

2349 11 GeomPatches 0 260 3262 24 GeomPatches::GeomPatches 0 2 747 748 252
/**
 * The number of vertices per patch must be specified to the GeomPatches
 * constructor, and it may not be changed during the lifetime of the
 * GeomPatches object.  Create a new GeomPatches if you need to have a
 * different value.
 */

/**
 *
 */
146
explicit GeomPatches::GeomPatches(int num_vertices_per_patch, GeomEnums::UsageHint usage_hint);
GeomPatches::GeomPatches(GeomPatches const &copy);

2350 12 operator new 0 4 3262 25 GeomPatches::operator new 0 1 749 0
126
inline void *GeomPatches::operator new(std::size_t size);
inline void *GeomPatches::operator new(std::size_t size, void *ptr);

2351 15 operator delete 0 4 3262 28 GeomPatches::operator delete 0 0 0
110
inline void GeomPatches::operator delete(void *ptr);
inline void GeomPatches::operator delete(void *, void *);

2352 12 validate_ptr 0 4 3262 25 GeomPatches::validate_ptr 0 0 0
62
static inline bool GeomPatches::validate_ptr(void const *ptr);

2353 14 get_class_type 0 4 3262 27 GeomPatches::get_class_type 0 1 750 0
52
static TypeHandle GeomPatches::get_class_type(void);

2354 10 GeomPoints 0 260 3263 22 GeomPoints::GeomPoints 0 2 751 752 22
/**
 *
 */

/**
 *
 */
113
explicit GeomPoints::GeomPoints(GeomEnums::UsageHint usage_hint);
GeomPoints::GeomPoints(GeomPoints const &copy);

2355 12 operator new 0 4 3263 24 GeomPoints::operator new 0 1 753 0
124
inline void *GeomPoints::operator new(std::size_t size);
inline void *GeomPoints::operator new(std::size_t size, void *ptr);

2356 15 operator delete 0 4 3263 27 GeomPoints::operator delete 0 0 0
108
inline void GeomPoints::operator delete(void *ptr);
inline void GeomPoints::operator delete(void *, void *);

2357 12 validate_ptr 0 4 3263 24 GeomPoints::validate_ptr 0 0 0
61
static inline bool GeomPoints::validate_ptr(void const *ptr);

2358 14 get_class_type 0 4 3263 26 GeomPoints::get_class_type 0 1 754 0
51
static TypeHandle GeomPoints::get_class_type(void);

2359 13 GeomTriangles 0 260 3264 28 GeomTriangles::GeomTriangles 0 2 755 756 22
/**
 *
 */

/**
 *
 */
128
explicit GeomTriangles::GeomTriangles(GeomEnums::UsageHint usage_hint);
GeomTriangles::GeomTriangles(GeomTriangles const &copy);

2360 12 operator new 0 4 3264 27 GeomTriangles::operator new 0 1 757 0
130
inline void *GeomTriangles::operator new(std::size_t size);
inline void *GeomTriangles::operator new(std::size_t size, void *ptr);

2361 15 operator delete 0 4 3264 30 GeomTriangles::operator delete 0 0 0
114
inline void GeomTriangles::operator delete(void *ptr);
inline void GeomTriangles::operator delete(void *, void *);

2362 12 validate_ptr 0 4 3264 27 GeomTriangles::validate_ptr 0 0 0
64
static inline bool GeomTriangles::validate_ptr(void const *ptr);

2363 14 get_class_type 0 4 3264 29 GeomTriangles::get_class_type 0 1 758 0
54
static TypeHandle GeomTriangles::get_class_type(void);

2364 22 GeomTrianglesAdjacency 0 260 3265 46 GeomTrianglesAdjacency::GeomTrianglesAdjacency 0 2 759 760 22
/**
 *
 */

/**
 *
 */
173
explicit GeomTrianglesAdjacency::GeomTrianglesAdjacency(GeomEnums::UsageHint usage_hint);
GeomTrianglesAdjacency::GeomTrianglesAdjacency(GeomTrianglesAdjacency const &copy);

2365 12 operator new 0 4 3265 36 GeomTrianglesAdjacency::operator new 0 1 761 0
148
inline void *GeomTrianglesAdjacency::operator new(std::size_t size);
inline void *GeomTrianglesAdjacency::operator new(std::size_t size, void *ptr);

2366 15 operator delete 0 4 3265 39 GeomTrianglesAdjacency::operator delete 0 0 0
132
inline void GeomTrianglesAdjacency::operator delete(void *ptr);
inline void GeomTrianglesAdjacency::operator delete(void *, void *);

2367 12 validate_ptr 0 4 3265 36 GeomTrianglesAdjacency::validate_ptr 0 0 0
73
static inline bool GeomTrianglesAdjacency::validate_ptr(void const *ptr);

2368 14 get_class_type 0 4 3265 38 GeomTrianglesAdjacency::get_class_type 0 1 762 0
63
static TypeHandle GeomTrianglesAdjacency::get_class_type(void);

2369 11 GeomTrifans 0 260 3266 24 GeomTrifans::GeomTrifans 0 2 763 764 22
/**
 *
 */

/**
 *
 */
118
explicit GeomTrifans::GeomTrifans(GeomEnums::UsageHint usage_hint);
GeomTrifans::GeomTrifans(GeomTrifans const &copy);

2370 12 operator new 0 4 3266 25 GeomTrifans::operator new 0 1 765 0
126
inline void *GeomTrifans::operator new(std::size_t size);
inline void *GeomTrifans::operator new(std::size_t size, void *ptr);

2371 15 operator delete 0 4 3266 28 GeomTrifans::operator delete 0 0 0
110
inline void GeomTrifans::operator delete(void *ptr);
inline void GeomTrifans::operator delete(void *, void *);

2372 12 validate_ptr 0 4 3266 25 GeomTrifans::validate_ptr 0 0 0
62
static inline bool GeomTrifans::validate_ptr(void const *ptr);

2373 14 get_class_type 0 4 3266 27 GeomTrifans::get_class_type 0 1 766 0
52
static TypeHandle GeomTrifans::get_class_type(void);

2374 13 GeomTristrips 0 260 3267 28 GeomTristrips::GeomTristrips 0 2 767 768 22
/**
 *
 */

/**
 *
 */
128
explicit GeomTristrips::GeomTristrips(GeomEnums::UsageHint usage_hint);
GeomTristrips::GeomTristrips(GeomTristrips const &copy);

2375 12 operator new 0 4 3267 27 GeomTristrips::operator new 0 1 769 0
130
inline void *GeomTristrips::operator new(std::size_t size);
inline void *GeomTristrips::operator new(std::size_t size, void *ptr);

2376 15 operator delete 0 4 3267 30 GeomTristrips::operator delete 0 0 0
114
inline void GeomTristrips::operator delete(void *ptr);
inline void GeomTristrips::operator delete(void *, void *);

2377 12 validate_ptr 0 4 3267 27 GeomTristrips::validate_ptr 0 0 0
64
static inline bool GeomTristrips::validate_ptr(void const *ptr);

2378 14 get_class_type 0 4 3267 29 GeomTristrips::get_class_type 0 1 770 0
54
static TypeHandle GeomTristrips::get_class_type(void);

2379 22 GeomTristripsAdjacency 0 260 3268 46 GeomTristripsAdjacency::GeomTristripsAdjacency 0 2 771 772 22
/**
 *
 */

/**
 *
 */
173
explicit GeomTristripsAdjacency::GeomTristripsAdjacency(GeomEnums::UsageHint usage_hint);
GeomTristripsAdjacency::GeomTristripsAdjacency(GeomTristripsAdjacency const &copy);

2380 12 operator new 0 4 3268 36 GeomTristripsAdjacency::operator new 0 1 773 0
148
inline void *GeomTristripsAdjacency::operator new(std::size_t size);
inline void *GeomTristripsAdjacency::operator new(std::size_t size, void *ptr);

2381 15 operator delete 0 4 3268 39 GeomTristripsAdjacency::operator delete 0 0 0
132
inline void GeomTristripsAdjacency::operator delete(void *ptr);
inline void GeomTristripsAdjacency::operator delete(void *, void *);

2382 12 validate_ptr 0 4 3268 36 GeomTristripsAdjacency::validate_ptr 0 0 0
73
static inline bool GeomTristripsAdjacency::validate_ptr(void const *ptr);

2383 14 get_class_type 0 4 3268 38 GeomTristripsAdjacency::get_class_type 0 1 774 0
63
static TypeHandle GeomTristripsAdjacency::get_class_type(void);

2384 16 GeomVertexReader 0 260 3269 34 GeomVertexReader::GeomVertexReader 0 6 775 776 777 778 779 780 802
/**
 * Constructs an invalid GeomVertexReader.  You must use the assignment
 * operator to assign a valid GeomVertexReader to this object before you can
 * use it.
 */

/**
 * Constructs a new reader to process the vertices of the indicated data
 * object.
 */

/**
 * Constructs a new reader to process the vertices of the indicated data
 * object.  This flavor creates the reader specifically to process the named
 * data type.
 */

/**
 * Constructs a new reader to process the vertices of the indicated array
 * only.
 */

/**
 * Constructs a new reader to process the vertices of the indicated array
 * only.
 */

/**
 * Constructs a new reader to process the vertices of the indicated data
 * object.  This flavor creates the reader specifically to process the named
 * data type.
 */

/**
 *
 */
745
inline GeomVertexReader::GeomVertexReader(Thread *current_thread = Thread::get_current_thread());
inline GeomVertexReader::GeomVertexReader(GeomVertexData const *vertex_data, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexReader::GeomVertexReader(GeomVertexData const *vertex_data, CPT_InternalName name, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexReader::GeomVertexReader(GeomVertexArrayData const *array_data, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexReader::GeomVertexReader(GeomVertexArrayData const *array_data, int column, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexReader::GeomVertexReader(GeomVertexReader const &copy);

2385 10 operator = 0 4 3269 28 GeomVertexReader::operator = 0 1 781 0
71
inline void GeomVertexReader::operator =(GeomVertexReader const &copy);

2386 17 ~GeomVertexReader 0 516 3269 35 GeomVertexReader::~GeomVertexReader 0 0 10
/**
 *
 */
49
inline GeomVertexReader::~GeomVertexReader(void);

2387 15 get_vertex_data 0 4 3269 33 GeomVertexReader::get_vertex_data 0 1 782 155
/**
 * Returns the vertex data object that the reader is processing.  This may
 * return NULL if the reader was constructed with just an array pointer.
 */
75
inline GeomVertexData const *GeomVertexReader::get_vertex_data(void) const;

2388 14 get_array_data 0 4 3269 32 GeomVertexReader::get_array_data 0 1 783 90
/**
 * Returns the particular array object that the reader is currently
 * processing.
 */
79
inline GeomVertexArrayData const *GeomVertexReader::get_array_data(void) const;

2389 16 get_array_handle 0 4 3269 34 GeomVertexReader::get_array_handle 0 1 784 146
/**
 * Returns the read handle to the array object that the read is currently
 * processing.  This low-level call should be used with caution.
 */
87
inline GeomVertexArrayDataHandle const *GeomVertexReader::get_array_handle(void) const;

2390 10 get_stride 0 4 3269 28 GeomVertexReader::get_stride 0 1 785 197
/**
 * Returns the per-row stride (bytes between consecutive rows) of the
 * underlying vertex array.  This low-level information is normally not needed
 * to use the GeomVertexReader directly.
 */
60
inline std::size_t GeomVertexReader::get_stride(void) const;

2391 18 get_current_thread 0 4 3269 36 GeomVertexReader::get_current_thread 0 1 786 120
/**
 * Returns the Thread pointer of the currently-executing thread, as passed to
 * the constructor of this object.
 */
64
inline Thread *GeomVertexReader::get_current_thread(void) const;

2392 9 set_force 0 4 3269 27 GeomVertexReader::set_force 0 1 787 563
/**
 * Sets the value of the force flag.  When this is true (the default), vertex
 * data will be paged in from disk if necessary.  When this is false, the
 * GeomVertexData will simply return a failure code when attempting to read
 * vertex data that is not resident (but will put it on the queue to become
 * resident later).
 *
 * Normally, vertex data is always resident, so this will not be an issue.  It
 * is only possible for vertex data to be nonresident if you have enabled
 * vertex paging via the GeomVertexArrayData and VertexDataPage interfaces.
 */
52
inline void GeomVertexReader::set_force(bool force);

2393 9 get_force 0 4 3269 27 GeomVertexReader::get_force 0 1 788 65
/**
 * Returns the value of the force flag.  See set_force().
 */
52
inline bool GeomVertexReader::get_force(void) const;

2394 10 set_column 0 4 3269 28 GeomVertexReader::set_column 0 3 789 790 791 981
/**
 * Sets up the reader to use the nth data type of the GeomVertexFormat,
 * numbering from 0.
 *
 * This also resets the read row number to the start row (the same value
 * passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */

/**
 * Sets up the reader to use the data type with the indicated name.
 *
 * This also resets the read row number to the start row (the same value
 * passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */

/**
 * Sets up the reader to use the indicated column description on the given
 * array.
 *
 * This also resets the current read row number to the start row (the same
 * value passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */
196
inline bool GeomVertexReader::set_column(int column);
inline bool GeomVertexReader::set_column(CPT_InternalName name);
bool GeomVertexReader::set_column(int array, GeomVertexColumn const *column);

2395 5 clear 0 4 3269 23 GeomVertexReader::clear 0 1 792 60
/**
 * Resets the GeomVertexReader to the initial state.
 */
42
inline void GeomVertexReader::clear(void);

2396 10 has_column 0 4 3269 28 GeomVertexReader::has_column 0 1 793 183
/**
 * Returns true if a valid data type has been successfully set, or false if
 * the data type does not exist (or if get_force() is false and the vertex
 * data is nonresident).
 */
53
inline bool GeomVertexReader::has_column(void) const;

2397 9 get_array 0 4 3269 27 GeomVertexReader::get_array 0 1 794 93
/**
 * Returns the array index containing the data type that the reader is working
 * on.
 */
51
inline int GeomVertexReader::get_array(void) const;

2398 10 get_column 0 4 3269 28 GeomVertexReader::get_column 0 1 795 82
/**
 * Returns the description of the data type that the reader is working on.
 */
72
inline GeomVertexColumn const *GeomVertexReader::get_column(void) const;

2399 14 set_row_unsafe 0 4 3269 32 GeomVertexReader::set_row_unsafe 0 1 796 344
/**
 * Sets the start row to the indicated value, without internal checks.  This
 * is the same as set_row(), but it does not check for the possibility that
 * the array has been reallocated internally for some reason; use only when
 * you are confident that the array is unchanged and you really need every bit
 * of available performance.
 */
54
inline void GeomVertexReader::set_row_unsafe(int row);

2400 7 set_row 0 4 3269 25 GeomVertexReader::set_row 0 1 797 260
/**
 * Sets the start row to the indicated value.  The reader will begin reading
 * from the indicated row; each subsequent get_data*() call will return the
 * data from the subsequent row.  If set_column() is called, the reader will
 * return to this row.
 */
47
inline void GeomVertexReader::set_row(int row);

2401 13 get_start_row 0 4 3269 31 GeomVertexReader::get_start_row 0 1 798 125
/**
 * Returns the row index at which the reader started.  It will return to this
 * row if you reset the current column.
 */
55
inline int GeomVertexReader::get_start_row(void) const;

2402 12 get_read_row 0 4 3269 30 GeomVertexReader::get_read_row 0 1 799 106
/**
 * Returns the row index from which the data will be retrieved by the next
 * call to get_data*().
 */
54
inline int GeomVertexReader::get_read_row(void) const;

2403 9 is_at_end 0 4 3269 27 GeomVertexReader::is_at_end 0 1 800 179
/**
 * Returns true if the reader is currently at the end of the list of vertices,
 * false otherwise.  If this is true, another call to get_data*() will result
 * in a crash.
 */
52
inline bool GeomVertexReader::is_at_end(void) const;

2404 10 get_data1f 0 4 3269 28 GeomVertexReader::get_data1f 0 1 801 121
/**
 * Returns the data associated with the read row, expressed as a 1-component
 * value, and advances the read row.
 */
48
inline float GeomVertexReader::get_data1f(void);

2405 10 get_data2f 0 4 3269 28 GeomVertexReader::get_data2f 0 1 802 121
/**
 * Returns the data associated with the read row, expressed as a 2-component
 * value, and advances the read row.
 */
60
inline LVecBase2f const &GeomVertexReader::get_data2f(void);

2406 10 get_data3f 0 4 3269 28 GeomVertexReader::get_data3f 0 1 803 121
/**
 * Returns the data associated with the read row, expressed as a 3-component
 * value, and advances the read row.
 */
60
inline LVecBase3f const &GeomVertexReader::get_data3f(void);

2407 10 get_data4f 0 4 3269 28 GeomVertexReader::get_data4f 0 1 804 121
/**
 * Returns the data associated with the read row, expressed as a 4-component
 * value, and advances the read row.
 */
60
inline LVecBase4f const &GeomVertexReader::get_data4f(void);

2408 12 get_matrix3f 0 4 3269 30 GeomVertexReader::get_matrix3f 0 1 805 210
/**
 * Returns the 3-by-3 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */
54
inline LMatrix3f GeomVertexReader::get_matrix3f(void);

2409 12 get_matrix4f 0 4 3269 30 GeomVertexReader::get_matrix4f 0 1 806 210
/**
 * Returns the 4-by-4 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */
54
inline LMatrix4f GeomVertexReader::get_matrix4f(void);

2410 10 get_data1d 0 4 3269 28 GeomVertexReader::get_data1d 0 1 807 121
/**
 * Returns the data associated with the read row, expressed as a 1-component
 * value, and advances the read row.
 */
49
inline double GeomVertexReader::get_data1d(void);

2411 10 get_data2d 0 4 3269 28 GeomVertexReader::get_data2d 0 1 808 121
/**
 * Returns the data associated with the read row, expressed as a 2-component
 * value, and advances the read row.
 */
60
inline LVecBase2d const &GeomVertexReader::get_data2d(void);

2412 10 get_data3d 0 4 3269 28 GeomVertexReader::get_data3d 0 1 809 121
/**
 * Returns the data associated with the read row, expressed as a 3-component
 * value, and advances the read row.
 */
60
inline LVecBase3d const &GeomVertexReader::get_data3d(void);

2413 10 get_data4d 0 4 3269 28 GeomVertexReader::get_data4d 0 1 810 121
/**
 * Returns the data associated with the read row, expressed as a 4-component
 * value, and advances the read row.
 */
60
inline LVecBase4d const &GeomVertexReader::get_data4d(void);

2414 12 get_matrix3d 0 4 3269 30 GeomVertexReader::get_matrix3d 0 1 811 210
/**
 * Returns the 3-by-3 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */
54
inline LMatrix3d GeomVertexReader::get_matrix3d(void);

2415 12 get_matrix4d 0 4 3269 30 GeomVertexReader::get_matrix4d 0 1 812 210
/**
 * Returns the 4-by-4 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */
54
inline LMatrix4d GeomVertexReader::get_matrix4d(void);

2416 9 get_data1 0 4 3269 27 GeomVertexReader::get_data1 0 1 813 121
/**
 * Returns the data associated with the read row, expressed as a 1-component
 * value, and advances the read row.
 */
53
inline PN_stdfloat GeomVertexReader::get_data1(void);

2417 9 get_data2 0 4 3269 27 GeomVertexReader::get_data2 0 1 814 121
/**
 * Returns the data associated with the read row, expressed as a 2-component
 * value, and advances the read row.
 */
58
inline LVecBase2 const &GeomVertexReader::get_data2(void);

2418 9 get_data3 0 4 3269 27 GeomVertexReader::get_data3 0 1 815 121
/**
 * Returns the data associated with the read row, expressed as a 3-component
 * value, and advances the read row.
 */
58
inline LVecBase3 const &GeomVertexReader::get_data3(void);

2419 9 get_data4 0 4 3269 27 GeomVertexReader::get_data4 0 1 816 121
/**
 * Returns the data associated with the read row, expressed as a 4-component
 * value, and advances the read row.
 */
58
inline LVecBase4 const &GeomVertexReader::get_data4(void);

2420 11 get_matrix3 0 4 3269 29 GeomVertexReader::get_matrix3 0 1 817 210
/**
 * Returns the 3-by-3 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */
52
inline LMatrix3 GeomVertexReader::get_matrix3(void);

2421 11 get_matrix4 0 4 3269 29 GeomVertexReader::get_matrix4 0 1 818 210
/**
 * Returns the 4-by-4 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */
52
inline LMatrix4 GeomVertexReader::get_matrix4(void);

2422 10 get_data1i 0 4 3269 28 GeomVertexReader::get_data1i 0 1 819 121
/**
 * Returns the data associated with the read row, expressed as a 1-component
 * value, and advances the read row.
 */
46
inline int GeomVertexReader::get_data1i(void);

2423 10 get_data2i 0 4 3269 28 GeomVertexReader::get_data2i 0 1 820 121
/**
 * Returns the data associated with the read row, expressed as a 2-component
 * value, and advances the read row.
 */
60
inline LVecBase2i const &GeomVertexReader::get_data2i(void);

2424 10 get_data3i 0 4 3269 28 GeomVertexReader::get_data3i 0 1 821 121
/**
 * Returns the data associated with the read row, expressed as a 3-component
 * value, and advances the read row.
 */
60
inline LVecBase3i const &GeomVertexReader::get_data3i(void);

2425 10 get_data4i 0 4 3269 28 GeomVertexReader::get_data4i 0 1 822 121
/**
 * Returns the data associated with the read row, expressed as a 4-component
 * value, and advances the read row.
 */
60
inline LVecBase4i const &GeomVertexReader::get_data4i(void);

2426 6 output 0 4 3269 24 GeomVertexReader::output 0 1 823 10
/**
 *
 */
55
void GeomVertexReader::output(std::ostream &out) const;

2427 16 GeomVertexWriter 0 260 3270 34 GeomVertexWriter::GeomVertexWriter 0 6 824 825 826 827 828 829 802
/**
 * Constructs an invalid GeomVertexWriter.  You must use the assignment
 * operator to assign a valid GeomVertexWriter to this object before you can
 * use it.
 */

/**
 * Constructs a new writer to process the vertices of the indicated data
 * object.
 */

/**
 * Constructs a new writer to process the vertices of the indicated data
 * object.  This flavor creates the writer specifically to process the named
 * data type.
 */

/**
 * Constructs a new writer to process the vertices of the indicated array
 * only.
 */

/**
 * Constructs a new writer to process the vertices of the indicated array
 * only.
 */

/**
 * Constructs a new writer to process the vertices of the indicated data
 * object.  This flavor creates the writer specifically to process the named
 * data type.
 */

/**
 *
 */
721
inline GeomVertexWriter::GeomVertexWriter(Thread *current_thread = Thread::get_current_thread());
inline GeomVertexWriter::GeomVertexWriter(GeomVertexData *vertex_data, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexWriter::GeomVertexWriter(GeomVertexData *vertex_data, CPT_InternalName name, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexWriter::GeomVertexWriter(GeomVertexArrayData *array_data, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexWriter::GeomVertexWriter(GeomVertexArrayData *array_data, int column, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexWriter::GeomVertexWriter(GeomVertexWriter const &copy);

2428 10 operator = 0 4 3270 28 GeomVertexWriter::operator = 0 1 830 0
71
inline void GeomVertexWriter::operator =(GeomVertexWriter const &copy);

2429 17 ~GeomVertexWriter 0 516 3270 35 GeomVertexWriter::~GeomVertexWriter 0 0 10
/**
 *
 */
49
inline GeomVertexWriter::~GeomVertexWriter(void);

2430 15 get_vertex_data 0 4 3270 33 GeomVertexWriter::get_vertex_data 0 1 831 155
/**
 * Returns the vertex data object that the writer is processing.  This may
 * return NULL if the writer was constructed with just an array pointer.
 */
69
inline GeomVertexData *GeomVertexWriter::get_vertex_data(void) const;

2431 14 get_array_data 0 4 3270 32 GeomVertexWriter::get_array_data 0 1 832 90
/**
 * Returns the particular array object that the writer is currently
 * processing.
 */
73
inline GeomVertexArrayData *GeomVertexWriter::get_array_data(void) const;

2432 16 get_array_handle 0 4 3270 34 GeomVertexWriter::get_array_handle 0 1 833 238
/**
 * Returns the write handle to the array object that the writer is currently
 * processing.  This low-level call should be used with caution; be careful
 * with modifying the data in the handle out from under the GeomVertexWriter.
 */
81
inline GeomVertexArrayDataHandle *GeomVertexWriter::get_array_handle(void) const;

2433 10 get_stride 0 4 3270 28 GeomVertexWriter::get_stride 0 1 834 197
/**
 * Returns the per-row stride (bytes between consecutive rows) of the
 * underlying vertex array.  This low-level information is normally not needed
 * to use the GeomVertexWriter directly.
 */
60
inline std::size_t GeomVertexWriter::get_stride(void) const;

2434 18 get_current_thread 0 4 3270 36 GeomVertexWriter::get_current_thread 0 1 835 120
/**
 * Returns the Thread pointer of the currently-executing thread, as passed to
 * the constructor of this object.
 */
64
inline Thread *GeomVertexWriter::get_current_thread(void) const;

2435 10 set_column 0 4 3270 28 GeomVertexWriter::set_column 0 3 836 837 838 977
/**
 * Sets up the writer to use the nth data type of the GeomVertexFormat,
 * numbering from 0.
 *
 * This also resets the write row number to the start row (the same value
 * passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */

/**
 * Sets up the writer to use the data type with the indicated name.
 *
 * This also resets the write number to the start row (the same value passed
 * to a previous call to set_row(), or 0 if set_row() was never called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */

/**
 * Sets up the writer to use the indicated column description on the given
 * array.
 *
 * This also resets the current write row number to the start row (the same
 * value passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */
196
inline bool GeomVertexWriter::set_column(int column);
inline bool GeomVertexWriter::set_column(CPT_InternalName name);
bool GeomVertexWriter::set_column(int array, GeomVertexColumn const *column);

2436 5 clear 0 4 3270 23 GeomVertexWriter::clear 0 1 839 60
/**
 * Resets the GeomVertexWriter to the initial state.
 */
42
inline void GeomVertexWriter::clear(void);

2437 16 reserve_num_rows 0 4 3270 34 GeomVertexWriter::reserve_num_rows 0 1 840 297
/**
 * This ensures that enough memory space for num_rows is allocated, so that
 * you may add up to num_rows rows without causing a new memory allocation.
 * This is a performance optimization only; it is especially useful when you
 * know the number of rows you will be adding ahead of time.
 */
54
bool GeomVertexWriter::reserve_num_rows(int num_rows);

2438 10 has_column 0 4 3270 28 GeomVertexWriter::has_column 0 1 841 116
/**
 * Returns true if a valid data type has been successfully set, or false if
 * the data type does not exist.
 */
53
inline bool GeomVertexWriter::has_column(void) const;

2439 9 get_array 0 4 3270 27 GeomVertexWriter::get_array 0 1 842 93
/**
 * Returns the array index containing the data type that the writer is working
 * on.
 */
51
inline int GeomVertexWriter::get_array(void) const;

2440 10 get_column 0 4 3270 28 GeomVertexWriter::get_column 0 1 843 82
/**
 * Returns the description of the data type that the writer is working on.
 */
72
inline GeomVertexColumn const *GeomVertexWriter::get_column(void) const;

2441 14 set_row_unsafe 0 4 3270 32 GeomVertexWriter::set_row_unsafe 0 1 844 344
/**
 * Sets the start row to the indicated value, without internal checks.  This
 * is the same as set_row(), but it does not check for the possibility that
 * the array has been reallocated internally for some reason; use only when
 * you are confident that the array is unchanged and you really need every bit
 * of available performance.
 */
54
inline void GeomVertexWriter::set_row_unsafe(int row);

2442 7 set_row 0 4 3270 25 GeomVertexWriter::set_row 0 1 845 257
/**
 * Sets the start row to the indicated value.  The writer will begin writing
 * to the indicated row; each subsequent set_data*() call will store the data
 * into the subsequent row.  If set_column() is called, the writer will return
 * to this row.
 */
47
inline void GeomVertexWriter::set_row(int row);

2443 13 get_start_row 0 4 3270 31 GeomVertexWriter::get_start_row 0 1 846 125
/**
 * Returns the row index at which the writer started.  It will return to this
 * row if you reset the current column.
 */
55
inline int GeomVertexWriter::get_start_row(void) const;

2444 13 get_write_row 0 4 3270 31 GeomVertexWriter::get_write_row 0 1 847 117
/**
 * Returns the row index to which the data will be written at the next call to
 * set_data*() or add_data*().
 */
55
inline int GeomVertexWriter::get_write_row(void) const;

2445 9 is_at_end 0 4 3270 27 GeomVertexWriter::is_at_end 0 1 848 231
/**
 * Returns true if the writer is currently at the end of the list of vertices,
 * false otherwise.  If this is true, another call to set_data*() will result
 * in a crash, but another call to add_data*() will add a new row.
 */
52
inline bool GeomVertexWriter::is_at_end(void) const;

2446 10 set_data1f 0 4 3270 28 GeomVertexWriter::set_data1f 0 1 849 167
/**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
53
inline void GeomVertexWriter::set_data1f(float data);

2447 10 set_data2f 0 4 3270 28 GeomVertexWriter::set_data2f 0 2 850 851 336
/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
125
inline void GeomVertexWriter::set_data2f(float x, float y);
inline void GeomVertexWriter::set_data2f(LVecBase2f const &data);

2448 10 set_data3f 0 4 3270 28 GeomVertexWriter::set_data3f 0 2 852 853 336
/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
134
inline void GeomVertexWriter::set_data3f(float x, float y, float z);
inline void GeomVertexWriter::set_data3f(LVecBase3f const &data);

2449 10 set_data4f 0 4 3270 28 GeomVertexWriter::set_data4f 0 2 854 855 336
/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
143
inline void GeomVertexWriter::set_data4f(float x, float y, float z, float w);
inline void GeomVertexWriter::set_data4f(LVecBase4f const &data);

2450 12 set_matrix3f 0 4 3270 30 GeomVertexWriter::set_matrix3f 0 1 856 219
/**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */
65
inline void GeomVertexWriter::set_matrix3f(LMatrix3f const &mat);

2451 12 set_matrix4f 0 4 3270 30 GeomVertexWriter::set_matrix4f 0 1 857 219
/**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */
65
inline void GeomVertexWriter::set_matrix4f(LMatrix4f const &mat);

2452 10 set_data1d 0 4 3270 28 GeomVertexWriter::set_data1d 0 1 858 167
/**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
54
inline void GeomVertexWriter::set_data1d(double data);

2453 10 set_data2d 0 4 3270 28 GeomVertexWriter::set_data2d 0 2 859 860 336
/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
127
inline void GeomVertexWriter::set_data2d(double x, double y);
inline void GeomVertexWriter::set_data2d(LVecBase2d const &data);

2454 10 set_data3d 0 4 3270 28 GeomVertexWriter::set_data3d 0 2 861 862 336
/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
137
inline void GeomVertexWriter::set_data3d(double x, double y, double z);
inline void GeomVertexWriter::set_data3d(LVecBase3d const &data);

2455 10 set_data4d 0 4 3270 28 GeomVertexWriter::set_data4d 0 2 863 864 336
/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
147
inline void GeomVertexWriter::set_data4d(double x, double y, double z, double w);
inline void GeomVertexWriter::set_data4d(LVecBase4d const &data);

2456 12 set_matrix3d 0 4 3270 30 GeomVertexWriter::set_matrix3d 0 1 865 219
/**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */
65
inline void GeomVertexWriter::set_matrix3d(LMatrix3d const &mat);

2457 12 set_matrix4d 0 4 3270 30 GeomVertexWriter::set_matrix4d 0 1 866 219
/**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */
65
inline void GeomVertexWriter::set_matrix4d(LMatrix4d const &mat);

2458 9 set_data1 0 4 3270 27 GeomVertexWriter::set_data1 0 1 867 167
/**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
58
inline void GeomVertexWriter::set_data1(PN_stdfloat data);

2459 9 set_data2 0 4 3270 27 GeomVertexWriter::set_data2 0 2 868 869 336
/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
134
inline void GeomVertexWriter::set_data2(PN_stdfloat x, PN_stdfloat y);
inline void GeomVertexWriter::set_data2(LVecBase2 const &data);

2460 9 set_data3 0 4 3270 27 GeomVertexWriter::set_data3 0 2 870 871 336
/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
149
inline void GeomVertexWriter::set_data3(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
inline void GeomVertexWriter::set_data3(LVecBase3 const &data);

2461 9 set_data4 0 4 3270 27 GeomVertexWriter::set_data4 0 2 872 873 336
/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
164
inline void GeomVertexWriter::set_data4(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z, PN_stdfloat w);
inline void GeomVertexWriter::set_data4(LVecBase4 const &data);

2462 11 set_matrix3 0 4 3270 29 GeomVertexWriter::set_matrix3 0 1 874 219
/**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */
63
inline void GeomVertexWriter::set_matrix3(LMatrix3 const &mat);

2463 11 set_matrix4 0 4 3270 29 GeomVertexWriter::set_matrix4 0 1 875 219
/**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */
63
inline void GeomVertexWriter::set_matrix4(LMatrix4 const &mat);

2464 10 set_data1i 0 4 3270 28 GeomVertexWriter::set_data1i 0 1 876 167
/**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
51
inline void GeomVertexWriter::set_data1i(int data);

2465 10 set_data2i 0 4 3270 28 GeomVertexWriter::set_data2i 0 2 877 878 336
/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
121
inline void GeomVertexWriter::set_data2i(int a, int b);
inline void GeomVertexWriter::set_data2i(LVecBase2i const &data);

2466 10 set_data3i 0 4 3270 28 GeomVertexWriter::set_data3i 0 2 879 880 336
/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
128
inline void GeomVertexWriter::set_data3i(int a, int b, int c);
inline void GeomVertexWriter::set_data3i(LVecBase3i const &data);

2467 10 set_data4i 0 4 3270 28 GeomVertexWriter::set_data4i 0 2 881 882 336
/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */

/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */
135
inline void GeomVertexWriter::set_data4i(int a, int b, int c, int d);
inline void GeomVertexWriter::set_data4i(LVecBase4i const &data);

2468 10 add_data1f 0 4 3270 28 GeomVertexWriter::add_data1f 0 1 883 191
/**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
53
inline void GeomVertexWriter::add_data1f(float data);

2469 10 add_data2f 0 4 3270 28 GeomVertexWriter::add_data2f 0 2 884 885 384
/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
125
inline void GeomVertexWriter::add_data2f(float x, float y);
inline void GeomVertexWriter::add_data2f(LVecBase2f const &data);

2470 10 add_data3f 0 4 3270 28 GeomVertexWriter::add_data3f 0 2 886 887 384
/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
134
inline void GeomVertexWriter::add_data3f(float x, float y, float z);
inline void GeomVertexWriter::add_data3f(LVecBase3f const &data);

2471 10 add_data4f 0 4 3270 28 GeomVertexWriter::add_data4f 0 2 888 889 384
/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
143
inline void GeomVertexWriter::add_data4f(float x, float y, float z, float w);
inline void GeomVertexWriter::add_data4f(LVecBase4f const &data);

2472 12 add_matrix3f 0 4 3270 30 GeomVertexWriter::add_matrix3f 0 1 890 243
/**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
65
inline void GeomVertexWriter::add_matrix3f(LMatrix3f const &mat);

2473 12 add_matrix4f 0 4 3270 30 GeomVertexWriter::add_matrix4f 0 1 891 243
/**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
65
inline void GeomVertexWriter::add_matrix4f(LMatrix4f const &mat);

2474 10 add_data1d 0 4 3270 28 GeomVertexWriter::add_data1d 0 1 892 191
/**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
54
inline void GeomVertexWriter::add_data1d(double data);

2475 10 add_data2d 0 4 3270 28 GeomVertexWriter::add_data2d 0 2 893 894 384
/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
127
inline void GeomVertexWriter::add_data2d(double x, double y);
inline void GeomVertexWriter::add_data2d(LVecBase2d const &data);

2476 10 add_data3d 0 4 3270 28 GeomVertexWriter::add_data3d 0 2 895 896 384
/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
137
inline void GeomVertexWriter::add_data3d(double x, double y, double z);
inline void GeomVertexWriter::add_data3d(LVecBase3d const &data);

2477 10 add_data4d 0 4 3270 28 GeomVertexWriter::add_data4d 0 2 897 898 384
/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
147
inline void GeomVertexWriter::add_data4d(double x, double y, double z, double w);
inline void GeomVertexWriter::add_data4d(LVecBase4d const &data);

2478 12 add_matrix3d 0 4 3270 30 GeomVertexWriter::add_matrix3d 0 1 899 243
/**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
65
inline void GeomVertexWriter::add_matrix3d(LMatrix3d const &mat);

2479 12 add_matrix4d 0 4 3270 30 GeomVertexWriter::add_matrix4d 0 1 900 243
/**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
65
inline void GeomVertexWriter::add_matrix4d(LMatrix4d const &mat);

2480 9 add_data1 0 4 3270 27 GeomVertexWriter::add_data1 0 1 901 191
/**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
58
inline void GeomVertexWriter::add_data1(PN_stdfloat data);

2481 9 add_data2 0 4 3270 27 GeomVertexWriter::add_data2 0 2 902 903 384
/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
134
inline void GeomVertexWriter::add_data2(PN_stdfloat x, PN_stdfloat y);
inline void GeomVertexWriter::add_data2(LVecBase2 const &data);

2482 9 add_data3 0 4 3270 27 GeomVertexWriter::add_data3 0 2 904 905 384
/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
149
inline void GeomVertexWriter::add_data3(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
inline void GeomVertexWriter::add_data3(LVecBase3 const &data);

2483 9 add_data4 0 4 3270 27 GeomVertexWriter::add_data4 0 2 906 907 384
/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
164
inline void GeomVertexWriter::add_data4(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z, PN_stdfloat w);
inline void GeomVertexWriter::add_data4(LVecBase4 const &data);

2484 11 add_matrix3 0 4 3270 29 GeomVertexWriter::add_matrix3 0 1 908 243
/**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
63
inline void GeomVertexWriter::add_matrix3(LMatrix3 const &mat);

2485 11 add_matrix4 0 4 3270 29 GeomVertexWriter::add_matrix4 0 1 909 243
/**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
63
inline void GeomVertexWriter::add_matrix4(LMatrix4 const &mat);

2486 10 add_data1i 0 4 3270 28 GeomVertexWriter::add_data1i 0 1 910 191
/**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
51
inline void GeomVertexWriter::add_data1i(int data);

2487 10 add_data2i 0 4 3270 28 GeomVertexWriter::add_data2i 0 2 911 912 384
/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
121
inline void GeomVertexWriter::add_data2i(int a, int b);
inline void GeomVertexWriter::add_data2i(LVecBase2i const &data);

2488 10 add_data3i 0 4 3270 28 GeomVertexWriter::add_data3i 0 2 913 914 384
/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
128
inline void GeomVertexWriter::add_data3i(int a, int b, int c);
inline void GeomVertexWriter::add_data3i(LVecBase3i const &data);

2489 10 add_data4i 0 4 3270 28 GeomVertexWriter::add_data4i 0 2 915 916 384
/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */

/**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */
135
inline void GeomVertexWriter::add_data4i(int a, int b, int c, int d);
inline void GeomVertexWriter::add_data4i(LVecBase4i const &data);

2490 6 output 0 4 3270 24 GeomVertexWriter::output 0 1 917 10
/**
 *
 */
55
void GeomVertexWriter::output(std::ostream &out) const;

2491 26 upcast_to_GeomVertexWriter 0 12 3271 46 GeomVertexRewriter::upcast_to_GeomVertexWriter 0 1 942 50
upcast from GeomVertexRewriter to GeomVertexWriter
71
GeomVertexWriter *GeomVertexRewriter::upcast_to_GeomVertexWriter(void);

2492 30 downcast_to_GeomVertexRewriter 0 12 3270 48 GeomVertexWriter::downcast_to_GeomVertexRewriter 0 0 52
downcast from GeomVertexWriter to GeomVertexRewriter
75
GeomVertexRewriter *GeomVertexWriter::downcast_to_GeomVertexRewriter(void);

2493 26 upcast_to_GeomVertexReader 0 12 3271 46 GeomVertexRewriter::upcast_to_GeomVertexReader 0 1 943 50
upcast from GeomVertexRewriter to GeomVertexReader
71
GeomVertexReader *GeomVertexRewriter::upcast_to_GeomVertexReader(void);

2494 30 downcast_to_GeomVertexRewriter 0 12 3269 48 GeomVertexReader::downcast_to_GeomVertexRewriter 0 0 52
downcast from GeomVertexReader to GeomVertexRewriter
75
GeomVertexRewriter *GeomVertexReader::downcast_to_GeomVertexRewriter(void);

2495 18 GeomVertexRewriter 0 260 3271 38 GeomVertexRewriter::GeomVertexRewriter 0 6 918 919 920 921 922 923 643
/**
 * Constructs an invalid GeomVertexRewriter.  You must use the assignment
 * operator to assign a valid GeomVertexRewriter to this object before you can
 * use it.
 */

/**
 * Constructs a new rewriter to process the vertices of the indicated data
 * object.
 */

/**
 * Constructs a new rewriter to process the vertices of the indicated data
 * object.  This flavor creates the rewriter specifically to process the named
 * data type.
 */

/**
 * Constructs a new rewriter to process the vertices of the indicated array
 * only.
 */

/**
 * Constructs a new rewriter to process the vertices of the indicated array
 * only.
 */

/**
 *
 */
747
inline GeomVertexRewriter::GeomVertexRewriter(Thread *current_thread = Thread::get_current_thread());
inline GeomVertexRewriter::GeomVertexRewriter(GeomVertexData *vertex_data, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexRewriter::GeomVertexRewriter(GeomVertexData *vertex_data, CPT_InternalName name, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexRewriter::GeomVertexRewriter(GeomVertexArrayData *array_data, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexRewriter::GeomVertexRewriter(GeomVertexArrayData *array_data, int column, Thread *current_thread = Thread::get_current_thread());
inline GeomVertexRewriter::GeomVertexRewriter(GeomVertexRewriter const &copy);

2496 10 operator = 0 4 3271 30 GeomVertexRewriter::operator = 0 1 924 0
75
inline void GeomVertexRewriter::operator =(GeomVertexRewriter const &copy);

2497 19 ~GeomVertexRewriter 0 516 3271 39 GeomVertexRewriter::~GeomVertexRewriter 0 0 10
/**
 *
 */
53
inline GeomVertexRewriter::~GeomVertexRewriter(void);

2498 15 get_vertex_data 0 4 3271 35 GeomVertexRewriter::get_vertex_data 0 1 925 74
/**
 * Returns the vertex data object that the rewriter is processing.
 */
71
inline GeomVertexData *GeomVertexRewriter::get_vertex_data(void) const;

2499 14 get_array_data 0 4 3271 34 GeomVertexRewriter::get_array_data 0 1 926 92
/**
 * Returns the particular array object that the rewriter is currently
 * processing.
 */
75
inline GeomVertexArrayData *GeomVertexRewriter::get_array_data(void) const;

2500 16 get_array_handle 0 4 3271 36 GeomVertexRewriter::get_array_handle 0 1 927 245
/**
 * Returns the write handle to the array object that the rewriter is currently
 * processing.  This low-level call should be used with caution; be careful
 * with modifying the data in the handle out from under the
 * GeomVertexRewriter.
 */
83
inline GeomVertexArrayDataHandle *GeomVertexRewriter::get_array_handle(void) const;

2501 10 get_stride 0 4 3271 30 GeomVertexRewriter::get_stride 0 1 928 199
/**
 * Returns the per-row stride (bytes between consecutive rows) of the
 * underlying vertex array.  This low-level information is normally not needed
 * to use the GeomVertexRewriter directly.
 */
62
inline std::size_t GeomVertexRewriter::get_stride(void) const;

2502 18 get_current_thread 0 4 3271 38 GeomVertexRewriter::get_current_thread 0 1 929 120
/**
 * Returns the Thread pointer of the currently-executing thread, as passed to
 * the constructor of this object.
 */
66
inline Thread *GeomVertexRewriter::get_current_thread(void) const;

2503 10 set_column 0 4 3271 30 GeomVertexRewriter::set_column 0 3 930 931 932 1027
/**
 * Sets up the rewriter to use the nth data type of the GeomVertexFormat,
 * numbering from 0.
 *
 * This also resets both the read and write row numbers to the start row (the
 * same value passed to a previous call to set_row(), or 0 if set_row() was
 * never called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */

/**
 * Sets up the rewriter to use the data type with the indicated name.
 *
 * This also resets both the read and write row numbers to the start row (the
 * same value passed to a previous call to set_row(), or 0 if set_row() was
 * never called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */

/**
 * Sets up the rewriter to use the indicated column description on the given
 * array.
 *
 * This also resets both the read and write row numbers to the start row (the
 * same value passed to a previous call to set_row(), or 0 if set_row() was
 * never called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */
209
inline bool GeomVertexRewriter::set_column(int column);
inline bool GeomVertexRewriter::set_column(CPT_InternalName name);
inline bool GeomVertexRewriter::set_column(int array, GeomVertexColumn const *column);

2504 5 clear 0 4 3271 25 GeomVertexRewriter::clear 0 1 933 62
/**
 * Resets the GeomVertexRewriter to the initial state.
 */
44
inline void GeomVertexRewriter::clear(void);

2505 10 has_column 0 4 3271 30 GeomVertexRewriter::has_column 0 1 934 116
/**
 * Returns true if a valid data type has been successfully set, or false if
 * the data type does not exist.
 */
55
inline bool GeomVertexRewriter::has_column(void) const;

2506 9 get_array 0 4 3271 29 GeomVertexRewriter::get_array 0 1 935 95
/**
 * Returns the array index containing the data type that the rewriter is
 * working on.
 */
53
inline int GeomVertexRewriter::get_array(void) const;

2507 10 get_column 0 4 3271 30 GeomVertexRewriter::get_column 0 1 936 84
/**
 * Returns the description of the data type that the rewriter is working on.
 */
74
inline GeomVertexColumn const *GeomVertexRewriter::get_column(void) const;

2508 14 set_row_unsafe 0 4 3271 34 GeomVertexRewriter::set_row_unsafe 0 1 937 344
/**
 * Sets the start row to the indicated value, without internal checks.  This
 * is the same as set_row(), but it does not check for the possibility that
 * the array has been reallocated internally for some reason; use only when
 * you are confident that the array is unchanged and you really need every bit
 * of available performance.
 */
56
inline void GeomVertexRewriter::set_row_unsafe(int row);

2509 7 set_row 0 4 3271 27 GeomVertexRewriter::set_row 0 1 938 132
/**
 * Sets the start, write, and write index to the indicated value.  The
 * rewriter will begin traversing from the given row.
 */
49
inline void GeomVertexRewriter::set_row(int row);

2510 13 get_start_row 0 4 3271 33 GeomVertexRewriter::get_start_row 0 1 939 127
/**
 * Returns the row index at which the rewriter started.  It will return to
 * this row if you reset the current column.
 */
57
inline int GeomVertexRewriter::get_start_row(void) const;

2511 9 is_at_end 0 4 3271 29 GeomVertexRewriter::is_at_end 0 1 940 116
/**
 * Returns true if the reader or writer is currently at the end of the list of
 * vertices, false otherwise.
 */
54
inline bool GeomVertexRewriter::is_at_end(void) const;

2512 6 output 0 4 3271 26 GeomVertexRewriter::output 0 1 941 10
/**
 *
 */
57
void GeomVertexRewriter::output(std::ostream &out) const;

2513 12 SamplerState 0 260 3272 26 SamplerState::SamplerState 0 2 944 945 72
/**
 * Creates a new SamplerState initialized to the default values.
 */
107
inline SamplerState::SamplerState(void);
inline SamplerState::SamplerState(SamplerState const &) = default;

2514 11 get_default 0 4 3272 25 SamplerState::get_default 0 1 946 83
/**
 * Returns a reference to the global default immutable SamplerState object.
 */
66
static inline SamplerState const &SamplerState::get_default(void);

2515 10 set_wrap_u 0 4 3272 24 SamplerState::set_wrap_u 0 1 947 221
/**
 * This setting determines what happens when the SamplerState is sampled with
 * a U value outside the range 0.0-1.0.  The default is WM_repeat, which
 * indicates that the SamplerState should repeat indefinitely.
 */
66
inline void SamplerState::set_wrap_u(SamplerState::WrapMode wrap);

2516 10 set_wrap_v 0 4 3272 24 SamplerState::set_wrap_v 0 1 948 221
/**
 * This setting determines what happens when the SamplerState is sampled with
 * a V value outside the range 0.0-1.0.  The default is WM_repeat, which
 * indicates that the SamplerState should repeat indefinitely.
 */
66
inline void SamplerState::set_wrap_v(SamplerState::WrapMode wrap);

2517 10 set_wrap_w 0 4 3272 24 SamplerState::set_wrap_w 0 1 949 67
/**
 * The W wrap direction is only used for 3-d SamplerStates.
 */
66
inline void SamplerState::set_wrap_w(SamplerState::WrapMode wrap);

2518 13 set_minfilter 0 4 3272 27 SamplerState::set_minfilter 0 1 950 106
/**
 * Sets the filtering method that should be used when viewing the SamplerState
 * from a distance.
 */
73
inline void SamplerState::set_minfilter(SamplerState::FilterType filter);

2519 13 set_magfilter 0 4 3272 27 SamplerState::set_magfilter 0 1 951 99
/**
 * Sets the filtering method that should be used when viewing the SamplerState
 * up close.
 */
73
inline void SamplerState::set_magfilter(SamplerState::FilterType filter);

2520 22 set_anisotropic_degree 0 4 3272 36 SamplerState::set_anisotropic_degree 0 1 952 418
/**
 * Specifies the level of anisotropic filtering to apply to the SamplerState.
 * Set this 0 to indicate the default value, which is specified in the
 * SamplerState-anisotropic-degree config variable.
 *
 * To explicitly disable anisotropic filtering, set this value to 1.  To
 * explicitly enable anisotropic filtering, set it to a value higher than 1;
 * larger numbers indicate greater degrees of filtering.
 */
73
inline void SamplerState::set_anisotropic_degree(int anisotropic_degree);

2521 16 set_border_color 0 4 3272 30 SamplerState::set_border_color 0 1 953 198
/**
 * Specifies the solid color of the SamplerState's border.  Some OpenGL
 * implementations use a border for tiling SamplerStates; in Panda, it is only
 * used for specifying the clamp color.
 */
64
inline void SamplerState::set_border_color(LColor const &color);

2522 11 set_min_lod 0 4 3272 25 SamplerState::set_min_lod 0 1 954 123
/**
 * Sets the minimum level of detail that will be used when sampling this
 * texture.  This may be a negative value.
 */
59
inline void SamplerState::set_min_lod(PN_stdfloat min_lod);

2523 11 set_max_lod 0 4 3272 25 SamplerState::set_max_lod 0 1 955 159
/**
 * Sets the maximum level of detail that will be used when sampling this
 * texture.  This may exceed the number of mipmap levels that the texture has.
 */
59
inline void SamplerState::set_max_lod(PN_stdfloat max_lod);

2524 12 set_lod_bias 0 4 3272 26 SamplerState::set_lod_bias 0 1 956 211
/**
 * Sets the value that will be added to the level of detail when sampling the
 * texture.  This may be a negative value, although some graphics hardware may
 * not support the use of negative LOD values.
 */
61
inline void SamplerState::set_lod_bias(PN_stdfloat lod_bias);

2525 10 get_wrap_u 0 4 3272 24 SamplerState::get_wrap_u 0 1 957 67
/**
 * Returns the wrap mode of the texture in the U direction.
 */
67
inline SamplerState::WrapMode SamplerState::get_wrap_u(void) const;

2526 10 get_wrap_v 0 4 3272 24 SamplerState::get_wrap_v 0 1 958 67
/**
 * Returns the wrap mode of the texture in the V direction.
 */
67
inline SamplerState::WrapMode SamplerState::get_wrap_v(void) const;

2527 10 get_wrap_w 0 4 3272 24 SamplerState::get_wrap_w 0 1 959 116
/**
 * Returns the wrap mode of the texture in the W direction.  This is the depth
 * direction of 3-d textures.
 */
67
inline SamplerState::WrapMode SamplerState::get_wrap_w(void) const;

2528 13 get_minfilter 0 4 3272 27 SamplerState::get_minfilter 0 1 960 214
/**
 * Returns the filter mode of the texture for minification.  If this is one of
 * the mipmap constants, then the texture requires mipmaps.  This may return
 * FT_default; see also get_effective_minfilter().
 */
72
inline SamplerState::FilterType SamplerState::get_minfilter(void) const;

2529 13 get_magfilter 0 4 3272 27 SamplerState::get_magfilter 0 1 961 179
/**
 * Returns the filter mode of the texture for magnification.  The mipmap
 * constants are invalid here.  This may return FT_default; see also
 * get_effective_minfilter().
 */
72
inline SamplerState::FilterType SamplerState::get_magfilter(void) const;

2530 23 get_effective_minfilter 0 4 3272 37 SamplerState::get_effective_minfilter 0 1 962 200
/**
 * Returns the filter mode of the texture for minification, with special
 * treatment for FT_default.  This will normally not return FT_default, unless
 * there is an error in the config file.
 */
75
SamplerState::FilterType SamplerState::get_effective_minfilter(void) const;

2531 23 get_effective_magfilter 0 4 3272 37 SamplerState::get_effective_magfilter 0 1 963 201
/**
 * Returns the filter mode of the texture for magnification, with special
 * treatment for FT_default.  This will normally not return FT_default, unless
 * there is an error in the config file.
 */
75
SamplerState::FilterType SamplerState::get_effective_magfilter(void) const;

2532 22 get_anisotropic_degree 0 4 3272 36 SamplerState::get_anisotropic_degree 0 1 964 198
/**
 * Returns the degree of anisotropic filtering that should be applied to the
 * texture.  This value may return 0, indicating the default value; see also
 * get_effective_anisotropic_degree.
 */
60
inline int SamplerState::get_anisotropic_degree(void) const;

2533 32 get_effective_anisotropic_degree 0 4 3272 46 SamplerState::get_effective_anisotropic_degree 0 1 965 184
/**
 * Returns the degree of anisotropic filtering that should be applied to the
 * texture.  This value will normally not return 0, unless there is an error
 * in the config file.
 */
70
inline int SamplerState::get_effective_anisotropic_degree(void) const;

2534 16 get_border_color 0 4 3272 30 SamplerState::get_border_color 0 1 966 186
/**
 * Returns the solid color of the texture's border.  Some OpenGL
 * implementations use a border for tiling textures; in Panda, it is only used
 * for specifying the clamp color.
 */
64
inline LColor const &SamplerState::get_border_color(void) const;

2535 11 get_min_lod 0 4 3272 25 SamplerState::get_min_lod 0 1 967 99
/**
 * Returns the minimum level of detail that will be observed when sampling
 * this texture.
 */
57
inline PN_stdfloat SamplerState::get_min_lod(void) const;

2536 11 get_max_lod 0 4 3272 25 SamplerState::get_max_lod 0 1 968 99
/**
 * Returns the maximum level of detail that will be observed when sampling
 * this texture.
 */
57
inline PN_stdfloat SamplerState::get_max_lod(void) const;

2537 12 get_lod_bias 0 4 3272 26 SamplerState::get_lod_bias 0 1 969 108
/**
 * Returns the bias that will be added to the texture level of detail when
 * sampling this texture.
 */
58
inline PN_stdfloat SamplerState::get_lod_bias(void) const;

2538 12 uses_mipmaps 0 4 3272 26 SamplerState::uses_mipmaps 0 1 970 117
/**
 * Returns true if the minfilter settings on this sampler indicate the use of
 * mipmapping, false otherwise.
 */
51
inline bool SamplerState::uses_mipmaps(void) const;

2539 9 is_mipmap 0 4 3272 23 SamplerState::is_mipmap 0 1 971 109
/**
 * Returns true if the indicated filter type requires the use of mipmaps, or
 * false if it does not.
 */
74
static inline bool SamplerState::is_mipmap(SamplerState::FilterType type);

2540 18 format_filter_type 0 4 3272 32 SamplerState::format_filter_type 0 1 972 71
/**
 * Returns the indicated FilterType converted to a string word.
 */
81
static std::string SamplerState::format_filter_type(SamplerState::FilterType ft);

2541 18 string_filter_type 0 4 3272 32 SamplerState::string_filter_type 0 1 973 165
/**
 * Returns the FilterType value associated with the given string
 * representation, or FT_invalid if the string does not match any known
 * FilterType value.
 */
89
static SamplerState::FilterType SamplerState::string_filter_type(std::string const &str);

2542 16 format_wrap_mode 0 4 3272 30 SamplerState::format_wrap_mode 0 1 974 69
/**
 * Returns the indicated WrapMode converted to a string word.
 */
77
static std::string SamplerState::format_wrap_mode(SamplerState::WrapMode wm);

2543 16 string_wrap_mode 0 4 3272 30 SamplerState::string_wrap_mode 0 1 975 158
/**
 * Returns the WrapMode value associated with the given string representation,
 * or WM_invalid if the string does not match any known WrapMode value.
 */
85
static SamplerState::WrapMode SamplerState::string_wrap_mode(std::string const &str);

2544 11 operator == 0 4 3272 25 SamplerState::operator == 0 1 976 0
71
inline bool SamplerState::operator ==(SamplerState const &other) const;

2545 11 operator != 0 4 3272 25 SamplerState::operator != 0 1 977 0
71
inline bool SamplerState::operator !=(SamplerState const &other) const;

2546 10 operator < 0 4 3272 24 SamplerState::operator < 0 1 978 0
70
inline bool SamplerState::operator <(SamplerState const &other) const;

2547 7 prepare 0 4 3272 21 SamplerState::prepare 0 1 979 250
/**
 * Indicates that the sampler should be enqueued to be prepared in the
 * indicated prepared_objects at the beginning of the next frame.
 *
 * Use this function instead of prepare_now() to preload samplers from a user
 * interface standpoint.
 */
76
void SamplerState::prepare(PreparedGraphicsObjects *prepared_objects) const;

2548 11 is_prepared 0 4 3272 25 SamplerState::is_prepared 0 1 980 134
/**
 * Returns true if the sampler has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */
80
bool SamplerState::is_prepared(PreparedGraphicsObjects *prepared_objects) const;

2549 7 release 0 4 3272 21 SamplerState::release 0 1 981 157
/**
 * Frees the texture context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */
76
void SamplerState::release(PreparedGraphicsObjects *prepared_objects) const;

2550 11 prepare_now 0 4 3272 25 SamplerState::prepare_now 0 1 982 531
/**
 * Creates a context for the sampler on the particular GSG, if it does not
 * already exist.  Returns the new (or old) SamplerContext.  This assumes that
 * the GraphicsStateGuardian is the currently active rendering context and
 * that it is ready to accept new textures.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a sampler does not need to be explicitly prepared by the user before it may
 * be rendered.
 */
123
SamplerContext *SamplerState::prepare_now(PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg) const;

2551 14 get_class_type 0 4 3272 28 SamplerState::get_class_type 0 1 983 0
53
static TypeHandle SamplerState::get_class_type(void);

2552 13 ~SamplerState 0 516 3272 27 SamplerState::~SamplerState 0 0 0
34
SamplerState::~SamplerState(void);

2553 37 upcast_to_TypedWritableReferenceCount 0 12 3276 46 Texture::upcast_to_TypedWritableReferenceCount 0 1 1207 50
upcast from Texture to TypedWritableReferenceCount
82
TypedWritableReferenceCount *Texture::upcast_to_TypedWritableReferenceCount(void);

2554 19 downcast_to_Texture 0 12 3180 48 TypedWritableReferenceCount::downcast_to_Texture 0 0 52
downcast from TypedWritableReferenceCount to Texture
64
Texture *TypedWritableReferenceCount::downcast_to_Texture(void);

2555 17 upcast_to_Namable 0 12 3276 26 Texture::upcast_to_Namable 0 1 1208 30
upcast from Texture to Namable
42
Namable *Texture::upcast_to_Namable(void);

2556 19 downcast_to_Texture 0 12 3164 28 Namable::downcast_to_Texture 0 0 32
downcast from Namable to Texture
44
Texture *Namable::downcast_to_Texture(void);

2557 7 Texture 0 260 3276 16 Texture::Texture 0 1 984 278
/**
 * Constructs an empty texture.  The default is to set up the texture as an
 * empty 2-d texture; follow up with one of the variants of setup_texture() if
 * this is not what you want.
 */

/**
 * Use Texture::make_copy() to make a duplicate copy of an existing Texture.
 */
62
explicit Texture::Texture(std::string const &name = string());

2558 8 ~Texture 0 518 3276 17 Texture::~Texture 0 0 10
/**
 *
 */
32
virtual Texture::~Texture(void);

2559 9 make_copy 0 4 3276 18 Texture::make_copy 0 1 985 369
/**
 * Returns a new copy of the same Texture.  This copy, if applied to geometry,
 * will be copied into texture as a separate texture from the original, so it
 * will be duplicated in texture memory (and may be independently modified if
 * desired).
 *
 * If the Texture is a VideoTexture, the resulting duplicate may be animated
 * independently of the original.
 */
59
inline PointerTo< Texture > Texture::make_copy(void) const;

2560 5 clear 0 4 3276 14 Texture::clear 0 1 986 90
/**
 * Reinitializes the texture to its default, empty state (except for the
 * name).
 */
33
inline void Texture::clear(void);

2561 13 setup_texture 0 4 3276 22 Texture::setup_texture 0 1 987 243
/**
 * Sets the texture to the indicated type and dimensions, presumably in
 * preparation for calling read() or load(), or set_ram_image() or
 * modify_ram_image(), or use set_clear_color to let the texture be cleared to
 * a solid color.
 */
169
inline void Texture::setup_texture(Texture::TextureType texture_type, int x_size, int y_size, int z_size, Texture::ComponentType component_type, Texture::Format format);

2562 16 setup_1d_texture 0 4 3276 25 Texture::setup_1d_texture 0 2 988 989 485
/**
 * Sets the texture as an empty 1-d texture with no dimensions.  Follow up
 * with read() or load() to fill the texture properties and image data, or use
 * set_clear_color to let the texture be cleared to a solid color.
 */

/**
 * Sets the texture as an empty 1-d texture with the specified dimensions and
 * properties.  Follow up with set_ram_image() or modify_ram_image() to fill
 * the image data, or use set_clear_color to let the texture be cleared to a
 * solid color.
 */
158
inline void Texture::setup_1d_texture(void);
inline void Texture::setup_1d_texture(int x_size, Texture::ComponentType component_type, Texture::Format format);

2563 16 setup_2d_texture 0 4 3276 25 Texture::setup_2d_texture 0 2 990 991 485
/**
 * Sets the texture as an empty 2-d texture with no dimensions.  Follow up
 * with read() or load() to fill the texture properties and image data, or use
 * set_clear_color to let the texture be cleared to a solid color.
 */

/**
 * Sets the texture as an empty 2-d texture with the specified dimensions and
 * properties.  Follow up with set_ram_image() or modify_ram_image() to fill
 * the image data, or use set_clear_color to let the texture be cleared to a
 * solid color.
 */
170
inline void Texture::setup_2d_texture(void);
inline void Texture::setup_2d_texture(int x_size, int y_size, Texture::ComponentType component_type, Texture::Format format);

2564 16 setup_3d_texture 0 4 3276 25 Texture::setup_3d_texture 0 2 992 993 496
/**
 * Sets the texture as an empty 3-d texture with no dimensions (though if you
 * know the depth ahead of time, it saves a bit of reallocation later). Follow
 * up with read() or load() to fill the texture properties and image data, or
 * use set_clear_color to let the texture be cleared to a solid color.
 */

/**
 * Sets the texture as an empty 3-d texture with the specified dimensions and
 * properties.  Follow up with set_ram_image() or modify_ram_image() to fill
 * the image data.
 */
192
inline void Texture::setup_3d_texture(int z_size = 1);
inline void Texture::setup_3d_texture(int x_size, int y_size, int z_size, Texture::ComponentType component_type, Texture::Format format);

2565 14 setup_cube_map 0 4 3276 23 Texture::setup_cube_map 0 2 994 995 632
/**
 * Sets the texture as an empty cube map texture with no dimensions.  Follow
 * up with read() or load() to fill the texture properties and image data, or
 * use set_clear_color to let the texture be cleared to a solid color.
 */

/**
 * Sets the texture as an empty cube map texture with the specified dimensions
 * and properties.  Follow up with set_ram_image() or modify_ram_image() to
 * fill the image data, or use set_clear_color to let the texture be cleared
 * to a solid color.
 *
 * Note that a cube map should always consist of six square images, so x_size
 * and y_size will be the same, and z_size is always 6.
 */
152
inline void Texture::setup_cube_map(void);
inline void Texture::setup_cube_map(int size, Texture::ComponentType component_type, Texture::Format format);

2566 22 setup_2d_texture_array 0 4 3276 31 Texture::setup_2d_texture_array 0 2 996 997 585
/**
 * Sets the texture as an empty 2-d texture array with no dimensions (though
 * if you know the depth ahead of time, it saves a bit of reallocation later).
 * Follow up with read() or load() to fill the texture properties and image
 * data, or use set_clear_color to let the texture be cleared to a solid
 * color.
 */

/**
 * Sets the texture as an empty 2-d texture array with the specified
 * dimensions and properties.  Follow up with set_ram_image() or
 * modify_ram_image() to fill the image data, or use set_clear_color to let
 * the texture be cleared to a solid color.
 */
204
inline void Texture::setup_2d_texture_array(int z_size = 1);
inline void Texture::setup_2d_texture_array(int x_size, int y_size, int z_size, Texture::ComponentType component_type, Texture::Format format);

2567 20 setup_cube_map_array 0 4 3276 29 Texture::setup_cube_map_array 0 2 998 999 675
/**
 * Sets the texture as cube map array with N cube maps.  Note that this number
 * is not the same as the z_size.  Follow up with read() or load() to fill the
 * texture properties and image data, or use set_clear_color to let the
 * texture be cleared to a solid color.
 *
 * @since 1.10.0
 */

/**
 * Sets the texture as cube map array with N cube maps with the specified
 * dimensions and format.  Follow up with set_ram_image() or
 * modify_ram_image() to fill the image data, or use set_clear_color to let
 * the texture be cleared to a solid color.
 *
 * The num_cube_maps given here is multiplied by six to become the z_size of
 * the image.
 *
 * @since 1.10.0
 */
196
inline void Texture::setup_cube_map_array(int num_cube_maps);
inline void Texture::setup_cube_map_array(int size, int num_cube_maps, Texture::ComponentType component_type, Texture::Format format);

2568 20 setup_buffer_texture 0 4 3276 29 Texture::setup_buffer_texture 0 1 1000 329
/**
 * Sets the texture as an empty buffer texture with the specified size and
 * properties.  Follow up with set_ram_image() or modify_ram_image() to fill
 * the image data, or use set_clear_color to let the texture be cleared to a
 * solid color.
 *
 * Note that a buffer texture's format needs to match the component type.
 */
143
inline void Texture::setup_buffer_texture(int size, Texture::ComponentType component_type, Texture::Format format, GeomEnums::UsageHint usage);

2569 31 generate_normalization_cube_map 0 4 3276 40 Texture::generate_normalization_cube_map 0 1 1001 296
/**
 * Generates a special cube map image in the texture that can be used to apply
 * bump mapping effects: for each texel in the cube map that is indexed by the
 * 3-d texture coordinates (x, y, z), the resulting value is the normalized
 * vector (x, y, z) (compressed from -1..1 into 0..1).
 */
56
void Texture::generate_normalization_cube_map(int size);

2570 24 generate_alpha_scale_map 0 4 3276 33 Texture::generate_alpha_scale_map 0 1 1002 253
/**
 * Generates a special 256x1 1-d texture that can be used to apply an
 * arbitrary alpha scale to objects by judicious use of texture matrix.  The
 * texture is a gradient, with an alpha of 0 on the left (U = 0), and 255 on
 * the right (U = 1).
 */
45
void Texture::generate_alpha_scale_map(void);

2571 11 clear_image 0 4 3276 20 Texture::clear_image 0 1 1003 445
/**
 * Clears the texture data without changing its format or resolution.  The
 * texture is cleared on both the graphics hardware and from RAM, unlike
 * clear_ram_image, which only removes the data from RAM.
 *
 * If a clear color has been specified using set_clear_color, the texture will
 * be cleared using a solid color.
 *
 * The texture data will be cleared the first time in which the texture is
 * used after this method is called.
 */
39
inline void Texture::clear_image(void);

2572 15 has_clear_color 0 4 3276 24 Texture::has_clear_color 0 1 1004 76
/**
 * Returns true if a color was previously set using set_clear_color.
 */
49
inline bool Texture::has_clear_color(void) const;

2573 15 get_clear_color 0 4 3276 24 Texture::get_clear_color 0 1 1005 75
/**
 * Returns the color that was previously set using set_clear_color.
 */
51
inline LColor Texture::get_clear_color(void) const;

2574 15 set_clear_color 0 4 3276 24 Texture::set_clear_color 0 1 1006 359
/**
 * Sets the color that will be used to fill the texture image in absence of
 * any image data.  It is used when any of the setup_texture functions or
 * clear_image is called and image data is not provided using read() or
 * modify_ram_image().
 *
 * This does not affect a texture that has already been cleared; call
 * clear_image to clear it again.
 */
58
inline void Texture::set_clear_color(LColor const &color);

2575 17 clear_clear_color 0 4 3276 26 Texture::clear_clear_color 0 1 1007 161
/**
 * The opposite of set_clear_color.  If the image is cleared after setting
 * this, its contents may be undefined (or may in fact not be cleared at all).
 */
45
inline void Texture::clear_clear_color(void);

2576 14 get_clear_data 0 4 3276 23 Texture::get_clear_data 0 1 1008 94
/**
 * Returns the raw image data for a single pixel if it were set to the clear
 * color.
 */
56
inline vector_uchar Texture::get_clear_data(void) const;

2577 4 read 0 4 3276 13 Texture::read 0 4 1009 1010 1011 1012 3436
/**
 * Reads the named filename into the texture.
 */

/**
 * Combine a 3-component image with a grayscale image to get a 4-component
 * image.
 *
 * See the description of the full-parameter read() method for the meaning of
 * the primary_file_num_channels and alpha_file_channel parameters.
 */

/**
 * Reads a single file into a single page or mipmap level, or automatically
 * reads a series of files into a series of pages and/or mipmap levels.
 *
 * See the description of the full-parameter read() method for the meaning of
 * the various parameters.
 */

/**
 * Reads the texture from the indicated filename.  If
 * primary_file_num_channels is not 0, it specifies the number of components
 * to downgrade the image to if it is greater than this number.
 *
 * If the filename has the extension .txo, this implicitly reads a texture
 * object instead of a filename (which replaces all of the texture
 * properties).  In this case, all the rest of the parameters are ignored, and
 * the filename should not contain any hash marks; just the one named file
 * will be read, since a single .txo file can contain all pages and mipmaps
 * necessary to define a texture.
 *
 * If alpha_fullpath is not empty, it specifies the name of a file from which
 * to retrieve the alpha.  In this case, alpha_file_channel represents the
 * numeric channel of this image file to use as the resulting texture's alpha
 * channel; usually, this is 0 to indicate the grayscale combination of r, g,
 * b; or it may be a one-based channel number, e.g.  1 for the red channel, 2
 * for the green channel, and so on.
 *
 * If read pages is false, then z indicates the page number into which this
 * image will be assigned.  Normally this is 0 for the first (or only) page of
 * the texture.  3-D textures have one page for each level of depth, and cube
 * map textures always have six pages.
 *
 * If read_pages is true, multiple images will be read at once, one for each
 * page of a cube map or a 3-D texture.  In this case, the filename should
 * contain a sequence of one or more hash marks ("#") which will be filled in
 * with the z value of each page, zero-based.  In this case, the z parameter
 * indicates the maximum z value that will be loaded, or 0 to load all
 * filenames that exist.
 *
 * If read_mipmaps is false, then n indicates the mipmap level to which this
 * image will be assigned.  Normally this is 0 for the base texture image, but
 * it is possible to load custom mipmap levels into the later images.  After
 * the base texture image is loaded (thus defining the size of the texture),
 * you can call get_expected_num_mipmap_levels() to determine the maximum
 * sensible value for n.
 *
 * If read_mipmaps is true, multiple images will be read as above, but this
 * time the images represent the different mipmap levels of the texture image.
 * In this case, the n parameter indicates the maximum n value that will be
 * loaded, or 0 to load all filenames that exist (up to the expected number of
 * mipmap levels).
 *
 * If both read_pages and read_mipmaps is true, then both sequences will be
 * read; the filename should contain two sequences of hash marks, separated by
 * some character such as a hyphen, underscore, or dot.  The first hash mark
 * sequence will be filled in with the mipmap level, while the second hash
 * mark sequence will be the page index.
 *
 * This method implicitly sets keep_ram_image to false.
 */
683
bool Texture::read(Filename const &fullpath, LoaderOptions const &options = LoaderOptions());
bool Texture::read(Filename const &fullpath, Filename const &alpha_fullpath, int primary_file_num_channels, int alpha_file_channel, LoaderOptions const &options = LoaderOptions());
bool Texture::read(Filename const &fullpath, int z, int n, bool read_pages, bool read_mipmaps, LoaderOptions const &options = LoaderOptions());
bool Texture::read(Filename const &fullpath, Filename const &alpha_fullpath, int primary_file_num_channels, int alpha_file_channel, int z, int n, bool read_pages, bool read_mipmaps, BamCacheRecord *record = nullptr, LoaderOptions const &options = LoaderOptions());

2578 5 write 0 4 3276 14 Texture::write 0 3 1013 1014 1015 2416
/**
 * Writes the texture to the named filename.
 */

/**
 * Writes a single page or mipmap level to a single file, or automatically
 * writes a series of pages and/or mipmap levels to a numbered series of
 * files.
 *
 * If the filename ends in the extension .txo, this implicitly writes a Panda
 * texture object (.txo) instead of an image file.  In this case, the
 * remaining parameters are ignored, and only one file is written, which will
 * contain all of the pages and resident mipmap levels in the texture.
 *
 * If write_pages is false, then z indicates the page number to write.  3-D
 * textures have one page number for each level of depth; cube maps have six
 * pages number 0 through 5.  Other kinds of textures have only one page,
 * numbered 0.  If there are multiple views, the range of z is increased; the
 * total range is [0, get_num_pages()).
 *
 * If write_pages is true, then all pages of the texture will be written.  In
 * this case z is ignored, and the filename should contain a sequence of hash
 * marks ("#") which will be filled in with the page index number.
 *
 * If write_mipmaps is false, then n indicates the mipmap level number to
 * write.  Normally, this is 0, for the base texture image.  Normally, the
 * mipmap levels of a texture are not available in RAM (they are generated
 * automatically by the graphics card). However, if you have the mipmap levels
 * available, for instance because you called generate_ram_mipmap_images() to
 * generate them internally, or you called
 * GraphicsEngine::extract_texture_data() to retrieve them from the graphics
 * card, then you may write out each mipmap level with this parameter.
 *
 * If write_mipmaps is true, then all mipmap levels of the texture will be
 * written.  In this case n is ignored, and the filename should contain a
 * sequence of hash marks ("#") which will be filled in with the mipmap level
 * number.
 *
 * If both write_pages and write_mipmaps is true, then all pages and all
 * mipmap levels will be written.  In this case, the filename should contain
 * two different sequences of hash marks, separated by a character such as a
 * hyphen, underscore, or dot.  The first hash mark sequence will be filled in
 * with the mipmap level, while the second hash mark sequence will be the page
 * index.
 */

/**
 * Not to be confused with write(Filename), this method simply describes the
 * texture properties.
 */
223
inline bool Texture::write(Filename const &fullpath);
inline bool Texture::write(Filename const &fullpath, int z, int n, bool write_pages, bool write_mipmaps);
void Texture::write(std::ostream &out, int indent_level) const;

2579 8 read_txo 0 4 3276 17 Texture::read_txo 0 1 1016 380
/**
 * Reads the texture from a Panda texture object.  This defines the complete
 * Texture specification, including the image data as well as all texture
 * properties.  This only works if the txo file contains a static Texture
 * image, as opposed to a subclass of Texture such as a movie texture.
 *
 * Pass a real filename if it is available, or empty string if it is not.
 */
75
bool Texture::read_txo(std::istream &in, std::string const &filename = "");

2580 13 make_from_txo 0 4 3276 22 Texture::make_from_txo 0 1 1017 310
/**
 * Constructs a new Texture object from the txo file.  This is similar to
 * Texture::read_txo(), but it constructs and returns a new object, which
 * allows it to return a subclass of Texture (for instance, a movie texture).
 *
 * Pass a real filename if it is available, or empty string if it is not.
 */
103
static PointerTo< Texture > Texture::make_from_txo(std::istream &in, std::string const &filename = "");

2581 9 write_txo 0 4 3276 18 Texture::write_txo 0 1 1018 214
/**
 * Writes the texture to a Panda texture object.  This defines the complete
 * Texture specification, including the image data as well as all texture
 * properties.
 *
 * The filename is just for reference.
 */
83
bool Texture::write_txo(std::ostream &out, std::string const &filename = "") const;

2582 8 read_dds 0 4 3276 17 Texture::read_dds 0 1 1019 381
/**
 * Reads the texture from a DDS file object.  This is a Microsoft-defined file
 * format; it is similar in principle to a txo object, in that it is designed
 * to contain the texture image in a form as similar as possible to its
 * runtime image, and it can contain mipmaps, pre-compressed textures, and so
 * on.
 *
 * As with read_txo, the filename is just for reference.
 */
101
bool Texture::read_dds(std::istream &in, std::string const &filename = "", bool header_only = false);

2583 8 read_ktx 0 4 3276 17 Texture::read_ktx 0 1 1020 379
/**
 * Reads the texture from a KTX file object.  This is a Khronos-defined file
 * format; it is similar in principle to a dds object, in that it is designed
 * to contain the texture image in a form as similar as possible to its
 * runtime image, and it can contain mipmaps, pre-compressed textures, and so
 * on.
 *
 * As with read_dds, the filename is just for reference.
 */
101
bool Texture::read_ktx(std::istream &in, std::string const &filename = "", bool header_only = false);

2584 4 load 0 4 3276 13 Texture::load 0 4 1021 1022 1023 1024 292
/**
 * Replaces the texture with the indicated image.
 */

/**
 * Stores the indicated image in the given page and mipmap level.  See read().
 */

/**
 * Replaces the texture with the indicated image.
 */

/**
 * Stores the indicated image in the given page and mipmap level.  See read().
 */
419
inline bool Texture::load(PNMImage const &pnmimage, LoaderOptions const &options = LoaderOptions());
inline bool Texture::load(PNMImage const &pnmimage, int z, int n, LoaderOptions const &options = LoaderOptions());
inline bool Texture::load(PfmFile const &pfm, LoaderOptions const &options = LoaderOptions());
inline bool Texture::load(PfmFile const &pfm, int z, int n, LoaderOptions const &options = LoaderOptions());

2585 14 load_sub_image 0 4 3276 23 Texture::load_sub_image 0 1 1025 328
/**
 * Stores the indicated image in a region of the texture.  The texture
 * properties remain unchanged.  This can be more efficient than updating an
 * entire texture, but has a few restrictions: for one, you must ensure that
 * the texture is still in RAM (eg.  using set_keep_ram_image) and it may not
 * be compressed.
 */
98
inline bool Texture::load_sub_image(PNMImage const &pnmimage, int x, int y, int z = 0, int n = 0);

2586 5 store 0 4 3276 14 Texture::store 0 4 1026 1027 1028 1029 344
/**
 * Saves the texture to the indicated PNMImage, but does not write it to disk.
 */

/**
 * Saves the indicated page and mipmap level of the texture to the PNMImage.
 */

/**
 * Saves the texture to the indicated PfmFile, but does not write it to disk.
 */

/**
 * Saves the indicated page and mipmap level of the texture to the PfmFile.
 */
231
inline bool Texture::store(PNMImage &pnmimage) const;
inline bool Texture::store(PNMImage &pnmimage, int z, int n) const;
inline bool Texture::store(PfmFile &pfm) const;
inline bool Texture::store(PfmFile &pfm, int z, int n) const;

2587 6 reload 0 4 3276 15 Texture::reload 0 1 1030 269
/**
 * Re-reads the Texture from its disk file.  Useful when you know the image on
 * disk has recently changed, and you want to update the Texture image.
 *
 * Returns true on success, false on failure (in which case, the Texture may
 * or may not still be valid).
 */
34
inline bool Texture::reload(void);

2588 12 load_related 0 4 3276 21 Texture::load_related 0 1 1031 189
/**
 * Loads a texture whose filename is derived by concatenating a suffix to the
 * filename of this texture.  May return NULL, for example, if this texture
 * doesn't have a filename.
 */
65
Texture *Texture::load_related(InternalName const *suffix) const;

2589 12 has_filename 0 4 3276 21 Texture::has_filename 0 1 1032 94
/**
 * Returns true if the filename has been set and is available.  See
 * set_filename().
 */
46
inline bool Texture::has_filename(void) const;

2590 12 get_filename 0 4 3276 21 Texture::get_filename 0 1 1033 130
/**
 * Returns the filename that has been set.  This is the name of the file as it
 * was requested.  Also see get_fullpath().
 */
57
inline Filename const &Texture::get_filename(void) const;

2591 12 set_filename 0 4 3276 21 Texture::set_filename 0 1 1034 376
/**
 * Sets the name of the file that contains the image's contents.  Normally,
 * this is set automatically when the image is loaded, for instance via
 * Texture::read().
 *
 * The Texture's get_name() function used to return the filename, but now
 * returns just the basename (without the extension), which is a more useful
 * name for identifying an image in show code.
 */
60
inline void Texture::set_filename(Filename const &filename);

2592 14 clear_filename 0 4 3276 23 Texture::clear_filename 0 1 1035 79
/**
 * Removes the filename, if it was previously set.  See set_filename().
 */
42
inline void Texture::clear_filename(void);

2593 18 has_alpha_filename 0 4 3276 27 Texture::has_alpha_filename 0 1 1036 106
/**
 * Returns true if the alpha_filename has been set and is available.  See
 * set_alpha_filename().
 */
52
inline bool Texture::has_alpha_filename(void) const;

2594 18 get_alpha_filename 0 4 3276 27 Texture::get_alpha_filename 0 1 1037 214
/**
 * Returns the alpha_filename that has been set.  If this is set, it
 * represents the name of the alpha component, which is stored in a separate
 * file.  See also get_filename(), and get_alpha_fullpath().
 */
63
inline Filename const &Texture::get_alpha_filename(void) const;

2595 18 set_alpha_filename 0 4 3276 27 Texture::set_alpha_filename 0 1 1038 555
/**
 * Sets the name of the file that contains the image's alpha channel contents.
 * Normally, this is set automatically when the image is loaded, for instance
 * via Texture::read().
 *
 * The Texture's get_filename() function returns the name of the image file
 * that was loaded into the buffer.  In the case where a texture specified two
 * separate files to load, a 1- or 3-channel color image and a 1-channel alpha
 * image, the alpha_filename is updated to contain the name of the image file
 * that was loaded into the buffer's alpha channel.
 */
72
inline void Texture::set_alpha_filename(Filename const &alpha_filename);

2596 20 clear_alpha_filename 0 4 3276 29 Texture::clear_alpha_filename 0 1 1039 94
/**
 * Removes the alpha filename, if it was previously set.  See
 * set_alpha_filename().
 */
48
inline void Texture::clear_alpha_filename(void);

2597 12 has_fullpath 0 4 3276 21 Texture::has_fullpath 0 1 1040 94
/**
 * Returns true if the fullpath has been set and is available.  See
 * set_fullpath().
 */
46
inline bool Texture::has_fullpath(void) const;

2598 12 get_fullpath 0 4 3276 21 Texture::get_fullpath 0 1 1041 135
/**
 * Returns the fullpath that has been set.  This is the full path to the file
 * as it was found along the texture search path.
 */
57
inline Filename const &Texture::get_fullpath(void) const;

2599 12 set_fullpath 0 4 3276 21 Texture::set_fullpath 0 1 1042 216
/**
 * Sets the full pathname to the file that contains the image's contents, as
 * found along the search path.  Normally, this is set automatically when the
 * image is loaded, for instance via Texture::read().
 */
60
inline void Texture::set_fullpath(Filename const &fullpath);

2600 14 clear_fullpath 0 4 3276 23 Texture::clear_fullpath 0 1 1043 79
/**
 * Removes the fullpath, if it was previously set.  See set_fullpath().
 */
42
inline void Texture::clear_fullpath(void);

2601 18 has_alpha_fullpath 0 4 3276 27 Texture::has_alpha_fullpath 0 1 1044 106
/**
 * Returns true if the alpha_fullpath has been set and is available.  See
 * set_alpha_fullpath().
 */
52
inline bool Texture::has_alpha_fullpath(void) const;

2602 18 get_alpha_fullpath 0 4 3276 27 Texture::get_alpha_fullpath 0 1 1045 168
/**
 *
 * Returns the alpha_fullpath that has been set.  This is the full path to the
 * alpha part of the image file as it was found along the texture search path.
 */
63
inline Filename const &Texture::get_alpha_fullpath(void) const;

2603 18 set_alpha_fullpath 0 4 3276 27 Texture::set_alpha_fullpath 0 1 1046 230
/**
 * Sets the full pathname to the file that contains the image's alpha channel
 * contents, as found along the search path.  Normally, this is set
 * automatically when the image is loaded, for instance via Texture::read().
 */
72
inline void Texture::set_alpha_fullpath(Filename const &alpha_fullpath);

2604 20 clear_alpha_fullpath 0 4 3276 29 Texture::clear_alpha_fullpath 0 1 1047 94
/**
 * Removes the alpha fullpath, if it was previously set.  See
 * set_alpha_fullpath().
 */
48
inline void Texture::clear_alpha_fullpath(void);

2605 10 get_x_size 0 4 3276 19 Texture::get_x_size 0 1 1048 60
/**
 * Returns the width of the texture image in texels.
 */
43
inline int Texture::get_x_size(void) const;

2606 10 set_x_size 0 4 3276 19 Texture::set_x_size 0 1 1049 132
/**
 * Changes the x size indicated for the texture.  This also implicitly unloads
 * the texture if it has already been loaded.
 */
44
inline void Texture::set_x_size(int x_size);

2607 10 get_y_size 0 4 3276 19 Texture::get_y_size 0 1 1050 100
/**
 * Returns the height of the texture image in texels.  For a 1-d texture, this
 * will be 1.
 */
43
inline int Texture::get_y_size(void) const;

2608 10 set_y_size 0 4 3276 19 Texture::set_y_size 0 1 1051 132
/**
 * Changes the y size indicated for the texture.  This also implicitly unloads
 * the texture if it has already been loaded.
 */
44
inline void Texture::set_y_size(int y_size);

2609 10 get_z_size 0 4 3276 19 Texture::get_z_size 0 1 1052 154
/**
 * Returns the depth of the texture image in texels.  For a 1-d texture or 2-d
 * texture, this will be 1. For a cube map texture, this will be 6.
 */
43
inline int Texture::get_z_size(void) const;

2610 10 set_z_size 0 4 3276 19 Texture::set_z_size 0 1 1053 132
/**
 * Changes the z size indicated for the texture.  This also implicitly unloads
 * the texture if it has already been loaded.
 */
44
inline void Texture::set_z_size(int z_size);

2611 13 get_num_views 0 4 3276 22 Texture::get_num_views 0 1 1054 426
/**
 * Returns the number of "views" in the texture.  A view is a completely
 * separate image stored within the Texture object.  Most textures have only
 * one view, but a stereo texture, for instance, may have two views, a left
 * and a right image.  Other uses for multiple views are not yet defined.
 *
 * If this value is greater than one, the additional views are accessed as
 * additional pages beyond get_z_size().
 */
46
inline int Texture::get_num_views(void) const;

2612 13 set_num_views 0 4 3276 22 Texture::set_num_views 0 1 1055 503
/**
 * Sets the number of "views" within a texture.  A view is a completely
 * separate image stored within the Texture object.  Most textures have only
 * one view, but a stereo texture, for instance, may have two views, a left
 * and a right image.  Other uses for multiple views are not yet defined.
 *
 * If this value is greater than one, the additional views are accessed as
 * additional pages beyond get_z_size().
 *
 * This also implicitly unloads the texture if it has already been loaded.
 */
50
inline void Texture::set_num_views(int num_views);

2613 13 get_num_pages 0 4 3276 22 Texture::get_num_pages 0 1 1056 318
/**
 * Returns the total number of pages in the texture.  Each "page" is a 2-d
 * texture image within the larger image--a face of a cube map, or a level of
 * a 3-d texture.  Normally, get_num_pages() is the same as get_z_size().
 * However, in a multiview texture, this returns get_z_size() *
 * get_num_views().
 */
46
inline int Texture::get_num_pages(void) const;

2614 18 get_num_components 0 4 3276 27 Texture::get_num_components 0 1 1057 194
/**
 * Returns the number of color components for each texel of the texture image.
 * This is 3 for an rgb texture or 4 for an rgba texture; it may also be 1 or
 * 2 for a grayscale texture.
 */
51
inline int Texture::get_num_components(void) const;

2615 19 get_component_width 0 4 3276 28 Texture::get_component_width 0 1 1058 141
/**
 * Returns the number of bytes stored for each color component of a texel.
 * Typically this is 1, but it may be 2 for 16-bit texels.
 */
52
inline int Texture::get_component_width(void) const;

2616 16 get_texture_type 0 4 3276 25 Texture::get_texture_type 0 1 1059 61
/**
 * Returns the overall interpretation of the texture.
 */
66
inline Texture::TextureType Texture::get_texture_type(void) const;

2617 14 get_usage_hint 0 4 3276 23 Texture::get_usage_hint 0 1 1060 114
/**
 * Returns the usage hint specified for buffer textures, or UH_unspecified for
 * all other texture types.
 */
64
inline GeomEnums::UsageHint Texture::get_usage_hint(void) const;

2618 10 get_format 0 4 3276 19 Texture::get_format 0 1 1061 153
/**
 * Returns the format of the texture, which represents both the semantic
 * meaning of the texels and, to some extent, their storage information.
 */
55
inline Texture::Format Texture::get_format(void) const;

2619 10 set_format 0 4 3276 19 Texture::set_format 0 1 1062 112
/**
 * Changes the format value for the texture components.  This implicitly sets
 * num_components as well.
 */
56
inline void Texture::set_format(Texture::Format format);

2620 18 get_component_type 0 4 3276 27 Texture::get_component_type 0 1 1063 79
/**
 * Returns the numeric interpretation of each component of the texture.
 */
70
inline Texture::ComponentType Texture::get_component_type(void) const;

2621 18 set_component_type 0 4 3276 27 Texture::set_component_type 0 1 1064 111
/**
 * Changes the data value for the texture components.  This implicitly sets
 * component_width as well.
 */
79
inline void Texture::set_component_type(Texture::ComponentType component_type);

2622 10 get_wrap_u 0 4 3276 19 Texture::get_wrap_u 0 1 1065 208
/**
 * Returns the wrap mode of the texture in the U direction.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
62
inline SamplerState::WrapMode Texture::get_wrap_u(void) const;

2623 10 set_wrap_u 0 4 3276 19 Texture::set_wrap_u 0 1 1066 349
/**
 * This setting determines what happens when the texture is sampled with a U
 * value outside the range 0.0-1.0.  The default is WM_repeat, which indicates
 * that the texture should repeat indefinitely.
 *
 * This sets the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
56
inline void Texture::set_wrap_u(Texture::WrapMode wrap);

2624 10 get_wrap_v 0 4 3276 19 Texture::get_wrap_v 0 1 1067 208
/**
 * Returns the wrap mode of the texture in the V direction.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
62
inline SamplerState::WrapMode Texture::get_wrap_v(void) const;

2625 10 set_wrap_v 0 4 3276 19 Texture::set_wrap_v 0 1 1068 349
/**
 * This setting determines what happens when the texture is sampled with a V
 * value outside the range 0.0-1.0.  The default is WM_repeat, which indicates
 * that the texture should repeat indefinitely.
 *
 * This sets the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
56
inline void Texture::set_wrap_v(Texture::WrapMode wrap);

2626 10 get_wrap_w 0 4 3276 19 Texture::get_wrap_w 0 1 1069 257
/**
 * Returns the wrap mode of the texture in the W direction.  This is the depth
 * direction of 3-d textures.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
62
inline SamplerState::WrapMode Texture::get_wrap_w(void) const;

2627 10 set_wrap_w 0 4 3276 19 Texture::set_wrap_w 0 1 1070 200
/**
 * The W wrap direction is only used for 3-d textures.
 *
 * This sets the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
56
inline void Texture::set_wrap_w(Texture::WrapMode wrap);

2628 13 get_minfilter 0 4 3276 22 Texture::get_minfilter 0 1 1071 355
/**
 * Returns the filter mode of the texture for minification.  If this is one of
 * the mipmap constants, then the texture requires mipmaps.  This may return
 * FT_default; see also get_effective_minfilter().
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
67
inline SamplerState::FilterType Texture::get_minfilter(void) const;

2629 23 get_effective_minfilter 0 4 3276 32 Texture::get_effective_minfilter 0 1 1072 341
/**
 * Returns the filter mode of the texture for minification, with special
 * treatment for FT_default.  This will normally not return FT_default, unless
 * there is an error in the config file.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
77
inline SamplerState::FilterType Texture::get_effective_minfilter(void) const;

2630 13 set_minfilter 0 4 3276 22 Texture::set_minfilter 0 1 1073 239
/**
 * Sets the filtering method that should be used when viewing the texture from
 * a distance.
 *
 * This sets the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
63
inline void Texture::set_minfilter(Texture::FilterType filter);

2631 13 get_magfilter 0 4 3276 22 Texture::get_magfilter 0 1 1074 320
/**
 * Returns the filter mode of the texture for magnification.  The mipmap
 * constants are invalid here.  This may return FT_default; see also
 * get_effective_minfilter().
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
67
inline SamplerState::FilterType Texture::get_magfilter(void) const;

2632 23 get_effective_magfilter 0 4 3276 32 Texture::get_effective_magfilter 0 1 1075 342
/**
 * Returns the filter mode of the texture for magnification, with special
 * treatment for FT_default.  This will normally not return FT_default, unless
 * there is an error in the config file.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
77
inline SamplerState::FilterType Texture::get_effective_magfilter(void) const;

2633 13 set_magfilter 0 4 3276 22 Texture::set_magfilter 0 1 1076 232
/**
 * Sets the filtering method that should be used when viewing the texture up
 * close.
 *
 * This sets the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
63
inline void Texture::set_magfilter(Texture::FilterType filter);

2634 22 get_anisotropic_degree 0 4 3276 31 Texture::get_anisotropic_degree 0 1 1077 339
/**
 * Returns the degree of anisotropic filtering that should be applied to the
 * texture.  This value may return 0, indicating the default value; see also
 * get_effective_anisotropic_degree.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
55
inline int Texture::get_anisotropic_degree(void) const;

2635 32 get_effective_anisotropic_degree 0 4 3276 41 Texture::get_effective_anisotropic_degree 0 1 1078 325
/**
 * Returns the degree of anisotropic filtering that should be applied to the
 * texture.  This value will normally not return 0, unless there is an error
 * in the config file.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
65
inline int Texture::get_effective_anisotropic_degree(void) const;

2636 22 set_anisotropic_degree 0 4 3276 31 Texture::set_anisotropic_degree 0 1 1079 548
/**
 * Specifies the level of anisotropic filtering to apply to the texture.  Set
 * this 0 to indicate the default value, which is specified in the texture-
 * anisotropic-degree config variable.
 *
 * To explicitly disable anisotropic filtering, set this value to 1.  To
 * explicitly enable anisotropic filtering, set it to a value higher than 1;
 * larger numbers indicate greater degrees of filtering.
 *
 * This sets the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
68
inline void Texture::set_anisotropic_degree(int anisotropic_degree);

2637 16 get_border_color 0 4 3276 25 Texture::get_border_color 0 1 1080 327
/**
 * Returns the solid color of the texture's border.  Some OpenGL
 * implementations use a border for tiling textures; in Panda, it is only used
 * for specifying the clamp color.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
52
inline LColor Texture::get_border_color(void) const;

2638 16 set_border_color 0 4 3276 25 Texture::set_border_color 0 1 1081 326
/**
 * Specifies the solid color of the texture's border.  Some OpenGL
 * implementations use a border for tiling textures; in Panda, it is only used
 * for specifying the clamp color.
 *
 * This sets the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */
59
inline void Texture::set_border_color(LColor const &color);

2639 15 has_compression 0 4 3276 24 Texture::has_compression 0 1 1082 430
/**
 * Returns true if the texture indicates it wants to be compressed, either
 * with CM_on or higher, or CM_default and compressed-textures is true.
 *
 * If true returned, this is not a guarantee that the texture is actually
 * successfully compressed on the GSG.  It may be that the GSG does not
 * support the requested compression mode, in which case the texture may
 * actually be stored uncompressed in texture memory.
 */
49
inline bool Texture::has_compression(void) const;

2640 15 get_compression 0 4 3276 24 Texture::get_compression 0 1 1083 431
/**
 * Returns the compression mode requested for this particular texture, or
 * CM_off if the texture is not to be compressed.
 *
 * If a value other than CM_off is returned, this is not a guarantee that the
 * texture is actually successfully compressed on the GSG.  It may be that the
 * GSG does not support the requested compression mode, in which case the
 * texture may actually be stored uncompressed in texture memory.
 */
69
inline Texture::CompressionMode Texture::get_compression(void) const;

2641 15 set_compression 0 4 3276 24 Texture::set_compression 0 1 1084 645
/**
 * Requests that this particular Texture be compressed when it is loaded into
 * texture memory.
 *
 * This refers to the internal compression of the texture image within texture
 * memory; it is not related to jpeg or png compression, which are disk file
 * compression formats.  The actual disk file that generated this texture may
 * be stored in a compressed or uncompressed format supported by Panda; it
 * will be decompressed on load, and then recompressed by the graphics API if
 * this parameter is not CM_off.
 *
 * If the GSG does not support this texture compression mode, the texture will
 * silently be loaded uncompressed.
 */
75
inline void Texture::set_compression(Texture::CompressionMode compression);

2642 21 get_render_to_texture 0 4 3276 30 Texture::get_render_to_texture 0 1 1085 378
/**
 * Returns a flag on the texture that indicates whether the texture is
 * intended to be used as a direct-render target, by binding a framebuffer to
 * a texture and rendering directly into the texture.
 *
 * Normally, a user should not need to set this flag directly; it is set
 * automatically by the low-level display code when a texture is bound to a
 * framebuffer.
 */
55
inline bool Texture::get_render_to_texture(void) const;

2643 21 set_render_to_texture 0 4 3276 30 Texture::set_render_to_texture 0 1 1086 539
/**
 * Sets a flag on the texture that indicates whether the texture is intended
 * to be used as a direct-render target, by binding a framebuffer to a texture
 * and rendering directly into the texture.
 *
 * This controls some low-level choices made about the texture object itself.
 * For instance, compressed textures are disallowed when this flag is set
 * true.
 *
 * Normally, a user should not need to set this flag directly; it is set
 * automatically by the low-level display code when a texture is bound to a
 * framebuffer.
 */
67
inline void Texture::set_render_to_texture(bool render_to_texture);

2644 19 get_default_sampler 0 4 3276 28 Texture::get_default_sampler 0 1 1087 222
/**
 * This returns the default sampler state for this texture, containing the
 * wrap and filter properties specified on the texture level; it may still be
 * overridden by a sampler state specified at a higher level.
 */
68
inline SamplerState const &Texture::get_default_sampler(void) const;

2645 19 set_default_sampler 0 4 3276 28 Texture::set_default_sampler 0 1 1088 502
/**
 * This sets the default sampler state for this texture, containing the wrap
 * and filter properties specified on the texture level; it may still be
 * overridden by a sampler state specified at a higher level.  This
 * encompasses the settings for get_wrap_u, get_minfilter,
 * get_anisotropic_degree, etc.
 *
 * This makes a copy of the SamplerState object, so future modifications of
 * the same SamplerState will have no effect on this texture unless you call
 * set_default_sampler again.
 */
70
inline void Texture::set_default_sampler(SamplerState const &sampler);

2646 12 uses_mipmaps 0 4 3276 21 Texture::uses_mipmaps 0 1 1089 117
/**
 * Returns true if the minfilter settings on this texture indicate the use of
 * mipmapping, false otherwise.
 */
46
inline bool Texture::uses_mipmaps(void) const;

2647 17 get_quality_level 0 4 3276 26 Texture::get_quality_level 0 1 1090 149
/**
 * Returns the current quality_level hint.  See set_quality_level().  This
 * value may return QL_default; see get_effective_quality_level().
 */
68
inline Texture::QualityLevel Texture::get_quality_level(void) const;

2648 27 get_effective_quality_level 0 4 3276 36 Texture::get_effective_quality_level 0 1 1091 235
/**
 * Returns the current quality_level hint, or the global default quality_level
 * if this texture doesn't specify a quality level.  This value will not
 * normally return QL_default (unless there is an error in the config file)
 */
78
inline Texture::QualityLevel Texture::get_effective_quality_level(void) const;

2649 17 set_quality_level 0 4 3276 26 Texture::set_quality_level 0 1 1092 264
/**
 * Sets a hint to the renderer about the desired performance / quality
 * tradeoff for this particular texture.  This is most useful for the
 * tinydisplay software renderer; for normal, hardware-accelerated renderers,
 * this may have little or no effect.
 */
76
inline void Texture::set_quality_level(Texture::QualityLevel quality_level);

2650 30 get_expected_num_mipmap_levels 0 4 3276 39 Texture::get_expected_num_mipmap_levels 0 1 1093 249
/**
 * Returns the number of mipmap levels that should be defined for this
 * texture, given the texture's size.
 *
 * Note that this returns a number appropriate for mipmapping, even if the
 * texture does not currently have mipmapping enabled.
 */
63
inline int Texture::get_expected_num_mipmap_levels(void) const;

2651 26 get_expected_mipmap_x_size 0 4 3276 35 Texture::get_expected_mipmap_x_size 0 1 1094 100
/**
 * Returns the x_size that the nth mipmap level should have, based on the
 * texture's size.
 */
60
inline int Texture::get_expected_mipmap_x_size(int n) const;

2652 26 get_expected_mipmap_y_size 0 4 3276 35 Texture::get_expected_mipmap_y_size 0 1 1095 100
/**
 * Returns the y_size that the nth mipmap level should have, based on the
 * texture's size.
 */
60
inline int Texture::get_expected_mipmap_y_size(int n) const;

2653 26 get_expected_mipmap_z_size 0 4 3276 35 Texture::get_expected_mipmap_z_size 0 1 1096 100
/**
 * Returns the z_size that the nth mipmap level should have, based on the
 * texture's size.
 */
60
inline int Texture::get_expected_mipmap_z_size(int n) const;

2654 29 get_expected_mipmap_num_pages 0 4 3276 38 Texture::get_expected_mipmap_num_pages 0 1 1097 280
/**
 * Returns the total number of pages that the nth mipmap level should have,
 * based on the texture's size.  This is usually the same as
 * get_expected_mipmap_z_size(), except for a multiview texture, in which case
 * it is get_expected_mipmap_z_size() * get_num_views().
 */
63
inline int Texture::get_expected_mipmap_num_pages(int n) const;

2655 13 has_ram_image 0 4 3276 22 Texture::has_ram_image 0 1 1098 1090
/**
 * Returns true if the Texture has its image contents available in main RAM,
 * false if it exists only in texture memory or in the prepared GSG context.
 *
 * Note that this has nothing to do with whether get_ram_image() will fail or
 * not.  Even if has_ram_image() returns false, get_ram_image() may still
 * return a valid RAM image, because get_ram_image() will automatically load
 * the texture from disk if necessary.  The only thing has_ram_image() tells
 * you is whether the texture is available right now without hitting the disk
 * first.
 *
 * Note also that if an application uses only one GSG, it may appear that
 * has_ram_image() returns true if the texture has not yet been loaded by the
 * GSG, but this correlation is not true in general and should not be depended
 * on.  Specifically, if an application ever uses multiple GSG's in its
 * lifetime (for instance, by opening more than one window, or by closing its
 * window and opening another one later), then has_ram_image() may well return
 * false on textures that have never been loaded on the current GSG.
 */
47
inline bool Texture::has_ram_image(void) const;

2656 26 has_uncompressed_ram_image 0 4 3276 35 Texture::has_uncompressed_ram_image 0 1 1099 146
/**
 * Returns true if the Texture has its image contents available in main RAM
 * and is uncompressed, false otherwise.  See has_ram_image().
 */
60
inline bool Texture::has_uncompressed_ram_image(void) const;

2657 20 might_have_ram_image 0 4 3276 29 Texture::might_have_ram_image 0 1 1100 284
/**
 * Returns true if the texture's image contents are currently available in
 * main RAM, or there is reason to believe it can be loaded on demand.  That
 * is, this function returns a "best guess" as to whether get_ram_image() will
 * succeed without actually calling it first.
 */
54
inline bool Texture::might_have_ram_image(void) const;

2658 18 get_ram_image_size 0 4 3276 27 Texture::get_ram_image_size 0 1 1101 141
/**
 * Returns the total number of bytes used by the in-memory image, across all
 * pages and views, or 0 if there is no in-memory image.
 */
59
inline std::size_t Texture::get_ram_image_size(void) const;

2659 17 get_ram_view_size 0 4 3276 26 Texture::get_ram_view_size 0 1 1102 208
/**
 * Returns the number of bytes used by the in-memory image per view, or 0 if
 * there is no in-memory image.  Since each view is a stack of z_size pages,
 * this is get_z_size() * get_ram_page_size().
 */
58
inline std::size_t Texture::get_ram_view_size(void) const;

2660 17 get_ram_page_size 0 4 3276 26 Texture::get_ram_page_size 0 1 1103 345
/**
 * Returns the number of bytes used by the in-memory image per page, or 0 if
 * there is no in-memory image.
 *
 * For a non-compressed texture, this is the same as
 * get_expected_ram_page_size().  For a compressed texture, this may be a
 * smaller value.  (We do assume that all pages will be the same size on a
 * compressed texture).
 */
58
inline std::size_t Texture::get_ram_page_size(void) const;

2661 27 get_expected_ram_image_size 0 4 3276 36 Texture::get_expected_ram_image_size 0 1 1104 122
/**
 * Returns the number of bytes that *ought* to be used by the in-memory image,
 * based on the texture parameters.
 */
68
inline std::size_t Texture::get_expected_ram_image_size(void) const;

2662 26 get_expected_ram_page_size 0 4 3276 35 Texture::get_expected_ram_page_size 0 1 1105 178
/**
 * Returns the number of bytes that should be used per each Z page of the 3-d
 * texture.  For a 2-d or 1-d texture, this is the same as
 * get_expected_ram_image_size().
 */
67
inline std::size_t Texture::get_expected_ram_page_size(void) const;

2663 13 get_ram_image 0 4 3276 22 Texture::get_ram_image 0 1 1106 1159
/**
 * Returns the system-RAM image data associated with the texture.  If the
 * texture does not currently have an associated RAM image, and the texture
 * was generated by loading an image from a disk file (the most common case),
 * this forces the reload of the same texture.  This can happen if
 * keep_texture_ram is configured to false, and we have previously prepared
 * this texture with a GSG.
 *
 * Note that it is not correct to call has_ram_image() first to test whether
 * this function will fail.  A false return value from has_ram_image()
 * indicates only that get_ram_image() may need to reload the texture from
 * disk, which it will do automatically.  However, you can call
 * might_have_ram_image(), which will return true if the ram image exists, or
 * there is a reasonable reason to believe it can be loaded.
 *
 * On the other hand, it is possible that the texture cannot be found on disk
 * or is otherwise unavailable.  If that happens, this function will return
 * NULL. There is no way to predict with 100% accuracy whether get_ram_image()
 * will return NULL without calling it first; might_have_ram_image() is the
 * closest.
 */
47
inline CPTA_uchar Texture::get_ram_image(void);

2664 25 get_ram_image_compression 0 4 3276 34 Texture::get_ram_image_compression 0 1 1107 338
/**
 * Returns the compression mode in which the ram image is already stored pre-
 * compressed.  If this is other than CM_off, you cannot rely on the contents
 * of the ram image to be anything predicatable (it will not be an array of x
 * by y pixels, and it probably won't have the same length as
 * get_expected_ram_image_size()).
 */
79
inline Texture::CompressionMode Texture::get_ram_image_compression(void) const;

2665 26 get_uncompressed_ram_image 0 4 3276 35 Texture::get_uncompressed_ram_image 0 1 1108 586
/**
 * Returns the system-RAM image associated with the texture, in an
 * uncompressed form if at all possible.
 *
 * If get_ram_image_compression() is CM_off, then the system-RAM image is
 * already uncompressed, and this returns the same thing as get_ram_image().
 *
 * If get_ram_image_compression() is anything else, then the system-RAM image
 * is compressed.  In this case, the image will be reloaded from the
 * *original* file (not from the cache), in the hopes that an uncompressed
 * image will be found there.
 *
 * If an uncompressed image cannot be found, returns NULL.
 */
60
inline CPTA_uchar Texture::get_uncompressed_ram_image(void);

2666 16 get_ram_image_as 0 4 3276 25 Texture::get_ram_image_as 0 1 1109 1220
/**
 * Returns the uncompressed system-RAM image data associated with the texture.
 * Rather than just returning a pointer to the data, like
 * get_uncompressed_ram_image, this function first processes the data and
 * reorders the components using the specified format string, and places these
 * into a new char array.
 *
 * The 'format' argument should specify in which order the components of the
 * texture must be.  For example, valid format strings are "RGBA", "GA",
 * "ABRG" or "AAA".  A component can also be written as "0" or "1", which
 * means an empty/black or a full/white channel, respectively.
 *
 * This function is particularly useful to copy an image in-memory to a
 * different library (for example, PIL or wxWidgets) that require a different
 * component order than Panda's internal format, BGRA. Note, however, that
 * this conversion can still be too slow if you want to do it every frame, and
 * should thus be avoided for that purpose.
 *
 * The only requirement for the reordering is that an uncompressed image must
 * be available.  If the RAM image is compressed, it will attempt to re-load
 * the texture from disk, if it doesn't find an uncompressed image there, it
 * will return NULL.
 */
74
CPTA_uchar Texture::get_ram_image_as(std::string const &requested_format);

2667 16 modify_ram_image 0 4 3276 25 Texture::modify_ram_image 0 1 1110 246
/**
 * Returns a modifiable pointer to the system-RAM image.  This assumes the RAM
 * image should be uncompressed.  If the RAM image has been dumped, or is
 * stored compressed, creates a new one.
 *
 * This does *not* affect keep_ram_image.
 */
49
inline PTA_uchar Texture::modify_ram_image(void);

2668 14 make_ram_image 0 4 3276 23 Texture::make_ram_image 0 1 1111 198
/**
 * Discards the current system-RAM image for the texture, if any, and
 * allocates a new buffer of the appropriate size.  Returns the new buffer.
 *
 * This does *not* affect keep_ram_image.
 */
47
inline PTA_uchar Texture::make_ram_image(void);

2669 13 set_ram_image 0 4 3276 22 Texture::set_ram_image 0 1 1112 231
/**
 * Replaces the current system-RAM image with the new data.  If compression is
 * not CM_off, it indicates that the new data is already pre-compressed in the
 * indicated format.
 *
 * This does *not* affect keep_ram_image.
 */
130
void Texture::set_ram_image(PyObject *image, Texture::CompressionMode compression = ::Texture::CM_off, std::size_t page_size = 0);

2670 16 set_ram_image_as 0 4 3276 25 Texture::set_ram_image_as 0 1 1113 307
/**
 * Replaces the current system-RAM image with the new data, converting it
 * first if necessary from the indicated component-order format.  See
 * get_ram_image_as() for specifications about the format.  This method cannot
 * support compressed image data or sub-pages; use set_ram_image() for that.
 */
84
void Texture::set_ram_image_as(PyObject *image, std::string const &provided_format);

2671 15 clear_ram_image 0 4 3276 24 Texture::clear_ram_image 0 1 1114 49
/**
 * Discards the current system-RAM image.
 */
43
inline void Texture::clear_ram_image(void);

2672 18 set_keep_ram_image 0 4 3276 27 Texture::set_keep_ram_image 0 1 1115 476
/**
 * Sets the flag that indicates whether this Texture is eligible to have its
 * main RAM copy of the texture memory dumped when the texture is prepared for
 * rendering.
 *
 * This will be false for most textures, which can reload their images if
 * needed by rereading the input file.  However, textures that were generated
 * dynamically and cannot be easily reloaded will want to set this flag to
 * true, so that the texture will always keep its image copy around.
 */
61
inline void Texture::set_keep_ram_image(bool keep_ram_image);

2673 18 get_keep_ram_image 0 6 3276 27 Texture::get_keep_ram_image 0 1 1116 207
/**
 * Returns the flag that indicates whether this Texture is eligible to have
 * its main RAM copy of the texture memory dumped when the texture is prepared
 * for rendering.  See set_keep_ram_image().
 */
53
virtual bool Texture::get_keep_ram_image(void) const;

2674 12 is_cacheable 0 6 3276 21 Texture::is_cacheable 0 1 1117 200
/**
 * Returns true if there is enough information in this Texture object to write
 * it to the bam cache successfully, false otherwise.  For most textures, this
 * is the same as has_ram_image().
 */
47
virtual bool Texture::is_cacheable(void) const;

2675 12 __deepcopy__ 0 4 3276 21 Texture::__deepcopy__ 0 1 1118 0
65
PointerTo< Texture > Texture::__deepcopy__(PyObject *memo) const;

2676 18 compress_ram_image 0 4 3276 27 Texture::compress_ram_image 0 1 1119 802
/**
 * Attempts to compress the texture's RAM image internally, to a format
 * supported by the indicated GSG.  In order for this to work, the squish
 * library must have been compiled into Panda.
 *
 * If compression is CM_on, then an appropriate compression method that is
 * supported by the indicated GSG is automatically chosen.  If the GSG pointer
 * is NULL, any of the standard DXT1/3/5 compression methods will be used,
 * regardless of whether it is supported.
 *
 * If compression is any specific compression method, that method is used
 * regardless of whether the GSG supports it.
 *
 * quality_level determines the speed/quality tradeoff of the compression.  If
 * it is QL_default, the texture's own quality_level parameter is used.
 *
 * Returns true if successful, false otherwise.
 */
200
inline bool Texture::compress_ram_image(Texture::CompressionMode compression = ::Texture::CM_on, Texture::QualityLevel quality_level = ::Texture::QL_default, GraphicsStateGuardianBase *gsg = nullptr);

2677 20 uncompress_ram_image 0 4 3276 29 Texture::uncompress_ram_image 0 1 1120 279
/**
 * Attempts to uncompress the texture's RAM image internally.  In order for
 * this to work, the squish library must have been compiled into Panda, and
 * the ram image must be compressed in a format supported by squish.
 *
 * Returns true if successful, false otherwise.
 */
48
inline bool Texture::uncompress_ram_image(void);

2678 25 get_num_ram_mipmap_images 0 4 3276 34 Texture::get_num_ram_mipmap_images 0 1 1121 285
/**
 * Returns the maximum number of mipmap level images available in system
 * memory.  The actual number may be less than this (that is, there might be
 * gaps in the sequence); use has_ram_mipmap_image() to verify each level.
 *
 * Also see get_num_loadable_ram_mipmap_images().
 */
58
inline int Texture::get_num_ram_mipmap_images(void) const;

2679 20 has_ram_mipmap_image 0 4 3276 29 Texture::has_ram_mipmap_image 0 1 1122 317
/**
 * Returns true if the Texture has the nth mipmap level available in system
 * memory, false otherwise.  If the texture's minfilter mode requires
 * mipmapping (see uses_mipmaps()), and all the texture's mipmap levels are
 * not available when the texture is rendered, they will be generated
 * automatically.
 */
55
inline bool Texture::has_ram_mipmap_image(int n) const;

2680 34 get_num_loadable_ram_mipmap_images 0 4 3276 43 Texture::get_num_loadable_ram_mipmap_images 0 1 1123 558
/**
 * Returns the number of contiguous mipmap levels that exist in RAM, up until
 * the first gap in the sequence.  It is guaranteed that at least mipmap
 * levels [0, get_num_ram_mipmap_images()) exist.
 *
 * The number returned will never exceed the number of required mipmap images
 * based on the size of the texture and its filter mode.
 *
 * This method is different from get_num_ram_mipmap_images() in that it
 * returns only the number of mipmap levels that can actually be usefully
 * loaded, regardless of the actual number that may be stored.
 */
60
int Texture::get_num_loadable_ram_mipmap_images(void) const;

2681 25 has_all_ram_mipmap_images 0 4 3276 34 Texture::has_all_ram_mipmap_images 0 1 1124 149
/**
 * Returns true if all expected mipmap levels have been defined and exist in
 * the system RAM, or false if even one mipmap level is missing.
 */
59
inline bool Texture::has_all_ram_mipmap_images(void) const;

2682 25 get_ram_mipmap_image_size 0 4 3276 34 Texture::get_ram_mipmap_image_size 0 1 1125 148
/**
 * Returns the number of bytes used by the in-memory image for mipmap level n,
 * or 0 if there is no in-memory image for this mipmap level.
 */
67
inline std::size_t Texture::get_ram_mipmap_image_size(int n) const;

2683 24 get_ram_mipmap_view_size 0 4 3276 33 Texture::get_ram_mipmap_view_size 0 1 1126 542
/**
 * Returns the number of bytes used by the in-memory image per view for mipmap
 * level n, or 0 if there is no in-memory image for this mipmap level.
 *
 * A "view" is a collection of z_size pages for each mipmap level.  Most
 * textures have only one view, except for multiview or stereo textures.
 *
 * For a non-compressed texture, this is the same as
 * get_expected_ram_mipmap_view_size().  For a compressed texture, this may be
 * a smaller value.  (We do assume that all pages will be the same size on a
 * compressed texture).
 */
66
inline std::size_t Texture::get_ram_mipmap_view_size(int n) const;

2684 24 get_ram_mipmap_page_size 0 4 3276 33 Texture::get_ram_mipmap_page_size 0 1 1127 393
/**
 * Returns the number of bytes used by the in-memory image per page for mipmap
 * level n, or 0 if there is no in-memory image for this mipmap level.
 *
 * For a non-compressed texture, this is the same as
 * get_expected_ram_mipmap_page_size().  For a compressed texture, this may be
 * a smaller value.  (We do assume that all pages will be the same size on a
 * compressed texture).
 */
66
inline std::size_t Texture::get_ram_mipmap_page_size(int n) const;

2685 34 get_expected_ram_mipmap_image_size 0 4 3276 43 Texture::get_expected_ram_mipmap_image_size 0 1 1128 141
/**
 * Returns the number of bytes that *ought* to be used by the in-memory image
 * for mipmap level n, based on the texture parameters.
 */
76
inline std::size_t Texture::get_expected_ram_mipmap_image_size(int n) const;

2686 33 get_expected_ram_mipmap_view_size 0 4 3276 42 Texture::get_expected_ram_mipmap_view_size 0 1 1129 258
/**
 * Returns the number of bytes that *ought* to be used by each view of the in-
 * memory image for mipmap level n, based on the texture parameters.  For a
 * normal, non-multiview texture, this is the same as
 * get_expected_ram_mipmap_image_size(n).
 */
75
inline std::size_t Texture::get_expected_ram_mipmap_view_size(int n) const;

2687 33 get_expected_ram_mipmap_page_size 0 4 3276 42 Texture::get_expected_ram_mipmap_page_size 0 1 1130 205
/**
 * Returns the number of bytes that should be used per each Z page of the 3-d
 * texture, for mipmap level n.  For a 2-d or 1-d texture, this is the same as
 * get_expected_ram_mipmap_view_size(n).
 */
75
inline std::size_t Texture::get_expected_ram_mipmap_page_size(int n) const;

2688 20 get_ram_mipmap_image 0 4 3276 29 Texture::get_ram_mipmap_image 0 1 1131 151
/**
 * Returns the system-RAM image data associated with the nth mipmap level, if
 * present.  Returns NULL if the nth mipmap level is not present.
 */
54
CPTA_uchar Texture::get_ram_mipmap_image(int n) const;

2689 22 get_ram_mipmap_pointer 0 4 3276 31 Texture::get_ram_mipmap_pointer 0 1 1132 182
/**
 * Similiar to get_ram_mipmap_image(), however, in this case the void pointer
 * for the given ram image is returned.  This will be NULL unless it has been
 * explicitly set.
 */
51
void *Texture::get_ram_mipmap_pointer(int n) const;

2690 23 modify_ram_mipmap_image 0 4 3276 32 Texture::modify_ram_mipmap_image 0 1 1133 231
/**
 * Returns a modifiable pointer to the system-RAM image for the nth mipmap
 * level.  This assumes the RAM image is uncompressed; if this is not the
 * case, raises an assertion.
 *
 * This does *not* affect keep_ram_image.
 */
57
inline PTA_uchar Texture::modify_ram_mipmap_image(int n);

2691 21 make_ram_mipmap_image 0 4 3276 30 Texture::make_ram_mipmap_image 0 1 1134 207
/**
 * Discards the current system-RAM image for the nth mipmap level, if any, and
 * allocates a new buffer of the appropriate size.  Returns the new buffer.
 *
 * This does *not* affect keep_ram_image.
 */
55
inline PTA_uchar Texture::make_ram_mipmap_image(int n);

2692 22 set_ram_mipmap_pointer 0 4 3276 31 Texture::set_ram_mipmap_pointer 0 0 489
/**
 * Sets an explicit void pointer as the texture's mipmap image for the
 * indicated level.  This is a special call to direct a texture to reference
 * some external image location, for instance from a webcam input.
 *
 * The texture will henceforth reference this pointer directly, instead of its
 * own internal storage; the user is responsible for ensuring the data at this
 * address remains allocated and valid, and in the correct format, during the
 * lifetime of the texture.
 */
84
void Texture::set_ram_mipmap_pointer(int n, void *image, std::size_t page_size = 0);

2693 31 set_ram_mipmap_pointer_from_int 0 4 3276 40 Texture::set_ram_mipmap_pointer_from_int 0 1 1135 287
/**
 * Accepts a raw pointer cast as an int, which is then passed to
 * set_ram_mipmap_pointer(); see the documentation for that method.
 *
 * This variant is particularly useful to set an external pointer from a
 * language like Python, which doesn't support void pointers directly.
 */
91
void Texture::set_ram_mipmap_pointer_from_int(long long int pointer, int n, int page_size);

2694 20 set_ram_mipmap_image 0 4 3276 29 Texture::set_ram_mipmap_image 0 1 1136 262
/**
 * Replaces the current system-RAM image for the indicated mipmap level with
 * the new data.  If compression is not CM_off, it indicates that the new data
 * is already pre-compressed in the indicated format.
 *
 * This does *not* affect keep_ram_image.
 */
94
inline void Texture::set_ram_mipmap_image(int n, CPTA_uchar image, std::size_t page_size = 0);

2695 22 clear_ram_mipmap_image 0 4 3276 31 Texture::clear_ram_mipmap_image 0 1 1137 74
/**
 * Discards the current system-RAM image for the nth mipmap level.
 */
44
void Texture::clear_ram_mipmap_image(int n);

2696 23 clear_ram_mipmap_images 0 4 3276 32 Texture::clear_ram_mipmap_images 0 1 1138 107
/**
 * Discards the current system-RAM image for all mipmap levels, except level 0
 * (the base image).
 */
51
inline void Texture::clear_ram_mipmap_images(void);

2697 26 generate_ram_mipmap_images 0 4 3276 35 Texture::generate_ram_mipmap_images 0 1 1139 453
/**
 * Automatically fills in the n mipmap levels of the Texture, based on the
 * texture's source image.  This requires the texture's uncompressed ram image
 * to be available in system memory.  If it is not already, it will be fetched
 * if possible.
 *
 * This call is not normally necessary, since the mipmap levels will be
 * generated automatically if needed.  But there may be certain cases in which
 * you would like to call this explicitly.
 */
54
inline void Texture::generate_ram_mipmap_images(void);

2698 17 get_simple_x_size 0 4 3276 26 Texture::get_simple_x_size 0 1 1140 61
/**
 * Returns the width of the "simple" image in texels.
 */
50
inline int Texture::get_simple_x_size(void) const;

2699 17 get_simple_y_size 0 4 3276 26 Texture::get_simple_y_size 0 1 1141 62
/**
 * Returns the height of the "simple" image in texels.
 */
50
inline int Texture::get_simple_y_size(void) const;

2700 20 has_simple_ram_image 0 4 3276 29 Texture::has_simple_ram_image 0 1 1142 82
/**
 * Returns true if the Texture has a "simple" image available in main RAM.
 */
54
inline bool Texture::has_simple_ram_image(void) const;

2701 25 get_simple_ram_image_size 0 4 3276 34 Texture::get_simple_ram_image_size 0 1 1143 103
/**
 * Returns the number of bytes used by the "simple" image, or 0 if there is no
 * simple image.
 */
66
inline std::size_t Texture::get_simple_ram_image_size(void) const;

2702 20 get_simple_ram_image 0 4 3276 29 Texture::get_simple_ram_image 0 1 1144 511
/**
 * Returns the image data associated with the "simple" texture image.  This is
 * provided for some textures as an option to display while the main texture
 * image is being loaded from disk.
 *
 * Unlike get_ram_image(), this function will always return immediately.
 * Either the simple image is available, or it is not.
 *
 * The "simple" image is always 4 components, 1 byte each, regardless of the
 * parameters of the full texture.  The simple image is only supported for
 * ordinary 2-d textures.
 */
60
inline CPTA_uchar Texture::get_simple_ram_image(void) const;

2703 20 set_simple_ram_image 0 4 3276 29 Texture::set_simple_ram_image 0 1 1145 638
/**
 * Replaces the internal "simple" texture image.  This can be used as an
 * option to display while the main texture image is being loaded from disk.
 * It is normally a very small image, 16x16 or smaller (and maybe even 1x1),
 * that is designed to give just enough sense of color to serve as a
 * placeholder until the full texture is available.
 *
 * The "simple" image is always 4 components, 1 byte each, regardless of the
 * parameters of the full texture.  The simple image is only supported for
 * ordinary 2-d textures.
 *
 * Also see generate_simple_ram_image(), modify_simple_ram_image(), and
 * new_simple_ram_image().
 */
84
inline void Texture::set_simple_ram_image(CPTA_uchar image, int x_size, int y_size);

2704 23 modify_simple_ram_image 0 4 3276 32 Texture::modify_simple_ram_image 0 1 1146 111
/**
 * Returns a modifiable pointer to the internal "simple" texture image.  See
 * set_simple_ram_image().
 */
49
PTA_uchar Texture::modify_simple_ram_image(void);

2705 20 new_simple_ram_image 0 4 3276 29 Texture::new_simple_ram_image 0 1 1147 164
/**
 * Creates an empty array for the simple ram image of the indicated size, and
 * returns a modifiable pointer to the new array.  See set_simple_ram_image().
 */
64
PTA_uchar Texture::new_simple_ram_image(int x_size, int y_size);

2706 25 generate_simple_ram_image 0 4 3276 34 Texture::generate_simple_ram_image 0 1 1148 185
/**
 * Computes the "simple" ram image by loading the main RAM image, if it is not
 * already available, and reducing it to 16x16 or smaller.  This may be an
 * expensive operation.
 */
46
void Texture::generate_simple_ram_image(void);

2707 22 clear_simple_ram_image 0 4 3276 31 Texture::clear_simple_ram_image 0 1 1149 47
/**
 * Discards the current "simple" image.
 */
50
inline void Texture::clear_simple_ram_image(void);

2708 4 peek 0 4 3276 13 Texture::peek 0 1 1150 492
/**
 * Returns a TexturePeeker object that can be used to examine the individual
 * texels stored within this Texture by (u, v) coordinate.
 *
 * If the texture has a ram image resident, that image is used.  If it does
 * not have a full ram image but does have a simple_ram_image resident, that
 * image is used instead.  If neither image is resident the full image is
 * reloaded.
 *
 * Returns NULL if the texture cannot find an image to load, or the texture
 * format is incompatible.
 */
47
PointerTo< TexturePeeker > Texture::peek(void);

2709 23 get_properties_modified 0 4 3276 32 Texture::get_properties_modified 0 1 1151 151
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture properties (unrelated to the image) are modified.
 */
62
inline UpdateSeq Texture::get_properties_modified(void) const;

2710 18 get_image_modified 0 4 3276 27 Texture::get_image_modified 0 1 1152 152
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture image data (including mipmap levels) are modified.
 */
57
inline UpdateSeq Texture::get_image_modified(void) const;

2711 25 get_simple_image_modified 0 4 3276 34 Texture::get_simple_image_modified 0 1 1153 136
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture's "simple" image data is modified.
 */
64
inline UpdateSeq Texture::get_simple_image_modified(void) const;

2712 22 has_auto_texture_scale 0 4 3276 31 Texture::has_auto_texture_scale 0 1 1154 136
/**
 * Returns true if set_auto_texture_scale() has been set to something other
 * than ATS_unspecified for this particular texture.
 */
56
inline bool Texture::has_auto_texture_scale(void) const;

2713 22 get_auto_texture_scale 0 4 3276 31 Texture::get_auto_texture_scale 0 1 1155 171
/**
 * Returns the power-of-2 texture-scaling mode that will be applied to this
 * particular texture when it is next loaded from disk.  See
 * set_textures_power_2().
 */
68
inline AutoTextureScale Texture::get_auto_texture_scale(void) const;

2714 22 set_auto_texture_scale 0 4 3276 31 Texture::set_auto_texture_scale 0 1 1156 173
/**
 * Specifies the power-of-2 texture-scaling mode that will be applied to this
 * particular texture when it is next loaded from disk.  See
 * set_textures_power_2().
 */
68
inline void Texture::set_auto_texture_scale(AutoTextureScale scale);

2715 7 prepare 0 4 3276 16 Texture::prepare 0 1 1157 363
/**
 * Indicates that the texture should be enqueued to be prepared in the
 * indicated prepared_objects at the beginning of the next frame.  This will
 * ensure the texture is already loaded into texture memory if it is expected
 * to be rendered soon.
 *
 * Use this function instead of prepare_now() to preload textures from a user
 * interface standpoint.
 */
85
PointerTo< AsyncFuture > Texture::prepare(PreparedGraphicsObjects *prepared_objects);

2716 11 is_prepared 0 4 3276 20 Texture::is_prepared 0 1 1158 134
/**
 * Returns true if the texture has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */
75
bool Texture::is_prepared(PreparedGraphicsObjects *prepared_objects) const;

2717 18 was_image_modified 0 4 3276 27 Texture::was_image_modified 0 1 1159 176
/**
 * Returns true if the texture needs to be re-loaded onto the indicated GSG,
 * either because its image data is out-of-date, or because it's not fully
 * prepared now.
 */
82
bool Texture::was_image_modified(PreparedGraphicsObjects *prepared_objects) const;

2718 19 get_data_size_bytes 0 4 3276 28 Texture::get_data_size_bytes 0 1 1160 335
/**
 * Returns the number of bytes which the texture is reported to consume within
 * graphics memory, for the indicated GSG.  This may return a nonzero value
 * even if the texture is not currently resident; you should also check
 * get_resident() if you want to know how much space the texture is actually
 * consuming right now.
 */
90
std::size_t Texture::get_data_size_bytes(PreparedGraphicsObjects *prepared_objects) const;

2719 10 get_active 0 4 3276 19 Texture::get_active 0 1 1161 106
/**
 * Returns true if this Texture was rendered in the most recent frame within
 * the indicated GSG.
 */
74
bool Texture::get_active(PreparedGraphicsObjects *prepared_objects) const;

2720 12 get_resident 0 4 3276 21 Texture::get_resident 0 1 1162 115
/**
 * Returns true if this Texture is reported to be resident within graphics
 * memory for the indicated GSG.
 */
76
bool Texture::get_resident(PreparedGraphicsObjects *prepared_objects) const;

2721 7 release 0 4 3276 16 Texture::release 0 1 1163 157
/**
 * Frees the texture context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */
65
bool Texture::release(PreparedGraphicsObjects *prepared_objects);

2722 11 release_all 0 4 3276 20 Texture::release_all 0 1 1164 152
/**
 * Frees the context allocated on all objects for which the texture has been
 * declared.  Returns the number of contexts which have been freed.
 */
31
int Texture::release_all(void);

2723 23 estimate_texture_memory 0 4 3276 32 Texture::estimate_texture_memory 0 1 1165 437
/**
 * Estimates the amount of texture memory that will be consumed by loading
 * this texture.  This returns a value that is not specific to any particular
 * graphics card or driver; it tries to make a reasonable assumption about how
 * a driver will load the texture.  It does not account for texture
 * compression or anything fancy.  This is mainly useful for debugging and
 * reporting purposes.
 *
 * Returns a value in bytes.
 */
57
std::size_t Texture::estimate_texture_memory(void) const;

2724 12 set_aux_data 0 4 3276 21 Texture::set_aux_data 0 1 1166 237
/**
 * Records an arbitrary object in the Texture, associated with a specified
 * key.  The object may later be retrieved by calling get_aux_data() with the
 * same key.
 *
 * These data objects are not recorded to a bam or txo file.
 */
82
void Texture::set_aux_data(std::string const &key, TypedReferenceCount *aux_data);

2725 14 clear_aux_data 0 4 3276 23 Texture::clear_aux_data 0 1 1167 67
/**
 * Removes a record previously recorded via set_aux_data().
 */
53
void Texture::clear_aux_data(std::string const &key);

2726 12 get_aux_data 0 4 3276 21 Texture::get_aux_data 0 1 1168 142
/**
 * Returns a record previously recorded via set_aux_data().  Returns NULL if
 * there was no record associated with the indicated key.
 */
73
TypedReferenceCount *Texture::get_aux_data(std::string const &key) const;

2727 20 set_textures_power_2 0 4 3276 29 Texture::set_textures_power_2 0 1 1169 232
/**
 * Set this flag to ATS_none, ATS_up, ATS_down, or ATS_pad to control the
 * scaling of textures in general, if a particular texture does not override
 * this.  See also set_auto_texture_scale() for the per-texture override.
 */
73
static inline void Texture::set_textures_power_2(AutoTextureScale scale);

2728 20 get_textures_power_2 0 4 3276 29 Texture::get_textures_power_2 0 1 1170 251
/**
 * This flag returns ATS_none, ATS_up, or ATS_down and controls the scaling of
 * textures in general.  It is initialized from the config variable of the
 * same name, but it can be subsequently adjusted.  See also
 * get_auto_texture_scale().
 */
67
static inline AutoTextureScale Texture::get_textures_power_2(void);

2729 20 has_textures_power_2 0 4 3276 29 Texture::has_textures_power_2 0 1 1171 181
/**
 * If true, then get_textures_power_2 has been set using set_textures_power_2.
 * If false, then get_textures_power_2 simply returns the config variable of
 * the same name.
 */
55
static inline bool Texture::has_textures_power_2(void);

2730 14 get_pad_x_size 0 4 3276 23 Texture::get_pad_x_size 0 1 1172 61
/**
 * Returns size of the pad region.  See set_pad_size.
 */
47
inline int Texture::get_pad_x_size(void) const;

2731 14 get_pad_y_size 0 4 3276 23 Texture::get_pad_y_size 0 1 1173 61
/**
 * Returns size of the pad region.  See set_pad_size.
 */
47
inline int Texture::get_pad_y_size(void) const;

2732 14 get_pad_z_size 0 4 3276 23 Texture::get_pad_z_size 0 1 1174 61
/**
 * Returns size of the pad region.  See set_pad_size.
 */
47
inline int Texture::get_pad_z_size(void) const;

2733 13 get_tex_scale 0 4 3276 22 Texture::get_tex_scale 0 1 1175 523
/**
 * Returns a scale pair that is suitable for applying to geometry via
 * NodePath::set_tex_scale(), which will convert texture coordinates on the
 * geometry from the range 0..1 into the appropriate range to render the video
 * part of the texture.
 *
 * This is necessary only if a padding size has been set via set_pad_size()
 * (or implicitly via something like "textures-power-2 pad" in the config.prc
 * file).  In this case, this is a convenient way to generate UV's that
 * reflect the built-in padding size.
 */
52
inline LVecBase2 Texture::get_tex_scale(void) const;

2734 12 set_pad_size 0 4 3276 21 Texture::set_pad_size 0 1 1176 468
/**
 * Sets the size of the pad region.
 *
 * Sometimes, when a video card demands power-of-two textures, it is necessary
 * to create a big texture and then only use a portion of it.  The pad region
 * indicates which portion of the texture is not really in use.  All
 * operations use the texture as a whole, including the pad region, unless
 * they explicitly state that they use only the non-pad region.
 *
 * Changing the texture's size clears the pad region.
 */
67
inline void Texture::set_pad_size(int x = 0, int y = 0, int z = 0);

2735 15 set_size_padded 0 4 3276 24 Texture::set_size_padded 0 1 1177 104
/**
 * Changes the size of the texture, padding if necessary, and setting the pad
 * region as well.
 */
63
void Texture::set_size_padded(int x = 1, int y = 1, int z = 1);

2736 20 get_orig_file_x_size 0 4 3276 29 Texture::get_orig_file_x_size 0 1 1178 168
/**
 * Returns the X size of the original disk image that this Texture was loaded
 * from (if it came from a disk file), before any automatic rescaling by
 * Panda.
 */
53
inline int Texture::get_orig_file_x_size(void) const;

2737 20 get_orig_file_y_size 0 4 3276 29 Texture::get_orig_file_y_size 0 1 1179 168
/**
 * Returns the Y size of the original disk image that this Texture was loaded
 * from (if it came from a disk file), before any automatic rescaling by
 * Panda.
 */
53
inline int Texture::get_orig_file_y_size(void) const;

2738 20 get_orig_file_z_size 0 4 3276 29 Texture::get_orig_file_z_size 0 1 1180 168
/**
 * Returns the Z size of the original disk image that this Texture was loaded
 * from (if it came from a disk file), before any automatic rescaling by
 * Panda.
 */
53
inline int Texture::get_orig_file_z_size(void) const;

2739 18 set_orig_file_size 0 4 3276 27 Texture::set_orig_file_size 0 1 1181 113
/**
 * Specifies the size of the texture as it exists in its original disk file,
 * before any Panda scaling.
 */
58
void Texture::set_orig_file_size(int x, int y, int z = 1);

2740 21 set_loaded_from_image 0 4 3276 30 Texture::set_loaded_from_image 0 1 1182 274
/**
 * Sets the flag that indicates the texture has been loaded from a disk file
 * or PNMImage.  You should also ensure the filename has been set correctly.
 * When this flag is true, the texture may be automatically reloaded when its
 * ram image needs to be replaced.
 */
61
inline void Texture::set_loaded_from_image(bool flag = true);

2741 21 get_loaded_from_image 0 4 3276 30 Texture::get_loaded_from_image 0 1 1183 133
/**
 * Returns the flag that indicates the texture has been loaded from a disk
 * file or PNMImage.  See set_loaded_from_image().
 */
55
inline bool Texture::get_loaded_from_image(void) const;

2742 19 set_loaded_from_txo 0 4 3276 28 Texture::set_loaded_from_txo 0 1 1184 189
/**
 * Sets the flag that indicates the texture has been loaded from a txo file.
 * You probably shouldn't be setting this directly; it is set automatically
 * when a Texture is loaded.
 */
59
inline void Texture::set_loaded_from_txo(bool flag = true);

2743 19 get_loaded_from_txo 0 4 3276 28 Texture::get_loaded_from_txo 0 1 1185 90
/**
 * Returns the flag that indicates the texture has been loaded from a txo
 * file.
 */
53
inline bool Texture::get_loaded_from_txo(void) const;

2744 28 get_match_framebuffer_format 0 4 3276 37 Texture::get_match_framebuffer_format 0 1 1186 289
/**
 * Returns true if the special flag was set that indicates to the GSG that the
 * Texture's format should be chosen to exactly match the framebuffer's
 * format, presumably because the application intends to copy image data from
 * the framebuffer into the Texture (or vice-versa).
 */
62
inline bool Texture::get_match_framebuffer_format(void) const;

2745 28 set_match_framebuffer_format 0 4 3276 37 Texture::set_match_framebuffer_format 0 1 1187 399
/**
 * Sets the special flag that, if true, indicates to the GSG that the
 * Texture's format should be chosen to exactly match the framebuffer's
 * format, presumably because the application intends to copy image data from
 * the framebuffer into the Texture (or vice-versa).
 *
 * This sets only the graphics card's idea of the texture format; it is not
 * related to the system-memory format.
 */
61
inline void Texture::set_match_framebuffer_format(bool flag);

2746 25 get_post_load_store_cache 0 4 3276 34 Texture::get_post_load_store_cache 0 1 1188 102
/**
 * Returns the setting of the post_load_store_cache flag.  See
 * set_post_load_store_cache().
 */
59
inline bool Texture::get_post_load_store_cache(void) const;

2747 25 set_post_load_store_cache 0 4 3276 34 Texture::set_post_load_store_cache 0 1 1189 418
/**
 * Sets the post_load_store_cache flag.  When this is set, the next time the
 * texture is loaded on a GSG, it will automatically extract its RAM image
 * from the GSG and save it to the global BamCache.
 *
 * This is used to store compressed RAM images in the BamCache.  This flag
 * should not be set explicitly; it is set automatically by the TexturePool
 * when model-cache-compressed-textures is set true.
 */
58
inline void Texture::set_post_load_store_cache(bool flag);

2748 11 prepare_now 0 4 3276 20 Texture::prepare_now 0 1 1190 531
/**
 * Creates a context for the texture on the particular GSG, if it does not
 * already exist.  Returns the new (or old) TextureContext.  This assumes that
 * the GraphicsStateGuardian is the currently active rendering context and
 * that it is ready to accept new textures.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a texture does not need to be explicitly prepared by the user before it may
 * be rendered.
 */
122
TextureContext *Texture::prepare_now(int view, PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg);

2749 13 up_to_power_2 0 4 3276 22 Texture::up_to_power_2 0 1 1191 74
/**
 * Returns the smallest power of 2 greater than or equal to value.
 */
45
static int Texture::up_to_power_2(int value);

2750 15 down_to_power_2 0 4 3276 24 Texture::down_to_power_2 0 1 1192 70
/**
 * Returns the largest power of 2 less than or equal to value.
 */
47
static int Texture::down_to_power_2(int value);

2751 16 consider_rescale 0 4 3276 25 Texture::consider_rescale 0 2 1193 1194 904
/**
 * Asks the PNMImage to change its scale when it reads the image, according to
 * the whims of the Config.prc file.
 *
 * For most efficient results, this method should be called after
 * pnmimage.read_header() has been called, but before pnmimage.read().  This
 * method may also be called after pnmimage.read(), i.e.  when the pnmimage is
 * already loaded; in this case it will rescale the image on the spot.  Also
 * see rescale_texture().
 */

/**
 * Asks the PNMImage to change its scale when it reads the image, according to
 * the whims of the Config.prc file.
 *
 * For most efficient results, this method should be called after
 * pnmimage.read_header() has been called, but before pnmimage.read().  This
 * method may also be called after pnmimage.read(), i.e.  when the pnmimage is
 * already loaded; in this case it will rescale the image on the spot.  Also
 * see rescale_texture().
 */
192
void Texture::consider_rescale(PNMImage &pnmimage);
static void Texture::consider_rescale(PNMImage &pnmimage, std::string const &name, AutoTextureScale auto_texture_scale = ::ATS_unspecified);

2752 15 rescale_texture 0 4 3276 24 Texture::rescale_texture 0 1 1195 391
/**
 * This method is similar to consider_rescale(), but instead of scaling a
 * separate PNMImage, it will ask the Texture to rescale its own internal
 * image to a power of 2, according to the config file requirements.  This may
 * be useful after loading a Texture image by hand, instead of reading it from
 * a disk file.  Returns true if the texture is changed, false if it was not.
 */
43
inline bool Texture::rescale_texture(void);

2753 19 format_texture_type 0 4 3276 28 Texture::format_texture_type 0 1 1196 72
/**
 * Returns the indicated TextureType converted to a string word.
 */
73
static std::string Texture::format_texture_type(Texture::TextureType tt);

2754 19 string_texture_type 0 4 3276 28 Texture::string_texture_type 0 1 1197 78
/**
 * Returns the TextureType corresponding to the indicated string word.
 */
81
static Texture::TextureType Texture::string_texture_type(std::string const &str);

2755 21 format_component_type 0 4 3276 30 Texture::format_component_type 0 1 1198 74
/**
 * Returns the indicated ComponentType converted to a string word.
 */
77
static std::string Texture::format_component_type(Texture::ComponentType ct);

2756 21 string_component_type 0 4 3276 30 Texture::string_component_type 0 1 1199 80
/**
 * Returns the ComponentType corresponding to the indicated string word.
 */
85
static Texture::ComponentType Texture::string_component_type(std::string const &str);

2757 13 format_format 0 4 3276 22 Texture::format_format 0 1 1200 67
/**
 * Returns the indicated Format converted to a string word.
 */
61
static std::string Texture::format_format(Texture::Format f);

2758 13 string_format 0 4 3276 22 Texture::string_format 0 1 1201 73
/**
 * Returns the Format corresponding to the indicated string word.
 */
70
static Texture::Format Texture::string_format(std::string const &str);

2759 23 format_compression_mode 0 4 3276 32 Texture::format_compression_mode 0 1 1202 76
/**
 * Returns the indicated CompressionMode converted to a string word.
 */
81
static std::string Texture::format_compression_mode(Texture::CompressionMode cm);

2760 23 string_compression_mode 0 4 3276 32 Texture::string_compression_mode 0 1 1203 96
/**
 * Returns the CompressionMode value associated with the given string
 * representation.
 */
89
static Texture::CompressionMode Texture::string_compression_mode(std::string const &str);

2761 20 format_quality_level 0 4 3276 29 Texture::format_quality_level 0 1 1204 73
/**
 * Returns the indicated QualityLevel converted to a string word.
 */
76
static std::string Texture::format_quality_level(Texture::QualityLevel tql);

2762 20 string_quality_level 0 4 3276 29 Texture::string_quality_level 0 1 1205 93
/**
 * Returns the QualityLevel value associated with the given string
 * representation.
 */
83
static Texture::QualityLevel Texture::string_quality_level(std::string const &str);

2763 14 get_class_type 0 4 3276 23 Texture::get_class_type 0 1 1206 0
48
static TypeHandle Texture::get_class_type(void);

2764 4 load 0 4 3292 12 Shader::load 0 2 1210 1211 238
/**
 * Loads the shader from the given string(s). Returns a boolean indicating
 * success or failure.
 */

/**
 * Loads the shader with the given filename.
 */

/**
 * This variant of Shader::load loads all shader programs separately.
 */
335
static PointerTo< Shader > Shader::load(Filename const &file, Shader::ShaderLanguage lang = ::Shader::SL_none);
static PointerTo< Shader > Shader::load(Shader::ShaderLanguage lang, Filename const &vertex, Filename const &fragment, Filename const &geometry = "", Filename const &tess_control = "", Filename const &tess_evaluation = "");

2765 4 make 0 4 3292 12 Shader::make 0 2 1212 1213 127
/**
 * Loads the shader, using the string as shader body.
 */

/**
 * Loads the shader, using the strings as shader bodies.
 */
311
static PointerTo< Shader > Shader::make(std::string body, Shader::ShaderLanguage lang = ::Shader::SL_none);
static PointerTo< Shader > Shader::make(Shader::ShaderLanguage lang, std::string vertex, std::string fragment, std::string geometry = "", std::string tess_control = "", std::string tess_evaluation = "");

2766 12 load_compute 0 4 3292 20 Shader::load_compute 0 1 1214 34
/**
 * Loads a compute shader.
 */
97
static PointerTo< Shader > Shader::load_compute(Shader::ShaderLanguage lang, Filename const &fn);

2767 12 make_compute 0 4 3292 20 Shader::make_compute 0 1 1215 58
/**
 * Loads the compute shader from the given string.
 */
95
static PointerTo< Shader > Shader::make_compute(Shader::ShaderLanguage lang, std::string body);

2768 12 get_filename 0 4 3292 20 Shader::get_filename 0 1 1216 66
/**
 * Return the Shader's filename for the given shader type.
 */
88
inline Filename Shader::get_filename(Shader::ShaderType type = ::Shader::ST_none) const;

2769 12 set_filename 0 4 3292 20 Shader::set_filename 0 1 1217 154
/**
 * Sets the Shader's filename for the given shader type.  Useful for
 * associating a shader created with Shader.make with a name for diagnostics.
 */
84
inline void Shader::set_filename(Shader::ShaderType type, Filename const &filename);

2770 8 get_text 0 4 3292 16 Shader::get_text 0 1 1218 62
/**
 * Return the Shader's text for the given shader type.
 */
94
inline std::string const &Shader::get_text(Shader::ShaderType type = ::Shader::ST_none) const;

2771 14 get_error_flag 0 4 3292 22 Shader::get_error_flag 0 1 1219 160
/**
 * Returns true if the shader contains a compile-time error.  This doesn't
 * tell you whether or not the shader is supported on the current video card.
 */
47
inline bool Shader::get_error_flag(void) const;

2772 12 get_language 0 4 3292 20 Shader::get_language 0 1 1220 72
/**
 * Returns the shader language in which this shader was written.
 */
63
inline Shader::ShaderLanguage Shader::get_language(void) const;

2773 12 has_fullpath 0 4 3292 20 Shader::has_fullpath 0 1 1221 94
/**
 * Returns true if the fullpath has been set and is available.  See
 * set_fullpath().
 */
45
inline bool Shader::has_fullpath(void) const;

2774 12 get_fullpath 0 4 3292 20 Shader::get_fullpath 0 1 1222 126
/**
 * Returns the fullpath that has been set.  This is the full path to the file
 * as it was found along the model-path.
 */
56
inline Filename const &Shader::get_fullpath(void) const;

2775 25 get_cache_compiled_shader 0 4 3292 33 Shader::get_cache_compiled_shader 0 1 1223 102
/**
 * Returns the setting of the cache_compiled_shader flag.  See
 * set_cache_compiled_shader().
 */
58
inline bool Shader::get_cache_compiled_shader(void) const;

2776 25 set_cache_compiled_shader 0 4 3292 33 Shader::set_cache_compiled_shader 0 1 1224 414
/**
 * Sets the cache_compiled_shader flag.  When this is set, the next time the
 * Shader is loaded on a GSG, it will automatically extract the compiled
 * shader from the GSG and save it to the global BamCache.
 *
 * This is used to store compiled shaders in the BamCache.  This flag should
 * not be set explicitly; it is set automatically by the ShaderPool when
 * model-cache-compiled-shaders is set true.
 */
57
inline void Shader::set_cache_compiled_shader(bool flag);

2777 7 prepare 0 4 3292 15 Shader::prepare 0 1 1225 362
/**
 * Indicates that the shader should be enqueued to be prepared in the
 * indicated prepared_objects at the beginning of the next frame.  This will
 * ensure the texture is already loaded into texture memory if it is expected
 * to be rendered soon.
 *
 * Use this function instead of prepare_now() to preload textures from a user
 * interface standpoint.
 */
84
PointerTo< AsyncFuture > Shader::prepare(PreparedGraphicsObjects *prepared_objects);

2778 11 is_prepared 0 4 3292 19 Shader::is_prepared 0 1 1226 133
/**
 * Returns true if the shader has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */
74
bool Shader::is_prepared(PreparedGraphicsObjects *prepared_objects) const;

2779 7 release 0 4 3292 15 Shader::release 0 1 1227 157
/**
 * Frees the texture context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */
64
bool Shader::release(PreparedGraphicsObjects *prepared_objects);

2780 11 release_all 0 4 3292 19 Shader::release_all 0 1 1228 152
/**
 * Frees the context allocated on all objects for which the texture has been
 * declared.  Returns the number of contexts which have been freed.
 */
30
int Shader::release_all(void);

2781 11 prepare_now 0 4 3292 19 Shader::prepare_now 0 1 1229 528
/**
 * Creates a context for the shader on the particular GSG, if it does not
 * already exist.  Returns the new (or old) ShaderContext.  This assumes that
 * the GraphicsStateGuardian is the currently active rendering context and
 * that it is ready to accept new textures.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a shader does not need to be explicitly prepared by the user before it may
 * be rendered.
 */
110
ShaderContext *Shader::prepare_now(PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg);

2782 14 get_class_type 0 4 3292 22 Shader::get_class_type 0 1 1230 0
47
static TypeHandle Shader::get_class_type(void);

2783 6 Shader 0 260 3292 14 Shader::Shader 0 1 1209 84
/**
 * Construct a Shader that will be filled in using fillin() or read() later.
 */
48
inline Shader::Shader(Shader const &) = default;

2784 37 upcast_to_TypedWritableReferenceCount 0 12 3297 51 ShaderBuffer::upcast_to_TypedWritableReferenceCount 0 1 1240 55
upcast from ShaderBuffer to TypedWritableReferenceCount
87
TypedWritableReferenceCount *ShaderBuffer::upcast_to_TypedWritableReferenceCount(void);

2785 24 downcast_to_ShaderBuffer 0 12 3180 53 TypedWritableReferenceCount::downcast_to_ShaderBuffer 0 0 57
downcast from TypedWritableReferenceCount to ShaderBuffer
74
ShaderBuffer *TypedWritableReferenceCount::downcast_to_ShaderBuffer(void);

2786 17 upcast_to_Namable 0 12 3297 31 ShaderBuffer::upcast_to_Namable 0 1 1241 35
upcast from ShaderBuffer to Namable
47
Namable *ShaderBuffer::upcast_to_Namable(void);

2787 24 downcast_to_ShaderBuffer 0 12 3164 33 Namable::downcast_to_ShaderBuffer 0 0 37
downcast from Namable to ShaderBuffer
54
ShaderBuffer *Namable::downcast_to_ShaderBuffer(void);

2788 19 upcast_to_GeomEnums 0 12 3297 33 ShaderBuffer::upcast_to_GeomEnums 0 1 1242 37
upcast from ShaderBuffer to GeomEnums
51
GeomEnums *ShaderBuffer::upcast_to_GeomEnums(void);

2789 24 downcast_to_ShaderBuffer 0 12 3168 35 GeomEnums::downcast_to_ShaderBuffer 0 0 39
downcast from GeomEnums to ShaderBuffer
56
ShaderBuffer *GeomEnums::downcast_to_ShaderBuffer(void);

2790 13 ~ShaderBuffer 0 518 3297 27 ShaderBuffer::~ShaderBuffer 0 0 22
/**
 * Destructor.
 */
42
virtual ShaderBuffer::~ShaderBuffer(void);

2791 12 ShaderBuffer 0 260 3297 26 ShaderBuffer::ShaderBuffer 0 3 1231 1232 1233 309
/**
 * Creates an uninitialized buffer object with the given size.  For now, these
 * parameters cannot be modified, but this may change in the future.
 */

/**
 * Creates a buffer object initialized with the given data.  For now, these
 * parameters cannot be modified, but this may change in the future.
 */
312
inline explicit ShaderBuffer::ShaderBuffer(std::string const &name, uint64_t size, GeomEnums::UsageHint usage_hint);
inline explicit ShaderBuffer::ShaderBuffer(std::string const &name, vector_uchar initial_data, GeomEnums::UsageHint usage_hint);
inline ShaderBuffer::ShaderBuffer(ShaderBuffer const &) = default;

2792 19 get_data_size_bytes 0 4 3297 33 ShaderBuffer::get_data_size_bytes 0 0 44
/**
 * Returns the buffer size in bytes.
 */
62
inline uint64_t ShaderBuffer::get_data_size_bytes(void) const;

2793 14 get_usage_hint 0 4 3297 28 ShaderBuffer::get_usage_hint 0 0 41
/**
 * Returns the buffer usage hint.
 */
69
inline GeomEnums::UsageHint ShaderBuffer::get_usage_hint(void) const;

2794 7 prepare 0 4 3297 21 ShaderBuffer::prepare 0 1 1234 344
/**
 * Indicates that the data should be enqueued to be prepared in the indicated
 * prepared_objects at the beginning of the next frame.  This will ensure the
 * data is already loaded into the GSG if it is expected to be rendered soon.
 *
 * Use this function instead of prepare_now() to preload datas from a user
 * interface standpoint.
 */
70
void ShaderBuffer::prepare(PreparedGraphicsObjects *prepared_objects);

2795 11 is_prepared 0 4 3297 25 ShaderBuffer::is_prepared 0 1 1235 131
/**
 * Returns true if the data has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */
80
bool ShaderBuffer::is_prepared(PreparedGraphicsObjects *prepared_objects) const;

2796 11 prepare_now 0 4 3297 25 ShaderBuffer::prepare_now 0 1 1236 521
/**
 * Creates a context for the data on the particular GSG, if it does not
 * already exist.  Returns the new (or old) BufferContext.  This assumes
 * that the GraphicsStateGuardian is the currently active rendering context
 * and that it is ready to accept new datas.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a data does not need to be explicitly prepared by the user before it may be
 * rendered.
 */
116
BufferContext *ShaderBuffer::prepare_now(PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg);

2797 7 release 0 4 3297 21 ShaderBuffer::release 0 1 1237 154
/**
 * Frees the data context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */
70
bool ShaderBuffer::release(PreparedGraphicsObjects *prepared_objects);

2798 11 release_all 0 4 3297 25 ShaderBuffer::release_all 0 1 1238 149
/**
 * Frees the context allocated on all objects for which the data has been
 * declared.  Returns the number of contexts which have been freed.
 */
36
int ShaderBuffer::release_all(void);

2799 14 get_class_type 0 4 3297 28 ShaderBuffer::get_class_type 0 1 1239 0
53
static TypeHandle ShaderBuffer::get_class_type(void);

2800 8 get_name 0 4 3299 33 PreparedGraphicsObjects::get_name 0 1 1243 167
/**
 * Returns the name of the PreparedGraphicsObjects structure.  This is an
 * arbitrary name that serves mainly to uniquify the context for PStats
 * reporting.
 */
72
inline std::string const &PreparedGraphicsObjects::get_name(void) const;

2801 25 set_graphics_memory_limit 0 4 3299 50 PreparedGraphicsObjects::set_graphics_memory_limit 0 1 1244 503
/**
 * Sets an artificial cap on graphics memory that will be imposed on this GSG.
 *
 * This limits the total amount of graphics memory, including texture memory
 * and vertex buffer memory, that will be consumed by the GSG, regardless of
 * whether the hardware claims to provide more graphics memory than this.  It
 * is useful to put a ceiling on graphics memory consumed, since some drivers
 * seem to allow the application to consume more memory than the hardware can
 * realistically support.
 */
75
void PreparedGraphicsObjects::set_graphics_memory_limit(std::size_t limit);

2802 25 get_graphics_memory_limit 0 4 3299 50 PreparedGraphicsObjects::get_graphics_memory_limit 0 1 1245 127
/**
 * Returns the artificial cap on graphics memory that will be imposed on this
 * GSG.  See set_graphics_memory_limit().
 */
82
inline std::size_t PreparedGraphicsObjects::get_graphics_memory_limit(void) const;

2803 24 show_graphics_memory_lru 0 4 3299 49 PreparedGraphicsObjects::show_graphics_memory_lru 0 1 1246 127
/**
 * Writes to the indicated ostream a report of how the various textures and
 * vertex buffers are allocated in the LRU.
 */
80
void PreparedGraphicsObjects::show_graphics_memory_lru(std::ostream &out) const;

2804 23 show_residency_trackers 0 4 3299 48 PreparedGraphicsObjects::show_residency_trackers 0 1 1247 127
/**
 * Writes to the indicated ostream a report of how the various textures and
 * vertex buffers are allocated in the LRU.
 */
79
void PreparedGraphicsObjects::show_residency_trackers(std::ostream &out) const;

2805 11 release_all 0 4 3299 36 PreparedGraphicsObjects::release_all 0 1 1248 62
/**
 * Releases all prepared objects of all kinds at once.
 */
55
inline void PreparedGraphicsObjects::release_all(void);

2806 14 get_num_queued 0 4 3299 39 PreparedGraphicsObjects::get_num_queued 0 1 1249 107
/**
 * Returns the number of objects of any kind that have been enqueued to be
 * prepared on this GSG.
 */
63
inline int PreparedGraphicsObjects::get_num_queued(void) const;

2807 16 get_num_prepared 0 4 3299 41 PreparedGraphicsObjects::get_num_prepared 0 1 1250 100
/**
 * Returns the number of objects of any kind that have already been prepared
 * on this GSG.
 */
65
inline int PreparedGraphicsObjects::get_num_prepared(void) const;

2808 15 enqueue_texture 0 4 3299 40 PreparedGraphicsObjects::enqueue_texture 0 1 1251 156
/**
 * Indicates that a texture would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */
60
void PreparedGraphicsObjects::enqueue_texture(Texture *tex);

2809 17 is_texture_queued 0 4 3299 42 PreparedGraphicsObjects::is_texture_queued 0 1 1252 84
/**
 * Returns true if the texture has been queued on this GSG, false otherwise.
 */
74
bool PreparedGraphicsObjects::is_texture_queued(Texture const *tex) const;

2810 15 dequeue_texture 0 4 3299 40 PreparedGraphicsObjects::dequeue_texture 0 1 1253 385
/**
 * Removes a texture from the queued list of textures to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the texture will automatically
 * be dequeued and prepared at the next frame.
 *
 * The return value is true if the texture is successfully dequeued, false if
 * it had not been queued.
 */
60
bool PreparedGraphicsObjects::dequeue_texture(Texture *tex);

2811 19 is_texture_prepared 0 4 3299 44 PreparedGraphicsObjects::is_texture_prepared 0 1 1254 86
/**
 * Returns true if the texture has been prepared on this GSG, false otherwise.
 */
76
bool PreparedGraphicsObjects::is_texture_prepared(Texture const *tex) const;

2812 15 release_texture 0 4 3299 40 PreparedGraphicsObjects::release_texture 0 2 1255 1256 587
/**
 * Indicates that a texture context, created by a previous call to
 * prepare_texture(), is no longer needed.  The driver resources will not be
 * freed until some GSG calls update(), indicating it is at a stage where it
 * is ready to release textures--this prevents conflicts from threading or
 * multiple GSG's sharing textures (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_texture is called).
 */

/**
 * Releases a texture if it has already been prepared, or removes it from the
 * preparation queue.
 */
127
void PreparedGraphicsObjects::release_texture(TextureContext *tc);
void PreparedGraphicsObjects::release_texture(Texture *tex);

2813 20 release_all_textures 0 4 3299 45 PreparedGraphicsObjects::release_all_textures 0 1 1257 184
/**
 * Releases all textures at once.  This will force them to be reloaded into
 * texture memory for all GSG's that share this object.  Returns the number of
 * textures released.
 */
56
int PreparedGraphicsObjects::release_all_textures(void);

2814 23 get_num_queued_textures 0 4 3299 48 PreparedGraphicsObjects::get_num_queued_textures 0 1 1258 96
/**
 * Returns the number of textures that have been enqueued to be prepared on
 * this GSG.
 */
65
int PreparedGraphicsObjects::get_num_queued_textures(void) const;

2815 25 get_num_prepared_textures 0 4 3299 50 PreparedGraphicsObjects::get_num_prepared_textures 0 1 1259 86
/**
 * Returns the number of textures that have already been prepared on this GSG.
 */
67
int PreparedGraphicsObjects::get_num_prepared_textures(void) const;

2816 19 prepare_texture_now 0 4 3299 44 PreparedGraphicsObjects::prepare_texture_now 0 1 1260 727
/**
 * Immediately creates a new TextureContext for the indicated texture and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new textures.  If
 * this is not necessarily the case, you should use enqueue_texture() instead.
 *
 * Normally, this function is not called directly.  Call
 * Texture::prepare_now() instead.
 *
 * The TextureContext contains all of the pertinent information needed by the
 * GSG to keep track of this one particular texture, and will exist as long as
 * the texture is ready to be rendered.
 *
 * When either the Texture or the PreparedGraphicsObjects object destructs,
 * the TextureContext will be deleted.
 */
117
TextureContext *PreparedGraphicsObjects::prepare_texture_now(Texture *tex, int view, GraphicsStateGuardianBase *gsg);

2817 15 enqueue_sampler 0 4 3299 40 PreparedGraphicsObjects::enqueue_sampler 0 1 1261 156
/**
 * Indicates that a sampler would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */
75
void PreparedGraphicsObjects::enqueue_sampler(SamplerState const &sampler);

2818 17 is_sampler_queued 0 4 3299 42 PreparedGraphicsObjects::is_sampler_queued 0 1 1262 84
/**
 * Returns true if the sampler has been queued on this GSG, false otherwise.
 */
83
bool PreparedGraphicsObjects::is_sampler_queued(SamplerState const &sampler) const;

2819 15 dequeue_sampler 0 4 3299 40 PreparedGraphicsObjects::dequeue_sampler 0 1 1263 385
/**
 * Removes a sampler from the queued list of samplers to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the sampler will automatically
 * be dequeued and prepared at the next frame.
 *
 * The return value is true if the sampler is successfully dequeued, false if
 * it had not been queued.
 */
75
bool PreparedGraphicsObjects::dequeue_sampler(SamplerState const &sampler);

2820 19 is_sampler_prepared 0 4 3299 44 PreparedGraphicsObjects::is_sampler_prepared 0 1 1264 86
/**
 * Returns true if the sampler has been prepared on this GSG, false otherwise.
 */
85
bool PreparedGraphicsObjects::is_sampler_prepared(SamplerState const &sampler) const;

2821 15 release_sampler 0 4 3299 40 PreparedGraphicsObjects::release_sampler 0 2 1265 1266 370
/**
 * Indicates that a sampler context, created by a previous call to
 * prepare_sampler(), is no longer needed.  The driver resources will not be
 * freed until some GSG calls update(), indicating it is at a stage where it
 * is ready to release samplers.
 */

/**
 * Releases a sampler if it has already been prepared, or removes it from the
 * preparation queue.
 */
142
void PreparedGraphicsObjects::release_sampler(SamplerContext *sc);
void PreparedGraphicsObjects::release_sampler(SamplerState const &sampler);

2822 20 release_all_samplers 0 4 3299 45 PreparedGraphicsObjects::release_all_samplers 0 1 1267 161
/**
 * Releases all samplers at once.  This will force them to be reloaded for all
 * GSG's that share this object.  Returns the number of samplers released.
 */
56
int PreparedGraphicsObjects::release_all_samplers(void);

2823 23 get_num_queued_samplers 0 4 3299 48 PreparedGraphicsObjects::get_num_queued_samplers 0 1 1268 96
/**
 * Returns the number of samplers that have been enqueued to be prepared on
 * this GSG.
 */
65
int PreparedGraphicsObjects::get_num_queued_samplers(void) const;

2824 25 get_num_prepared_samplers 0 4 3299 50 PreparedGraphicsObjects::get_num_prepared_samplers 0 1 1269 86
/**
 * Returns the number of samplers that have already been prepared on this GSG.
 */
67
int PreparedGraphicsObjects::get_num_prepared_samplers(void) const;

2825 19 prepare_sampler_now 0 4 3299 44 PreparedGraphicsObjects::prepare_sampler_now 0 1 1270 727
/**
 * Immediately creates a new SamplerContext for the indicated sampler and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new samplers.  If
 * this is not necessarily the case, you should use enqueue_sampler() instead.
 *
 * Normally, this function is not called directly.  Call
 * Sampler::prepare_now() instead.
 *
 * The SamplerContext contains all of the pertinent information needed by the
 * GSG to keep track of this one particular sampler, and will exist as long as
 * the sampler is ready to be rendered.
 *
 * When either the Sampler or the PreparedGraphicsObjects object destructs,
 * the SamplerContext will be deleted.
 */
122
SamplerContext *PreparedGraphicsObjects::prepare_sampler_now(SamplerState const &sampler, GraphicsStateGuardianBase *gsg);

2826 12 enqueue_geom 0 4 3299 37 PreparedGraphicsObjects::enqueue_geom 0 1 1271 153
/**
 * Indicates that a geom would like to be put on the list to be prepared when
 * the GSG is next ready to do this (presumably at the next frame).
 */
55
void PreparedGraphicsObjects::enqueue_geom(Geom *geom);

2827 14 is_geom_queued 0 4 3299 39 PreparedGraphicsObjects::is_geom_queued 0 1 1272 81
/**
 * Returns true if the geom has been queued on this GSG, false otherwise.
 */
69
bool PreparedGraphicsObjects::is_geom_queued(Geom const *geom) const;

2828 12 dequeue_geom 0 4 3299 37 PreparedGraphicsObjects::dequeue_geom 0 1 1273 374
/**
 * Removes a geom from the queued list of geoms to be prepared.  Normally it
 * is not necessary to call this, unless you change your mind about preparing
 * it at the last minute, since the geom will automatically be dequeued and
 * prepared at the next frame.
 *
 * The return value is true if the geom is successfully dequeued, false if it
 * had not been queued.
 */
55
bool PreparedGraphicsObjects::dequeue_geom(Geom *geom);

2829 16 is_geom_prepared 0 4 3299 41 PreparedGraphicsObjects::is_geom_prepared 0 1 1274 95
/**
 * Returns true if the vertex buffer has been prepared on this GSG, false
 * otherwise.
 */
71
bool PreparedGraphicsObjects::is_geom_prepared(Geom const *geom) const;

2830 12 release_geom 0 4 3299 37 PreparedGraphicsObjects::release_geom 0 1 1275 463
/**
 * Indicates that a geom context, created by a previous call to
 * prepare_geom(), is no longer needed.  The driver resources will not be
 * freed until some GSG calls update(), indicating it is at a stage where it
 * is ready to release geoms--this prevents conflicts from threading or
 * multiple GSG's sharing geoms (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_geom is called).
 */
60
void PreparedGraphicsObjects::release_geom(GeomContext *gc);

2831 17 release_all_geoms 0 4 3299 42 PreparedGraphicsObjects::release_all_geoms 0 1 1276 175
/**
 * Releases all geoms at once.  This will force them to be reloaded into geom
 * memory for all GSG's that share this object.  Returns the number of geoms
 * released.
 */
53
int PreparedGraphicsObjects::release_all_geoms(void);

2832 20 get_num_queued_geoms 0 4 3299 45 PreparedGraphicsObjects::get_num_queued_geoms 0 1 1277 93
/**
 * Returns the number of geoms that have been enqueued to be prepared on this
 * GSG.
 */
62
int PreparedGraphicsObjects::get_num_queued_geoms(void) const;

2833 22 get_num_prepared_geoms 0 4 3299 47 PreparedGraphicsObjects::get_num_prepared_geoms 0 1 1278 83
/**
 * Returns the number of geoms that have already been prepared on this GSG.
 */
64
int PreparedGraphicsObjects::get_num_prepared_geoms(void) const;

2834 16 prepare_geom_now 0 4 3299 41 PreparedGraphicsObjects::prepare_geom_now 0 1 1279 697
/**
 * Immediately creates a new GeomContext for the indicated geom and returns
 * it.  This assumes that the GraphicsStateGuardian is the currently active
 * rendering context and that it is ready to accept new geoms.  If this is not
 * necessarily the case, you should use enqueue_geom() instead.
 *
 * Normally, this function is not called directly.  Call Geom::prepare_now()
 * instead.
 *
 * The GeomContext contains all of the pertinent information needed by the GSG
 * to keep track of this one particular geom, and will exist as long as the
 * geom is ready to be rendered.
 *
 * When either the Geom or the PreparedGraphicsObjects object destructs, the
 * GeomContext will be deleted.
 */
99
GeomContext *PreparedGraphicsObjects::prepare_geom_now(Geom *geom, GraphicsStateGuardianBase *gsg);

2835 14 enqueue_shader 0 4 3299 39 PreparedGraphicsObjects::enqueue_shader 0 1 1280 155
/**
 * Indicates that a shader would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */
61
void PreparedGraphicsObjects::enqueue_shader(Shader *shader);

2836 16 is_shader_queued 0 4 3299 41 PreparedGraphicsObjects::is_shader_queued 0 1 1281 83
/**
 * Returns true if the shader has been queued on this GSG, false otherwise.
 */
75
bool PreparedGraphicsObjects::is_shader_queued(Shader const *shader) const;

2837 14 dequeue_shader 0 4 3299 39 PreparedGraphicsObjects::dequeue_shader 0 1 1282 382
/**
 * Removes a shader from the queued list of shaders to be prepared.  Normally
 * it is not necessary to call this, unless you change your mind about
 * preparing it at the last minute, since the shader will automatically be
 * dequeued and prepared at the next frame.
 *
 * The return value is true if the shader is successfully dequeued, false if
 * it had not been queued.
 */
61
bool PreparedGraphicsObjects::dequeue_shader(Shader *shader);

2838 18 is_shader_prepared 0 4 3299 43 PreparedGraphicsObjects::is_shader_prepared 0 1 1283 85
/**
 * Returns true if the shader has been prepared on this GSG, false otherwise.
 */
77
bool PreparedGraphicsObjects::is_shader_prepared(Shader const *shader) const;

2839 14 release_shader 0 4 3299 39 PreparedGraphicsObjects::release_shader 0 1 1284 473
/**
 * Indicates that a shader context, created by a previous call to
 * prepare_shader(), is no longer needed.  The driver resources will not be
 * freed until some GSG calls update(), indicating it is at a stage where it
 * is ready to release shaders--this prevents conflicts from threading or
 * multiple GSG's sharing shaders (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_shader is called).
 */
64
void PreparedGraphicsObjects::release_shader(ShaderContext *sc);

2840 19 release_all_shaders 0 4 3299 44 PreparedGraphicsObjects::release_all_shaders 0 1 1285 181
/**
 * Releases all shaders at once.  This will force them to be reloaded into
 * shader memory for all GSG's that share this object.  Returns the number of
 * shaders released.
 */
55
int PreparedGraphicsObjects::release_all_shaders(void);

2841 22 get_num_queued_shaders 0 4 3299 47 PreparedGraphicsObjects::get_num_queued_shaders 0 1 1286 95
/**
 * Returns the number of shaders that have been enqueued to be prepared on
 * this GSG.
 */
64
int PreparedGraphicsObjects::get_num_queued_shaders(void) const;

2842 24 get_num_prepared_shaders 0 4 3299 49 PreparedGraphicsObjects::get_num_prepared_shaders 0 1 1287 85
/**
 * Returns the number of shaders that have already been prepared on this GSG.
 */
66
int PreparedGraphicsObjects::get_num_prepared_shaders(void) const;

2843 18 prepare_shader_now 0 4 3299 43 PreparedGraphicsObjects::prepare_shader_now 0 1 1288 717
/**
 * Immediately creates a new ShaderContext for the indicated shader and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new shaders.  If
 * this is not necessarily the case, you should use enqueue_shader() instead.
 *
 * Normally, this function is not called directly.  Call Shader::prepare_now()
 * instead.
 *
 * The ShaderContext contains all of the pertinent information needed by the
 * GSG to keep track of this one particular shader, and will exist as long as
 * the shader is ready to be rendered.
 *
 * When either the Shader or the PreparedGraphicsObjects object destructs, the
 * ShaderContext will be deleted.
 */
107
ShaderContext *PreparedGraphicsObjects::prepare_shader_now(Shader *shader, GraphicsStateGuardianBase *gsg);

2844 21 enqueue_vertex_buffer 0 4 3299 46 PreparedGraphicsObjects::enqueue_vertex_buffer 0 1 1289 155
/**
 * Indicates that a buffer would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */
79
void PreparedGraphicsObjects::enqueue_vertex_buffer(GeomVertexArrayData *data);

2845 23 is_vertex_buffer_queued 0 4 3299 48 PreparedGraphicsObjects::is_vertex_buffer_queued 0 1 1290 93
/**
 * Returns true if the vertex buffer has been queued on this GSG, false
 * otherwise.
 */
93
bool PreparedGraphicsObjects::is_vertex_buffer_queued(GeomVertexArrayData const *data) const;

2846 21 dequeue_vertex_buffer 0 4 3299 46 PreparedGraphicsObjects::dequeue_vertex_buffer 0 1 1291 383
/**
 * Removes a buffer from the queued list of data arrays to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the data will automatically be
 * dequeued and prepared at the next frame.
 *
 * The return value is true if the buffer is successfully dequeued, false if
 * it had not been queued.
 */
79
bool PreparedGraphicsObjects::dequeue_vertex_buffer(GeomVertexArrayData *data);

2847 25 is_vertex_buffer_prepared 0 4 3299 50 PreparedGraphicsObjects::is_vertex_buffer_prepared 0 1 1292 95
/**
 * Returns true if the vertex buffer has been prepared on this GSG, false
 * otherwise.
 */
95
bool PreparedGraphicsObjects::is_vertex_buffer_prepared(GeomVertexArrayData const *data) const;

2848 21 release_vertex_buffer 0 4 3299 46 PreparedGraphicsObjects::release_vertex_buffer 0 1 1293 481
/**
 * Indicates that a data context, created by a previous call to
 * prepare_vertex_buffer(), is no longer needed.  The driver resources will
 * not be freed until some GSG calls update(), indicating it is at a stage
 * where it is ready to release datas--this prevents conflicts from threading
 * or multiple GSG's sharing datas (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_vertex_buffer is called).
 */
78
void PreparedGraphicsObjects::release_vertex_buffer(VertexBufferContext *vbc);

2849 26 release_all_vertex_buffers 0 4 3299 51 PreparedGraphicsObjects::release_all_vertex_buffers 0 1 1294 175
/**
 * Releases all datas at once.  This will force them to be reloaded into data
 * memory for all GSG's that share this object.  Returns the number of datas
 * released.
 */
62
int PreparedGraphicsObjects::release_all_vertex_buffers(void);

2850 29 get_num_queued_vertex_buffers 0 4 3299 54 PreparedGraphicsObjects::get_num_queued_vertex_buffers 0 1 1295 102
/**
 * Returns the number of vertex buffers that have been enqueued to be prepared
 * on this GSG.
 */
71
int PreparedGraphicsObjects::get_num_queued_vertex_buffers(void) const;

2851 31 get_num_prepared_vertex_buffers 0 4 3299 56 PreparedGraphicsObjects::get_num_prepared_vertex_buffers 0 1 1296 95
/**
 * Returns the number of vertex buffers that have already been prepared on
 * this GSG.
 */
73
int PreparedGraphicsObjects::get_num_prepared_vertex_buffers(void) const;

2852 25 prepare_vertex_buffer_now 0 4 3299 50 PreparedGraphicsObjects::prepare_vertex_buffer_now 0 1 1297 733
/**
 * Immediately creates a new VertexBufferContext for the indicated data and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new datas.  If this
 * is not necessarily the case, you should use enqueue_vertex_buffer()
 * instead.
 *
 * Normally, this function is not called directly.  Call Data::prepare_now()
 * instead.
 *
 * The VertexBufferContext contains all of the pertinent information needed by
 * the GSG to keep track of this one particular data, and will exist as long
 * as the data is ready to be rendered.
 *
 * When either the Data or the PreparedGraphicsObjects object destructs, the
 * VertexBufferContext will be deleted.
 */
131
VertexBufferContext *PreparedGraphicsObjects::prepare_vertex_buffer_now(GeomVertexArrayData *data, GraphicsStateGuardianBase *gsg);

2853 20 enqueue_index_buffer 0 4 3299 45 PreparedGraphicsObjects::enqueue_index_buffer 0 1 1298 155
/**
 * Indicates that a buffer would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */
72
void PreparedGraphicsObjects::enqueue_index_buffer(GeomPrimitive *data);

2854 22 is_index_buffer_queued 0 4 3299 47 PreparedGraphicsObjects::is_index_buffer_queued 0 1 1299 92
/**
 * Returns true if the index buffer has been queued on this GSG, false
 * otherwise.
 */
86
bool PreparedGraphicsObjects::is_index_buffer_queued(GeomPrimitive const *data) const;

2855 20 dequeue_index_buffer 0 4 3299 45 PreparedGraphicsObjects::dequeue_index_buffer 0 1 1300 383
/**
 * Removes a buffer from the queued list of data arrays to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the data will automatically be
 * dequeued and prepared at the next frame.
 *
 * The return value is true if the buffer is successfully dequeued, false if
 * it had not been queued.
 */
72
bool PreparedGraphicsObjects::dequeue_index_buffer(GeomPrimitive *data);

2856 24 is_index_buffer_prepared 0 4 3299 49 PreparedGraphicsObjects::is_index_buffer_prepared 0 1 1301 94
/**
 * Returns true if the index buffer has been prepared on this GSG, false
 * otherwise.
 */
88
bool PreparedGraphicsObjects::is_index_buffer_prepared(GeomPrimitive const *data) const;

2857 20 release_index_buffer 0 4 3299 45 PreparedGraphicsObjects::release_index_buffer 0 1 1302 479
/**
 * Indicates that a data context, created by a previous call to
 * prepare_index_buffer(), is no longer needed.  The driver resources will not
 * be freed until some GSG calls update(), indicating it is at a stage where
 * it is ready to release datas--this prevents conflicts from threading or
 * multiple GSG's sharing datas (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_index_buffer is called).
 */
76
void PreparedGraphicsObjects::release_index_buffer(IndexBufferContext *ibc);

2858 25 release_all_index_buffers 0 4 3299 50 PreparedGraphicsObjects::release_all_index_buffers 0 1 1303 175
/**
 * Releases all datas at once.  This will force them to be reloaded into data
 * memory for all GSG's that share this object.  Returns the number of datas
 * released.
 */
61
int PreparedGraphicsObjects::release_all_index_buffers(void);

2859 28 get_num_queued_index_buffers 0 4 3299 53 PreparedGraphicsObjects::get_num_queued_index_buffers 0 1 1304 101
/**
 * Returns the number of index buffers that have been enqueued to be prepared
 * on this GSG.
 */
70
int PreparedGraphicsObjects::get_num_queued_index_buffers(void) const;

2860 30 get_num_prepared_index_buffers 0 4 3299 55 PreparedGraphicsObjects::get_num_prepared_index_buffers 0 1 1305 94
/**
 * Returns the number of index buffers that have already been prepared on this
 * GSG.
 */
72
int PreparedGraphicsObjects::get_num_prepared_index_buffers(void) const;

2861 24 prepare_index_buffer_now 0 4 3299 49 PreparedGraphicsObjects::prepare_index_buffer_now 0 1 1306 726
/**
 * Immediately creates a new IndexBufferContext for the indicated data and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new datas.  If this
 * is not necessarily the case, you should use enqueue_index_buffer() instead.
 *
 * Normally, this function is not called directly.  Call Data::prepare_now()
 * instead.
 *
 * The IndexBufferContext contains all of the pertinent information needed by
 * the GSG to keep track of this one particular data, and will exist as long
 * as the data is ready to be rendered.
 *
 * When either the Data or the PreparedGraphicsObjects object destructs, the
 * IndexBufferContext will be deleted.
 */
123
IndexBufferContext *PreparedGraphicsObjects::prepare_index_buffer_now(GeomPrimitive *data, GraphicsStateGuardianBase *gsg);

2862 21 enqueue_shader_buffer 0 4 3299 46 PreparedGraphicsObjects::enqueue_shader_buffer 0 1 1307 155
/**
 * Indicates that a buffer would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */
72
void PreparedGraphicsObjects::enqueue_shader_buffer(ShaderBuffer *data);

2863 23 is_shader_buffer_queued 0 4 3299 48 PreparedGraphicsObjects::is_shader_buffer_queued 0 1 1308 92
/**
 * Returns true if the index buffer has been queued on this GSG, false
 * otherwise.
 */
86
bool PreparedGraphicsObjects::is_shader_buffer_queued(ShaderBuffer const *data) const;

2864 21 dequeue_shader_buffer 0 4 3299 46 PreparedGraphicsObjects::dequeue_shader_buffer 0 1 1309 383
/**
 * Removes a buffer from the queued list of data arrays to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the data will automatically be
 * dequeued and prepared at the next frame.
 *
 * The return value is true if the buffer is successfully dequeued, false if
 * it had not been queued.
 */
72
bool PreparedGraphicsObjects::dequeue_shader_buffer(ShaderBuffer *data);

2865 25 is_shader_buffer_prepared 0 4 3299 50 PreparedGraphicsObjects::is_shader_buffer_prepared 0 1 1310 94
/**
 * Returns true if the index buffer has been prepared on this GSG, false
 * otherwise.
 */
88
bool PreparedGraphicsObjects::is_shader_buffer_prepared(ShaderBuffer const *data) const;

2866 21 release_shader_buffer 0 4 3299 46 PreparedGraphicsObjects::release_shader_buffer 0 1 1311 481
/**
 * Indicates that a data context, created by a previous call to
 * prepare_shader_buffer(), is no longer needed.  The driver resources will not
 * be freed until some GSG calls update(), indicating it is at a stage where
 * it is ready to release datas--this prevents conflicts from threading or
 * multiple GSG's sharing datas (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_shader_buffer is called).
 */
71
void PreparedGraphicsObjects::release_shader_buffer(BufferContext *bc);

2867 26 release_all_shader_buffers 0 4 3299 51 PreparedGraphicsObjects::release_all_shader_buffers 0 1 1312 175
/**
 * Releases all datas at once.  This will force them to be reloaded into data
 * memory for all GSG's that share this object.  Returns the number of datas
 * released.
 */
62
int PreparedGraphicsObjects::release_all_shader_buffers(void);

2868 29 get_num_queued_shader_buffers 0 4 3299 54 PreparedGraphicsObjects::get_num_queued_shader_buffers 0 1 1313 101
/**
 * Returns the number of index buffers that have been enqueued to be prepared
 * on this GSG.
 */
71
int PreparedGraphicsObjects::get_num_queued_shader_buffers(void) const;

2869 31 get_num_prepared_shader_buffers 0 4 3299 56 PreparedGraphicsObjects::get_num_prepared_shader_buffers 0 1 1314 94
/**
 * Returns the number of index buffers that have already been prepared on this
 * GSG.
 */
73
int PreparedGraphicsObjects::get_num_prepared_shader_buffers(void) const;

2870 25 prepare_shader_buffer_now 0 4 3299 50 PreparedGraphicsObjects::prepare_shader_buffer_now 0 1 1315 712
/**
 * Immediately creates a new BufferContext for the indicated data and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new datas.  If this
 * is not necessarily the case, you should use enqueue_shader_buffer() instead.
 *
 * Normally, this function is not called directly.  Call Data::prepare_now()
 * instead.
 *
 * The BufferContext contains all of the pertinent information needed by
 * the GSG to keep track of this one particular data, and will exist as long
 * as the data is ready to be rendered.
 *
 * When either the Data or the PreparedGraphicsObjects object destructs, the
 * BufferContext will be deleted.
 */
118
BufferContext *PreparedGraphicsObjects::prepare_shader_buffer_now(ShaderBuffer *data, GraphicsStateGuardianBase *gsg);

2871 23 upcast_to_BufferContext 0 12 3300 43 IndexBufferContext::upcast_to_BufferContext 0 1 1321 47
upcast from IndexBufferContext to BufferContext
65
BufferContext *IndexBufferContext::upcast_to_BufferContext(void);

2872 30 downcast_to_IndexBufferContext 0 12 3240 45 BufferContext::downcast_to_IndexBufferContext 0 0 49
downcast from BufferContext to IndexBufferContext
72
IndexBufferContext *BufferContext::downcast_to_IndexBufferContext(void);

2873 25 upcast_to_AdaptiveLruPage 0 12 3300 45 IndexBufferContext::upcast_to_AdaptiveLruPage 0 1 1322 49
upcast from IndexBufferContext to AdaptiveLruPage
69
AdaptiveLruPage *IndexBufferContext::upcast_to_AdaptiveLruPage(void);

2874 30 downcast_to_IndexBufferContext 0 12 3165 47 AdaptiveLruPage::downcast_to_IndexBufferContext 0 0 51
downcast from AdaptiveLruPage to IndexBufferContext
74
IndexBufferContext *AdaptiveLruPage::downcast_to_IndexBufferContext(void);

2875 8 get_data 0 4 3300 28 IndexBufferContext::get_data 0 1 1316 68
/**
 * Returns the pointer to the client-side array data object.
 */
63
inline GeomPrimitive *IndexBufferContext::get_data(void) const;

2876 12 changed_size 0 4 3300 32 IndexBufferContext::changed_size 0 1 1317 101
/**
 * Returns true if the data has changed size since the last time mark_loaded()
 * was called.
 */
94
inline bool IndexBufferContext::changed_size(GeomPrimitivePipelineReader const *reader) const;

2877 18 changed_usage_hint 0 4 3300 38 IndexBufferContext::changed_usage_hint 0 1 1318 111
/**
 * Returns true if the data has changed its usage hint since the last time
 * mark_loaded() was called.
 */
100
inline bool IndexBufferContext::changed_usage_hint(GeomPrimitivePipelineReader const *reader) const;

2878 12 was_modified 0 4 3300 32 IndexBufferContext::was_modified 0 1 1319 102
/**
 * Returns true if the data has been modified since the last time
 * mark_loaded() was called.
 */
94
inline bool IndexBufferContext::was_modified(GeomPrimitivePipelineReader const *reader) const;

2879 14 get_class_type 0 4 3300 34 IndexBufferContext::get_class_type 0 1 1320 0
59
static TypeHandle IndexBufferContext::get_class_type(void);

2880 19 ~IndexBufferContext 0 516 3300 39 IndexBufferContext::~IndexBufferContext 0 0 0
46
IndexBufferContext::~IndexBufferContext(void);

2881 9 make_copy 0 6 3301 15 Lens::make_copy 0 1 1323 0
58
virtual PointerTo< Lens > Lens::make_copy(void) const = 0;

2882 7 extrude 0 4 3301 13 Lens::extrude 0 2 1324 1325 948
/**
 * Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is
 * the center of the lens and (-1,-1) is the lower-left corner, compute the
 * corresponding vector in space that maps to this point, if such a vector can
 * be determined.  The vector is returned by indicating the points on the near
 * plane and far plane that both map to the indicated 2-d point.
 *
 * Returns true if the vector is defined, or false otherwise.
 */

/**
 * Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is
 * the center of the lens and (-1,-1) is the lower-left corner, compute the
 * corresponding vector in space that maps to this point, if such a vector can
 * be determined.  The vector is returned by indicating the points on the near
 * plane and far plane that both map to the indicated 2-d point.
 *
 * The z coordinate of the 2-d point is ignored.
 *
 * Returns true if the vector is defined, or false otherwise.
 */
195
inline bool Lens::extrude(LPoint2 const &point2d, LPoint3 &near_point, LPoint3 &far_point) const;
inline bool Lens::extrude(LPoint3 const &point2d, LPoint3 &near_point, LPoint3 &far_point) const;

2883 13 extrude_depth 0 4 3301 19 Lens::extrude_depth 0 1 1326 262
/**
 * Uses the depth component of the 3-d result from project() to compute the
 * original point in 3-d space corresponding to a particular point on the
 * lens.  This exactly reverses project(), assuming the point does fall
 * legitimately within the lens.
 */
80
inline bool Lens::extrude_depth(LPoint3 const &point2d, LPoint3 &point3d) const;

2884 11 extrude_vec 0 4 3301 17 Lens::extrude_vec 0 2 1327 1328 1080
/**
 * Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is
 * the center of the lens and (-1,-1) is the lower-left corner, compute the
 * vector that corresponds to the view direction.  This will be parallel to
 * the normal on the surface (the far plane) corresponding to the lens shape
 * at this point.
 *
 * See the comment block on Lens::extrude_vec_impl() for a more in-depth
 * comment on the meaning of this vector.
 *
 * Returns true if the vector is defined, or false otherwise.
 */

/**
 * Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is
 * the center of the lens and (-1,-1) is the lower-left corner, compute the
 * vector that corresponds to the view direction.  This will be parallel to
 * the normal on the surface (the far plane) corresponding to the lens shape
 * at this point.
 *
 * See the comment block on Lens::extrude_vec_impl() for a more in-depth
 * comment on the meaning of this vector.
 *
 * The z coordinate of the 2-d point is ignored.
 *
 * Returns true if the vector is defined, or false otherwise.
 */
155
inline bool Lens::extrude_vec(LPoint2 const &point2d, LVector3 &vec3d) const;
inline bool Lens::extrude_vec(LPoint3 const &point2d, LVector3 &vec3d) const;

2885 7 project 0 4 3301 13 Lens::project 0 2 1329 1330 1069
/**
 * Given a 3-d point in space, determine the 2-d point this maps to, in the
 * range (-1,1) in both dimensions, where (0,0) is the center of the lens and
 * (-1,-1) is the lower-left corner.
 *
 * Returns true if the 3-d point is in front of the lens and within the
 * viewing frustum (in which case point2d is filled in), or false otherwise
 * (in which case point2d will be filled in with something, which may or may
 * not be meaningful).
 */

/**
 * Given a 3-d point in space, determine the 2-d point this maps to, in the
 * range (-1,1) in both dimensions, where (0,0) is the center of the lens and
 * (-1,-1) is the lower-left corner.
 *
 * The z coordinate will also be set to a value in the range (-1, 1), where 1
 * represents a point on the near plane, and -1 represents a point on the far
 * plane.
 *
 * Returns true if the 3-d point is in front of the lens and within the
 * viewing frustum (in which case point2d is filled in), or false otherwise
 * (in which case point2d will be filled in with something, which may or may
 * not be meaningful).
 */
149
inline bool Lens::project(LPoint3 const &point3d, LPoint3 &point2d) const;
inline bool Lens::project(LPoint3 const &point3d, LPoint2 &point2d) const;

2886 16 set_change_event 0 4 3301 22 Lens::set_change_event 0 1 1331 343
/**
 * Sets the name of the event that will be generated whenever any properties
 * of the Lens have changed.  If this is not set for a particular lens, no
 * event will be generated.
 *
 * The event is thrown with one parameter, the lens itself.  This can be used
 * to automatically track changes to camera fov, etc.  in the application.
 */
61
inline void Lens::set_change_event(std::string const &event);

2887 16 get_change_event 0 4 3301 22 Lens::get_change_event 0 1 1332 128
/**
 * Returns the name of the event that will be generated whenever any
 * properties of this particular Lens have changed.
 */
61
inline std::string const &Lens::get_change_event(void) const;

2888 21 set_coordinate_system 0 4 3301 27 Lens::set_coordinate_system 0 1 1333 138
/**
 * Specifies the coordinate system that all 3-d computations are performed
 * within for this Lens.  Normally, this is CS_default.
 */
54
void Lens::set_coordinate_system(CoordinateSystem cs);

2889 21 get_coordinate_system 0 4 3301 27 Lens::get_coordinate_system 0 1 1334 136
/**
 * Returns the coordinate system that all 3-d computations are performed
 * within for this Lens.  Normally, this is CS_default.
 */
64
inline CoordinateSystem Lens::get_coordinate_system(void) const;

2890 5 clear 0 4 3301 11 Lens::clear 0 1 1335 72
/**
 * Resets all lens parameters to their initial default settings.
 */
23
void Lens::clear(void);

2891 13 set_film_size 0 4 3301 19 Lens::set_film_size 0 3 1336 1337 1338 1744
/**
 * Sets the horizontal size of the film without changing its shape.  The
 * aspect ratio remains unchanged; this computes the vertical size of the film
 * to automatically maintain the aspect ratio.
 */

/**
 * Sets the size and shape of the "film" within the lens.  This both
 * establishes the units used by calls like set_focal_length(), and
 * establishes the aspect ratio of the frame.
 *
 * In a physical camera, the field of view of a lens is determined by the
 * lens' focal length and by the size of the film area exposed by the lens.
 * For instance, a 35mm camera exposes a rectangle on the film about 24mm x
 * 36mm, which means a 50mm lens gives about a 40-degree horizontal field of
 * view.
 *
 * In the virtual camera, you may set the film size to any units here, and
 * specify a focal length in the same units to simulate the same effect.  Or,
 * you may ignore this parameter, and specify the field of view and aspect
 * ratio of the lens directly.
 */

/**
 * Sets the size and shape of the "film" within the lens.  This both
 * establishes the units used by calls like set_focal_length(), and
 * establishes the aspect ratio of the frame.
 *
 * In a physical camera, the field of view of a lens is determined by the
 * lens' focal length and by the size of the film area exposed by the lens.
 * For instance, a 35mm camera exposes a rectangle on the film about 24mm x
 * 36mm, which means a 50mm lens gives about a 40-degree horizontal field of
 * view.
 *
 * In the virtual camera, you may set the film size to any units here, and
 * specify a focal length in the same units to simulate the same effect.  Or,
 * you may ignore this parameter, and specify the field of view and aspect
 * ratio of the lens directly.
 */
184
inline void Lens::set_film_size(PN_stdfloat width);
inline void Lens::set_film_size(PN_stdfloat width, PN_stdfloat height);
inline void Lens::set_film_size(LVecBase2 const &film_size);

2892 13 get_film_size 0 4 3301 19 Lens::get_film_size 0 1 1339 102
/**
 * Returns the horizontal and vertical film size of the virtual film.  See
 * set_film_size().
 */
56
inline LVecBase2 const &Lens::get_film_size(void) const;

2893 15 set_film_offset 0 4 3301 21 Lens::set_film_offset 0 2 1340 1341 388
/**
 * Sets the horizontal and vertical offset amounts of this Lens.  These are
 * both in the same units specified in set_film_size().
 *
 * This can be used to establish an off-axis lens.
 */

/**
 * Sets the horizontal and vertical offset amounts of this Lens.  These are
 * both in the same units specified in set_film_size().
 *
 * This can be used to establish an off-axis lens.
 */
129
inline void Lens::set_film_offset(PN_stdfloat x, PN_stdfloat y);
inline void Lens::set_film_offset(LVecBase2 const &film_offset);

2894 15 get_film_offset 0 4 3301 21 Lens::get_film_offset 0 1 1342 102
/**
 * Returns the horizontal and vertical offset amounts of this Lens.  See
 * set_film_offset().
 */
57
inline LVector2 const &Lens::get_film_offset(void) const;

2895 16 set_focal_length 0 4 3301 22 Lens::set_focal_length 0 1 1343 246
/**
 * Sets the focal length of the lens.  This may adjust the field-of-view
 * correspondingly, and is an alternate way to specify field of view.
 *
 * For certain kinds of lenses (e.g.  OrthographicLens), the focal length has
 * no meaning.
 */
61
inline void Lens::set_focal_length(PN_stdfloat focal_length);

2896 16 get_focal_length 0 4 3301 22 Lens::get_focal_length 0 1 1344 257
/**
 * Returns the focal length of the lens.  This may have been set explicitly by
 * a previous call to set_focal_length(), or it may be computed based on the
 * lens' fov and film_size.  For certain kinds of lenses, the focal length has
 * no meaning.
 */
54
inline PN_stdfloat Lens::get_focal_length(void) const;

2897 11 set_min_fov 0 4 3301 17 Lens::set_min_fov 0 1 1345 499
/**
 * Sets the field of view of the smallest dimension of the window.  If the
 * window is wider than it is tall, this specifies the vertical field of view;
 * if it is taller than it is wide, this specifies the horizontal field of
 * view.
 *
 * In many cases, this is preferable to setting either the horizontal or
 * vertical field of view explicitly.  Setting this parameter means that
 * pulling the window wider will widen the field of view, which is usually
 * what you expect to happen.
 */
44
void Lens::set_min_fov(PN_stdfloat min_fov);

2898 7 set_fov 0 4 3301 13 Lens::set_fov 0 3 1346 1347 1348 837
/**
 * Sets the horizontal field of view of the lens without changing the aspect
 * ratio.  The vertical field of view is adjusted to maintain the same aspect
 * ratio.
 */

/**
 * Sets the field of view of the lens in both dimensions.  This establishes
 * both the field of view and the aspect ratio of the lens.  This is one way
 * to specify the field of view of a lens; set_focal_length() is another way.
 *
 * For certain kinds of lenses (like OrthoLens), the field of view has no
 * meaning.
 */

/**
 * Sets the field of view of the lens in both dimensions.  This establishes
 * both the field of view and the aspect ratio of the lens.  This is one way
 * to specify the field of view of a lens; set_focal_length() is another way.
 *
 * For certain kinds of lenses (like OrthographicLens), the field of view has
 * no meaning.
 */
155
inline void Lens::set_fov(PN_stdfloat fov);
inline void Lens::set_fov(PN_stdfloat hfov, PN_stdfloat vfov);
inline void Lens::set_fov(LVecBase2 const &fov);

2899 7 get_fov 0 4 3301 13 Lens::get_fov 0 1 1349 96
/**
 * Returns the horizontal and vertical film size of the virtual film.  See
 * set_fov().
 */
50
inline LVecBase2 const &Lens::get_fov(void) const;

2900 8 get_hfov 0 4 3301 14 Lens::get_hfov 0 1 1350 72
/**
 * Returns the horizontal component of fov only.  See get_fov().
 */
46
inline PN_stdfloat Lens::get_hfov(void) const;

2901 8 get_vfov 0 4 3301 14 Lens::get_vfov 0 1 1351 70
/**
 * Returns the vertical component of fov only.  See get_fov().
 */
46
inline PN_stdfloat Lens::get_vfov(void) const;

2902 11 get_min_fov 0 4 3301 17 Lens::get_min_fov 0 1 1352 101
/**
 * Returns the field of view of the narrowest dimension of the window.  See
 * set_min_fov().
 */
42
PN_stdfloat Lens::get_min_fov(void) const;

2903 16 set_aspect_ratio 0 4 3301 22 Lens::set_aspect_ratio 0 1 1353 189
/**
 * Sets the aspect ratio of the lens.  This is the ratio of the height to the
 * width of the generated image.  Setting this overrides the two-parameter fov
 * or film size setting.
 */
61
inline void Lens::set_aspect_ratio(PN_stdfloat aspect_ratio);

2904 16 get_aspect_ratio 0 4 3301 22 Lens::get_aspect_ratio 0 1 1354 126
/**
 * Returns the aspect ratio of the Lens.  This is determined based on the
 * indicated film size; see set_film_size().
 */
54
inline PN_stdfloat Lens::get_aspect_ratio(void) const;

2905 8 set_near 0 4 3301 14 Lens::set_near 0 1 1355 142
/**
 * Defines the position of the near plane (or cylinder, sphere, whatever).
 * Points closer to the lens than this may not be rendered.
 */
54
inline void Lens::set_near(PN_stdfloat near_distance);

2906 8 get_near 0 4 3301 14 Lens::get_near 0 1 1356 82
/**
 * Returns the position of the near plane (or cylinder, sphere, whatever).
 */
46
inline PN_stdfloat Lens::get_near(void) const;

2907 7 set_far 0 4 3301 13 Lens::set_far 0 1 1357 144
/**
 * Defines the position of the far plane (or cylinder, sphere, whatever).
 * Points farther from the lens than this may not be rendered.
 */
52
inline void Lens::set_far(PN_stdfloat far_distance);

2908 7 get_far 0 4 3301 13 Lens::get_far 0 1 1358 81
/**
 * Returns the position of the far plane (or cylinder, sphere, whatever).
 */
45
inline PN_stdfloat Lens::get_far(void) const;

2909 12 set_near_far 0 4 3301 18 Lens::set_near_far 0 1 1359 58
/**
 * Simultaneously changes the near and far planes.
 */
84
inline void Lens::set_near_far(PN_stdfloat near_distance, PN_stdfloat far_distance);

2910 16 get_default_near 0 4 3301 22 Lens::get_default_near 0 1 1360 143
/**
 * Returns the default near plane distance that will be assigned to each
 * newly-created lens.  This is read from the Config.prc file.
 */
48
static PN_stdfloat Lens::get_default_near(void);

2911 15 get_default_far 0 4 3301 21 Lens::get_default_far 0 1 1361 143
/**
 * Returns the default far plane distance that will be assigned to each newly-
 * created lens.  This is read from the Config.prc file.
 */
47
static PN_stdfloat Lens::get_default_far(void);

2912 12 set_view_hpr 0 4 3301 18 Lens::set_view_hpr 0 2 1362 1363 624
/**
 * Sets the direction in which the lens is facing.  Normally, this is down the
 * forward axis (usually the Y axis), but it may be rotated.  This is only one
 * way of specifying the rotation; you may also specify an explicit vector in
 * which to look, or you may give a complete transformation matrix.
 */

/**
 * Sets the direction in which the lens is facing.  Normally, this is down the
 * forward axis (usually the Y axis), but it may be rotated.  This is only one
 * way of specifying the rotation; you may also specify an explicit vector in
 * which to look, or you may give a complete transformation matrix.
 */
128
inline void Lens::set_view_hpr(PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
void Lens::set_view_hpr(LVecBase3 const &view_hpr);

2913 12 get_view_hpr 0 4 3301 18 Lens::get_view_hpr 0 1 1364 61
/**
 * Returns the direction in which the lens is facing.
 */
48
LVecBase3 const &Lens::get_view_hpr(void) const;

2914 15 set_view_vector 0 4 3301 21 Lens::set_view_vector 0 2 1365 1366 372
/**
 * Specifies the direction in which the lens is facing by giving an axis to
 * look along, and a perpendicular (or at least non-parallel) up axis.
 *
 * See also set_view_hpr().
 */

/**
 * Specifies the direction in which the lens is facing by giving an axis to
 * look along, and a perpendicular (or at least non-parallel) up axis.
 *
 * See also set_view_hpr().
 */
208
inline void Lens::set_view_vector(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z, PN_stdfloat i, PN_stdfloat j, PN_stdfloat k);
void Lens::set_view_vector(LVector3 const &view_vector, LVector3 const &up_vector);

2915 15 get_view_vector 0 4 3301 21 Lens::get_view_vector 0 1 1367 59
/**
 * Returns the axis along which the lens is facing.
 */
50
LVector3 const &Lens::get_view_vector(void) const;

2916 13 get_up_vector 0 4 3301 19 Lens::get_up_vector 0 1 1368 107
/**
 * Returns the axis perpendicular to the camera's view vector that indicates
 * the "up" direction.
 */
48
LVector3 const &Lens::get_up_vector(void) const;

2917 15 get_nodal_point 0 4 3301 21 Lens::get_nodal_point 0 1 1369 93
/**
 * Returns the center point of the lens: the point from which the lens is
 * viewing.
 */
42
LPoint3 Lens::get_nodal_point(void) const;

2918 24 set_interocular_distance 0 4 3301 30 Lens::set_interocular_distance 0 1 1370 459
/**
 * Sets the distance between the left and right eyes of a stereo camera.  This
 * distance is used to apply a stereo effect when the lens is rendered on a
 * stereo display region.  It only has an effect on a PerspectiveLens.
 *
 * The left eye and the right eye are each offset along the X axis by half of
 * this distance, so that this parameter specifies the total distance between
 * them.
 *
 * Also see set_convergence_distance(), which relates.
 */
77
inline void Lens::set_interocular_distance(PN_stdfloat interocular_distance);

2919 24 get_interocular_distance 0 4 3301 30 Lens::get_interocular_distance 0 1 1371 42
/**
 * See set_interocular_distance().
 */
62
inline PN_stdfloat Lens::get_interocular_distance(void) const;

2920 24 set_convergence_distance 0 4 3301 30 Lens::set_convergence_distance 0 1 1372 1332
/**
 * Sets the distance between between the camera plane and the point in the
 * distance that the left and right eyes are both looking at.  This distance
 * is used to apply a stereo effect when the lens is rendered on a stereo
 * display region.  It only has an effect on a PerspectiveLens.
 *
 * This parameter must be greater than 0, but may be as large as you like.  It
 * controls the distance at which the two stereo images will appear to
 * converge, which is a normal property of stereo vision.  Normally this
 * should be set to the distance from the camera to the area of interest in
 * your scene.  Anything beyond this distance will appear to go into the
 * screen, and anything closer will appear to come out of the screen.  If you
 * want to simulate parallel stereo, set this to infinity.
 *
 * Note that this creates an off-axis frustum, which means that the lenses are
 * still pointing in the same direction, which is usually more desirable than
 * the more naive toe-in approach, where the two lenses are simply tilted
 * toward each other.
 *
 * Prior to Panda3D 1.9.0, the convergence was being calculated incorrectly.
 * It has since been corrected.  To restore the legacy behavior you can set
 * the stereo-lens-old-convergence variable to true.
 *
 * Also see set_interocular_distance(), which relates.
 */
77
inline void Lens::set_convergence_distance(PN_stdfloat convergence_distance);

2921 24 get_convergence_distance 0 4 3301 30 Lens::get_convergence_distance 0 1 1373 42
/**
 * See set_convergence_distance().
 */
62
inline PN_stdfloat Lens::get_convergence_distance(void) const;

2922 12 set_view_mat 0 4 3301 18 Lens::set_view_mat 0 1 1374 489
/**
 * Sets an arbitrary transformation on the lens.  This replaces the individual
 * transformation components like set_view_hpr().
 *
 * Setting a transformation here will have a slightly different effect than
 * putting one on the LensNode that contains this lens.  In particular,
 * lighting and other effects computations will still be performed on the lens
 * in its untransformed (facing forward) position, but the actual projection
 * matrix will be transformed by this matrix.
 */
57
inline void Lens::set_view_mat(LMatrix4 const &view_mat);

2923 12 get_view_mat 0 4 3301 18 Lens::get_view_mat 0 1 1375 61
/**
 * Returns the direction in which the lens is facing.
 */
54
inline LMatrix4 const &Lens::get_view_mat(void) const;

2924 14 clear_view_mat 0 4 3301 20 Lens::clear_view_mat 0 1 1376 49
/**
 * Resets the lens transform to identity.
 */
32
void Lens::clear_view_mat(void);

2925 12 set_keystone 0 4 3301 18 Lens::set_keystone 0 1 1377 617
/**
 * Indicates the ratio of keystone correction to perform on the lens, in each
 * of three axes.  This will build a special non-affine scale factor into the
 * projection matrix that will compensate for keystoning of a projected image;
 * this can be used to compensate for a projector that for physical reasons
 * cannot be aimed directly at its screen.
 *
 * The default value is taken from the default-keystone Config variable.  0, 0
 * indicates no keystone correction; specify a small value (usually in the
 * range -1 .. 1) in either the x or y position to generate a keystone
 * correction in that axis.
 */
51
void Lens::set_keystone(LVecBase2 const &keystone);

2926 12 get_keystone 0 4 3301 18 Lens::get_keystone 0 1 1378 66
/**
 * Returns the keystone correction specified for the lens.
 */
55
inline LVecBase2 const &Lens::get_keystone(void) const;

2927 14 clear_keystone 0 4 3301 20 Lens::clear_keystone 0 1 1379 49
/**
 * Disables the lens keystone correction.
 */
32
void Lens::clear_keystone(void);

2928 19 set_custom_film_mat 0 4 3301 25 Lens::set_custom_film_mat 0 1 1380 425
/**
 * Specifies a custom matrix to transform the points on the film after they
 * have been converted into nominal film space (-1 .. 1 in U and V).  This can
 * be used to introduce arbitrary scales, rotations, or other linear
 * transforms to the media plane.  This is normally a 2-d matrix, but a full
 * 4x4 matrix may be specified.  This is applied on top of any film size, lens
 * shift, and/or keystone correction.
 */
64
void Lens::set_custom_film_mat(LMatrix4 const &custom_film_mat);

2929 19 get_custom_film_mat 0 4 3301 25 Lens::get_custom_film_mat 0 1 1381 62
/**
 * Returns the custom_film_mat specified for the lens.
 */
61
inline LMatrix4 const &Lens::get_custom_film_mat(void) const;

2930 21 clear_custom_film_mat 0 4 3301 27 Lens::clear_custom_film_mat 0 1 1382 56
/**
 * Disables the lens custom_film_mat correction.
 */
39
void Lens::clear_custom_film_mat(void);

2931 24 set_frustum_from_corners 0 4 3301 30 Lens::set_frustum_from_corners 0 1 1383 2188
/**
 * Sets up the lens to use the frustum defined by the four indicated points.
 * This is most useful for a PerspectiveLens, but it may be called for other
 * kinds of lenses as well.
 *
 * The frustum will be rooted at the origin (or by whatever translation might
 * have been specified in a previous call to set_view_mat).
 *
 * It is legal for the four points not to be arranged in a rectangle; if this
 * is the case, the frustum will be fitted as tightly as possible to cover all
 * four points.
 *
 * The flags parameter contains the union of one or more of the following bits
 * to control the behavior of this function:
 *
 * FC_roll - If this is included, the camera may be rotated so that its up
 * vector is perpendicular to the top line.  Otherwise, the standard up vector
 * is used.
 *
 * FC_camera_plane - This allows the camera plane to be adjusted to be as
 * nearly perpendicular to the center of the frustum as possible.  Without
 * this bit, the orientation camera plane is defined by position of the four
 * points (which should all be coplanar).  With this bit, the camera plane is
 * arbitrary, and may be chosen so that the four points do not themselves lie
 * in the camera plane (but the points will still be within the frustum).
 *
 * FC_off_axis - This allows the resulting frustum to be off-axis to get the
 * tightest possible fit.  Without this bit, the viewing axis will be centered
 * within the frustum, but there may be more wasted space along the edges.
 *
 * FC_aspect_ratio - This allows the frustum to be scaled non-proportionately
 * in the vertical and horizontal dimensions, if necessary, to get a tighter
 * fit.  Without this bit, the current aspect ratio will be preserved.
 *
 * FC_shear - This allows the frustum to be sheared, if necessary, to get the
 * tightest possible fit.  This may result in a parallelogram-based frustum,
 * which will give a slanted appearance to the rendered image.  Without this
 * bit, the frustum will be rectangle-based.
 *
 * In general, if 0 is passed in as the value for flags, the generated frustum
 * will be a loose fit but sane; if -1 is passed in, it will be a tighter fit
 * and possibly screwy.
 */
131
void Lens::set_frustum_from_corners(LVecBase3 const &ul, LVecBase3 const &ur, LVecBase3 const &ll, LVecBase3 const &lr, int flags);

2932 13 recompute_all 0 4 3301 19 Lens::recompute_all 0 1 1384 169
/**
 * Forces all internal parameters of the Lens to be recomputed.  Normally,
 * this should never need to be called; it is provided only to assist in
 * debugging.
 */
31
void Lens::recompute_all(void);

2933 9 is_linear 0 6 3301 15 Lens::is_linear 0 1 1385 206
/**
 * Returns true if the lens represents a linear projection (e.g.
 * PerspectiveLens, OrthographicLens), and therefore there is a valid matrix
 * returned by get_projection_mat(), or false otherwise.
 */
41
virtual bool Lens::is_linear(void) const;

2934 14 is_perspective 0 6 3301 20 Lens::is_perspective 0 1 1386 124
/**
 * Returns true if the lens represents a perspective projection (i.e.  it is a
 * PerspectiveLens), false otherwise.
 */
46
virtual bool Lens::is_perspective(void) const;

2935 15 is_orthographic 0 6 3301 21 Lens::is_orthographic 0 1 1387 126
/**
 * Returns true if the lens represents a orthographic projection (i.e.  it is
 * a OrthographicLens), false otherwise.
 */
47
virtual bool Lens::is_orthographic(void) const;

2936 13 make_geometry 0 6 3301 19 Lens::make_geometry 0 1 1388 236
/**
 * Allocates and returns a new Geom that can be rendered to show a visible
 * representation of the frustum used for this kind of lens, if it makes sense
 * to do so.  If a visible representation cannot be created, returns NULL.
 */
52
virtual PointerTo< Geom > Lens::make_geometry(void);

2937 11 make_bounds 0 6 3301 17 Lens::make_bounds 0 1 1389 190
/**
 * Allocates and returns a new BoundingVolume that encloses the frustum used
 * for this kind of lens, if possible.  If a suitable bounding volume cannot
 * be created, returns NULL.
 */
66
virtual PointerTo< BoundingVolume > Lens::make_bounds(void) const;

2938 18 get_projection_mat 0 4 3301 24 Lens::get_projection_mat 0 1 1390 183
/**
 * Returns the complete transformation matrix from a 3-d point in space to a
 * point on the film, if such a matrix exists, or the identity matrix if the
 * lens is nonlinear.
 */
101
inline LMatrix4 const &Lens::get_projection_mat(Lens::StereoChannel channel = ::Lens::SC_mono) const;

2939 22 get_projection_mat_inv 0 4 3301 28 Lens::get_projection_mat_inv 0 1 1391 128
/**
 * Returns the matrix that transforms from a 2-d point on the film to a 3-d
 * vector in space, if such a matrix exists.
 */
105
inline LMatrix4 const &Lens::get_projection_mat_inv(Lens::StereoChannel channel = ::Lens::SC_mono) const;

2940 12 get_film_mat 0 4 3301 18 Lens::get_film_mat 0 1 1392 101
/**
 * Returns the matrix that transforms from a point behind the lens to a point
 * on the film.
 */
54
inline LMatrix4 const &Lens::get_film_mat(void) const;

2941 16 get_film_mat_inv 0 4 3301 22 Lens::get_film_mat_inv 0 1 1393 101
/**
 * Returns the matrix that transforms from a point on the film to a point
 * behind the lens.
 */
58
inline LMatrix4 const &Lens::get_film_mat_inv(void) const;

2942 12 get_lens_mat 0 4 3301 18 Lens::get_lens_mat 0 1 1394 103
/**
 * Returns the matrix that transforms from a point in front of the lens to a
 * point in space.
 */
54
inline LMatrix4 const &Lens::get_lens_mat(void) const;

2943 16 get_lens_mat_inv 0 4 3301 22 Lens::get_lens_mat_inv 0 1 1395 103
/**
 * Returns the matrix that transforms from a point in space to a point in
 * front of the lens.
 */
58
inline LMatrix4 const &Lens::get_lens_mat_inv(void) const;

2944 6 output 0 6 3301 12 Lens::output 0 1 1396 10
/**
 *
 */
51
virtual void Lens::output(std::ostream &out) const;

2945 5 write 0 6 3301 11 Lens::write 0 1 1397 10
/**
 *
 */
72
virtual void Lens::write(std::ostream &out, int indent_level = 0) const;

2946 15 get_last_change 0 4 3301 21 Lens::get_last_change 0 1 1398 192
/**
 * Returns the UpdateSeq that is incremented whenever the lens properties are
 * changed.  As long as this number remains the same, you may assume the lens
 * properties are unchanged.
 */
51
inline UpdateSeq Lens::get_last_change(void) const;

2947 14 get_class_type 0 4 3301 20 Lens::get_class_type 0 1 1399 0
45
static TypeHandle Lens::get_class_type(void);

2948 5 ~Lens 0 516 3301 11 Lens::~Lens 0 0 0
18
Lens::~Lens(void);

2949 37 upcast_to_TypedWritableReferenceCount 0 12 3319 47 Material::upcast_to_TypedWritableReferenceCount 0 1 1449 51
upcast from Material to TypedWritableReferenceCount
83
TypedWritableReferenceCount *Material::upcast_to_TypedWritableReferenceCount(void);

2950 20 downcast_to_Material 0 12 3180 49 TypedWritableReferenceCount::downcast_to_Material 0 0 53
downcast from TypedWritableReferenceCount to Material
66
Material *TypedWritableReferenceCount::downcast_to_Material(void);

2951 17 upcast_to_Namable 0 12 3319 27 Material::upcast_to_Namable 0 1 1450 31
upcast from Material to Namable
43
Namable *Material::upcast_to_Namable(void);

2952 20 downcast_to_Material 0 12 3164 29 Namable::downcast_to_Material 0 0 33
downcast from Namable to Material
46
Material *Namable::downcast_to_Material(void);

2953 8 Material 0 260 3319 18 Material::Material 0 2 1400 1401 22
/**
 *
 */

/**
 *
 */
114
inline explicit Material::Material(std::string const &name = "");
inline Material::Material(Material const &copy);

2954 10 operator = 0 4 3319 20 Material::operator = 0 1 1402 0
48
void Material::operator =(Material const &copy);

2955 9 ~Material 0 518 3319 19 Material::~Material 0 0 10
/**
 *
 */
41
virtual inline Material::~Material(void);

2956 11 get_default 0 4 3319 21 Material::get_default 0 1 1403 40
/**
 * Returns the default material.
 */
52
static inline Material *Material::get_default(void);

2957 14 has_base_color 0 4 3319 24 Material::has_base_color 0 1 1404 104
/**
 * Returns true if the base color has been explicitly set for this material,
 * false otherwise.
 */
49
inline bool Material::has_base_color(void) const;

2958 14 get_base_color 0 4 3319 24 Material::get_base_color 0 1 1405 162
/**
 * Returns the base_color color setting, if it has been set.  If neither the
 * base color nor the metallic have been set, this returns the diffuse color.
 */
58
inline LColor const &Material::get_base_color(void) const;

2959 14 set_base_color 0 4 3319 24 Material::set_base_color 0 1 1406 444
/**
 * Specifies the base color of the material.  In conjunction with
 * set_metallic, this is an alternate way to specify the color of a material.
 * For dielectrics, this will determine the value of the diffuse color, and
 * for metals, this will determine the value of the specular color.
 *
 * Setting this will clear an explicit specular, diffuse or ambient color
 * assignment.
 *
 * If this is not set, the object color will be used.
 */
51
void Material::set_base_color(LColor const &color);

2960 16 clear_base_color 0 4 3319 26 Material::clear_base_color 0 1 1407 67
/**
 * Removes the explicit base_color color from the material.
 */
38
void Material::clear_base_color(void);

2961 11 has_ambient 0 4 3319 21 Material::has_ambient 0 1 1408 107
/**
 * Returns true if the ambient color has been explicitly set for this
 * material, false otherwise.
 */
46
inline bool Material::has_ambient(void) const;

2962 11 get_ambient 0 4 3319 21 Material::get_ambient 0 1 1409 126
/**
 * Returns the ambient color setting, if it has been set.  Returns (0,0,0,0)
 * if the ambient color has not been set.
 */
55
inline LColor const &Material::get_ambient(void) const;

2963 11 set_ambient 0 4 3319 21 Material::set_ambient 0 1 1410 313
/**
 * Specifies the ambient color setting of the material.  This will be the
 * multiplied by any ambient lights in effect on the material to set its base
 * color.
 *
 * This is the color of the object as it appears in the absence of direct
 * light.
 *
 * If this is not set, the object color will be used.
 */
48
void Material::set_ambient(LColor const &color);

2964 13 clear_ambient 0 4 3319 23 Material::clear_ambient 0 1 1411 64
/**
 * Removes the explicit ambient color from the material.
 */
42
inline void Material::clear_ambient(void);

2965 11 has_diffuse 0 4 3319 21 Material::has_diffuse 0 1 1412 107
/**
 * Returns true if the diffuse color has been explicitly set for this
 * material, false otherwise.
 */
46
inline bool Material::has_diffuse(void) const;

2966 11 get_diffuse 0 4 3319 21 Material::get_diffuse 0 1 1413 126
/**
 * Returns the diffuse color setting, if it has been set.  Returns (1,1,1,1)
 * if the diffuse color has not been set.
 */
55
inline LColor const &Material::get_diffuse(void) const;

2967 11 set_diffuse 0 4 3319 21 Material::set_diffuse 0 1 1414 396
/**
 * Specifies the diffuse color setting of the material.  This will be
 * multiplied by any lights in effect on the material to get the color in the
 * parts of the object illuminated by the lights.
 *
 * This is the primary color of an object; the color of the object as it
 * appears in direct light, in the absence of highlights.
 *
 * If this is not set, the object color will be used.
 */
48
void Material::set_diffuse(LColor const &color);

2968 13 clear_diffuse 0 4 3319 23 Material::clear_diffuse 0 1 1415 64
/**
 * Removes the explicit diffuse color from the material.
 */
42
inline void Material::clear_diffuse(void);

2969 12 has_specular 0 4 3319 22 Material::has_specular 0 1 1416 108
/**
 * Returns true if the specular color has been explicitly set for this
 * material, false otherwise.
 */
47
inline bool Material::has_specular(void) const;

2970 12 get_specular 0 4 3319 22 Material::get_specular 0 1 1417 128
/**
 * Returns the specular color setting, if it has been set.  Returns (0,0,0,0)
 * if the specular color has not been set.
 */
56
inline LColor const &Material::get_specular(void) const;

2971 12 set_specular 0 4 3319 22 Material::set_specular 0 1 1418 448
/**
 * Specifies the specular color setting of the material.  This will be
 * multiplied by any lights in effect on the material to compute the color of
 * specular highlights on the object.
 *
 * This is the highlight color of an object: the color of small highlight
 * reflections.
 *
 * If this is not set, the specular color is taken from the index of
 * refraction, which is 1 by default (meaning no specular reflections are
 * generated).
 */
49
void Material::set_specular(LColor const &color);

2972 14 clear_specular 0 4 3319 24 Material::clear_specular 0 1 1419 65
/**
 * Removes the explicit specular color from the material.
 */
36
void Material::clear_specular(void);

2973 12 has_emission 0 4 3319 22 Material::has_emission 0 1 1420 108
/**
 * Returns true if the emission color has been explicitly set for this
 * material, false otherwise.
 */
47
inline bool Material::has_emission(void) const;

2974 12 get_emission 0 4 3319 22 Material::get_emission 0 1 1421 128
/**
 * Returns the emission color setting, if it has been set.  Returns (0,0,0,0)
 * if the emission color has not been set.
 */
56
inline LColor const &Material::get_emission(void) const;

2975 12 set_emission 0 4 3319 22 Material::set_emission 0 1 1422 437
/**
 * Specifies the emission color setting of the material.  This is the color of
 * the object as it appears in the absence of any light whatsover, including
 * ambient light.  It is as if the object is glowing by this color (although
 * of course it will not illuminate neighboring objects).
 *
 * If this is not set, the object will not glow by its own light and will only
 * appear visible in the presence of one or more lights.
 */
49
void Material::set_emission(LColor const &color);

2976 14 clear_emission 0 4 3319 24 Material::clear_emission 0 1 1423 65
/**
 * Removes the explicit emission color from the material.
 */
43
inline void Material::clear_emission(void);

2977 13 get_shininess 0 4 3319 23 Material::get_shininess 0 1 1424 58
/**
 * Returns the shininess exponent of the material.
 */
55
inline PN_stdfloat Material::get_shininess(void) const;

2978 13 set_shininess 0 4 3319 23 Material::set_shininess 0 1 1425 429
/**
 * Sets the shininess exponent of the material.  This controls the size of the
 * specular highlight spot.  In general, larger number produce a smaller
 * specular highlight, which makes the object appear shinier.  Smaller numbers
 * produce a larger highlight, which makes the object appear less shiny.
 *
 * This is usually in the range 0..128.
 *
 * Setting a shininess value removes any previous roughness assignment.
 */
52
void Material::set_shininess(PN_stdfloat shininess);

2979 13 has_roughness 0 4 3319 23 Material::has_roughness 0 1 1426 103
/**
 * Returns true if the roughness has been explicitly set for this material,
 * false otherwise.
 */
48
inline bool Material::has_roughness(void) const;

2980 13 get_roughness 0 4 3319 23 Material::get_roughness 0 1 1427 152
/**
 * Returns the roughness previously specified by set_roughness.  If none was
 * previously set, this value is computed from the shininess value.
 */
48
PN_stdfloat Material::get_roughness(void) const;

2981 13 set_roughness 0 4 3319 23 Material::set_roughness 0 1 1428 379
/**
 * Sets the roughness exponent of the material, where 0 is completely shiny
 * (infinite shininess), and 1 is a completely dull object (0 shininess).
 * This is a different, more perceptually intuitive way of controlling the
 * size of the specular spot, and more commonly used in physically-based
 * rendering.
 *
 * Setting a roughness recalculates the shininess value.
 */
52
void Material::set_roughness(PN_stdfloat roughness);

2982 12 has_metallic 0 4 3319 22 Material::has_metallic 0 1 1429 102
/**
 * Returns true if the metallic has been explicitly set for this material,
 * false otherwise.
 */
47
inline bool Material::has_metallic(void) const;

2983 12 get_metallic 0 4 3319 22 Material::get_metallic 0 1 1430 98
/**
 * Returns the metallic setting, if it has been set.  Returns 0 if it has not
 * been set.
 */
54
inline PN_stdfloat Material::get_metallic(void) const;

2984 12 set_metallic 0 4 3319 22 Material::set_metallic 0 1 1431 369
/**
 * Sets the metallic setting of the material, which is is used for physically-
 * based rendering models.  This is usually 0 for dielectric materials and 1
 * for metals.  It really does not make sense to set this to a value other
 * than 0 or 1, but it is nonetheless a float for compatibility with tools
 * that allow setting this to values other than 0 or 1.
 */
50
void Material::set_metallic(PN_stdfloat metallic);

2985 14 clear_metallic 0 4 3319 24 Material::clear_metallic 0 1 1432 67
/**
 * Removes the explicit metallic setting from the material.
 */
36
void Material::clear_metallic(void);

2986 20 has_refractive_index 0 4 3319 30 Material::has_refractive_index 0 1 1433 97
/**
 * Returns true if a refractive index has explicitly been specified for this
 * material.
 */
55
inline bool Material::has_refractive_index(void) const;

2987 20 get_refractive_index 0 4 3319 30 Material::get_refractive_index 0 1 1434 91
/**
 * Returns the index of refraction, or 1 if none has been set for this
 * material.
 */
62
inline PN_stdfloat Material::get_refractive_index(void) const;

2988 20 set_refractive_index 0 4 3319 30 Material::set_refractive_index 0 1 1435 356
/**
 * Sets the index of refraction of the material, which is used to determine
 * the specular color in absence of an explicit specular color assignment.
 * This is usually 1.5 for dielectric materials.  It is not very useful for
 * metals, since they cannot be described as easily with a single number.
 *
 * Should be 1 or higher.  The default is 1.
 */
66
void Material::set_refractive_index(PN_stdfloat refractive_index);

2989 9 get_local 0 4 3319 19 Material::get_local 0 1 1436 59
/**
 * Returns the local viewer flag.  Set set_local().
 */
44
inline bool Material::get_local(void) const;

2990 9 set_local 0 4 3319 19 Material::set_local 0 1 1437 252
/**
 * Sets the local viewer flag.  Set this true to enable camera-relative
 * specular highlights, or false to use orthogonal specular highlights.  The
 * default value is true.  Applications that use orthogonal projection should
 * specify false.
 */
44
inline void Material::set_local(bool local);

2991 11 get_twoside 0 4 3319 21 Material::get_twoside 0 1 1438 80
/**
 * Returns the state of the two-sided lighting flag.  See set_twoside().
 */
46
inline bool Material::get_twoside(void) const;

2992 11 set_twoside 0 4 3319 21 Material::set_twoside 0 1 1439 241
/**
 * Set this true to enable two-sided lighting.  When two-sided lighting is on,
 * both sides of a polygon will be lit by this material.  The default is for
 * two-sided lighting to be off, in which case only the front surface is lit.
 */
48
inline void Material::set_twoside(bool twoside);

2993 11 operator == 0 4 3319 21 Material::operator == 0 1 1440 0
63
inline bool Material::operator ==(Material const &other) const;

2994 11 operator != 0 4 3319 21 Material::operator != 0 1 1441 0
63
inline bool Material::operator !=(Material const &other) const;

2995 10 operator < 0 4 3319 20 Material::operator < 0 1 1442 0
62
inline bool Material::operator <(Material const &other) const;

2996 10 compare_to 0 4 3319 20 Material::compare_to 0 1 1443 266
/**
 * Returns a number less than zero if this material sorts before the other
 * one, greater than zero if it sorts after, or zero if they are equivalent.
 * The sorting order is arbitrary and largely meaningless, except to
 * differentiate different materials.
 */
54
int Material::compare_to(Material const &other) const;

2997 6 output 0 4 3319 16 Material::output 0 1 1444 10
/**
 *
 */
47
void Material::output(std::ostream &out) const;

2998 5 write 0 4 3319 15 Material::write 0 1 1445 10
/**
 *
 */
58
void Material::write(std::ostream &out, int indent) const;

2999 16 is_attrib_locked 0 4 3319 26 Material::is_attrib_locked 0 1 1446 62
/**
 * @deprecated This no longer has any meaning in 1.10.
 */
51
inline bool Material::is_attrib_locked(void) const;

3000 15 set_attrib_lock 0 4 3319 25 Material::set_attrib_lock 0 1 1447 62
/**
 * @deprecated This no longer has any meaning in 1.10.
 */
44
inline void Material::set_attrib_lock(void);

3001 14 get_class_type 0 4 3319 24 Material::get_class_type 0 1 1448 0
49
static TypeHandle Material::get_class_type(void);

3002 12 get_material 0 4 3320 26 MaterialPool::get_material 0 1 1451 657
/**
 * Returns a Material pointer that represents the same material described by
 * temp, except that it is a shared pointer.
 *
 * Each call to get_material() passing an equivalent Material pointer will
 * return the same shared pointer.
 *
 * If you modify the shared pointer, it will automatically disassociate it
 * from the pool.
 *
 * Also, the return value may be a different pointer than that passed in, or
 * it may be the same pointer.  In either case, the passed in pointer has now
 * been sacrificed to the greater good and should not be used again (like any
 * other PointerTo, it will be freed when the last reference count is
 * removed).
 */
67
static inline Material *MaterialPool::get_material(Material *temp);

3003 16 release_material 0 4 3320 30 MaterialPool::release_material 0 1 1452 56
/**
 * Removes the indicated material from the pool.
 */
66
static inline void MaterialPool::release_material(Material *temp);

3004 21 release_all_materials 0 4 3320 35 MaterialPool::release_all_materials 0 1 1453 90
/**
 * Releases all materials in the pool and restores the pool to the empty
 * state.
 */
61
static inline void MaterialPool::release_all_materials(void);

3005 15 garbage_collect 0 4 3320 29 MaterialPool::garbage_collect 0 1 1454 215
/**
 * Releases only those materials in the pool that have a reference count of
 * exactly 1; i.e.  only those materials that are not being used outside of
 * the pool.  Returns the number of materials released.
 */
54
static inline int MaterialPool::garbage_collect(void);

3006 13 list_contents 0 4 3320 27 MaterialPool::list_contents 0 1 1455 82
/**
 * Lists the contents of the material pool to the indicated output stream.
 */
66
static inline void MaterialPool::list_contents(std::ostream &out);

3007 5 write 0 4 3320 19 MaterialPool::write 0 1 1456 82
/**
 * Lists the contents of the material pool to the indicated output stream.
 */
51
static void MaterialPool::write(std::ostream &out);

3008 13 ~MaterialPool 0 516 3320 27 MaterialPool::~MaterialPool 0 0 0
34
MaterialPool::~MaterialPool(void);

3009 10 MatrixLens 0 260 3321 22 MatrixLens::MatrixLens 0 1 1457 22
/**
 *
 */

/**
 *
 */
36
inline MatrixLens::MatrixLens(void);

3010 12 set_user_mat 0 4 3321 24 MatrixLens::set_user_mat 0 1 1458 559
/**
 * Explicitly specifies the projection matrix.  This matrix should convert X
 * and Y to the range [-film_size/2, film_size/2], where (-fs/2,-fs/2) is the
 * lower left corner of the screen and (fs/2, fs/2) is the upper right.  Z
 * should go to the range [-1, 1], where -1 is the near plane and 1 is the far
 * plane.  Note that this is a left-handed Y-up coordinate system.
 *
 * The default film_size for a MatrixLens is 2, so the default range is [-1,
 * 1] for both X and Y.  This is consistent with the GL conventions for
 * projection matrices.
 */
63
inline void MatrixLens::set_user_mat(LMatrix4 const &user_mat);

3011 12 get_user_mat 0 4 3321 24 MatrixLens::get_user_mat 0 1 1459 161
/**
 * Returns the explicit projection matrix as set by the user.  This does not
 * include transforms on the lens or film (e.g.  a film offset or view hpr).
 */
60
inline LMatrix4 const &MatrixLens::get_user_mat(void) const;

3012 16 set_left_eye_mat 0 4 3321 28 MatrixLens::set_left_eye_mat 0 1 1460 424
/**
 * Sets a custom projection matrix for the left eye.  This is only used if the
 * lens is attached to a stereo camera, in which case the left eye matrix will
 * be used to draw the scene in the left eye (but the center matrix--the
 * user_mat--will still be used to cull the scene).
 *
 * This matrix should not be too different from the center matrix (set by
 * set_user_mat()) or culling errors may become obvious.
 */
67
inline void MatrixLens::set_left_eye_mat(LMatrix4 const &user_mat);

3013 18 clear_left_eye_mat 0 4 3321 30 MatrixLens::clear_left_eye_mat 0 1 1461 130
/**
 * Removes the custom projection matrix set for the left eye, and uses the
 * center matrix (set by set_user_mat) instead.
 */
49
inline void MatrixLens::clear_left_eye_mat(void);

3014 16 has_left_eye_mat 0 4 3321 28 MatrixLens::has_left_eye_mat 0 1 1462 179
/**
 * Returns true if the camera has a custom projection matrix set for the left
 * eye, or false if the center matrix (set by set_user_mat) will be used for
 * the left eye.
 */
53
inline bool MatrixLens::has_left_eye_mat(void) const;

3015 16 get_left_eye_mat 0 4 3321 28 MatrixLens::get_left_eye_mat 0 1 1463 148
/**
 * Returns the custom projection matrix for the left eye, if any, or the
 * center matrix if there is no custom matrix set for the left eye.
 */
64
inline LMatrix4 const &MatrixLens::get_left_eye_mat(void) const;

3016 17 set_right_eye_mat 0 4 3321 29 MatrixLens::set_right_eye_mat 0 1 1464 427
/**
 * Sets a custom projection matrix for the right eye.  This is only used if
 * the lens is attached to a stereo camera, in which case the right eye matrix
 * will be used to draw the scene in the right eye (but the center matrix--the
 * user_mat--will still be used to cull the scene).
 *
 * This matrix should not be too different from the center matrix (set by
 * set_user_mat()) or culling errors may become obvious.
 */
68
inline void MatrixLens::set_right_eye_mat(LMatrix4 const &user_mat);

3017 19 clear_right_eye_mat 0 4 3321 31 MatrixLens::clear_right_eye_mat 0 1 1465 131
/**
 * Removes the custom projection matrix set for the right eye, and uses the
 * center matrix (set by set_user_mat) instead.
 */
50
inline void MatrixLens::clear_right_eye_mat(void);

3018 17 has_right_eye_mat 0 4 3321 29 MatrixLens::has_right_eye_mat 0 1 1466 181
/**
 * Returns true if the camera has a custom projection matrix set for the right
 * eye, or false if the center matrix (set by set_user_mat) will be used for
 * the right eye.
 */
54
inline bool MatrixLens::has_right_eye_mat(void) const;

3019 17 get_right_eye_mat 0 4 3321 29 MatrixLens::get_right_eye_mat 0 1 1467 150
/**
 * Returns the custom projection matrix for the right eye, if any, or the
 * center matrix if there is no custom matrix set for the right eye.
 */
65
inline LMatrix4 const &MatrixLens::get_right_eye_mat(void) const;

3020 14 get_class_type 0 4 3321 26 MatrixLens::get_class_type 0 1 1468 0
51
static TypeHandle MatrixLens::get_class_type(void);

3021 11 ~MatrixLens 0 516 3321 23 MatrixLens::~MatrixLens 0 0 0
30
MatrixLens::~MatrixLens(void);

3022 16 OrthographicLens 0 260 3322 34 OrthographicLens::OrthographicLens 0 1 1469 22
/**
 *
 */

/**
 *
 */
48
inline OrthographicLens::OrthographicLens(void);

3023 14 get_class_type 0 4 3322 32 OrthographicLens::get_class_type 0 1 1470 0
57
static TypeHandle OrthographicLens::get_class_type(void);

3024 17 ~OrthographicLens 0 516 3322 35 OrthographicLens::~OrthographicLens 0 0 0
42
OrthographicLens::~OrthographicLens(void);

3025 19 ParamTextureSampler 0 260 3323 40 ParamTextureSampler::ParamTextureSampler 0 1 1471 94
/**
 * Creates a new ParamTextureSampler storing the given texture and sampler
 * objects.
 */
91
inline ParamTextureSampler::ParamTextureSampler(Texture *tex, SamplerState const &sampler);

3026 11 get_texture 0 4 3323 32 ParamTextureSampler::get_texture 0 1 1472 57
/**
 * Retrieves the texture stored in the parameter.
 */
61
inline Texture *ParamTextureSampler::get_texture(void) const;

3027 11 get_sampler 0 4 3323 32 ParamTextureSampler::get_sampler 0 1 1473 63
/**
 * Retrieves the sampler state stored in the parameter.
 */
72
inline SamplerState const &ParamTextureSampler::get_sampler(void) const;

3028 14 get_class_type 0 4 3323 35 ParamTextureSampler::get_class_type 0 1 1474 0
60
static TypeHandle ParamTextureSampler::get_class_type(void);

3029 20 ~ParamTextureSampler 0 516 3323 41 ParamTextureSampler::~ParamTextureSampler 0 0 0
48
ParamTextureSampler::~ParamTextureSampler(void);

3030 17 ParamTextureImage 0 260 3326 36 ParamTextureImage::ParamTextureImage 0 1 1475 101
/**
 * Creates a new ParamTextureImage storing the given texture and image binding
 * parameters.
 */
104
inline ParamTextureImage::ParamTextureImage(Texture *tex, bool read, bool write, int z = -1, int n = 0);

3031 11 get_texture 0 4 3326 30 ParamTextureImage::get_texture 0 1 1476 57
/**
 * Retrieves the texture stored in the parameter.
 */
59
inline Texture *ParamTextureImage::get_texture(void) const;

3032 15 has_read_access 0 4 3326 34 ParamTextureImage::has_read_access 0 1 1477 79
/**
 * Returns true if this image should be bound with read access enabled.
 */
59
inline bool ParamTextureImage::has_read_access(void) const;

3033 16 has_write_access 0 4 3326 35 ParamTextureImage::has_write_access 0 1 1478 80
/**
 * Returns true if this image should be bound with write access enabled.
 */
60
inline bool ParamTextureImage::has_write_access(void) const;

3034 16 get_bind_layered 0 4 3326 35 ParamTextureImage::get_bind_layered 0 1 1479 83
/**
 * Returns true if all layers of this image should be bound simultaneously.
 */
60
inline bool ParamTextureImage::get_bind_layered(void) const;

3035 14 get_bind_level 0 4 3326 33 ParamTextureImage::get_bind_level 0 1 1480 56
/**
 * Returns the image level that should be bound.
 */
57
inline int ParamTextureImage::get_bind_level(void) const;

3036 14 get_bind_layer 0 4 3326 33 ParamTextureImage::get_bind_layer 0 1 1481 115
/**
 * Returns the image layer that should be bound.  This is undefined if
 * get_bind_layered() returns false.
 */
57
inline int ParamTextureImage::get_bind_layer(void) const;

3037 14 get_class_type 0 4 3326 33 ParamTextureImage::get_class_type 0 1 1482 0
58
static TypeHandle ParamTextureImage::get_class_type(void);

3038 18 ~ParamTextureImage 0 516 3326 37 ParamTextureImage::~ParamTextureImage 0 0 0
44
ParamTextureImage::~ParamTextureImage(void);

3039 15 PerspectiveLens 0 260 3327 32 PerspectiveLens::PerspectiveLens 0 2 1483 1484 34
/**
 *
 */

/**
 *
 */

/**
 *
 */
132
inline PerspectiveLens::PerspectiveLens(void);
inline explicit PerspectiveLens::PerspectiveLens(PN_stdfloat hfov, PN_stdfloat vfov);

3040 14 get_class_type 0 4 3327 31 PerspectiveLens::get_class_type 0 1 1485 0
56
static TypeHandle PerspectiveLens::get_class_type(void);

3041 16 ~PerspectiveLens 0 516 3327 33 PerspectiveLens::~PerspectiveLens 0 0 0
40
PerspectiveLens::~PerspectiveLens(void);

3042 20 TextureReloadRequest 0 260 3328 42 TextureReloadRequest::TextureReloadRequest 0 2 1486 1487 122
/**
 * Create a new TextureReloadRequest, and add it to the loader via
 * load_async(), to begin an asynchronous load.
 */
246
inline explicit TextureReloadRequest::TextureReloadRequest(std::string const &name, PreparedGraphicsObjects *pgo, Texture *texture, bool allow_compressed);
inline TextureReloadRequest::TextureReloadRequest(TextureReloadRequest const &) = default;

3043 29 get_prepared_graphics_objects 0 4 3328 51 TextureReloadRequest::get_prepared_graphics_objects 0 1 1488 112
/**
 * Returns the PreparedGraphicsObjects object associated with this
 * asynchronous TextureReloadRequest.
 */
96
inline PreparedGraphicsObjects *TextureReloadRequest::get_prepared_graphics_objects(void) const;

3044 11 get_texture 0 4 3328 33 TextureReloadRequest::get_texture 0 1 1489 96
/**
 * Returns the Texture object associated with this asynchronous
 * TextureReloadRequest.
 */
62
inline Texture *TextureReloadRequest::get_texture(void) const;

3045 20 get_allow_compressed 0 4 3328 42 TextureReloadRequest::get_allow_compressed 0 1 1490 105
/**
 * Returns the "allow compressed" flag associated with this asynchronous
 * TextureReloadRequest.
 */
67
inline bool TextureReloadRequest::get_allow_compressed(void) const;

3046 8 is_ready 0 4 3328 30 TextureReloadRequest::is_ready 0 1 1491 154
/**
 * Returns true if this request has completed, false if it is still pending.
 * Equivalent to `req.done() and not req.cancelled()`.
 * @see done()
 */
55
inline bool TextureReloadRequest::is_ready(void) const;

3047 14 get_class_type 0 4 3328 36 TextureReloadRequest::get_class_type 0 1 1492 0
61
static TypeHandle TextureReloadRequest::get_class_type(void);

3048 21 ~TextureReloadRequest 0 516 3328 43 TextureReloadRequest::~TextureReloadRequest 0 0 0
50
TextureReloadRequest::~TextureReloadRequest(void);

3049 23 upcast_to_BufferContext 0 12 3329 39 TextureContext::upcast_to_BufferContext 0 1 1505 43
upcast from TextureContext to BufferContext
61
BufferContext *TextureContext::upcast_to_BufferContext(void);

3050 26 downcast_to_TextureContext 0 12 3240 41 BufferContext::downcast_to_TextureContext 0 0 45
downcast from BufferContext to TextureContext
64
TextureContext *BufferContext::downcast_to_TextureContext(void);

3051 25 upcast_to_AdaptiveLruPage 0 12 3329 41 TextureContext::upcast_to_AdaptiveLruPage 0 1 1506 45
upcast from TextureContext to AdaptiveLruPage
65
AdaptiveLruPage *TextureContext::upcast_to_AdaptiveLruPage(void);

3052 26 downcast_to_TextureContext 0 12 3165 43 AdaptiveLruPage::downcast_to_TextureContext 0 0 47
downcast from AdaptiveLruPage to TextureContext
66
TextureContext *AdaptiveLruPage::downcast_to_TextureContext(void);

3053 11 get_texture 0 4 3329 27 TextureContext::get_texture 0 1 1493 64
/**
 * Returns the pointer to the associated Texture object.
 */
56
inline Texture *TextureContext::get_texture(void) const;

3054 8 get_view 0 4 3329 24 TextureContext::get_view 0 1 1494 152
/**
 * Returns the specific view of a multiview texture this context represents.
 * In the usual case, with a non-multiview texture, this will be 0.
 */
48
inline int TextureContext::get_view(void) const;

3055 13 get_native_id 0 6 3329 29 TextureContext::get_native_id 0 1 1495 198
/**
 * Returns an implementation-defined handle or pointer that can be used
 * to interface directly with the underlying API.
 * Returns 0 if the underlying implementation does not support this.
 */
59
virtual uint64_t TextureContext::get_native_id(void) const;

3056 20 get_native_buffer_id 0 6 3329 36 TextureContext::get_native_buffer_id 0 1 1496 253
/**
 * Similar to get_native_id, but some implementations use a separate
 * identifier for the buffer object associated with buffer textures.
 * Returns 0 if the underlying implementation does not support this, or
 * if this is not a buffer texture.
 */
66
virtual uint64_t TextureContext::get_native_buffer_id(void) const;

3057 12 was_modified 0 4 3329 28 TextureContext::was_modified 0 1 1497 126
/**
 * Returns true if the texture properties or image have been modified since
 * the last time mark_loaded() was called.
 */
53
inline bool TextureContext::was_modified(void) const;

3058 23 was_properties_modified 0 4 3329 39 TextureContext::was_properties_modified 0 1 1498 142
/**
 * Returns true if the texture properties (unrelated to the image) have been
 * modified since the last time mark_loaded() was called.
 */
64
inline bool TextureContext::was_properties_modified(void) const;

3059 18 was_image_modified 0 4 3329 34 TextureContext::was_image_modified 0 1 1499 111
/**
 * Returns true if the texture image has been modified since the last time
 * mark_loaded() was called.
 */
59
inline bool TextureContext::was_image_modified(void) const;

3060 25 was_simple_image_modified 0 4 3329 41 TextureContext::was_simple_image_modified 0 1 1500 129
/**
 * Returns true if the texture's "simple" image has been modified since the
 * last time mark_simple_loaded() was called.
 */
66
inline bool TextureContext::was_simple_image_modified(void) const;

3061 23 get_properties_modified 0 4 3329 39 TextureContext::get_properties_modified 0 1 1501 151
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture properties (unrelated to the image) are modified.
 */
69
inline UpdateSeq TextureContext::get_properties_modified(void) const;

3062 18 get_image_modified 0 4 3329 34 TextureContext::get_image_modified 0 1 1502 152
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture image data (including mipmap levels) are modified.
 */
64
inline UpdateSeq TextureContext::get_image_modified(void) const;

3063 25 get_simple_image_modified 0 4 3329 41 TextureContext::get_simple_image_modified 0 1 1503 136
/**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture's "simple" image data is modified.
 */
71
inline UpdateSeq TextureContext::get_simple_image_modified(void) const;

3064 14 get_class_type 0 4 3329 30 TextureContext::get_class_type 0 1 1504 0
55
static TypeHandle TextureContext::get_class_type(void);

3065 15 ~TextureContext 0 516 3329 31 TextureContext::~TextureContext 0 0 0
38
TextureContext::~TextureContext(void);

3066 10 get_shader 0 4 3330 25 ShaderContext::get_shader 0 1 1507 10
/**
 *
 */
53
inline Shader *ShaderContext::get_shader(void) const;

3067 14 get_class_type 0 4 3330 29 ShaderContext::get_class_type 0 1 1508 0
54
static TypeHandle ShaderContext::get_class_type(void);

3068 14 ~ShaderContext 0 516 3330 29 ShaderContext::~ShaderContext 0 0 0
36
ShaderContext::~ShaderContext(void);

3069 16 UserVertexSlider 0 260 3332 34 UserVertexSlider::UserVertexSlider 0 2 1509 1510 22
/**
 *
 */

/**
 *
 */
140
explicit UserVertexSlider::UserVertexSlider(std::string const &name);
explicit UserVertexSlider::UserVertexSlider(InternalName const *name);

3070 10 set_slider 0 4 3332 28 UserVertexSlider::set_slider 0 1 1511 45
/**
 * Stores the indicated slider value.
 */
61
inline void UserVertexSlider::set_slider(PN_stdfloat slider);

3071 14 get_class_type 0 4 3332 32 UserVertexSlider::get_class_type 0 1 1512 0
57
static TypeHandle UserVertexSlider::get_class_type(void);

3072 17 ~UserVertexSlider 0 516 3332 35 UserVertexSlider::~UserVertexSlider 0 0 0
42
UserVertexSlider::~UserVertexSlider(void);

3073 19 UserVertexTransform 0 260 3333 40 UserVertexTransform::UserVertexTransform 0 1 1513 10
/**
 *
 */
75
explicit UserVertexTransform::UserVertexTransform(std::string const &name);

3074 8 get_name 0 4 3333 29 UserVertexTransform::get_name 0 1 1514 77
/**
 * Returns the name passed to the constructor.  Completely arbitrary.
 */
68
inline std::string const &UserVertexTransform::get_name(void) const;

3075 10 set_matrix 0 4 3333 31 UserVertexTransform::set_matrix 0 1 1515 39
/**
 * Stores the indicated matrix.
 */
68
inline void UserVertexTransform::set_matrix(LMatrix4 const &matrix);

3076 14 get_class_type 0 4 3333 35 UserVertexTransform::get_class_type 0 1 1516 0
60
static TypeHandle UserVertexTransform::get_class_type(void);

3077 20 ~UserVertexTransform 0 516 3333 41 UserVertexTransform::~UserVertexTransform 0 0 0
48
UserVertexTransform::~UserVertexTransform(void);

3078 17 upcast_to_Texture 0 12 3334 31 VideoTexture::upcast_to_Texture 0 1 1521 35
upcast from VideoTexture to Texture
47
Texture *VideoTexture::upcast_to_Texture(void);

3079 24 downcast_to_VideoTexture 0 12 3276 33 Texture::downcast_to_VideoTexture 0 0 37
downcast from Texture to VideoTexture
54
VideoTexture *Texture::downcast_to_VideoTexture(void);

3080 23 upcast_to_AnimInterface 0 12 3334 37 VideoTexture::upcast_to_AnimInterface 0 1 1522 41
upcast from VideoTexture to AnimInterface
59
AnimInterface *VideoTexture::upcast_to_AnimInterface(void);

3081 24 downcast_to_VideoTexture 0 12 3335 39 AnimInterface::downcast_to_VideoTexture 0 0 43
downcast from AnimInterface to VideoTexture
60
VideoTexture *AnimInterface::downcast_to_VideoTexture(void);

3082 18 get_keep_ram_image 0 6 3334 32 VideoTexture::get_keep_ram_image 0 1 1517 207
/**
 * Returns the flag that indicates whether this Texture is eligible to have
 * its main RAM copy of the texture memory dumped when the texture is prepared
 * for rendering.  See set_keep_ram_image().
 */
58
virtual bool VideoTexture::get_keep_ram_image(void) const;

3083 15 get_video_width 0 4 3334 29 VideoTexture::get_video_width 0 1 1518 200
/**
 * Returns the width in texels of the source video stream.  This is not
 * necessarily the width of the actual texture, since the texture may have
 * been expanded to raise it to a power of 2.
 */
53
inline int VideoTexture::get_video_width(void) const;

3084 16 get_video_height 0 4 3334 30 VideoTexture::get_video_height 0 1 1519 202
/**
 * Returns the height in texels of the source video stream.  This is not
 * necessarily the height of the actual texture, since the texture may have
 * been expanded to raise it to a power of 2.
 */
54
inline int VideoTexture::get_video_height(void) const;

3085 14 get_class_type 0 4 3334 28 VideoTexture::get_class_type 0 1 1520 0
53
static TypeHandle VideoTexture::get_class_type(void);

3086 13 ~VideoTexture 0 516 3334 27 VideoTexture::~VideoTexture 0 0 0
34
VideoTexture::~VideoTexture(void);

3087 23 upcast_to_BufferContext 0 12 3336 44 VertexBufferContext::upcast_to_BufferContext 0 1 1528 48
upcast from VertexBufferContext to BufferContext
66
BufferContext *VertexBufferContext::upcast_to_BufferContext(void);

3088 31 downcast_to_VertexBufferContext 0 12 3240 46 BufferContext::downcast_to_VertexBufferContext 0 0 50
downcast from BufferContext to VertexBufferContext
74
VertexBufferContext *BufferContext::downcast_to_VertexBufferContext(void);

3089 25 upcast_to_AdaptiveLruPage 0 12 3336 46 VertexBufferContext::upcast_to_AdaptiveLruPage 0 1 1529 50
upcast from VertexBufferContext to AdaptiveLruPage
70
AdaptiveLruPage *VertexBufferContext::upcast_to_AdaptiveLruPage(void);

3090 31 downcast_to_VertexBufferContext 0 12 3165 48 AdaptiveLruPage::downcast_to_VertexBufferContext 0 0 52
downcast from AdaptiveLruPage to VertexBufferContext
76
VertexBufferContext *AdaptiveLruPage::downcast_to_VertexBufferContext(void);

3091 8 get_data 0 4 3336 29 VertexBufferContext::get_data 0 1 1523 68
/**
 * Returns the pointer to the client-side array data object.
 */
70
inline GeomVertexArrayData *VertexBufferContext::get_data(void) const;

3092 12 changed_size 0 4 3336 33 VertexBufferContext::changed_size 0 1 1524 101
/**
 * Returns true if the data has changed size since the last time mark_loaded()
 * was called.
 */
93
inline bool VertexBufferContext::changed_size(GeomVertexArrayDataHandle const *reader) const;

3093 18 changed_usage_hint 0 4 3336 39 VertexBufferContext::changed_usage_hint 0 1 1525 111
/**
 * Returns true if the data has changed its usage hint since the last time
 * mark_loaded() was called.
 */
99
inline bool VertexBufferContext::changed_usage_hint(GeomVertexArrayDataHandle const *reader) const;

3094 12 was_modified 0 4 3336 33 VertexBufferContext::was_modified 0 1 1526 102
/**
 * Returns true if the data has been modified since the last time
 * mark_loaded() was called.
 */
93
inline bool VertexBufferContext::was_modified(GeomVertexArrayDataHandle const *reader) const;

3095 14 get_class_type 0 4 3336 35 VertexBufferContext::get_class_type 0 1 1527 0
60
static TypeHandle VertexBufferContext::get_class_type(void);

3096 20 ~VertexBufferContext 0 516 3336 41 VertexBufferContext::~VertexBufferContext 0 0 0
48
VertexBufferContext::~VertexBufferContext(void);

3097 17 TextureCollection 0 260 3337 36 TextureCollection::TextureCollection 0 3 1530 1531 1532 22
/**
 *
 */

/**
 *
 */
186
TextureCollection::TextureCollection(void);
TextureCollection::TextureCollection(TextureCollection const &copy);
TextureCollection::TextureCollection(PyObject *self, PyObject *sequence);

3098 10 operator = 0 4 3337 29 TextureCollection::operator = 0 1 1533 0
66
void TextureCollection::operator =(TextureCollection const &copy);

3099 18 ~TextureCollection 0 516 3337 37 TextureCollection::~TextureCollection 0 0 10
/**
 *
 */
51
inline TextureCollection::~TextureCollection(void);

3100 10 __reduce__ 0 4 3337 29 TextureCollection::__reduce__ 0 1 1534 0
62
PyObject *TextureCollection::__reduce__(PyObject *self) const;

3101 11 add_texture 0 4 3337 30 TextureCollection::add_texture 0 1 1535 48
/**
 * Adds a new Texture to the collection.
 */
54
void TextureCollection::add_texture(Texture *texture);

3102 14 remove_texture 0 4 3337 33 TextureCollection::remove_texture 0 1 1536 154
/**
 * Removes the indicated Texture from the collection.  Returns true if the
 * texture was removed, false if it was not a member of the collection.
 */
57
bool TextureCollection::remove_texture(Texture *texture);

3103 17 add_textures_from 0 4 3337 36 TextureCollection::add_textures_from 0 1 1537 211
/**
 * Adds all the Textures indicated in the other collection to this texture.
 * The other textures are simply appended to the end of the textures in this
 * list; duplicates are not automatically removed.
 */
74
void TextureCollection::add_textures_from(TextureCollection const &other);

3104 20 remove_textures_from 0 4 3337 39 TextureCollection::remove_textures_from 0 1 1538 94
/**
 * Removes from this collection all of the Textures listed in the other
 * collection.
 */
77
void TextureCollection::remove_textures_from(TextureCollection const &other);

3105 25 remove_duplicate_textures 0 4 3337 44 TextureCollection::remove_duplicate_textures 0 1 1539 195
/**
 * Removes any duplicate entries of the same Textures on this collection.  If
 * a Texture appears multiple times, the first appearance is retained;
 * subsequent appearances are removed.
 */
56
void TextureCollection::remove_duplicate_textures(void);

3106 11 has_texture 0 4 3337 30 TextureCollection::has_texture 0 1 1540 96
/**
 * Returns true if the indicated Texture appears in this collection, false
 * otherwise.
 */
60
bool TextureCollection::has_texture(Texture *texture) const;

3107 5 clear 0 4 3337 24 TextureCollection::clear 0 1 1541 52
/**
 * Removes all Textures from the collection.
 */
36
void TextureCollection::clear(void);

3108 7 reserve 0 4 3337 26 TextureCollection::reserve 0 1 1542 157
/**
 * This is a hint to Panda to allocate enough memory to hold the given number
 * of NodePaths, if you know ahead of time how many you will be adding.
 */
49
void TextureCollection::reserve(std::size_t num);

3109 12 find_texture 0 4 3337 31 TextureCollection::find_texture 0 1 1543 121
/**
 * Returns the texture in the collection with the indicated name, if any, or
 * NULL if no texture has that name.
 */
72
Texture *TextureCollection::find_texture(std::string const &name) const;

3110 16 get_num_textures 0 4 3337 35 TextureCollection::get_num_textures 0 1 1544 60
/**
 * Returns the number of Textures in the collection.
 */
52
int TextureCollection::get_num_textures(void) const;

3111 11 get_texture 0 4 3337 30 TextureCollection::get_texture 0 1 1545 53
/**
 * Returns the nth Texture in the collection.
 */
57
Texture *TextureCollection::get_texture(int index) const;

3112 11 operator [] 0 4 3337 30 TextureCollection::operator [] 0 1 1546 142
/**
 * Returns the nth Texture in the collection.  This is the same as
 * get_texture(), but it may be a more convenient way to access it.
 */
57
Texture *TextureCollection::operator [](int index) const;

3113 4 size 0 4 3337 23 TextureCollection::size 0 1 1547 110
/**
 * Returns the number of textures in the collection.  This is the same thing
 * as get_num_textures().
 */
40
int TextureCollection::size(void) const;

3114 11 operator += 0 4 3337 30 TextureCollection::operator += 0 1 1548 0
75
inline void TextureCollection::operator +=(TextureCollection const &other);

3115 10 operator + 0 4 3337 29 TextureCollection::operator + 0 1 1549 0
93
inline TextureCollection TextureCollection::operator +(TextureCollection const &other) const;

3116 6 append 0 4 3337 25 TextureCollection::append 0 1 1550 205
// Method names to satisfy Python's conventions.

/**
 * Adds a new Texture to the collection.  This method duplicates the
 * add_texture() method; it is provided to satisfy Python's naming convention.
 */
56
inline void TextureCollection::append(Texture *texture);

3117 6 extend 0 4 3337 25 TextureCollection::extend 0 1 1551 157
/**
 * Appends the other list onto the end of this one.  This method duplicates
 * the += operator; it is provided to satisfy Python's naming convention.
 */
70
inline void TextureCollection::extend(TextureCollection const &other);

3118 6 output 0 4 3337 25 TextureCollection::output 0 1 1552 106
/**
 * Writes a brief one-line description of the TextureCollection to the
 * indicated output stream.
 */
56
void TextureCollection::output(std::ostream &out) const;

3119 5 write 0 4 3337 24 TextureCollection::write 0 1 1553 111
/**
 * Writes a complete multi-line description of the TextureCollection to the
 * indicated output stream.
 */
77
void TextureCollection::write(std::ostream &out, int indent_level = 0) const;

3120 11 has_texture 0 4 3338 24 TexturePool::has_texture 0 1 1554 77
/**
 * Returns true if the texture has ever been loaded, false otherwise.
 */
70
static inline bool TexturePool::has_texture(Filename const &filename);

3121 14 verify_texture 0 4 3338 27 TexturePool::verify_texture 0 1 1555 313
/**
 * Loads the given filename up into a texture, if it has not already been
 * loaded, and returns true to indicate success, or false to indicate failure.
 * If this returns true, it is guaranteed that a subsequent call to
 * load_texture() with the same texture name will return a valid Texture
 * pointer.
 */
73
static inline bool TexturePool::verify_texture(Filename const &filename);

3122 11 get_texture 0 4 3338 24 TexturePool::get_texture 0 2 1556 1557 188
/**
 * Returns the texture that has already been previously loaded, or NULL
 * otherwise.
 */

/**
 * Returns the texture that has already been previously loaded, or NULL
 * otherwise.
 */
333
static inline Texture *TexturePool::get_texture(Filename const &filename, int primary_file_num_channels = 0, bool read_mipmaps = false);
static inline Texture *TexturePool::get_texture(Filename const &filename, Filename const &alpha_filename, int primary_file_num_channels = 0, int alpha_file_channel = 0, bool read_mipmaps = false);

3123 12 load_texture 0 4 3338 25 TexturePool::load_texture 0 2 1558 1559 978
/**
 * Loads the given filename up into a texture, if it has not already been
 * loaded, and returns the new texture.  If a texture with the same filename
 * was previously loaded, returns that one instead.  If the texture file
 * cannot be found, returns NULL.
 *
 * If read_mipmaps is true, the filename should contain a hash mark ('#'),
 * which will be filled in with the mipmap level number; and the texture will
 * be defined with a series of images, one for each mipmap level.
 */

/**
 * Loads the given filename up into a texture, if it has not already been
 * loaded, and returns the new texture.  If a texture with the same filename
 * was previously loaded, returns that one instead.  If the texture file
 * cannot be found, returns NULL.
 *
 * If read_mipmaps is true, both filenames should contain a hash mark ('#'),
 * which will be filled in with the mipmap level number; and the texture will
 * be defined with a series of images, two for each mipmap level.
 */
431
static inline Texture *TexturePool::load_texture(Filename const &filename, int primary_file_num_channels = 0, bool read_mipmaps = false, LoaderOptions const &options = LoaderOptions());
static inline Texture *TexturePool::load_texture(Filename const &filename, Filename const &alpha_filename, int primary_file_num_channels = 0, int alpha_file_channel = 0, bool read_mipmaps = false, LoaderOptions const &options = LoaderOptions());

3124 15 load_3d_texture 0 4 3338 28 TexturePool::load_3d_texture 0 1 1560 490
/**
 * Loads a 3-D texture that is specified with a series of n pages, all
 * numbered in sequence, and beginning with index 0.  The filename should
 * include a sequence of one or more hash characters ("#") which will be
 * filled in with the index number of each level.
 *
 * If read_mipmaps is true, the filename should contain an additional hash
 * mark.  The first hash mark will be filled in with the mipmap level number,
 * and the second with the index number of each 3-d level.
 */
161
static inline Texture *TexturePool::load_3d_texture(Filename const &filename_pattern, bool read_mipmaps = false, LoaderOptions const &options = LoaderOptions());

3125 21 load_2d_texture_array 0 4 3338 34 TexturePool::load_2d_texture_array 0 1 1561 496
/**
 * Loads a 2-D texture array that is specified with a series of n pages, all
 * numbered in sequence, and beginning with index 0.  The filename should
 * include a sequence of one or more hash characters ("#") which will be
 * filled in with the index number of each level.
 *
 * If read_mipmaps is true, the filename should contain an additional hash
 * mark.  The first hash mark will be filled in with the mipmap level number,
 * and the second with the index number of each 2-d level.
 */
167
static inline Texture *TexturePool::load_2d_texture_array(Filename const &filename_pattern, bool read_mipmaps = false, LoaderOptions const &options = LoaderOptions());

3126 13 load_cube_map 0 4 3338 26 TexturePool::load_cube_map 0 1 1562 457
/**
 * Loads a cube map texture that is specified with a series of 6 pages,
 * numbered 0 through 5.  The filename should include a sequence of one or
 * more hash characters ("#") which will be filled in with the index number of
 * each pagee.
 *
 * If read_mipmaps is true, the filename should contain an additional hash
 * mark.  The first hash mark will be filled in with the mipmap level number,
 * and the second with the face number, 0 through 5.
 */
159
static inline Texture *TexturePool::load_cube_map(Filename const &filename_pattern, bool read_mipmaps = false, LoaderOptions const &options = LoaderOptions());

3127 26 get_normalization_cube_map 0 4 3338 39 TexturePool::get_normalization_cube_map 0 1 1563 290
/**
 * Returns a standard Texture object that has been created with
 * Texture::generate_normalization_cube_map().  This Texture may be shared by
 * any application code requiring a normalization cube map.  It will be at
 * least as large as the specified size, though it may be larger.
 */
73
static inline Texture *TexturePool::get_normalization_cube_map(int size);

3128 19 get_alpha_scale_map 0 4 3338 32 TexturePool::get_alpha_scale_map 0 1 1564 296
/**
 * Returns a standard Texture object that has been created with
 * Texture::generate_alpha_scale_map().
 *
 * This Texture object is used internally by Panda to apply an alpha scale to
 * an object (instead of munging its vertices) when
 * gsg->get_alpha_scale_via_texture() returns true.
 */
62
static inline Texture *TexturePool::get_alpha_scale_map(void);

3129 11 add_texture 0 4 3338 24 TexturePool::add_texture 0 1 1565 226
/**
 * Adds the indicated already-loaded texture to the pool.  The texture must
 * have a filename set for its name.  The texture will always replace any
 * previously-loaded texture in the pool that had the same filename.
 */
62
static inline void TexturePool::add_texture(Texture *texture);

3130 15 release_texture 0 4 3338 28 TexturePool::release_texture 0 1 1566 404
/**
 * Removes the indicated texture from the pool, indicating it will never be
 * loaded again; the texture may then be freed.  If this function is never
 * called, a reference count will be maintained on every texture every loaded,
 * and textures will never be freed.
 *
 * The texture's name should not have been changed during its lifetime, or
 * this function may fail to locate it in the pool.
 */
66
static inline void TexturePool::release_texture(Texture *texture);

3131 20 release_all_textures 0 4 3338 33 TexturePool::release_all_textures 0 1 1567 86
/**
 * Releases all textures in the pool and restores the pool to the empty state.
 */
59
static inline void TexturePool::release_all_textures(void);

3132 6 rehash 0 4 3338 19 TexturePool::rehash 0 1 1568 131
/**
 * Should be called when the model-path changes, to blow away the cache of
 * texture pathnames found along the model-path.
 */
45
static inline void TexturePool::rehash(void);

3133 15 garbage_collect 0 4 3338 28 TexturePool::garbage_collect 0 1 1569 212
/**
 * Releases only those textures in the pool that have a reference count of
 * exactly 1; i.e.  only those textures that are not being used outside of the
 * pool.  Returns the number of textures released.
 */
53
static inline int TexturePool::garbage_collect(void);

3134 13 list_contents 0 4 3338 26 TexturePool::list_contents 0 2 1570 1571 140
/**
 * Lists the contents of the texture pool to the indicated output stream.
 */

/**
 * Lists the contents of the texture pool to cout
 */
118
static inline void TexturePool::list_contents(std::ostream &out);
static inline void TexturePool::list_contents(void);

3135 12 find_texture 0 4 3338 25 TexturePool::find_texture 0 1 1572 182
/**
 * Returns the first texture found in the pool that matches the indicated name
 * (which may contain wildcards).  Returns the texture if it is found, or NULL
 * if it is not.
 */
74
static inline Texture *TexturePool::find_texture(std::string const &name);

3136 17 find_all_textures 0 4 3338 30 TexturePool::find_all_textures 0 1 1573 124
/**
 * Returns the set of all textures found in the pool that match the indicated
 * name (which may contain wildcards).
 */
94
static inline TextureCollection TexturePool::find_all_textures(std::string const &name = "*");

3137 22 set_fake_texture_image 0 4 3338 35 TexturePool::set_fake_texture_image 0 1 1574 109
/**
 * Sets a bogus filename that will be loaded in lieu of any textures requested
 * from this point on.
 */
81
static inline void TexturePool::set_fake_texture_image(Filename const &filename);

3138 24 clear_fake_texture_image 0 4 3338 37 TexturePool::clear_fake_texture_image 0 1 1575 79
/**
 * Restores normal behavior of loading the textures actually requested.
 */
63
static inline void TexturePool::clear_fake_texture_image(void);

3139 22 has_fake_texture_image 0 4 3338 35 TexturePool::has_fake_texture_image 0 1 1576 107
/**
 * Returns true if fake_texture_image mode has been enabled, false if we are
 * in the normal mode.
 */
61
static inline bool TexturePool::has_fake_texture_image(void);

3140 22 get_fake_texture_image 0 4 3338 35 TexturePool::get_fake_texture_image 0 1 1577 103
/**
 * Returns the filename that was specified with a previous call to
 * set_fake_texture_image().
 */
72
static inline Filename const &TexturePool::get_fake_texture_image(void);

3141 12 make_texture 0 4 3338 25 TexturePool::make_texture 0 1 1578 185
/**
 * Creates a new Texture object of the appropriate type for the indicated
 * filename extension, according to the types that have been registered via
 * register_texture_type().
 */
91
static inline PointerTo< Texture > TexturePool::make_texture(std::string const &extension);

3142 5 write 0 4 3338 18 TexturePool::write 0 1 1579 100
/**
 * Lists the contents of the texture pool to the indicated output stream.  For
 * debugging.
 */
50
static void TexturePool::write(std::ostream &out);

3143 12 ~TexturePool 0 516 3338 25 TexturePool::~TexturePool 0 0 0
32
TexturePool::~TexturePool(void);

3144 10 get_x_size 0 4 3339 25 TexturePeeker::get_x_size 0 1 1581 191
/**
 * Returns the width of the texture image that is contributing to the
 * TexturePeeker's information.  This may be either the Texture's full width,
 * or its simple ram image's width.
 */
49
inline int TexturePeeker::get_x_size(void) const;

3145 10 get_y_size 0 4 3339 25 TexturePeeker::get_y_size 0 1 1582 194
/**
 * Returns the height of the texture image that is contributing to the
 * TexturePeeker's information.  This may be either the Texture's full height,
 * or its simple ram image's height.
 */
49
inline int TexturePeeker::get_y_size(void) const;

3146 10 get_z_size 0 4 3339 25 TexturePeeker::get_z_size 0 1 1583 109
/**
 * Returns the depth of the texture image that is contributing to the
 * TexturePeeker's information.
 */
49
inline int TexturePeeker::get_z_size(void) const;

3147 9 has_pixel 0 4 3339 24 TexturePeeker::has_pixel 0 2 1584 1585 166
/**
 * Returns whether a given coordinate is inside of the texture dimensions.
 */

/**
 * Returns whether a given coordinate is inside of the texture dimensions.
 */
122
inline bool TexturePeeker::has_pixel(int x, int y) const;
inline bool TexturePeeker::has_pixel(int x, int y, int z) const;

3148 6 lookup 0 4 3339 21 TexturePeeker::lookup 0 2 1586 1587 623
/**
 * Fills "color" with the RGBA color of the texel at point (u, v).
 *
 * The texel color is determined via nearest-point sampling (no filtering of
 * adjacent pixels), regardless of the filter type associated with the
 * texture.  u, v, and w will wrap around regardless of the texture's wrap
 * mode.
 */

/**
 * Fills "color" with the RGBA color of the texel at point (u, v, w).
 *
 * The texel color is determined via nearest-point sampling (no filtering of
 * adjacent pixels), regardless of the filter type associated with the
 * texture.  u, v, and w will wrap around regardless of the texture's wrap
 * mode.
 */
172
void TexturePeeker::lookup(LColor &color, PN_stdfloat u, PN_stdfloat v) const;
void TexturePeeker::lookup(LColor &color, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w) const;

3149 11 fetch_pixel 0 4 3339 26 TexturePeeker::fetch_pixel 0 2 1588 1589 222
/**
 * Works like TexturePeeker::lookup(), but instead of uv-coordinates, integer
 * coordinates are used.
 */

/**
 * Works like TexturePeeker::lookup(), but instead of uv-coordinates, integer
 * coordinates are used.
 */
142
void TexturePeeker::fetch_pixel(LColor &color, int x, int y) const;
void TexturePeeker::fetch_pixel(LColor &color, int x, int y, int z) const;

3150 15 lookup_bilinear 0 4 3339 30 TexturePeeker::lookup_bilinear 0 1 1590 233
/**
 * Performs a bilinear lookup to retrieve the color value stored at the uv
 * coordinate (u, v).
 *
 * In case the point is outside of the uv range, color is set to zero,
 * and false is returned.  Otherwise true is returned.
 */
87
bool TexturePeeker::lookup_bilinear(LColor &color, PN_stdfloat u, PN_stdfloat v) const;

3151 11 filter_rect 0 4 3339 26 TexturePeeker::filter_rect 0 2 1591 1592 492
/**
 * Fills "color" with the average RGBA color of the texels within the
 * rectangle defined by the specified coordinate range.
 *
 * The texel color is linearly filtered over the entire region.  u, v, and w
 * must be in the range [0, 1].
 */

/**
 * Fills "color" with the average RGBA color of the texels within the
 * rectangle defined by the specified coordinate range.
 *
 * The texel color is linearly filtered over the entire region.  u, v, and w
 * must be in the range [0, 1].
 */
297
void TexturePeeker::filter_rect(LColor &color, PN_stdfloat min_u, PN_stdfloat min_v, PN_stdfloat max_u, PN_stdfloat max_v) const;
void TexturePeeker::filter_rect(LColor &color, PN_stdfloat min_u, PN_stdfloat min_v, PN_stdfloat min_w, PN_stdfloat max_u, PN_stdfloat max_v, PN_stdfloat max_w) const;

3152 13 TexturePeeker 0 260 3339 28 TexturePeeker::TexturePeeker 0 1 1580 169
/**
 * Use Texture::peek() to construct a TexturePeeker.
 *
 * This constructor is called only by Texture::peek(), and assumes the
 * texture's lock is already held.
 */
69
inline TexturePeeker::TexturePeeker(TexturePeeker const &) = default;

3153 14 ~TexturePeeker 0 516 3339 29 TexturePeeker::~TexturePeeker 0 0 0
36
TexturePeeker::~TexturePeeker(void);

3154 9 get_stage 0 4 3340 27 TextureStagePool::get_stage 0 1 1593 666
/**
 * Returns a TextureStage pointer that represents the same TextureStage
 * described by temp, except that it is a shared pointer.
 *
 * Each call to get_stage() passing an equivalent TextureStage pointer will
 * return the same shared pointer.
 *
 * If you modify the shared pointer, it will automatically disassociate it
 * from the pool.
 *
 * Also, the return value may be a different pointer than that passed in, or
 * it may be the same pointer.  In either case, the passed in pointer has now
 * been sacrificed to the greater good and should not be used again (like any
 * other PointerTo, it will be freed when the last reference count is
 * removed).
 */
76
static inline TextureStage *TextureStagePool::get_stage(TextureStage *temp);

3155 13 release_stage 0 4 3340 31 TextureStagePool::release_stage 0 1 1594 60
/**
 * Removes the indicated TextureStage from the pool.
 */
71
static inline void TextureStagePool::release_stage(TextureStage *temp);

3156 18 release_all_stages 0 4 3340 36 TextureStagePool::release_all_stages 0 1 1595 94
/**
 * Releases all TextureStages in the pool and restores the pool to the empty
 * state.
 */
62
static inline void TextureStagePool::release_all_stages(void);

3157 8 set_mode 0 4 3340 26 TextureStagePool::set_mode 0 1 1596 489
/**
 * Specifies the fundamental operating mode of the TextureStagePool.
 *
 * If this is M_none, each call to get_stage() returns the same TextureStage
 * pointer that was passed in (the pool is effectively disabled).  If this is
 * M_name, each call to get_stage() returns the last TextureStage passed in
 * with the same name, whether it has different properties or not.  If this is
 * M_unique, then each call to get_stage() returns only TextureStages with
 * identical properties.
 */
75
static inline void TextureStagePool::set_mode(TextureStagePool::Mode mode);

3158 8 get_mode 0 4 3340 26 TextureStagePool::get_mode 0 1 1597 94
/**
 * Returns the fundamental operating mode of the TextureStagePool.  See
 * set_mode().
 */
70
static inline TextureStagePool::Mode TextureStagePool::get_mode(void);

3159 15 garbage_collect 0 4 3340 33 TextureStagePool::garbage_collect 0 1 1598 227
/**
 * Releases only those TextureStages in the pool that have a reference count
 * of exactly 1; i.e.  only those TextureStages that are not being used
 * outside of the pool.  Returns the number of TextureStages released.
 */
58
static inline int TextureStagePool::garbage_collect(void);

3160 13 list_contents 0 4 3340 31 TextureStagePool::list_contents 0 1 1599 86
/**
 * Lists the contents of the TextureStage pool to the indicated output stream.
 */
70
static inline void TextureStagePool::list_contents(std::ostream &out);

3161 5 write 0 4 3340 23 TextureStagePool::write 0 1 1600 86
/**
 * Lists the contents of the TextureStage pool to the indicated output stream.
 */
55
static void TextureStagePool::write(std::ostream &out);

3162 17 ~TextureStagePool 0 516 3340 35 TextureStagePool::~TextureStagePool 0 0 0
42
TextureStagePool::~TextureStagePool(void);

1600
1 0 0 7 3 3343 1602 0 10 /**
 *
 */ 2 4 name 1 3342  8 max_size 1 3209  
2 0 0 6 5 3209 0 0 77 /**
 * Returns the total size of all objects currently active on the LRU.
 */ 1 4 this 3 3344  
3 0 0 6 6 3209 0 0 91 /**
 * Returns the max size of all objects that are allowed to be active on the
 * LRU.
 */ 1 4 this 3 3344  
4 0 0 4 7 3346 0 0 143 /**
 * Changes the max size of all objects that are allowed to be active on the
 * LRU.
 *
 * If the size is (size_t)-1, there is no limit.
 */ 2 4 this 3 3343  8 max_size 1 3209  
5 0 0 6 8 3209 0 0 106 /**
 * Returns the total size of the pages that were enqueued since the last call
 * to begin_epoch().
 */ 1 4 this 3 3344  
6 0 0 4 9 3346 0 0 61 /**
 * Evicts a sequence of objects if the queue is full.
 */ 1 4 this 3 3343  
7 0 0 4 10 3346 0 0 132 /**
 * Evicts a sequence of objects until the queue fits within the indicated
 * target size, regardless of its normal max size.
 */ 2 4 this 3 3343  11 target_size 1 3209  
8 0 0 4 11 3346 0 0 184 /**
 * Marks the end of the previous epoch and the beginning of the next one.
 * This will evict any objects that are pending eviction, and also update any
 * internal bookkeeping.
 */ 1 4 this 3 3343  
9 0 0 6 12 3178 0 0 125 /**
 * Checks that the LRU is internally self-consistent.  Returns true if
 * successful, false if there is some problem.
 */ 1 4 this 3 3343  
10 0 0 4 13 3346 0 0 10 /**
 *
 */ 2 4 this 3 3344  3 out 1 3347  
11 0 0 4 14 3346 0 0 10 /**
 *
 */ 3 4 this 3 3344  3 out 1 3347  12 indent_level 1 3177  
12 0 0 4 15 3346 0 0 196 // The following methods are specific to AdaptiveLru, and do not exist in
// the SimpleLru implementation.  In most cases, the defaults will be
// sufficient, so you do not need to mess with them. 2 4 this 3 3343  6 weight 1 3220  
13 0 0 6 16 3220 0 0 83 /**
 * Returns the weight value used to compute the exponential moving average.
 */ 1 4 this 3 3344  
14 0 0 4 17 3346 0 0 214 /**
 * Specifies the maximum number of pages the AdaptiveLru will update each
 * frame.  This is a performance optimization: keeping this number low limits
 * the impact of the AdaptiveLru's adaptive algorithm.
 */ 2 4 this 3 3343  21 max_updates_per_frame 1 3177  
15 0 0 6 18 3177 0 0 86 /**
 * Returns the maximum number of pages the AdaptiveLru will update each frame.
 */ 1 4 this 3 3344  
16 0 0 15 26 3351 1623 0 10 /**
 *
 */ 1 4 copy 1 3349  
17 0 0 7 26 3351 1623 0 10 /**
 *
 */ 1 8 lru_size 1 3209  
18 0 0 6 27 3351 0 0 0 2 4 this 3 3351  4 copy 1 3349  
19 0 0 6 29 3343 0 0 104 /**
 * Returns the LRU that manages this page, or NULL if it is not currently
 * managed by any LRU.
 */ 1 4 this 3 3349  
20 0 0 4 30 3346 0 0 183 /**
 * Adds the page to the LRU for the first time, or marks it recently-accessed
 * if it has already been added.
 *
 * If lru is NULL, it means to remove this page from its LRU.
 */ 2 4 this 3 3351  3 lru 1 3343  
21 0 0 4 31 3346 0 0 49 /**
 * Removes the page from its AdaptiveLru.
 */ 1 4 this 3 3351  
22 0 0 4 32 3346 0 0 224 /**
 * To be called when the page is used; this will move it to the tail of the
 * AdaptiveLru queue it is already on.
 *
 * This method is const because it's not technically modifying the contents of
 * the page itself.
 */ 1 4 this 3 3349  
23 0 0 4 32 3346 0 0 115 /**
 * To be called when the page is used; this will move it to the tail of the
 * specified AdaptiveLru queue.
 */ 2 4 this 3 3351  3 lru 1 3343  
24 0 0 6 33 3209 0 0 85 /**
 * Returns the size of this page as reported to the LRU, presumably in bytes.
 */ 1 4 this 3 3349  
25 0 0 4 34 3346 0 0 98 /**
 * Specifies the size of this page, presumably in bytes, although any unit is
 * possible.
 */ 2 4 this 3 3351  8 lru_size 1 3209  
26 0 0 4 35 3346 0 0 455 /**
 * Evicts the page from the LRU.  Called internally when the LRU determines
 * that it is full.  May also be called externally when necessary to
 * explicitly evict the page.
 *
 * It is legal for this method to either evict the page as requested, do
 * nothing (in which case the eviction will be requested again at the next
 * epoch), or requeue itself on the tail of the queue (in which case the
 * eviction will be requested again much later).
 */ 1 4 this 3 3351  
27 0 0 4 36 3346 0 0 10 /**
 *
 */ 2 4 this 3 3349  3 out 1 3347  
28 0 0 4 37 3346 0 0 10 /**
 *
 */ 3 4 this 3 3349  3 out 1 3347  12 indent_level 1 3177  
29 0 0 6 38 3352 0 0 123 /**
 * Returns the number of frames since the page was first added to its LRU.
 * Returns 0 if it does not have an LRU.
 */ 1 4 this 3 3349  
30 0 0 6 39 3352 0 0 125 /**
 * Returns the number of frames since the page was last accessed on its LRU.
 * Returns 0 if it does not have an LRU.
 */ 1 4 this 3 3349  
31 0 0 7 48 3353 1636 0 0 0 
32 0 0 15 48 3353 1636 0 0 1 6 param0 0 3354  
33 0 0 7 51 3356 1646 0 10 /**
 *
 */ 0 
34 0 0 15 51 3356 1646 0 10 /**
 *
 */ 1 5 other 1 3357  
35 0 0 6 52 3356 0 0 0 2 4 this 3 3356  5 other 1 3357  
36 0 0 6 53 3175 0 0 66 /**
 * Returns the type of animation represented by this spec.
 */ 1 4 this 3 3357  
37 0 0 6 55 3177 0 0 202 /**
 * This is only meaningful for animation_type AT_hardware.  It specifies the
 * maximum number of transforms that might be simultaneously applied to any
 * one vertex by the data in this format.
 */ 1 4 this 3 3357  
38 0 0 6 56 3178 0 0 231 /**
 * This is only meaningful for animation_type AT_hardware.  If true, it
 * indicates that the format uses indexed animation tables.  It is false if
 * each vertex will reference the first _num_transforms table entries only.
 */ 1 4 this 3 3357  
39 0 0 4 61 3346 0 0 74 /**
 * Specifies that no vertex animation is represented by this spec.
 */ 1 4 this 3 3356  
40 0 0 4 62 3346 0 0 168 /**
 * Specifies that vertex animation is to be performed by Panda.  This is the
 * most general setting and can handle any kind of vertex animation
 * represented.
 */ 1 4 this 3 3356  
41 0 0 4 63 3346 0 0 391 /**
 * Specifies that vertex animation is to be performed by the graphics hardware
 * (or at least by the graphics backend API, which is actually still free to
 * animate the vertices on the CPU).
 *
 * This is only legal if the graphics hardware can support the specified
 * limits on number of transforms and/or indexed transforms.  Also, no current
 * graphics API's support morphing.
 */ 3 4 this 3 3356  14 num_transforms 1 3177  18 indexed_transforms 1 3178  
42 0 0 4 64 3346 0 0 10 /**
 *
 */ 2 4 this 3 3357  3 out 1 3347  
43 0 0 55 68 3181 0 0 108 // These versions are exposed to Python, which have additional logic to map
// from Python interned strings. 1 3 str 1 3358  
44 0 0 23 68 3181 0 0 69 /**
 * Make using a string and an integer.  Concatenates the two.
 */ 2 4 name 1 3342  5 index 1 3177  
45 0 0 7 69 3181 0 0 221 /**
 * Constructs a new InternalName based on this name, with the indicated string
 * following it.  This is a cheaper way to construct a hierarchical name than
 * InternalName::make(parent->get_name() + ".basename").
 */ 2 4 this 3 3181  8 basename 1 3342  
46 0 0 7 70 3181 0 0 101 /**
 * Return the parent of this InternalName.  All names have a parent, except
 * the root name.
 */ 1 4 this 3 3193  
47 0 0 6 71 3342 0 0 95 /**
 * Returns the complete name represented by the InternalName and all of its
 * parents.
 */ 1 4 this 3 3193  
48 0 0 6 72 3342 0 0 69 /**
 * Like get_name, but uses a custom separator instead of ".".
 */ 2 4 this 3 3193  3 sep 1 3342  
49 0 0 6 73 3342 0 0 159 /**
 * Return the name represented by just this particular InternalName object,
 * ignoring its parents names.  This is everything after the rightmost dot.
 */ 1 4 this 3 3193  
50 0 0 6 81 3177 0 0 293 /**
 * Returns the index of the ancestor with the indicated basename, or -1 if no
 * ancestor has that basename.  Returns 0 if this name has the basename.
 *
 * This index value may be passed to get_ancestor() or get_net_basename() to
 * retrieve more information about the indicated name.
 */ 2 4 this 3 3193  8 basename 1 3342  
51 0 0 7 82 3193 0 0 222 /**
 * Returns the ancestor with the indicated index number.  0 is this name
 * itself, 1 is the name's parent, 2 is the parent's parent, and so on.  If
 * there are not enough ancestors, returns the root InternalName.
 */ 2 4 this 3 3193  1 n 1 3177  
52 0 0 7 83 3193 0 0 206 /**
 * Returns the oldest ancestor in the InternalName's chain, not counting the
 * root.  This will be the first name in the string, e.g.  "texcoord.foo.bar"
 * will return the InternalName "texcoord".
 */ 1 4 this 3 3193  
53 0 0 6 84 3342 0 0 192 /**
 * Returns the basename of this name prefixed by the indicated number of
 * ancestors.  0 is this name's basename, 1 is parent.basename, 2 is
 * grandparent.parent.basename, and so on.
 */ 2 4 this 3 3193  1 n 1 3177  
54 0 0 4 85 3346 0 0 10 /**
 *
 */ 2 4 this 3 3193  3 out 1 3347  
55 0 0 7 86 3181 0 0 174 /**
 * Returns the standard root InternalName.  This is the root of all other
 * InternalNames.  It has no name itself, and it is the only InternalName with
 * no parent.
 */ 0 
56 0 0 7 87 3181 0 0 53 /**
 * Returns the standard InternalName "error".
 */ 0 
57 0 0 7 88 3181 0 0 148 /**
 * Returns the standard InternalName "vertex".  This is the column header for
 * the 3-d or 4-d vertex position information for each vertex.
 */ 0 
58 0 0 7 89 3181 0 0 129 /**
 * Returns the standard InternalName "normal".  This is the column header for
 * the 3-d lighting normal for each vertex.
 */ 0 
59 0 0 7 90 3181 0 0 295 /**
 * Returns the standard InternalName "tangent".  This is the column header for
 * the tangent vector associated with each vertex, which is a unit vector
 * usually perpendicular to the normal and in the direction of the U texture
 * coordinate change.  It is used for deriving bump maps.
 */ 0 
60 0 0 7 91 3181 0 0 184 /**
 * Returns the InternalName "tangent.name", where name is the supplied string.
 * This is the column header for the tangent associated with the named texture
 * coordinate set.
 */ 1 4 name 1 3342  
61 0 0 7 92 3181 0 0 321 /**
 * Returns the standard InternalName "binormal".  This is the column header
 * for the tangent vector associated with each vertex, which is a unit vector
 * usually perpendicular to both the normal and the tangent, and in the
 * direction of the V texture coordinate change.  It is used for deriving bump
 * maps.
 */ 0 
62 0 0 7 93 3181 0 0 187 /**
 * Returns the InternalName "binormal.name", where name is the supplied
 * string.  This is the column header for the binormal associated with the
 * named texture coordinate set.
 */ 1 4 name 1 3342  
63 0 0 7 94 3181 0 0 232 /**
 * Returns the standard InternalName "texcoord".  This is the column header
 * for the default texture coordinate set for each vertex.  It is also used
 * for identifying the default texture coordinate set in a TextureStage.
 */ 0 
64 0 0 7 95 3181 0 0 262 /**
 * Returns the InternalName "texcoord.name", where name is the supplied
 * string.  This is the column header for the named texture coordinate set for
 * each vertex.  It is also used for identifying the named texture coordinate
 * set in a TextureStage.
 */ 1 4 name 1 3342  
65 0 0 7 96 3181 0 0 132 /**
 * Returns the standard InternalName "color".  This is the column header for
 * the 4-component color value for each vertex.
 */ 0 
66 0 0 7 97 3181 0 0 217 /**
 * Returns the standard InternalName "rotate".  This is the column header for
 * the floating-point rotate value, which represents a number of degrees
 * counter-clockwise to rotate each point or point sprite.
 */ 0 
67 0 0 7 98 3181 0 0 225 /**
 * Returns the standard InternalName "size".  This is the column header for
 * the floating-point size value, which overrides the thickness parameter of
 * the RenderModeAttrib on a per-vertex (e.g.  per-point) basis.
 */ 0 
68 0 0 7 99 3181 0 0 250 /**
 * Returns the standard InternalName "aspect_ratio". This is the column header
 * for the floating-point aspect ratio value, which is used to define non-
 * square points.  This number is the ratio x / y, where y is the point size
 * (above).
 */ 0 
69 0 0 7 100 3181 0 0 264 /**
 * Returns the standard InternalName "transform_blend". This is the column
 * header for the integer transform_blend index, which is used to define
 * vertex animation on the CPU by indexing to a particular vertex weighting
 * from the TransformBlendTable.
 */ 0 
70 0 0 7 101 3181 0 0 474 /**
 * Returns the standard InternalName "transform_weight". This is the column
 * header for the n-component transform_weight value, which is used in
 * conjuntion with "transform_index" to define vertex animation on the
 * graphics card.  The transform_weight value specifies the weight of the nth
 * transform.  By convention, there are 1 fewer weight values than transforms,
 * since the weights are assumed to sum to 1 (and the last value is therefore
 * implicit).
 */ 0 
71 0 0 7 102 3181 0 0 444 /**
 * Returns the standard InternalName "transform_index". This is the column
 * header for the n-component transform_index value, which is used in
 * conjuntion with "transform_weight" to define vertex animation on the
 * graphics card.  The transform_index value specifies the nth transform, by
 * lookup in the TransformTable.  The transform_index column may be omitted,
 * in which case the nth transform is the nth entry in the table.
 */ 0 
72 0 0 7 103 3181 0 0 348 /**
 * Returns an InternalName derived from the given base column name and the
 * given slider name, which is the column header for the offset vector that
 * should be applied to the base column name when the named morph slider is
 * engaged.
 *
 * Each morph slider requires a set of n morph columns, one for each base
 * column it applies to.
 */ 2 6 column 1 3181  6 slider 1 3342  
73 0 0 7 104 3181 0 0 233 /**
 * Returns the standard InternalName "index".  This is the column header for
 * the integer vertex index.  It is not used in the vertex data itself, but is
 * used in the GeomPrimitive structure to index into the vertex data.
 */ 0 
74 0 0 7 105 3181 0 0 108 /**
 * Returns the standard InternalName "world".  This is used as a keyword in
 * the shader subsystem.
 */ 0 
75 0 0 7 106 3181 0 0 109 /**
 * Returns the standard InternalName "camera".  This is used as a keyword in
 * the shader subsystem.
 */ 0 
76 0 0 7 107 3181 0 0 108 /**
 * Returns the standard InternalName "model".  This is used as a keyword in
 * the shader subsystem.
 */ 0 
77 0 0 7 108 3181 0 0 107 /**
 * Returns the standard InternalName "view".  This is used as a keyword in the
 * shader subsystem.
 */ 0 
78 0 0 7 109 3362 0 0 0 0 
79 0 0 7 111 3363 1684 0 10 /**
 *
 */ 8 4 name 1 3193  14 num_components 1 3177  12 numeric_type 1 3173  8 contents 1 3174  5 start 1 3177  16 column_alignment 5 3177  12 num_elements 5 3177  14 element_stride 5 3177  
80 0 0 15 111 3363 1684 0 10 /**
 *
 */ 1 4 copy 1 3187  
81 0 0 6 112 3363 0 0 0 2 4 this 3 3363  4 copy 1 3187  
82 0 0 7 114 3193 0 0 267 /**
 * Returns the name of this particular data field, e.g.  "vertex" or "normal".
 * The name may be a user-defined string, or it may be one of the standard
 * system-defined field types.  Only the system-defined field types are used
 * for the actual rendering.
 */ 1 4 this 3 3187  
83 0 0 6 115 3177 0 0 194 /**
 * Returns the number of components of the column: the number of instances of
 * the NumericType in each element.  This is usually, but not always, the same
 * thing as get_num_values().
 */ 1 4 this 3 3187  
84 0 0 6 116 3177 0 0 337 /**
 * Returns the number of numeric values of the column: the number of distinct
 * numeric values that go into each element.  This is usually, but not always,
 * the same thing as get_num_components(); the difference is in the case of a
 * composite numeric type like NT_packed_dcba, which has four numeric values
 * per component.
 */ 1 4 this 3 3187  
85 0 0 6 117 3177 0 0 107 /**
 * Returns the number of times this column is repeated.  This is usually 1,
 * except for matrices.
 */ 1 4 this 3 3187  
86 0 0 6 118 3173 0 0 79 /**
 * Returns the token representing the numeric type of the data storage.
 */ 1 4 this 3 3187  
87 0 0 6 119 3174 0 0 83 /**
 * Returns the token representing the semantic meaning of the stored value.
 */ 1 4 this 3 3187  
88 0 0 6 120 3177 0 0 145 /**
 * Returns the byte within the array record at which this column starts.  This
 * can be set to non-zero to implement interleaved arrays.
 */ 1 4 this 3 3187  
89 0 0 6 121 3177 0 0 299 /**
 * Returns the alignment requirements for this column.  If this is greater
 * than 1, it restricts the column to appear only on memory addresses that are
 * integer multiples of this value; this has implications for this column's
 * start value, as well as the stride of the resulting array.
 */ 1 4 this 3 3187  
90 0 0 6 122 3177 0 0 133 /**
 * This value is only relevant for matrix types.  Returns the number of bytes
 * to add to access the next row of the matrix.
 */ 1 4 this 3 3187  
91 0 0 6 123 3177 0 0 111 /**
 * Returns the number of bytes used by each component (that is, by one element
 * of the numeric type).
 */ 1 4 this 3 3187  
92 0 0 6 124 3177 0 0 111 /**
 * Returns the number of bytes used by each element of the column:
 * component_bytes * num_components.
 */ 1 4 this 3 3187  
93 0 0 6 125 3178 0 0 392 /**
 * Returns true if this Contents type is one that includes a homogeneous
 * coordinate in the fourth component, or false otherwise.  If this is true,
 * correct operation on the vertex data may require scaling by the homogeneous
 * coordinate from time to time (but in general this is handled automatically
 * if you use the 3-component or smaller forms of get_data() and set_data()).
 */ 1 4 this 3 3187  
94 0 0 6 126 3178 0 0 118 /**
 * Returns true if this column overlaps with any of the bytes in the indicated
 * range, false if it does not.
 */ 3 4 this 3 3187  10 start_byte 1 3177  9 num_bytes 1 3177  
95 0 0 6 127 3178 0 0 159 /**
 * Returns true if the data store of this column is exactly the same as that
 * of the other, irrespective of name or start position within the record.
 */ 2 4 this 3 3187  5 other 1 3187  
96 0 0 4 128 3346 0 0 148 /**
 * Replaces the name of an existing column.  This is only legal on an
 * unregistered format (i.e.  when constructing the format initially).
 */ 2 4 this 3 3363  4 name 1 3181  
97 0 0 4 129 3346 0 0 163 /**
 * Changes the number of components of an existing column.  This is only legal
 * on an unregistered format (i.e.  when constructing the format initially).
 */ 2 4 this 3 3363  14 num_components 1 3177  
98 0 0 4 130 3346 0 0 152 /**
 * Changes the numeric type an existing column.  This is only legal on an
 * unregistered format (i.e.  when constructing the format initially).
 */ 2 4 this 3 3363  12 numeric_type 1 3173  
99 0 0 4 131 3346 0 0 159 /**
 * Changes the semantic meaning of an existing column.  This is only legal on
 * an unregistered format (i.e.  when constructing the format initially).
 */ 2 4 this 3 3363  8 contents 1 3174  
100 0 0 4 132 3346 0 0 153 /**
 * Changes the start byte of an existing column.  This is only legal on an
 * unregistered format (i.e.  when constructing the format initially).
 */ 2 4 this 3 3363  5 start 1 3177  
101 0 0 4 133 3346 0 0 159 /**
 * Changes the column alignment of an existing column.  This is only legal on
 * an unregistered format (i.e.  when constructing the format initially).
 */ 2 4 this 3 3363  16 column_alignment 1 3177  
102 0 0 4 134 3346 0 0 10 /**
 *
 */ 2 4 this 3 3187  3 out 1 3347  
103 0 0 7 140 3364 1712 0 10 /**
 *
 */ 0 
104 0 0 23 140 3364 1712 0 10 /**
 *
 */ 4 5 name0 1 3193  15 num_components0 1 3177  13 numeric_type0 1 3173  9 contents0 1 3174  
105 0 0 23 140 3364 1712 0 10 /**
 *
 */ 8 5 name0 1 3193  15 num_components0 1 3177  13 numeric_type0 1 3173  9 contents0 1 3174  5 name1 1 3193  15 num_components1 1 3177  13 numeric_type1 1 3173  9 contents1 1 3174  
106 0 0 23 140 3364 1712 0 10 /**
 *
 */ 12 5 name0 1 3193  15 num_components0 1 3177  13 numeric_type0 1 3173  9 contents0 1 3174  5 name1 1 3193  15 num_components1 1 3177  13 numeric_type1 1 3173  9 contents1 1 3174  5 name2 1 3193  15 num_components2 1 3177  13 numeric_type2 1 3173  9 contents2 1 3174  
107 0 0 23 140 3364 1712 0 10 /**
 *
 */ 16 5 name0 1 3193  15 num_components0 1 3177  13 numeric_type0 1 3173  9 contents0 1 3174  5 name1 1 3193  15 num_components1 1 3177  13 numeric_type1 1 3173  9 contents1 1 3174  5 name2 1 3193  15 num_components2 1 3177  13 numeric_type2 1 3173  9 contents2 1 3174  5 name3 1 3193  15 num_components3 1 3177  13 numeric_type3 1 3173  9 contents3 1 3174  
108 0 0 15 140 3364 1712 0 10 /**
 *
 */ 1 4 copy 1 3191  
109 0 0 7 141 3364 1712 0 0 2 4 this 3 3364  4 copy 1 3191  
110 0 0 6 143 3178 0 0 123 /**
 * This method overrides ReferenceCount::unref() to unregister the object when
 * its reference count goes to zero.
 */ 1 4 this 3 3191  
111 0 0 6 144 3178 0 0 198 /**
 * Returns true if this format has been registered, false if it has not.  It
 * may not be used for a Geom until it has been registered, but once
 * registered, it may no longer be modified.
 */ 1 4 this 3 3191  
112 0 0 7 145 3191 0 0 421 /**
 * Adds the indicated format to the registry, if there is not an equivalent
 * format already there; in either case, returns the pointer to the equivalent
 * format now in the registry.
 *
 * This is similar to GeomVertexFormat::register_format(), except that you
 * generally need not call it explicitly.  Calling
 * GeomVertexFormat::register_format() automatically registers all of the
 * nested array formats.
 */ 1 6 format 1 3191  
113 0 0 6 147 3177 0 0 83 /**
 * Returns the total number of bytes reserved in the array for each vertex.
 */ 1 4 this 3 3191  
114 0 0 4 148 3346 0 0 297 /**
 * Changes the total number of bytes reserved in the array for each vertex.
 * You may not reduce this below get_total_bytes(), but you may increase it
 * arbitrarily.
 *
 * You should avoid arrays with stride higher than 2048, which is the typical
 * limit supported by graphics hardware.
 */ 2 4 this 3 3364  6 stride 1 3177  
115 0 0 6 150 3177 0 0 347 /**
 * Returns the byte divisor to which the data record must be padded to meet
 * hardware limitations.  For instance, if this is 4, the stride will be
 * automatically rounded up to the next multiple of 4 bytes.  This value is
 * automatically increased as needed to ensure the individual numeric
 * components in the array are word-aligned.
 */ 1 4 this 3 3191  
116 0 0 4 151 3346 0 0 355 /**
 * Explicitly sets the byte divisor to which the data record must be padded to
 * meet hardware limitations.  See get_pad_to().  Normally it is not necessary
 * to call this unless you have some specific requirements for row-to-row data
 * alignment.  Note that this value may be automatically increased at each
 * subsequent call to add_column().
 */ 2 4 this 3 3364  6 pad_to 1 3177  
117 0 0 6 153 3177 0 0 214 /**
 * Returns the divisor attribute for the data in this array.  If 0, it
 * contains per-vertex data.  If 1, it contains per-instance data.  If higher
 * than 1, the read row is advanced for each n instances.
 */ 1 4 this 3 3191  
118 0 0 4 154 3346 0 0 206 /**
 * Set this to 0 to indicate that this array contains per-vertex data, or to 1
 * to indicate that it contains per-instance data.  If higher than 1, the read
 * row is advanced for each n instances.
 */ 2 4 this 3 3364  7 divisor 1 3177  
119 0 0 6 156 3177 0 0 122 /**
 * Returns the total number of bytes used by the data types within the format,
 * including gaps between elements.
 */ 1 4 this 3 3191  
120 0 0 6 158 3177 0 0 319 /**
 * Adds a new column to the specification.  This is a table of per-vertex
 * floating-point numbers such as "vertex" or "normal"; you must specify where
 * in each record the table starts, and how many components (dimensions) exist
 * per vertex.
 *
 * The return value is the index number of the new data type.
 */ 7 4 this 3 3364  4 name 1 3193  14 num_components 1 3177  12 numeric_type 1 3173  8 contents 1 3174  5 start 5 3177  16 column_alignment 5 3177  
121 0 0 6 158 3177 0 0 471 /**
 * Adds a new column to the specification.  This is a table of per-vertex
 * floating-point numbers such as "vertex" or "normal"; you must specify where
 * in each record the table starts, and how many components (dimensions) exist
 * per vertex.
 *
 * Adding a column with the same name as a previous type, or that overlaps
 * with one or more previous types, quietly removes the previous type(s).
 *
 * The return value is the index number of the new data type.
 */ 2 4 this 3 3364  6 column 1 3187  
122 0 0 4 159 3346 0 0 107 /**
 * Removes the column with the indicated name, if any.  This leaves a gap in
 * the byte structure.
 */ 2 4 this 3 3364  4 name 1 3193  
123 0 0 4 160 3346 0 0 104 /**
 * Removes all columns previously added, sets the stride to zero, and prepares
 * to start over.
 */ 1 4 this 3 3364  
124 0 0 4 161 3346 0 0 48 /**
 * Removes wasted space between columns.
 */ 1 4 this 3 3364  
125 0 0 4 162 3346 0 0 319 /**
 * Reprocesses the columns in the format to align the C_point and C_vector
 * columns to 16-byte boundaries to allow for the more efficient SSE2
 * operations (assuming SSE2 is enabled in the build).
 *
 * The caller is responsible for testing vertex_animation_align_16 to decide
 * whether to call this method.
 */ 1 4 this 3 3364  
126 0 0 6 163 3177 0 0 64 /**
 * Returns the number of different columns in the array.
 */ 1 4 this 3 3191  
127 0 0 6 164 3187 0 0 97 /**
 * Returns the specification with the indicated name, or NULL if the name is
 * not used.
 */ 2 4 this 3 3191  4 name 1 3193  
128 0 0 6 164 3187 0 0 47 /**
 * Returns the ith column of the array.
 */ 2 4 this 3 3191  1 i 1 3177  
129 0 0 6 164 3187 0 0 125 /**
 * Returns the first specification that overlaps with any of the indicated
 * bytes in the range, or NULL if none do.
 */ 3 4 this 3 3191  10 start_byte 1 3177  9 num_bytes 1 3177  
130 0 0 6 169 3178 0 0 75 /**
 * Returns true if the array has the named column, false otherwise.
 */ 2 4 this 3 3191  4 name 1 3193  
131 0 0 6 170 3178 0 0 309 /**
 * Returns true if all of the fields in this array format are also present and
 * equivalent in the other array format, and in the same byte positions, and
 * the stride is the same.  That is, true if this format can share the same
 * data pointer as the other format (with possibly some unused gaps).
 */ 2 4 this 3 3191  5 other 1 3191  
132 0 0 6 171 3177 0 0 83 /**
 * Returns the number of bytes per row that are not assigned to any column.
 */ 1 4 this 3 3191  
133 0 0 4 172 3346 0 0 10 /**
 *
 */ 2 4 this 3 3191  3 out 1 3347  
134 0 0 4 173 3346 0 0 10 /**
 *
 */ 3 4 this 3 3191  3 out 1 3347  12 indent_level 5 3177  
135 0 0 4 174 3346 0 0 10 /**
 *
 */ 4 4 this 3 3191  3 out 1 3347  12 indent_level 1 3177  10 array_data 1 3365  
136 0 0 6 175 3342 0 0 242 /**
 * Returns a string with format codes representing the exact memory layout of
 * the columns in memory, as understood by Python's struct module.  If pad is
 * true, extra padding bytes are added to the end as 'x' characters as needed.
 */ 2 4 this 3 3191  3 pad 5 3178  
137 0 0 7 176 3362 0 0 0 0 
138 0 0 7 136 3241 0 0 0 1 4 this 3 3364  
139 0 0 6 138 3353 0 0 0 1 4 this 3 3364  
140 0 0 7 182 3367 1744 0 10 /**
 *
 */ 0 
141 0 0 23 182 3367 1744 0 10 /**
 *
 */ 1 12 array_format 1 3191  
142 0 0 15 182 3367 1744 0 10 /**
 *
 */ 1 4 copy 1 3229  
143 0 0 7 183 3367 1744 0 0 2 4 this 3 3367  4 copy 1 3229  
144 0 0 6 185 3178 0 0 123 /**
 * This method overrides ReferenceCount::unref() to unregister the object when
 * its reference count goes to zero.
 */ 1 4 this 3 3229  
145 0 0 6 186 3178 0 0 198 /**
 * Returns true if this format has been registered, false if it has not.  It
 * may not be used for a Geom until it has been registered, but once
 * registered, it may no longer be modified.
 */ 1 4 this 3 3229  
146 0 0 7 187 3229 0 0 118 /**
 * This flavor of register_format() implicitly creates a one-array vertex
 * format from the array definition.
 */ 1 6 format 1 3191  
147 0 0 7 187 3229 0 0 484 /**
 * Adds the indicated format to the registry, if there is not an equivalent
 * format already there; in either case, returns the pointer to the equivalent
 * format now in the registry.
 *
 * This must be called before a format may be used in a Geom.  After this
 * call, you should discard the original pointer you passed in (which may or
 * may not now be invalid) and let its reference count decrement normally; you
 * should use only the returned value from this point on.
 */ 1 6 format 1 3229  
148 0 0 6 189 3357 0 0 117 /**
 * Returns the GeomVertexAnimationSpec that indicates how this format's
 * vertices are set up for animation.
 */ 1 4 this 3 3229  
149 0 0 4 190 3346 0 0 260 /**
 * Resets the GeomVertexAnimationSpec that indicates how this format's
 * vertices are set up for animation.  You should also, of course, change the
 * columns in the tables accordingly.
 *
 * This may not be called once the format has been registered.
 */ 2 4 this 3 3367  9 animation 1 3357  
150 0 0 7 193 3229 0 0 325 /**
 * Returns a suitable vertex format for sending the animated vertices to the
 * graphics backend.  This is the same format as the source format, with the
 * CPU-animation data elements removed.
 *
 * This may only be called after the format has been registered.  The return
 * value will have been already registered.
 */ 1 4 this 3 3229  
151 0 0 7 194 3229 0 0 447 /**
 * Returns a new GeomVertexFormat that includes all of the columns defined in
 * either this GeomVertexFormat or the other one.  If any column is defined in
 * both formats with different sizes (for instance, texcoord2 vs.  texcoord3),
 * the new format will include the larger of the two definitions.
 *
 * This may only be called after both source formats have been registered.
 * The return value will also have been already registered.
 */ 2 4 this 3 3229  5 other 1 3229  
152 0 0 6 195 3209 0 0 223 /**
 * Returns the number of individual arrays required by the format.  If the
 * array data is completely interleaved, this will be 1; if it is completely
 * parallel, this will be the same as the number of data types.
 */ 1 4 this 3 3229  
153 0 0 7 196 3191 0 0 71 /**
 * Returns the description of the nth array used by the format.
 */ 2 4 this 3 3229  5 array 1 3209  
154 0 0 7 198 3364 1712 0 190 /**
 * Returns a modifiable pointer to the indicated array.  This means
 * duplicating it if it is shared or registered.
 *
 * This may not be called once the format has been registered.
 */ 2 4 this 3 3367  5 array 1 3209  
155 0 0 4 199 3346 0 0 124 /**
 * Replaces the definition of the indicated array.
 *
 * This may not be called once the format has been registered.
 */ 3 4 this 3 3367  5 array 1 3209  6 format 1 3191  
156 0 0 4 200 3346 0 0 115 /**
 * Removes the nth array from the format.
 *
 * This may not be called once the format has been registered.
 */ 2 4 this 3 3367  5 array 1 3209  
157 0 0 6 201 3209 0 0 243 /**
 * Adds the indicated array definition to the list of arrays included within
 * this vertex format definition.  The return value is the index number of the
 * new array.
 *
 * This may not be called once the format has been registered.
 */ 2 4 this 3 3367  12 array_format 1 3191  
158 0 0 4 202 3346 0 0 275 /**
 * Adds the indicated array definition to the list of arrays at the indicated
 * position.  This works just like add_array(), except that you can specify
 * which array index the new array should have.
 *
 * This may not be called once the format has been registered.
 */ 3 4 this 3 3367  5 array 1 3209  12 array_format 1 3191  
159 0 0 4 203 3346 0 0 146 /**
 * Removes all of the array definitions from the format and starts over.
 *
 * This may not be called once the format has been registered.
 */ 1 4 this 3 3367  
160 0 0 4 204 3346 0 0 119 /**
 * Removes the arrays that define no columns.
 *
 * This may not be called once the format has been registered.
 */ 1 4 this 3 3367  
161 0 0 6 205 3209 0 0 100 /**
 * Returns the total number of different columns in the specification, across
 * all arrays.
 */ 1 4 this 3 3229  
162 0 0 6 206 3177 0 0 407 /**
 * Returns the index number of the array with the indicated column, or -1 if
 * no arrays contained that name.
 *
 * The return value can be passed to get_array_format() to get the format of
 * the array.  It may also be passed to GeomVertexData::get_array_data() or
 * get_data() or set_data() to manipulate the actual array data.
 *
 * This may only be called after the format has been registered.
 */ 2 4 this 3 3229  4 name 1 3193  
163 0 0 6 206 3177 0 0 290 /**
 * Returns the index number of the array with the ith column.
 *
 * The return value can be passed to get_array_format() to get the format of
 * the array.  It may also be passed to GeomVertexData::get_array_data() or
 * get_data() or set_data() to manipulate the actual array data.
 */ 2 4 this 3 3229  1 i 1 3209  
164 0 0 6 207 3187 0 0 179 /**
 * Returns the specification with the indicated name, or NULL if the name is
 * not used.  Use get_array_with() to determine which array this column is
 * associated with.
 */ 2 4 this 3 3229  4 name 1 3193  
165 0 0 6 207 3187 0 0 74 /**
 * Returns the ith column of the specification, across all arrays.
 */ 2 4 this 3 3229  1 i 1 3209  
166 0 0 6 208 3178 0 0 76 /**
 * Returns true if the format has the named column, false otherwise.
 */ 2 4 this 3 3229  4 name 1 3193  
167 0 0 7 209 3193 0 0 65 /**
 * Returns the name of the ith column, across all arrays.
 */ 2 4 this 3 3229  1 i 1 3209  
168 0 0 4 211 3346 0 0 370 /**
 * Removes the named column from the format, from whichever array it exists
 * in.  If there are other columns remaining in the array, the array is left
 * with a gap where the column used to be; if this was the only column in the
 * array, the array is removed (unless keep_empty_array is true).
 *
 * This may not be called once the format has been registered.
 */ 3 4 this 3 3367  4 name 1 3193  16 keep_empty_array 5 3178  
169 0 0 4 212 3346 0 0 48 /**
 * Removes wasted space between columns.
 */ 1 4 this 3 3367  
170 0 0 4 213 3346 0 0 259 /**
 * Reprocesses the columns in the format to align the C_point and C_vector
 * columns to 16-byte boundaries to allow for the more efficient SSE2
 * operations (assuming SSE2 is enabled in the build).
 *
 * Also see maybe_align_columns_for_animation().
 */ 1 4 this 3 3367  
171 0 0 4 214 3346 0 0 172 /**
 * Calls align_columns_for_animation() if this format's AnimationSpec
 * indicates that it contains animated vertices, and if vertex-animation-
 * align-16 is true.
 */ 1 4 this 3 3367  
172 0 0 6 215 3209 0 0 161 /**
 * Returns the number of columns within the format that represent points in
 * space.
 *
 * This may only be called after the format has been registered.
 */ 1 4 this 3 3229  
173 0 0 7 216 3193 0 0 219 /**
 * Returns the name of the nth point column.  This represents a point in
 * space, which should be transformed by any spatial transform matrix.
 *
 * This may only be called after the format has been registered.
 */ 2 4 this 3 3229  1 n 1 3209  
174 0 0 6 218 3209 0 0 165 /**
 * Returns the number of columns within the format that represent directional
 * vectors.
 *
 * This may only be called after the format has been registered.
 */ 1 4 this 3 3229  
175 0 0 7 219 3193 0 0 239 /**
 * Returns the name of the nth vector column.  This represents a directional
 * vector, which should be transformed by any spatial transform matrix as a
 * vector.
 *
 * This may only be called after the format has been registered.
 */ 2 4 this 3 3229  1 n 1 3209  
176 0 0 6 221 3209 0 0 165 /**
 * Returns the number of columns within the format that represent texture
 * coordinates.
 *
 * This may only be called after the format has been registered.
 */ 1 4 this 3 3229  
177 0 0 7 222 3193 0 0 165 /**
 * Returns the name of the nth texcoord column.  This represents a texture
 * coordinate.
 *
 * This may only be called after the format has been registered.
 */ 2 4 this 3 3229  1 n 1 3209  
178 0 0 6 224 3209 0 0 158 /**
 * Returns the number of columns within the format that represent morph
 * deltas.
 *
 * This may only be called after the format has been registered.
 */ 1 4 this 3 3229  
179 0 0 7 225 3193 0 0 288 /**
 * Returns the slider name associated with the nth morph column.  This is the
 * name of the slider that will control the morph, and should be defined
 * within the SliderTable associated with the GeomVertexData.
 *
 * This may only be called after the format has been registered.
 */ 2 4 this 3 3229  1 n 1 3209  
180 0 0 7 226 3193 0 0 265 /**
 * Returns the name of the base column that the nth morph modifies.  This
 * column will also be defined within the format, and can be retrieved via
 * get_array_with() and/or get_column().
 *
 * This may only be called after the format has been registered.
 */ 2 4 this 3 3229  1 n 1 3209  
181 0 0 7 227 3193 0 0 356 /**
 * Returns the name of the column that defines the nth morph.  This contains
 * the delta offsets that are to be applied to the column defined by
 * get_morph_base().  This column will be defined within the format, and can
 * be retrieved via get_array_with() and/or get_column().
 *
 * This may only be called after the format has been registered.
 */ 2 4 this 3 3229  1 n 1 3209  
182 0 0 4 239 3346 0 0 10 /**
 *
 */ 2 4 this 3 3229  3 out 1 3347  
183 0 0 4 240 3346 0 0 10 /**
 *
 */ 3 4 this 3 3229  3 out 1 3347  12 indent_level 5 3177  
184 0 0 4 241 3346 0 0 10 /**
 *
 */ 4 4 this 3 3229  3 out 1 3347  12 indent_level 1 3177  4 data 1 3368  
185 0 0 7 242 3229 0 0 115 /**
 * Returns a standard vertex format containing no arrays at all, useful for
 * pull-style vertex rendering.
 */ 0 
186 0 0 7 243 3229 0 0 202 // Some standard vertex formats.  No particular requirement to use one of
// these, but the DirectX renderers can use these formats directly, whereas
// any other format will have to be converted first. 0 
187 0 0 7 244 3229 0 0 107 /**
 * Returns a standard vertex format with a 3-component normal and a
 * 3-component vertex position.
 */ 0 
188 0 0 7 245 3229 0 0 124 /**
 * Returns a standard vertex format with a 2-component texture coordinate pair
 * and a 3-component vertex position.
 */ 0 
189 0 0 7 246 3229 0 0 147 /**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a 3-component normal, and a 3-component vertex position.
 */ 0 
190 0 0 7 247 3229 0 0 269 // These formats, with the DirectX-style packed color, may not be supported
// directly by OpenGL.  If you use them and the driver does not support
// them, the GLGraphicsStateGuardian will automatically convert to native
// OpenGL form (with a small runtime overhead). 0 
191 0 0 7 248 3229 0 0 141 /**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a packed color, and a 3-component vertex position.
 */ 0 
192 0 0 7 249 3229 0 0 124 /**
 * Returns a standard vertex format with a packed color, a 3-component normal,
 * and a 3-component vertex position.
 */ 0 
193 0 0 7 250 3229 0 0 166 /**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a packed color, a 3-component normal, and a 3-component vertex
 * position.
 */ 0 
194 0 0 7 251 3229 0 0 318 // These formats, with an OpenGL-style four-byte color, are not supported
// directly by DirectX.  If you use them, the DXGraphicsStateGuardian will
// automatically convert to DirectX form (with a larger runtime overhead,
// since DirectX8, and old DirectX9 drivers, require everything to be
// interleaved together). 0 
195 0 0 7 252 3229 0 0 146 /**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a 4-component color, and a 3-component vertex position.
 */ 0 
196 0 0 7 253 3229 0 0 129 /**
 * Returns a standard vertex format with a 4-component color, a 3-component
 * normal, and a 3-component vertex position.
 */ 0 
197 0 0 7 254 3229 0 0 171 /**
 * Returns a standard vertex format with a 2-component texture coordinate
 * pair, a 4-component color, a 3-component normal, and a 3-component vertex
 * position.
 */ 0 
198 0 0 7 255 3362 0 0 0 0 
199 0 0 7 178 3241 0 0 0 1 4 this 3 3367  
200 0 0 6 180 3353 0 0 0 1 4 this 3 3367  
201 0 0 7 262 3370 1802 0 10 /**
 *
 */ 2 4 name 1 3342  8 max_size 1 3209  
202 0 0 6 264 3209 0 0 77 /**
 * Returns the total size of all objects currently active on the LRU.
 */ 1 4 this 3 3371  
203 0 0 6 265 3209 0 0 91 /**
 * Returns the max size of all objects that are allowed to be active on the
 * LRU.
 */ 1 4 this 3 3371  
204 0 0 4 266 3346 0 0 143 /**
 * Changes the max size of all objects that are allowed to be active on the
 * LRU.
 *
 * If the size is (size_t)-1, there is no limit.
 */ 2 4 this 3 3370  8 max_size 1 3209  
205 0 0 6 267 3209 0 0 106 /**
 * Returns the total size of the pages that were enqueued since the last call
 * to begin_epoch().
 */ 1 4 this 3 3371  
206 0 0 4 268 3346 0 0 61 /**
 * Evicts a sequence of objects if the queue is full.
 */ 1 4 this 3 3370  
207 0 0 4 269 3346 0 0 132 /**
 * Evicts a sequence of objects until the queue fits within the indicated
 * target size, regardless of its normal max size.
 */ 2 4 this 3 3370  11 target_size 1 3209  
208 0 0 4 270 3346 0 0 184 /**
 * Marks the end of the previous epoch and the beginning of the next one.
 * This will evict any objects that are pending eviction, and also update any
 * internal bookkeeping.
 */ 1 4 this 3 3370  
209 0 0 6 271 3178 0 0 125 /**
 * Checks that the LRU is internally self-consistent.  Returns true if
 * successful, false if there is some problem.
 */ 1 4 this 3 3370  
210 0 0 4 272 3346 0 0 10 /**
 *
 */ 2 4 this 3 3371  3 out 1 3347  
211 0 0 4 273 3346 0 0 10 /**
 *
 */ 3 4 this 3 3371  3 out 1 3347  12 indent_level 1 3177  
212 0 0 6 258 3373 0 0 0 1 4 this 3 3370  
213 0 0 6 260 3374 0 0 0 1 4 this 3 3370  
214 0 0 15 277 3377 1817 0 10 /**
 *
 */ 1 4 copy 1 3375  
215 0 0 7 277 3377 1817 0 10 /**
 *
 */ 1 8 lru_size 1 3209  
216 0 0 6 278 3377 0 0 0 2 4 this 3 3377  4 copy 1 3375  
217 0 0 6 280 3370 0 0 104 /**
 * Returns the LRU that manages this page, or NULL if it is not currently
 * managed by any LRU.
 */ 1 4 this 3 3375  
218 0 0 4 281 3346 0 0 183 /**
 * Adds the page to the LRU for the first time, or marks it recently-accessed
 * if it has already been added.
 *
 * If lru is NULL, it means to remove this page from its LRU.
 */ 2 4 this 3 3377  3 lru 1 3370  
219 0 0 4 282 3346 0 0 47 /**
 * Removes the page from its SimpleLru.
 */ 1 4 this 3 3377  
220 0 0 4 283 3346 0 0 222 /**
 * To be called when the page is used; this will move it to the tail of the
 * SimpleLru queue it is already on.
 *
 * This method is const because it's not technically modifying the contents of
 * the page itself.
 */ 1 4 this 3 3375  
221 0 0 4 283 3346 0 0 113 /**
 * To be called when the page is used; this will move it to the tail of the
 * specified SimpleLru queue.
 */ 2 4 this 3 3377  3 lru 1 3370  
222 0 0 6 284 3209 0 0 85 /**
 * Returns the size of this page as reported to the LRU, presumably in bytes.
 */ 1 4 this 3 3375  
223 0 0 4 285 3346 0 0 98 /**
 * Specifies the size of this page, presumably in bytes, although any unit is
 * possible.
 */ 2 4 this 3 3377  8 lru_size 1 3209  
224 0 0 4 286 3346 0 0 455 /**
 * Evicts the page from the LRU.  Called internally when the LRU determines
 * that it is full.  May also be called externally when necessary to
 * explicitly evict the page.
 *
 * It is legal for this method to either evict the page as requested, do
 * nothing (in which case the eviction will be requested again at the next
 * epoch), or requeue itself on the tail of the queue (in which case the
 * eviction will be requested again much later).
 */ 1 4 this 3 3377  
225 0 0 4 287 3346 0 0 10 /**
 *
 */ 2 4 this 3 3375  3 out 1 3347  
226 0 0 4 288 3346 0 0 10 /**
 *
 */ 3 4 this 3 3375  3 out 1 3347  12 indent_level 1 3177  
227 0 0 6 275 3373 0 0 0 1 4 this 3 3377  
228 0 0 7 292 3380 1830 0 10 /**
 *
 */ 2 8 max_size 1 3209  4 lock 1 3378  
229 0 0 6 294 3381 0 0 198 /**
 * Allocates a new block.  Returns NULL if a block of the requested size
 * cannot be allocated.
 *
 * To free the allocated block, call block->free(), or simply delete the block
 * pointer.
 */ 3 4 this 3 3380  4 size 1 3209  9 alignment 5 3209  
230 0 0 6 295 3178 0 0 108 /**
 * Returns true if there are no blocks allocated on this page, or false if
 * there is at least one.
 */ 1 4 this 3 3382  
231 0 0 6 296 3209 0 0 55 /**
 * Returns the total size of allocated objects.
 */ 1 4 this 3 3382  
232 0 0 6 297 3209 0 0 61 /**
 * Returns the available space for allocated objects.
 */ 1 4 this 3 3382  
233 0 0 4 298 3346 0 0 172 /**
 * Changes the available space for allocated objects.  This will not affect
 * any already-allocated objects, but will have an effect on future calls to
 * alloc().
 */ 2 4 this 3 3380  8 max_size 1 3209  
234 0 0 6 299 3209 0 0 299 /**
 * Returns an upper-bound estimate of the size of the largest contiguous block
 * that may be allocated.  It is guaranteed that an attempt to allocate a
 * block larger than this will fail, though it is not guaranteed that an
 * attempt to allocate a block this size or smaller will succeed.
 */ 1 4 this 3 3382  
235 0 0 6 300 3381 0 0 103 /**
 * Returns a pointer to the first allocated block, or NULL if there are no
 * allocated blocks.
 */ 1 4 this 3 3382  
236 0 0 4 301 3346 0 0 10 /**
 *
 */ 2 4 this 3 3382  3 out 1 3347  
237 0 0 4 302 3346 0 0 10 /**
 *
 */ 2 4 this 3 3382  3 out 1 3347  
238 0 0 6 290 3373 0 0 0 1 4 this 3 3380  
239 0 0 4 305 3346 0 0 40 /**
 * Releases the allocated space.
 */ 1 4 this 3 3381  
240 0 0 6 306 3380 0 0 113 /**
 * Returns the SimpleAllocator object that owns this block.  Returns NULL if
 * the block has been freed.
 */ 1 4 this 3 3384  
241 0 0 6 307 3209 0 0 113 /**
 * Returns the starting point of this block.  It is an error to call this if
 * the block has been freed.
 */ 1 4 this 3 3384  
242 0 0 6 308 3209 0 0 103 /**
 * Returns the size of this block.  It is an error to call this if the block
 * has been freed.
 */ 1 4 this 3 3384  
243 0 0 6 309 3178 0 0 80 /**
 * Returns true if the block has been freed, false if it is still valid.
 */ 1 4 this 3 3384  
244 0 0 6 310 3209 0 0 107 /**
 * Returns the maximum size this block can be reallocated to, as limited by
 * the following block.
 */ 1 4 this 3 3384  
245 0 0 6 311 3178 0 0 144 /**
 * Changes the size of this block to the specified size.  Returns true if the
 * change is accepted, false if there was not enough room.
 */ 2 4 this 3 3381  4 size 1 3209  
246 0 0 6 312 3381 0 0 120 /**
 * Returns a pointer to the next allocated block in the chain, or NULL if
 * there are no more allocated blocks.
 */ 1 4 this 3 3384  
247 0 0 4 313 3346 0 0 10 /**
 *
 */ 2 4 this 3 3384  3 out 1 3347  
248 0 0 6 315 3178 0 0 119 /**
 * Returns true if the save file was successfully created and is ready for
 * use, false if there was an error.
 */ 1 4 this 3 3386  
249 0 0 6 316 3209 0 0 95 /**
 * Returns the amount of space consumed by the save file, including unused
 * portions.
 */ 1 4 this 3 3386  
250 0 0 6 317 3209 0 0 85 /**
 * Returns the amount of space within the save file that is currently in use.
 */ 1 4 this 3 3386  
251 0 0 6 324 3202 0 0 135 /**
 * Returns the current ram class of the array.  If this is other than
 * RC_resident, the array data is not resident in memory.
 */ 1 4 this 3 3388  
252 0 0 6 325 3202 0 0 212 /**
 * Returns the pending ram class of the array.  If this is different from
 * get_ram_class(), this page has been queued to be processed by the thread.
 * Eventually the page will be set to this ram class.
 */ 1 4 this 3 3388  
253 0 0 4 326 3346 0 0 128 /**
 * Ensures that the page will become resident soon.  Future calls to
 * get_page_data() will eventually return non-NULL.
 */ 1 4 this 3 3390  
254 0 0 7 327 3391 1888 0 198 /**
 * Allocates a new block.  Returns NULL if a block of the requested size
 * cannot be allocated.
 *
 * To free the allocated block, call block->free(), or simply delete the block
 * pointer.
 */ 2 4 this 3 3390  4 size 1 3209  
255 0 0 7 328 3391 1888 0 103 /**
 * Returns a pointer to the first allocated block, or NULL if there are no
 * allocated blocks.
 */ 1 4 this 3 3388  
256 0 0 6 329 3392 0 0 61 /**
 * Returns a pointer to the book that owns this page.
 */ 1 4 this 3 3388  
257 0 0 6 330 3370 0 0 119 /**
 * Returns a pointer to the global LRU object that manages the
 * VertexDataPage's with the indicated RamClass.
 */ 1 6 rclass 1 3202  
258 0 0 6 331 3370 0 0 133 /**
 * Returns a pointer to the global LRU object that manages the
 * VertexDataPage's that are pending processing by the thread.
 */ 0 
259 0 0 6 332 3203 0 0 121 /**
 * Returns the global VertexDataSaveFile that will be used to save vertex data
 * buffers to disk when necessary.
 */ 0 
260 0 0 6 335 3178 0 0 205 /**
 * Writes the page to disk, but does not evict it from memory or affect its
 * LRU status.  If it gets evicted later without having been modified, it will
 * not need to write itself to disk again.
 */ 1 4 this 3 3390  
261 0 0 6 336 3177 0 0 285 /**
 * Returns the number of threads that have been spawned to service vertex
 * paging requests, or 0 if no threads have been spawned (which may mean
 * either that all paging requests will be handled by the main thread, or
 * simply that no paging requests have yet been issued).
 */ 0 
262 0 0 6 337 3177 0 0 94 /**
 * Returns the number of read requests that are waiting to be serviced by a
 * thread.
 */ 0 
263 0 0 6 338 3177 0 0 95 /**
 * Returns the number of write requests that are waiting to be serviced by a
 * thread.
 */ 0 
264 0 0 4 339 3346 0 0 141 /**
 * Call this to stop the paging threads, if they were started.  This may block
 * until all of the pending tasks have been completed.
 */ 0 
265 0 0 4 340 3346 0 0 80 /**
 * Waits for all of the pending thread tasks to finish before returning.
 */ 0 
266 0 0 4 341 3346 0 0 10 /**
 *
 */ 2 4 this 3 3388  3 out 1 3347  
267 0 0 4 342 3346 0 0 10 /**
 *
 */ 3 4 this 3 3388  3 out 1 3347  12 indent_level 1 3177  
268 0 0 7 343 3362 0 0 0 0 
269 0 0 6 319 3380 0 0 0 1 4 this 3 3390  
270 0 0 6 321 3377 0 0 0 1 4 this 3 3390  
271 0 0 7 345 3392 1876 0 10 /**
 *
 */ 1 10 block_size 1 3209  
272 0 0 7 347 3391 1888 0 78 /**
 * Allocates and returns a new VertexDataBuffer of the requested size.
 */ 2 4 this 3 3392  4 size 1 3209  
273 0 0 6 348 3209 0 0 60 /**
 * Returns the number of pages created for the book.
 */ 1 4 this 3 3393  
274 0 0 6 349 3209 0 0 85 /**
 * Returns the total size of all bytes owned by all pages owned by this book.
 */ 1 4 this 3 3393  
275 0 0 6 349 3209 0 0 122 /**
 * Returns the total size of all bytes owned by all pages owned by this book
 * that have the indicated ram class.
 */ 2 4 this 3 3393  9 ram_class 1 3202  
276 0 0 6 350 3209 0 0 92 /**
 * Returns the total size of all bytes allocated within pages owned by this
 * book.
 */ 1 4 this 3 3393  
277 0 0 6 350 3209 0 0 126 /**
 * Returns the total size of all bytes allocated within pages owned by this
 * book that have the indicated ram class.
 */ 2 4 this 3 3393  9 ram_class 1 3202  
278 0 0 4 351 3346 0 0 223 /**
 * Writes all pages to disk immediately, just in case they get evicted later.
 * It makes sense to make this call just before taking down a loading screen,
 * to minimize chugs from saving pages inadvertently later.
 */ 1 4 this 3 3392  
279 0 0 6 358 3390 0 0 65 /**
 * Returns the page from which this buffer was allocated.
 */ 1 4 this 3 3395  
280 0 0 7 359 3391 1888 0 120 /**
 * Returns a pointer to the next allocated block in the chain, or NULL if
 * there are no more allocated blocks.
 */ 1 4 this 3 3395  
281 0 0 6 353 3381 0 0 0 1 4 this 3 3391  
282 0 0 7 356 3397 0 0 0 1 4 this 3 3391  
283 0 0 15 369 3213 1897 0 10 /**
 *
 */ 1 4 copy 1 3365  
284 0 0 7 369 3213 1897 0 10 /**
 *
 */ 2 12 array_format 1 3191  10 usage_hint 1 3169  
285 0 0 7 370 3213 1897 0 0 2 4 this 3 3213  4 copy 1 3365  
286 0 0 4 372 3346 0 0 0 2 4 this 3 3213  4 size 1 3209  
287 0 0 6 375 3177 0 0 96 /**
 * Returns 0 if the two arrays are equivalent, even if they are not the same
 * pointer.
 */ 2 4 this 3 3365  5 other 1 3365  
288 0 0 7 376 3191 0 0 63 /**
 * Returns the format object that describes this array.
 */ 1 4 this 3 3365  
289 0 0 6 378 3169 0 0 154 /**
 * Returns the usage hint that describes to the rendering backend how often
 * the vertex data will be modified and/or rendered.  See geomEnums.h.
 */ 1 4 this 3 3365  
290 0 0 4 379 3346 0 0 228 /**
 * Changes the UsageHint hint for this array.  See get_usage_hint().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3213  10 usage_hint 1 3169  
291 0 0 6 381 3178 0 0 153 /**
 * Returns true if the array has the named column, false otherwise.  This is
 * really just a shortcut for asking the same thing from the format.
 */ 2 4 this 3 3365  4 name 1 3193  
292 0 0 6 382 3177 0 0 187 /**
 * Returns the number of rows stored in the array, based on the number of
 * bytes and the stride.  This should be the same for all arrays within a
 * given GeomVertexData object.
 */ 1 4 this 3 3365  
293 0 0 6 383 3178 0 0 659 /**
 * Sets the length of the array to n rows.
 *
 * Normally, you would not call this directly, since all of the arrays in a
 * particular GeomVertexData must have the same number of rows; instead, call
 * GeomVertexData::set_num_rows().
 *
 * The return value is true if the number of rows was changed, false if the
 * object already contained n rows (or if there was some error).
 *
 * The new vertex data is initialized to 0, including the "color" column (but
 * see GeomVertexData::set_num_rows()).
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3213  1 n 1 3177  
294 0 0 6 384 3178 0 0 423 /**
 * This method behaves like set_num_rows(), except the new data is not
 * initialized.  Furthermore, after this call, *any* of the data in the
 * GeomVertexArrayData may be uninitialized, including the earlier rows.
 *
 * Normally, you would not call this directly, since all of the arrays in a
 * particular GeomVertexData must have the same number of rows; instead, call
 * GeomVertexData::unclean_set_num_rows().
 */ 2 4 this 3 3213  1 n 1 3177  
295 0 0 6 385 3178 0 0 313 /**
 * This ensures that enough memory space for n rows is allocated, so that you
 * may increase the number of rows to n without causing a new memory
 * allocation.  This is a performance optimization only; it is especially
 * useful when you know ahead of time that you will be adding n rows to the
 * data.
 */ 2 4 this 3 3213  1 n 1 3177  
296 0 0 4 386 3346 0 0 96 /**
 * Removes all of the rows in the array.  Functionally equivalent to
 * set_num_rows(0).
 */ 1 4 this 3 3213  
297 0 0 6 387 3209 0 0 59 /**
 * Returns the number of bytes stored in the array.
 */ 1 4 this 3 3365  
298 0 0 7 388 3398 0 0 124 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * the array vertex data is modified.
 */ 1 4 this 3 3365  
299 0 0 4 394 3346 0 0 10 /**
 *
 */ 2 4 this 3 3365  3 out 1 3347  
300 0 0 4 395 3346 0 0 10 /**
 *
 */ 3 4 this 3 3365  3 out 1 3347  12 indent_level 5 3177  
301 0 0 6 396 3178 0 0 281 /**
 * Returns true if the vertex data is currently resident in memory.  If this
 * returns true, the next call to get_handle()->get_read_pointer() will
 * probably not block.  If this returns false, the vertex data will be brought
 * back into memory shortly; try again later.
 */ 2 4 this 3 3365  14 current_thread 5 3399  
302 0 0 7 397 3402 0 0 250 /**
 * Returns an object that can be used to read the actual data bytes stored in
 * the array.  Calling this method locks the data, and will block any other
 * threads attempting to read or write the data, until the returned object
 * destructs.
 */ 2 4 this 3 3365  14 current_thread 5 3399  
303 0 0 7 398 3403 1934 0 259 /**
 * Returns an object that can be used to read or write the actual data bytes
 * stored in the array.  Calling this method locks the data, and will block
 * any other threads attempting to read or write the data, until the returned
 * object destructs.
 */ 2 4 this 3 3213  14 current_thread 5 3399  
304 0 0 4 399 3346 0 0 344 /**
 * Indicates that the data should be enqueued to be prepared in the indicated
 * prepared_objects at the beginning of the next frame.  This will ensure the
 * data is already loaded into the GSG if it is expected to be rendered soon.
 *
 * Use this function instead of prepare_now() to preload datas from a user
 * interface standpoint.
 */ 2 4 this 3 3213  16 prepared_objects 1 3404  
305 0 0 6 400 3178 0 0 131 /**
 * Returns true if the data has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */ 2 4 this 3 3365  16 prepared_objects 1 3404  
306 0 0 6 401 3407 0 0 527 /**
 * Creates a context for the data on the particular GSG, if it does not
 * already exist.  Returns the new (or old) VertexBufferContext.  This assumes
 * that the GraphicsStateGuardian is the currently active rendering context
 * and that it is ready to accept new datas.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a data does not need to be explicitly prepared by the user before it may be
 * rendered.
 */ 3 4 this 3 3213  16 prepared_objects 1 3404  3 gsg 1 3405  
307 0 0 6 402 3178 0 0 154 /**
 * Frees the data context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */ 2 4 this 3 3213  16 prepared_objects 1 3404  
308 0 0 6 403 3177 0 0 149 /**
 * Frees the context allocated on all objects for which the data has been
 * declared.  Returns the number of contexts which have been freed.
 */ 1 4 this 3 3213  
309 0 0 6 404 3370 0 0 131 /**
 * Returns a pointer to the global LRU object that manages the
 * GeomVertexArrayData's that have not (yet) been paged out.
 */ 0 
310 0 0 6 405 3370 0 0 138 /**
 * Returns a pointer to the global LRU object that manages the
 * GeomVertexArrayData's that are deemed too small to be paged out.
 */ 0 
311 0 0 4 406 3346 0 0 124 /**
 * Marks that an epoch has passed in each LRU.  Asks the LRU's to consider
 * whether they should perform evictions.
 */ 0 
312 0 0 6 407 3392 0 0 98 /**
 * Returns the global VertexDataBook that will be used to allocate vertex data
 * buffers.
 */ 0 
313 0 0 38 408 3177 0 0 0 3 4 this 3 3213  4 view 1 3408  5 flags 1 3177  
314 0 0 38 408 3177 0 0 0 3 4 this 3 3365  4 view 1 3408  5 flags 1 3177  
315 0 0 36 409 3346 0 0 0 2 4 this 3 3365  4 view 1 3408  
316 0 0 7 410 3362 0 0 0 0 
317 0 0 7 363 3411 0 0 0 1 4 this 3 3213  
318 0 0 6 365 3377 0 0 0 1 4 this 3 3213  
319 0 0 6 367 3353 0 0 0 1 4 this 3 3213  
320 0 0 7 417 3213 1897 0 10 /**
 *
 */ 1 4 this 3 3403  
321 0 0 7 417 3365 0 0 10 /**
 *
 */ 1 4 this 3 3402  
322 0 0 7 420 3191 0 0 10 /**
 *
 */ 1 4 this 3 3402  
323 0 0 6 421 3169 0 0 10 /**
 *
 */ 1 4 this 3 3402  
324 0 0 6 424 3177 0 0 10 /**
 *
 */ 1 4 this 3 3402  
325 0 0 6 425 3178 0 0 10 /**
 *
 */ 2 4 this 3 3403  1 n 1 3177  
326 0 0 6 426 3178 0 0 10 /**
 *
 */ 2 4 this 3 3403  1 n 1 3177  
327 0 0 6 427 3178 0 0 10 /**
 *
 */ 2 4 this 3 3403  1 n 1 3177  
328 0 0 4 428 3346 0 0 10 /**
 *
 */ 1 4 this 3 3403  
329 0 0 6 429 3209 0 0 10 /**
 *
 */ 1 4 this 3 3402  
330 0 0 7 430 3398 0 0 10 /**
 *
 */ 1 4 this 3 3402  
331 0 0 6 433 3178 0 0 281 /**
 * Returns true if the vertex data is currently resident in memory.  If this
 * returns true, the next call to get_handle()->get_read_pointer() will
 * probably not block.  If this returns false, the vertex data will be brought
 * back into memory shortly; try again later.
 */ 1 4 this 3 3402  
332 0 0 6 434 3407 0 0 527 /**
 * Creates a context for the data on the particular GSG, if it does not
 * already exist.  Returns the new (or old) VertexBufferContext.  This assumes
 * that the GraphicsStateGuardian is the currently active rendering context
 * and that it is ready to accept new datas.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a data does not need to be explicitly prepared by the user before it may be
 * rendered.
 */ 3 4 this 3 3402  16 prepared_objects 1 3404  3 gsg 1 3405  
333 0 0 4 435 3346 0 0 62 /**
 * Copies the entire data array from the other object.
 */ 2 4 this 3 3403  5 other 1 3402  
334 0 0 36 435 3346 0 0 0 2 4 this 3 3403  6 buffer 1 3358  
335 0 0 4 436 3346 0 0 201 /**
 * Copies a portion of the data array from the other object into a portion of
 * the data array of this object.  If to_size != from_size, the size of this
 * data array is adjusted accordingly.
 */ 6 4 this 3 3403  8 to_start 1 3209  7 to_size 1 3209  5 other 1 3402  10 from_start 1 3209  9 from_size 1 3209  
336 0 0 36 436 3346 0 0 0 4 4 this 3 3403  8 to_start 1 3209  7 to_size 1 3209  6 buffer 1 3358  
337 0 0 36 436 3346 0 0 0 6 4 this 3 3403  8 to_start 1 3209  7 to_size 1 3209  6 buffer 1 3358  10 from_start 1 3209  9 from_size 1 3209  
338 0 0 6 437 3412 0 0 177 /**
 * Returns the entire raw data of the GeomVertexArrayData object, formatted as
 * a string.  This is primarily for the benefit of high-level languages such
 * as Python.
 */ 1 4 this 3 3402  
339 0 0 4 438 3346 0 0 166 /**
 * Replaces the entire raw data array with the contents of the indicated
 * string.  This is primarily for the benefit of high-level languages like
 * Python.
 */ 2 4 this 3 3403  4 data 1 3412  
340 0 0 6 439 3412 0 0 182 /**
 * Returns a subset of the raw data of the GeomVertexArrayData object,
 * formatted as a string.  This is primarily for the benefit of high-level
 * languages such as Python.
 */ 3 4 this 3 3402  5 start 1 3209  4 size 1 3209  
341 0 0 4 440 3346 0 0 232 /**
 * Replaces a portion of the data array from the indicated string.  If size !=
 * data.size(), the size of this data array is adjusted accordingly.
 *
 * This is primarily for the benefit of high-level languages like Python.
 */ 4 4 this 3 3403  5 start 1 3209  4 size 1 3209  4 data 1 3412  
342 0 0 4 441 3346 0 0 46 /**
 * Marks the array data recently-used.
 */ 1 4 this 3 3402  
343 0 0 7 442 3362 0 0 0 0 
344 0 0 7 412 3397 0 0 0 1 4 this 3 3403  
345 0 0 6 414 3353 0 0 0 1 4 this 3 3403  
346 0 0 4 444 3346 0 0 482 /**
 * Specifies the maximum number of entries in the cache for storing pre-
 * processed data for rendering vertices.  This limit is flexible, and may be
 * temporarily exceeded if many different Geoms are pre-processed during the
 * space of a single frame.
 *
 * This is not a limit on the actual vertex data, which is what it is; it is
 * also not a limit on the amount of memory used by the video driver or the
 * system graphics interface, which Panda has no control over.
 */ 2 4 this 3 3414  8 max_size 1 3177  
347 0 0 6 445 3177 0 0 141 /**
 * Returns the maximum number of entries in the cache for storing pre-
 * processed data for rendering vertices.  See set_max_size().
 */ 1 4 this 3 3414  
348 0 0 6 446 3177 0 0 64 /**
 * Returns the number of entries currently in the cache.
 */ 1 4 this 3 3414  
349 0 0 4 447 3346 0 0 57 /**
 * Immediately empties all elements in the cache.
 */ 1 4 this 3 3416  
350 0 0 6 448 3416 0 0 52 /**
 * Returns the global cache manager pointer.
 */ 0 
351 0 0 4 450 3346 0 0 0 2 4 this 3 3217  6 matrix 1 3417  
352 0 0 4 451 3346 0 0 277 /**
 * Premultiplies this transform's matrix with the indicated previous matrix,
 * so that the result is the net composition of the given transform with this
 * transform.  The result is stored in the parameter "result", which should
 * not be the same matrix as previous.
 */ 3 4 this 3 3217  6 result 1 3417  8 previous 1 3418  
353 0 0 4 452 3346 0 0 200 /**
 * Adds the value of this transform's matrix, modified by the indicated
 * weight, into the indicated accumulation matrix.  This is used to compute
 * the result of several blended transforms.
 */ 3 4 this 3 3217  5 accum 1 3417  6 weight 1 3220  
354 0 0 7 453 3398 0 0 131 /**
 * Returns a sequence number that's guaranteed to change at least every time
 * the value reported by get_matrix() changes.
 */ 2 4 this 3 3217  14 current_thread 5 3399  
355 0 0 4 455 3346 0 0 10 /**
 *
 */ 2 4 this 3 3217  3 out 1 3347  
356 0 0 4 456 3346 0 0 10 /**
 *
 */ 3 4 this 3 3217  3 out 1 3347  12 indent_level 1 3177  
357 0 0 7 457 3398 0 0 417 /**
 * Returns a monotonically increasing sequence.  Each time this is called, a
 * new sequence number is returned, higher than the previous value.
 *
 * This is used to ensure that all VertexTransform::get_modified() calls
 * return an increasing number in the same space, so that
 * TransformBlend::get_modified() is easy to determine.  It is similar to
 * Geom::get_modified(), but it is in a different space.
 */ 1 14 current_thread 1 3399  
358 0 0 7 458 3398 0 0 197 /**
 * Returns the currently highest VertexTransform::get_modified() value in the
 * world.  This can be used as a quick way to determine if any
 * VertexTransforms have changed value recently.
 */ 1 14 current_thread 1 3399  
359 0 0 7 459 3362 0 0 0 0 
360 0 0 7 461 3419 0 0 10 /**
 *
 */ 0 
361 0 0 15 461 3419 0 0 10 /**
 *
 */ 1 4 copy 1 3232  
362 0 0 7 462 3419 0 0 0 2 4 this 3 3419  4 copy 1 3232  
363 0 0 6 463 3178 0 0 228 /**
 * Returns true if this table has been registered.  Once it has been
 * registered, the set of transforms in a TransformTable may not be further
 * modified; but it must be registered before it can be assigned to a Geom.
 */ 1 4 this 3 3232  
364 0 0 7 464 3232 0 0 551 /**
 * Registers a TransformTable for use.  This is similar to
 * GeomVertexFormat::register_format().  Once registered, a TransformTable may
 * no longer be modified (although the individual VertexTransform objects may
 * modify their reported transforms).
 *
 * This must be called before a table may be used in a Geom.  After this call,
 * you should discard the original pointer you passed in (which may or may not
 * now be invalid) and let its reference count decrement normally; you should
 * use only the returned value from this point on.
 */ 1 5 table 1 3232  
365 0 0 6 465 3209 0 0 57 /**
 * Returns the number of transforms in the table.
 */ 1 4 this 3 3232  
366 0 0 7 466 3217 0 0 50 /**
 * Returns the nth transform in the table.
 */ 2 4 this 3 3232  1 n 1 3209  
367 0 0 7 468 3398 0 0 276 /**
 * Returns a sequence number that's guaranteed to change at least when any
 * VertexTransforms in the table change.  (However, this is only true for a
 * registered table.  An unregistered table may or may not reflect an update
 * here when a VertexTransform changes.)
 */ 2 4 this 3 3232  14 current_thread 5 3399  
368 0 0 4 469 3346 0 0 75 /**
 * Replaces the nth transform.  Only valid for unregistered tables.
 */ 3 4 this 3 3419  1 n 1 3209  9 transform 1 3217  
369 0 0 4 470 3346 0 0 321 /**
 * Inserts a new transform to the table at the given index position.  If the
 * index is beyond the end of the table, appends it to the end.  Only valid
 * for unregistered tables.
 *
 * This does not automatically uniquify the pointer; if the transform is
 * already present in the table, it will be added twice.
 */ 3 4 this 3 3419  1 n 1 3209  9 transform 1 3217  
370 0 0 4 471 3346 0 0 74 /**
 * Removes the nth transform.  Only valid for unregistered tables.
 */ 2 4 this 3 3419  1 n 1 3209  
371 0 0 6 472 3209 0 0 268 /**
 * Adds a new transform to the table and returns the index number of the new
 * transform.  Only valid for unregistered tables.
 *
 * This does not automatically uniquify the pointer; if the transform is
 * already present in the table, it will be added twice.
 */ 2 4 this 3 3419  9 transform 1 3217  
372 0 0 4 473 3346 0 0 10 /**
 *
 */ 2 4 this 3 3232  3 out 1 3347  
373 0 0 7 479 3362 0 0 0 0 
374 0 0 7 481 3420 1984 0 10 /**
 *
 */ 0 
375 0 0 15 481 3420 1984 0 10 /**
 *
 */ 1 4 copy 1 3421  
376 0 0 23 481 3420 1984 0 10 /**
 *
 */ 2 10 transform0 1 3217  7 weight0 1 3220  
377 0 0 23 481 3420 1984 0 10 /**
 *
 */ 4 10 transform0 1 3217  7 weight0 1 3220  10 transform1 1 3217  7 weight1 1 3220  
378 0 0 23 481 3420 1984 0 10 /**
 *
 */ 6 10 transform0 1 3217  7 weight0 1 3220  10 transform1 1 3217  7 weight1 1 3220  10 transform2 1 3217  7 weight2 1 3220  
379 0 0 23 481 3420 1984 0 10 /**
 *
 */ 8 10 transform0 1 3217  7 weight0 1 3220  10 transform1 1 3217  7 weight1 1 3220  10 transform2 1 3217  7 weight2 1 3220  10 transform3 1 3217  7 weight3 1 3220  
380 0 0 6 482 3420 0 0 0 2 4 this 3 3420  4 copy 1 3421  
381 0 0 6 484 3177 0 0 68 /**
 * Defines an arbitrary ordering for TransformBlend objects.
 */ 2 4 this 3 3421  5 other 1 3421  
382 0 0 6 485 3178 0 0 0 2 4 this 3 3421  5 other 1 3421  
383 0 0 6 486 3178 0 0 0 2 4 this 3 3421  5 other 1 3421  
384 0 0 6 487 3178 0 0 0 2 4 this 3 3421  5 other 1 3421  
385 0 0 4 488 3346 0 0 112 /**
 * Adds a new transform to the blend.  If the transform already existed,
 * increases its weight factor.
 */ 3 4 this 3 3420  9 transform 1 3217  6 weight 1 3220  
386 0 0 4 489 3346 0 0 58 /**
 * Removes the indicated transform from the blend.
 */ 2 4 this 3 3420  9 transform 1 3217  
387 0 0 4 489 3346 0 0 64 /**
 * Removes the nth transform stored in the blend object.
 */ 2 4 this 3 3420  1 n 1 3209  
388 0 0 4 490 3346 0 0 192 /**
 * If the total number of transforms in the blend exceeds max_transforms,
 * removes the n least-important transforms as needed to reduce the number of
 * transforms to max_transforms.
 */ 2 4 this 3 3420  14 max_transforms 1 3177  
389 0 0 4 491 3346 0 0 189 /**
 * Rescales all of the weights on the various transforms so that they sum to
 * 1.0.  It is generally a good idea to call this after adding or removing
 * transforms from the blend.
 */ 1 4 this 3 3420  
390 0 0 6 492 3178 0 0 82 /**
 * Returns true if the blend has the indicated transform, false otherwise.
 */ 2 4 this 3 3421  9 transform 1 3217  
391 0 0 6 493 3220 0 0 118 /**
 * Returns the weight associated with the indicated transform, or 0 if there
 * is no entry for the transform.
 */ 2 4 this 3 3421  9 transform 1 3217  
392 0 0 6 493 3220 0 0 94 /**
 * Returns the weight associated with the nth transform stored in the blend
 * object.
 */ 2 4 this 3 3421  1 n 1 3209  
393 0 0 6 494 3209 0 0 71 /**
 * Returns the number of transforms stored in the blend object.
 */ 1 4 this 3 3421  
394 0 0 7 495 3217 0 0 64 /**
 * Returns the nth transform stored in the blend object.
 */ 2 4 this 3 3421  1 n 1 3209  
395 0 0 4 497 3346 0 0 65 /**
 * Replaces the nth transform stored in the blend object.
 */ 3 4 this 3 3420  1 n 1 3209  9 transform 1 3217  
396 0 0 4 498 3346 0 0 95 /**
 * Replaces the weight associated with the nth transform stored in the blend
 * object.
 */ 3 4 this 3 3420  1 n 1 3209  6 weight 1 3220  
397 0 0 4 503 3346 0 0 156 /**
 * Recomputes the internal representation of the blend value, if necessary.
 * You should call this before calling get_blend() or transform_point().
 */ 2 4 this 3 3421  14 current_thread 1 3399  
398 0 0 4 504 3346 0 0 249 /**
 * Returns the current value of the blend, based on the current value of all
 * of the nested transform objects and their associated weights.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */ 3 4 this 3 3421  6 result 1 3417  14 current_thread 1 3399  
399 0 0 4 505 3346 0 0 162 /**
 * Transforms the indicated point by the blend matrix.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */ 3 4 this 3 3421  5 point 1 3422  14 current_thread 1 3399  
400 0 0 4 505 3346 0 0 0 3 4 this 3 3421  5 point 1 3424  14 current_thread 1 3399  
401 0 0 4 505 3346 0 0 162 /**
 * Transforms the indicated point by the blend matrix.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */ 3 4 this 3 3421  5 point 1 3425  14 current_thread 1 3399  
402 0 0 4 505 3346 0 0 0 3 4 this 3 3421  5 point 1 3427  14 current_thread 1 3399  
403 0 0 4 506 3346 0 0 163 /**
 * Transforms the indicated vector by the blend matrix.
 *
 * You should call update_blend() to ensure that the cache is up-to-date
 * before calling this.
 */ 3 4 this 3 3421  5 point 1 3429  14 current_thread 1 3399  
404 0 0 4 506 3346 0 0 0 3 4 this 3 3421  5 point 1 3431  14 current_thread 1 3399  
405 0 0 7 507 3398 0 0 120 /**
 * Returns a counter which is guaranteed to increment at least as often as the
 * result of get_blend() changes.
 */ 2 4 this 3 3421  14 current_thread 5 3399  
406 0 0 4 509 3346 0 0 10 /**
 *
 */ 2 4 this 3 3421  3 out 1 3347  
407 0 0 4 510 3346 0 0 10 /**
 *
 */ 3 4 this 3 3421  3 out 1 3347  12 indent_level 1 3177  
408 0 0 7 511 3362 0 0 0 0 
409 0 0 7 513 3433 0 0 10 /**
 *
 */ 0 
410 0 0 15 513 3433 0 0 10 /**
 *
 */ 1 4 copy 1 3434  
411 0 0 7 514 3433 0 0 0 2 4 this 3 3433  4 copy 1 3434  
412 0 0 6 515 3209 0 0 81 /**
 * Returns the total number of different blend combinations in the table.
 */ 1 4 this 3 3434  
413 0 0 6 516 3421 0 0 46 /**
 * Returns the nth blend in the table.
 */ 2 4 this 3 3434  1 n 1 3209  
414 0 0 7 518 3398 0 0 129 /**
 * Returns a counter which is guaranteed to increment at least when any
 * TransformBlends within the table have changed.
 */ 2 4 this 3 3434  14 current_thread 5 3399  
415 0 0 4 519 3346 0 0 75 /**
 * Replaces the blend at the nth position with the indicated value.
 */ 3 4 this 3 3433  1 n 1 3209  5 blend 1 3421  
416 0 0 4 520 3346 0 0 49 /**
 * Removes the blend at the nth position.
 */ 2 4 this 3 3433  1 n 1 3209  
417 0 0 6 521 3209 0 0 167 /**
 * Adds a new blend to the table, and returns its index number.  If there is
 * already an identical blend in the table, simply returns that number
 * instead.
 */ 2 4 this 3 3433  5 blend 1 3421  
418 0 0 6 522 3177 0 0 299 /**
 * Returns the number of unique VertexTransform objects represented in the
 * table.  This will correspond to the size of the TransformTable object that
 * would represent the same table.  This is also the same limit reflected by
 * GraphicsStateGuardian::get_max_vertex_transform_indices().
 */ 1 4 this 3 3434  
419 0 0 6 523 3177 0 0 217 /**
 * Returns the maximum number of unique VertexTransform objects that are
 * applied to any one vertex simultaneously.  This is the same limit reflected
 * by GraphicsStateGuardian::get_max_vertex_transforms().
 */ 1 4 this 3 3434  
420 0 0 4 524 3346 0 0 134 /**
 * Specifies the subset of rows (vertices) in the associated GeomVertexData
 * that this TransformBlendTable actually affects.
 */ 2 4 this 3 3433  4 rows 1 3436  
421 0 0 6 525 3436 0 0 132 /**
 * Returns the subset of rows (vertices) in the associated GeomVertexData that
 * this TransformBlendTable actually affects.
 */ 1 4 this 3 3434  
422 0 0 6 526 3437 0 0 192 /**
 * Returns a modifiable reference to the SparseArray that specifies the subset
 * of rows (vertices) in the associated GeomVertexData that this
 * TransformBlendTable actually affects.
 */ 1 4 this 3 3433  
423 0 0 4 527 3346 0 0 10 /**
 *
 */ 3 4 this 3 3434  3 out 1 3347  12 indent_level 1 3177  
424 0 0 7 536 3362 0 0 0 0 
425 0 0 7 538 3193 0 0 201 /**
 * Returns the name of this particular slider.  Every unique blend shape
 * within a particular Geom must be identified with a different name, which is
 * shared by the slider that controls it.
 */ 1 4 this 3 3438  
426 0 0 6 540 3220 0 0 0 1 4 this 3 3438  
427 0 0 7 541 3398 0 0 131 /**
 * Returns a sequence number that's guaranteed to change at least every time
 * the value reported by get_slider() changes.
 */ 2 4 this 3 3438  14 current_thread 5 3399  
428 0 0 4 544 3346 0 0 10 /**
 *
 */ 2 4 this 3 3438  3 out 1 3347  
429 0 0 4 545 3346 0 0 10 /**
 *
 */ 3 4 this 3 3438  3 out 1 3347  12 indent_level 1 3177  
430 0 0 7 546 3362 0 0 0 0 
431 0 0 7 548 3440 0 0 10 /**
 *
 */ 0 
432 0 0 15 548 3440 0 0 10 /**
 *
 */ 1 4 copy 1 3234  
433 0 0 7 549 3440 0 0 0 2 4 this 3 3440  4 copy 1 3234  
434 0 0 6 550 3178 0 0 222 /**
 * Returns true if this table has been registered.  Once it has been
 * registered, the set of sliders in a SliderTable may not be further
 * modified; but it must be registered before it can be assigned to a Geom.
 */ 1 4 this 3 3234  
435 0 0 7 551 3234 0 0 539 /**
 * Registers a SliderTable for use.  This is similar to
 * GeomVertexFormat::register_format().  Once registered, a SliderTable may no
 * longer be modified (although the individual VertexSlider objects may modify
 * their reported sliders).
 *
 * This must be called before a table may be used in a Geom.  After this call,
 * you should discard the original pointer you passed in (which may or may not
 * now be invalid) and let its reference count decrement normally; you should
 * use only the returned value from this point on.
 */ 1 5 table 1 3234  
436 0 0 6 552 3209 0 0 54 /**
 * Returns the number of sliders in the table.
 */ 1 4 this 3 3234  
437 0 0 7 553 3438 0 0 47 /**
 * Returns the nth slider in the table.
 */ 2 4 this 3 3234  1 n 1 3209  
438 0 0 6 555 3436 0 0 86 /**
 * Returns the set of rows (vertices) governed by the nth slider in the table.
 */ 2 4 this 3 3234  1 n 1 3209  
439 0 0 6 556 3436 0 0 174 /**
 * Returns a list of slider indices that represent the list of sliders with
 * the indicated name, or an empty SparseArray if no slider in the table has
 * that name.
 */ 2 4 this 3 3234  4 name 1 3193  
440 0 0 6 557 3178 0 0 103 /**
 * Returns true if the table has at least one slider by the indicated name,
 * false otherwise.
 */ 2 4 this 3 3234  4 name 1 3193  
441 0 0 6 558 3178 0 0 82 /**
 * Returns true if the table has no sliders, false if it has at least one.
 */ 1 4 this 3 3234  
442 0 0 7 559 3398 0 0 270 /**
 * Returns a sequence number that's guaranteed to change at least when any
 * VertexSliders in the table change.  (However, this is only true for a
 * registered table.  An unregistered table may or may not reflect an update
 * here when a VertexSlider changes.)
 */ 2 4 this 3 3234  14 current_thread 5 3399  
443 0 0 4 561 3346 0 0 72 /**
 * Replaces the nth slider.  Only valid for unregistered tables.
 */ 3 4 this 3 3440  1 n 1 3209  6 slider 1 3438  
444 0 0 4 562 3346 0 0 96 /**
 * Replaces the rows affected by the nth slider.  Only valid for unregistered
 * tables.
 */ 3 4 this 3 3440  1 n 1 3209  4 rows 1 3436  
445 0 0 4 563 3346 0 0 71 /**
 * Removes the nth slider.  Only valid for unregistered tables.
 */ 2 4 this 3 3440  1 n 1 3209  
446 0 0 6 564 3209 0 0 130 /**
 * Adds a new slider to the table, and returns the index number of the new
 * slider.  Only valid for unregistered tables.
 */ 3 4 this 3 3440  6 slider 1 3438  4 rows 1 3436  
447 0 0 4 565 3346 0 0 10 /**
 *
 */ 2 4 this 3 3234  3 out 1 3347  
448 0 0 7 566 3362 0 0 0 0 
449 0 0 15 572 3441 2051 0 10 /**
 *
 */ 1 4 copy 1 3368  
450 0 0 7 572 3441 2051 0 216 /**
 * This constructor copies all of the basic properties of the source
 * VertexData, like usage_hint and animation tables, but does not copy the
 * actual data, and it allows you to specify a different format.
 */ 2 4 copy 1 3368  6 format 1 3229  
451 0 0 7 572 3441 2051 0 10 /**
 *
 */ 3 4 name 1 3342  6 format 1 3229  10 usage_hint 1 3169  
452 0 0 7 573 3441 2051 0 0 2 4 this 3 3441  4 copy 1 3368  
453 0 0 4 575 3346 0 0 0 2 4 this 3 3441  4 size 1 3209  
454 0 0 6 578 3177 0 0 97 /**
 * Returns 0 if the two objects are equivalent, even if they are not the same
 * pointer.
 */ 2 4 this 3 3368  5 other 1 3368  
455 0 0 6 579 3342 0 0 133 /**
 * Returns the name passed to the constructor, if any.  This name is reported
 * on the PStats graph for vertex computations.
 */ 1 4 this 3 3368  
456 0 0 4 580 3346 0 0 118 /**
 * Changes the name of the vertex data.  This name is reported on the PStats
 * graph for vertex computations.
 */ 2 4 this 3 3441  4 name 1 3342  
457 0 0 6 582 3169 0 0 438 /**
 * Returns the usage hint that was passed to the constructor, and which will
 * be passed to each array data object created initially, and arrays created
 * as the result of a convert_to() operation.  See geomEnums.h.
 *
 * However, each individual array may be replaced with a different array
 * object with an independent usage hint specified, so there is no guarantee
 * that the individual arrays all have the same usage_hint.
 */ 1 4 this 3 3368  
458 0 0 4 583 3346 0 0 285 /**
 * Changes the UsageHint hint for this vertex data, and for all of the arrays
 * that share this data.  See get_usage_hint().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3441  10 usage_hint 1 3169  
459 0 0 7 585 3229 0 0 86 /**
 * Returns a pointer to the GeomVertexFormat structure that defines this data.
 */ 1 4 this 3 3368  
460 0 0 4 586 3346 0 0 294 /**
 * Changes the format of the vertex data.  If the data is not empty, this will
 * implicitly change every row to match the new format.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3441  6 format 1 3229  
461 0 0 4 587 3346 0 0 440 /**
 * Changes the format of the vertex data, without reformatting the data to
 * match.  The data is exactly the same after this operation, but will be
 * reinterpreted according to the new format.  This assumes that the new
 * format is fundamentally compatible with the old format; in particular, it
 * must have the same number of arrays with the same stride in each one.  No
 * checking is performed that the data remains sensible.
 */ 2 4 this 3 3441  6 format 1 3229  
462 0 0 6 591 3178 0 0 152 /**
 * Returns true if the data has the named column, false otherwise.  This is
 * really just a shortcut for asking the same thing from the format.
 */ 2 4 this 3 3368  4 name 1 3193  
463 0 0 6 592 3177 0 0 114 /**
 * Returns the number of rows stored within all the arrays.  All arrays store
 * data for the same n rows.
 */ 1 4 this 3 3368  
464 0 0 6 593 3178 0 0 736 /**
 * Sets the length of the array to n rows in all of the various arrays
 * (presumably by adding rows).
 *
 * The new vertex data is initialized to 0, except for the "color" column,
 * which is initialized to (1, 1, 1, 1).
 *
 * The return value is true if the number of rows was changed, false if the
 * object already contained n rows (or if there was some error).
 *
 * This can be used when you know exactly how many rows you will be needing.
 * It is faster than reserve_num_rows().  Also see unclean_set_num_rows() if
 * you are planning to fill in all the data yourself.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3441  1 n 1 3177  
465 0 0 6 594 3178 0 0 518 /**
 * This method behaves like set_num_rows(), except the new data is not
 * initialized.  Furthermore, after this call, *any* of the data in the
 * GeomVertexData may be uninitialized, including the earlier rows.
 *
 * This is intended for applications that are about to completely fill the
 * GeomVertexData with new data anyway; it provides a tiny performance boost
 * over set_num_rows().
 *
 * This can be used when you know exactly how many rows you will be needing.
 * It is faster than reserve_num_rows().
 */ 2 4 this 3 3441  1 n 1 3177  
466 0 0 6 595 3178 0 0 461 /**
 * This ensures that enough memory space for n rows is allocated, so that you
 * may increase the number of rows to n without causing a new memory
 * allocation.  This is a performance optimization only; it is especially
 * useful when you know ahead of time that you will be adding n rows to the
 * data.
 *
 * If you know exactly how many rows you will be needing, it is significantly
 * faster to use set_num_rows() or unclean_set_num_rows() instead.
 */ 2 4 this 3 3441  1 n 1 3177  
467 0 0 4 596 3346 0 0 263 /**
 * Removes all of the rows from the arrays; functionally equivalent to
 * set_num_rows(0) (but faster).
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3441  
468 0 0 6 597 3209 0 0 126 /**
 * Returns the number of individual arrays stored within the data.  This must
 * match get_format()->get_num_arrays().
 */ 1 4 this 3 3368  
469 0 0 7 598 3365 0 0 170 /**
 * Returns a const pointer to the vertex data for the indicated array, for
 * application code to directly examine (but not modify) the underlying vertex
 * data.
 */ 2 4 this 3 3368  1 i 1 3209  
470 0 0 7 599 3402 0 0 51 /**
 * Equivalent to get_array(i).get_handle().
 */ 2 4 this 3 3368  1 i 1 3209  
471 0 0 7 601 3213 1897 0 419 /**
 * Returns a modifiable pointer to the indicated vertex array, so that
 * application code may directly manipulate the data.  You should avoid
 * changing the length of this array, since all of the arrays should be kept
 * in sync--use set_num_rows() instead.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3441  1 i 1 3209  
472 0 0 7 602 3403 1934 0 57 /**
 * Equivalent to modify_array(i).modify_handle().
 */ 2 4 this 3 3441  1 i 1 3209  
473 0 0 4 603 3346 0 0 363 /**
 * Replaces the indicated vertex data array with a completely new array.  You
 * should be careful that the new array has the same length and format as the
 * old one, unless you know what you are doing.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 3 4 this 3 3441  1 i 1 3209  5 array 1 3365  
474 0 0 7 606 3232 0 0 494 /**
 * Returns a const pointer to the TransformTable assigned to this data.
 * Vertices within the table will index into this table to indicate their
 * dynamic skinning information; this table is used when the vertex animation
 * is to be performed by the graphics hardware (but also see
 * get_transform_blend_table()).
 *
 * This will return NULL if the vertex data does not have a TransformTable
 * assigned (which implies the vertices will not be animated by the graphics
 * hardware).
 */ 1 4 this 3 3368  
475 0 0 4 607 3346 0 0 376 /**
 * Replaces the TransformTable on this vertex data with the indicated table.
 * The length of this table should be consistent with the maximum table index
 * assigned to the vertices under the "transform_index" name.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3441  5 table 1 3232  
476 0 0 4 608 3346 0 0 144 /**
 * Sets the TransformTable pointer to NULL, removing the table from the vertex
 * data.  This disables hardware-driven vertex animation.
 */ 1 4 this 3 3441  
477 0 0 7 612 3434 0 0 467 /**
 * Returns a const pointer to the TransformBlendTable assigned to this data.
 * Vertices within the table will index into this table to indicate their
 * dynamic skinning information; this table is used when the vertex animation
 * is to be performed by the CPU (but also see get_transform_table()).
 *
 * This will return NULL if the vertex data does not have a
 * TransformBlendTable assigned (which implies the vertices will not be
 * animated by the CPU).
 */ 1 4 this 3 3368  
478 0 0 7 613 3433 0 0 342 /**
 * Returns a modifiable pointer to the current TransformBlendTable on this
 * vertex data, if any, or NULL if there is not a TransformBlendTable.  See
 * get_transform_blend_table().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3441  
479 0 0 4 614 3346 0 0 382 /**
 * Replaces the TransformBlendTable on this vertex data with the indicated
 * table.  The length of this table should be consistent with the maximum
 * table index assigned to the vertices under the "transform_blend" name.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3441  5 table 1 3434  
480 0 0 4 615 3346 0 0 144 /**
 * Sets the TransformBlendTable pointer to NULL, removing the table from the
 * vertex data.  This disables CPU-driven vertex animation.
 */ 1 4 this 3 3441  
481 0 0 7 616 3234 0 0 264 /**
 * Returns a const pointer to the SliderTable assigned to this data.  Vertices
 * within the vertex data will look up their morph offsets, if any, within
 * this table.
 *
 * This will return NULL if the vertex data does not have a SliderTable
 * assigned.
 */ 1 4 this 3 3368  
482 0 0 4 617 3346 0 0 437 /**
 * Replaces the SliderTable on this vertex data with the indicated table.
 * There should be an entry in this table for each kind of morph offset
 * defined in the vertex data.
 *
 * The SliderTable object must have been registered prior to setting it on the
 * GeomVertexData.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3441  5 table 1 3234  
483 0 0 4 618 3346 0 0 138 /**
 * Sets the SliderTable pointer to NULL, removing the table from the vertex
 * data.  This disables morph (blend shape) animation.
 */ 1 4 this 3 3441  
484 0 0 6 622 3177 0 0 100 /**
 * Returns the total number of bytes consumed by the different arrays of the
 * vertex data.
 */ 1 4 this 3 3368  
485 0 0 7 623 3398 0 0 118 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * the vertex data is modified.
 */ 2 4 this 3 3368  14 current_thread 5 3399  
486 0 0 6 626 3178 0 0 180 /**
 * Returns true if the vertex data is currently resident in memory.  If this
 * returns false, the vertex data will be brought back into memory shortly;
 * try again later.
 */ 1 4 this 3 3368  
487 0 0 4 627 3346 0 0 691 /**
 * Copies all the data from the other array into the corresponding data types
 * in this array, by matching data types name-by-name.
 *
 * keep_data_objects specifies what to do when one or more of the arrays can
 * be copied without the need to apply any conversion operation.  If it is
 * true, the original GeomVertexArrayData objects in this object are retained,
 * and their data arrays are copied byte-by-byte from the source; if it is
 * false, then the GeomVertexArrayData objects are copied pointerwise from the
 * source.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 4 4 this 3 3441  6 source 1 3368  17 keep_data_objects 1 3178  14 current_thread 5 3399  
488 0 0 4 628 3346 0 0 335 /**
 * Copies a single row of the data from the other array into the indicated row
 * of this array.  In this case, the source format must exactly match the
 * destination format.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 5 4 this 3 3441  8 dest_row 1 3177  6 source 1 3368  10 source_row 1 3177  14 current_thread 1 3399  
489 0 0 7 629 3368 0 0 162 /**
 * Returns a new GeomVertexData that represents the same contents as this one,
 * with all data types matched up name-by-name to the indicated new format.
 */ 2 4 this 3 3368  10 new_format 1 3229  
490 0 0 7 630 3368 0 0 208 /**
 * Returns a new GeomVertexData object with the color table modified in-place
 * to apply the indicated scale.
 *
 * If the vertex data does not include a color column, a new one will not be
 * added.
 */ 2 4 this 3 3368  11 color_scale 1 3442  
491 0 0 7 630 3368 0 0 307 /**
 * Returns a new GeomVertexData object with the color table replaced with a
 * new color table that has been scaled by the indicated value.  The new color
 * table will be added as a new array; if the old color table was interleaved
 * with a previous array, the previous array will not be repacked.
 */ 5 4 this 3 3368  11 color_scale 1 3442  14 num_components 1 3177  12 numeric_type 1 3173  8 contents 1 3174  
492 0 0 7 631 3368 0 0 197 /**
 * Returns a new GeomVertexData object with the color data modified in-place
 * with the new value.
 *
 * If the vertex data does not include a color column, a new one will not be
 * added.
 */ 2 4 this 3 3368  5 color 1 3445  
493 0 0 7 631 3368 0 0 309 /**
 * Returns a new GeomVertexData object with the color table replaced with a
 * new color table for which each vertex has the indicated value.  The new
 * color table will be added as a new array; if the old color table was
 * interleaved with a previous array, the previous array will not be repacked.
 */ 5 4 this 3 3368  5 color 1 3445  14 num_components 1 3177  12 numeric_type 1 3173  8 contents 1 3174  
494 0 0 7 632 3368 0 0 281 /**
 * Returns a new GeomVertexData object with the normal data modified in-place,
 * so that each lighting normal is now facing in the opposite direction.
 *
 * If the vertex data does not include a normal column, this returns the
 * original GeomVertexData object, unchanged.
 */ 1 4 this 3 3368  
495 0 0 7 633 3368 0 0 861 /**
 * Returns a GeomVertexData that represents the results of computing the
 * vertex animation on the CPU for this GeomVertexData.
 *
 * If there is no CPU-defined vertex animation on this object, this just
 * returns the original object.
 *
 * If there is vertex animation, but the VertexTransform values have not
 * changed since last time, this may return the same pointer it returned
 * previously.  Even if the VertexTransform values have changed, it may still
 * return the same pointer, but with its contents modified (this is preferred,
 * since it allows the graphics backend to update vertex buffers optimally).
 *
 * If force is false, this method may return immediately with stale data, if
 * the vertex data is not completely resident.  If force is true, this method
 * will never return stale data, but may block until the data is available.
 */ 3 4 this 3 3368  5 force 1 3178  14 current_thread 1 3399  
496 0 0 4 634 3346 0 0 268 /**
 * Removes the cache of animated vertices computed by a previous call to
 * animate_vertices() within the same frame.  This will force the next call to
 * animate_vertices() to recompute these values from scratch.  Normally it is
 * not necessary to call this.
 */ 1 4 this 3 3441  
497 0 0 4 635 3346 0 0 193 /**
 * Applies the indicated transform matrix to all of the vertices in the
 * GeomVertexData.  The transform is applied to all "point" and "vector" type
 * columns described in the format.
 */ 2 4 this 3 3441  3 mat 1 3418  
498 0 0 4 635 3346 0 0 201 /**
 * Applies the indicated transform matrix to all of the vertices mentioned in
 * the sparse array.  The transform is applied to all "point" and "vector"
 * type columns described in the format.
 */ 3 4 this 3 3441  3 mat 1 3418  4 rows 1 3436  
499 0 0 4 635 3346 0 0 218 /**
 * Applies the indicated transform matrix to all of the vertices from
 * begin_row up to but not including end_row.  The transform is applied to all
 * "point" and "vector" type columns described in the format.
 */ 4 4 this 3 3441  3 mat 1 3418  9 begin_row 1 3177  7 end_row 1 3177  
500 0 0 7 636 3441 2051 0 435 /**
 * Returns a new GeomVertexData object, suitable for modification, with the
 * indicated data type replaced with a new table filled with undefined values.
 * The new table will be added as a new array; if the old table was
 * interleaved with a previous array, the previous array will not be repacked.
 *
 * If num_components is 0, the indicated name is simply removed from the type,
 * without replacing it with anything else.
 */ 5 4 this 3 3368  4 name 1 3181  14 num_components 1 3177  12 numeric_type 1 3173  8 contents 1 3174  
501 0 0 4 637 3346 0 0 10 /**
 *
 */ 2 4 this 3 3368  3 out 1 3347  
502 0 0 4 638 3346 0 0 10 /**
 *
 */ 3 4 this 3 3368  3 out 1 3347  12 indent_level 5 3177  
503 0 0 4 639 3346 0 0 90 /**
 * Writes a verbose, human-friendly description of the indicated vertex
 * number.
 */ 3 4 this 3 3368  3 out 1 3347  3 row 1 3177  
504 0 0 4 640 3346 0 0 263 /**
 * Removes all of the previously-cached results of convert_to().
 *
 * This blows away the entire cache, upstream and downstream the pipeline.
 * Use clear_cache_stage() instead if you only want to blow away the cache at
 * the current stage and upstream.
 */ 1 4 this 3 3441  
505 0 0 4 641 3346 0 0 310 /**
 * Removes all of the previously-cached results of convert_to(), at the
 * current pipeline stage and upstream.  Does not affect the downstream cache.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3441  
506 0 0 7 642 3362 0 0 0 0 
507 0 0 7 568 3411 0 0 0 1 4 this 3 3441  
508 0 0 6 570 3353 0 0 0 1 4 this 3 3441  
509 0 0 15 645 3448 2107 0 0 1 6 param0 0 3446  
510 0 0 7 645 3448 2107 0 47 /**
 * Create a new AnimateVerticesRequest.
 */ 1 16 geom_vertex_data 1 3441  
511 0 0 6 646 3178 0 0 154 /**
 * Returns true if this request has completed, false if it is still pending.
 * Equivalent to `req.done() and not req.cancelled()`.
 * @see done()
 */ 1 4 this 3 3446  
512 0 0 7 647 3362 0 0 0 0 
513 0 0 7 651 3362 0 0 0 0 
514 0 0 6 657 3209 0 0 271 /**
 * Returns the number of bytes previously reported for the data object.  This
 * is used to track changes in the data object's allocated size; if it changes
 * from this, we need to create a new buffer.  This is also used to track
 * memory utilization in PStats.
 */ 1 4 this 3 3449  
515 0 0 7 658 3398 0 0 93 /**
 * Returns the UpdateSeq that was recorded the last time mark_loaded() was
 * called.
 */ 1 4 this 3 3449  
516 0 0 6 659 3178 0 0 141 /**
 * Returns the active flag associated with this object.  An object is
 * considered "active" if it was rendered in the current frame.
 */ 1 4 this 3 3449  
517 0 0 6 660 3178 0 0 152 /**
 * Returns the resident flag associated with this object.  An object is
 * considered "resident" if it appears to be resident in texture memory.
 */ 1 4 this 3 3449  
518 0 0 7 668 3362 0 0 0 0 
519 0 0 6 654 3452 0 0 0 1 4 this 3 3451  
520 0 0 7 674 3453 2124 0 0 2 4 this 3 3453  4 copy 1 3454  
521 0 0 4 676 3346 0 0 0 2 4 this 3 3453  4 size 1 3209  
522 0 0 7 679 3453 2124 0 0 1 4 this 3 3454  
523 0 0 6 680 3172 0 0 0 1 4 this 3 3454  
524 0 0 6 681 3177 0 0 135 /**
 * Returns the set of GeomRendering bits that represent the rendering
 * properties required to properly render this primitive.
 */ 1 4 this 3 3454  
525 0 0 6 684 3171 0 0 170 /**
 * Returns the ShadeModel hint for this primitive.  This is intended as a hint
 * to the renderer to tell it how the per-vertex colors and normals are
 * applied.
 */ 1 4 this 3 3454  
526 0 0 4 685 3346 0 0 512 /**
 * Changes the ShadeModel hint for this primitive.  This is different from the
 * ShadeModelAttrib that might also be applied from the scene graph.  This
 * does not affect the shade model that is in effect when rendering, but
 * rather serves as a hint to the renderer to tell it how the per-vertex
 * colors and normals on this primitive are applied.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3453  11 shade_model 1 3171  
527 0 0 6 687 3169 0 0 554 /**
 * Returns the usage hint for this primitive.  See geomEnums.h.  This has
 * nothing to do with the usage hint associated with the primitive's vertices;
 * this only specifies how often the vertex indices that define the primitive
 * will be modified.
 *
 * It is perfectly legal (and, in fact, common) for a GeomPrimitive to have
 * UH_static on itself, while referencing vertex data with UH_dynamic.  This
 * means that the vertices themselves will be animated, but the primitive will
 * always reference the same set of vertices from the pool.
 */ 1 4 this 3 3454  
528 0 0 4 688 3346 0 0 232 /**
 * Changes the UsageHint hint for this primitive.  See get_usage_hint().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3453  10 usage_hint 1 3169  
529 0 0 6 690 3173 0 0 114 /**
 * Returns the numeric type of the index column.  Normally, this will be
 * either NT_uint16 or NT_uint32.
 */ 1 4 this 3 3454  
530 0 0 4 691 3346 0 0 556 /**
 * Changes the numeric type of the index column.  Normally, this should be
 * either NT_uint16 or NT_uint32.
 *
 * The index type must be large enough to include all of the index values in
 * the primitive.  It may be automatically elevated, if necessary, to a larger
 * index type, by a subsequent call to add_index() that names an index value
 * that does not fit in the index type you specify.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3453  10 index_type 1 3173  
531 0 0 6 693 3178 0 0 178 /**
 * Returns true if the primitive is a composite primitive such as a tristrip
 * or trifan, or false if it is a fundamental primitive such as a collection
 * of triangles.
 */ 1 4 this 3 3454  
532 0 0 6 694 3178 0 0 379 /**
 * Returns true if the primitive is indexed, false otherwise.  An indexed
 * primitive stores a table of index numbers into its GeomVertexData, so that
 * it can reference the vertices in any order.  A nonindexed primitive, on the
 * other hand, stores only the first vertex number and number of vertices
 * used, so that it can only reference the vertices consecutively.
 */ 1 4 this 3 3454  
533 0 0 6 695 3177 0 0 257 /**
 * Returns the first vertex number referenced by the primitive.  This is
 * particularly important in the case of a nonindexed primitive, in which case
 * get_first_vertex() and get_num_vertices() completely define the extent of
 * the vertex range.
 */ 1 4 this 3 3454  
534 0 0 6 696 3177 0 0 83 /**
 * Returns the number of indices used by all the primitives in this object.
 */ 1 4 this 3 3454  
535 0 0 6 697 3177 0 0 53 /**
 * Returns the ith vertex index in the table.
 */ 2 4 this 3 3454  1 i 1 3177  
536 0 0 4 699 3346 0 0 445 /**
 * Adds the indicated vertex to the list of vertex indices used by the
 * graphics primitive type.  To define a primitive, you must call add_vertex()
 * for each vertex of the new primitive, and then call close_primitive() after
 * you have specified the last vertex of each primitive.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3453  6 vertex 1 3177  
537 0 0 4 700 3346 0 0 42 /**
 * Adds several vertices in a row.
 */ 3 4 this 3 3453  2 v1 1 3177  2 v2 1 3177  
538 0 0 4 700 3346 0 0 42 /**
 * Adds several vertices in a row.
 */ 4 4 this 3 3453  2 v1 1 3177  2 v2 1 3177  2 v3 1 3177  
539 0 0 4 700 3346 0 0 42 /**
 * Adds several vertices in a row.
 */ 5 4 this 3 3453  2 v1 1 3177  2 v2 1 3177  2 v3 1 3177  2 v4 1 3177  
540 0 0 4 701 3346 0 0 244 /**
 * Adds a consecutive sequence of vertices, beginning at start, to the
 * primitive.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 3 4 this 3 3453  5 start 1 3177  12 num_vertices 1 3177  
541 0 0 4 702 3346 0 0 327 /**
 * Adds the next n vertices in sequence, beginning from the last vertex added
 * to the primitive + 1.
 *
 * This is most useful when you are building up a primitive and a
 * GeomVertexData at the same time, and you just want the primitive to
 * reference the first n vertices from the data, then the next n, and so on.
 */ 2 4 this 3 3453  12 num_vertices 1 3177  
542 0 0 4 703 3346 0 0 813 /**
 * This ensures that enough memory space for n vertices is allocated, so that
 * you may increase the number of vertices to n without causing a new memory
 * allocation.  This is a performance optimization only; it is especially
 * useful when you know ahead of time that you will be adding n vertices to
 * the primitive.
 *
 * Note that the total you specify here should also include implicit vertices
 * which may be added at each close_primitive() call, according to
 * get_num_unused_vertices_per_primitive().
 *
 * Note also that making this call will implicitly make the primitive indexed
 * if it is not already, which could result in a performance *penalty*.  If
 * you would prefer not to lose the nonindexed nature of your existing
 * GeomPrimitives, check is_indexed() before making this call.
 */ 2 4 this 3 3453  12 num_vertices 1 3177  
543 0 0 6 704 3178 0 0 345 /**
 * Indicates that the previous n calls to add_vertex(), since the last call to
 * close_primitive(), have fully defined a new primitive.  Returns true if
 * successful, false otherwise.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3453  
544 0 0 4 705 3346 0 0 250 /**
 * Removes all of the vertices and primitives from the object, so they can be
 * re-added.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3453  
545 0 0 4 706 3346 0 0 227 /**
 * Adds the indicated offset to all vertices used by the primitive.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3453  6 offset 1 3177  
546 0 0 4 706 3346 0 0 508 /**
 * Adds the indicated offset to the indicated segment of vertices used by the
 * primitive.  Unlike the other version of offset_vertices, this makes the
 * geometry indexed if it isn't already.
 *
 * Note that end_row indicates one past the last row that should be offset.
 * In other words, the number of vertices touched is (end_row - begin_row).
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 4 4 this 3 3453  6 offset 1 3177  9 begin_row 1 3177  7 end_row 1 3177  
547 0 0 4 707 3346 0 0 202 /**
 * Converts the primitive from indexed to nonindexed by duplicating vertices
 * as necessary into the indicated dest GeomVertexData.  Note: does not
 * support primitives with strip cut indices.
 */ 3 4 this 3 3453  4 dest 1 3441  6 source 1 3368  
548 0 0 4 708 3346 0 0 135 /**
 * Packs the vertices used by the primitive from the indicated source array
 * onto the end of the indicated destination array.
 */ 3 4 this 3 3453  4 dest 1 3441  6 source 1 3368  
549 0 0 4 709 3346 0 0 466 /**
 * Converts the primitive from nonindexed form to indexed form.  This will
 * simply create an index table that is numbered consecutively from
 * get_first_vertex(); it does not automatically collapse together identical
 * vertices that may have been split apart by a previous call to
 * make_nonindexed().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3453  
550 0 0 6 710 3177 0 0 119 /**
 * Returns the number of individual primitives stored within this object.  All
 * primitives are the same type.
 */ 1 4 this 3 3454  
551 0 0 6 711 3177 0 0 457 /**
 * Returns the element within the _vertices list at which the nth primitive
 * starts.
 *
 * If i is one more than the highest valid primitive vertex, the return value
 * will be one more than the last valid vertex.  Thus, it is generally true
 * that the vertices used by a particular primitive i are the set
 * get_primitive_start(n) <= vi < get_primitive_start(n + 1) (although this
 * range also includes the unused vertices between primitives).
 */ 2 4 this 3 3454  1 n 1 3177  
552 0 0 6 712 3177 0 0 156 /**
 * Returns the element within the _vertices list at which the nth primitive
 * ends.  This is one past the last valid element for the nth primitive.
 */ 2 4 this 3 3454  1 n 1 3177  
553 0 0 6 713 3177 0 0 145 /**
 * Returns the number of vertices used by the nth primitive.  This is the same
 * thing as get_primitive_end(n) - get_primitive_start(n).
 */ 2 4 this 3 3454  1 n 1 3177  
554 0 0 6 714 3177 0 0 278 /**
 * Returns the number of vertices used by all of the primitives.  This is the
 * same as summing get_primitive_num_vertices(n) for n in
 * get_num_primitives().  It is like get_num_vertices except that it excludes
 * all of the degenerate vertices and strip-cut indices.
 */ 1 4 this 3 3454  
555 0 0 6 715 3177 0 0 145 /**
 * Returns the number of triangles or other fundamental type (such as line
 * segments) represented by all the primitives in this object.
 */ 1 4 this 3 3454  
556 0 0 6 716 3177 0 0 144 /**
 * Returns the number of triangles or other fundamental type (such as line
 * segments) represented by the nth primitive in this object.
 */ 2 4 this 3 3454  1 n 1 3177  
557 0 0 6 717 3177 0 0 96 /**
 * Returns the minimum vertex index number used by all the primitives in this
 * object.
 */ 1 4 this 3 3454  
558 0 0 6 718 3177 0 0 95 /**
 * Returns the minimum vertex index number used by the nth primitive in this
 * object.
 */ 2 4 this 3 3454  1 n 1 3177  
559 0 0 6 719 3177 0 0 96 /**
 * Returns the maximum vertex index number used by all the primitives in this
 * object.
 */ 1 4 this 3 3454  
560 0 0 6 720 3177 0 0 95 /**
 * Returns the maximum vertex index number used by the nth primitive in this
 * object.
 */ 2 4 this 3 3454  1 n 1 3177  
561 0 0 7 721 3454 0 0 464 /**
 * Decomposes a complex primitive type into a simpler primitive type, for
 * instance triangle strips to triangles, and returns a pointer to the new
 * primitive definition.  If the decomposition cannot be performed, this might
 * return the original object.
 *
 * This method is useful for application code that wants to iterate through
 * the set of triangles on the primitive without having to write handlers for
 * each possible kind of primitive type.
 */ 1 4 this 3 3454  
562 0 0 7 722 3454 0 0 408 /**
 * Returns a new primitive with the shade_model reversed (if it is flat
 * shaded), if possible.  If the primitive type cannot be rotated, returns the
 * original primitive, unrotated.
 *
 * If the current shade_model indicates flat_vertex_last, this should bring
 * the last vertex to the first position; if it indicates flat_vertex_first,
 * this should bring the first vertex to the last position.
 */ 1 4 this 3 3454  
563 0 0 7 723 3454 0 0 493 /**
 * Duplicates triangles in the primitive so that each triangle is back-to-back
 * with another triangle facing in the opposite direction.  Note that this
 * doesn't affect vertex normals, so this operation alone won't work in the
 * presence of lighting (but see SceneGraphReducer::doubleside()).
 *
 * Also see CullFaceAttrib, which can enable rendering of both sides of a
 * triangle without having to duplicate it (but which doesn't necessarily work
 * in the presence of lighting).
 */ 1 4 this 3 3454  
564 0 0 7 724 3454 0 0 477 /**
 * Reverses the winding order in the primitive so that each triangle is facing
 * in the opposite direction it was originally.  Note that this doesn't affect
 * vertex normals, so this operation alone won't work in the presence of
 * lighting (but see SceneGraphReducer::reverse()).
 *
 * Also see CullFaceAttrib, which can change the visible direction of a
 * triangle without having to duplicate it (but which doesn't necessarily work
 * in the presence of lighting).
 */ 1 4 this 3 3454  
565 0 0 7 725 3454 0 0 346 /**
 * Returns a new primitive that is compatible with the indicated shade model,
 * if possible, or NULL if this is not possible.
 *
 * In most cases, this will return either NULL or the original primitive.  In
 * the case of a SM_flat_first_vertex vs.  a SM_flat_last_vertex (or vice-
 * versa), however, it will return a rotated primitive.
 */ 2 4 this 3 3454  11 shade_model 1 3171  
566 0 0 7 726 3454 0 0 245 /**
 * Returns a new GeomPoints primitive that represents each of the vertices in
 * the original primitive, rendered exactly once.  If the original primitive
 * is already a GeomPoints primitive, returns the original primitive
 * unchanged.
 */ 1 4 this 3 3454  
567 0 0 7 727 3454 0 0 233 /**
 * Returns a new GeomLines primitive that represents each of the edges in the
 * original primitive rendered as a line.  If the original primitive is
 * already a GeomLines primitive, returns the original primitive unchanged.
 */ 1 4 this 3 3454  
568 0 0 7 728 3454 0 0 418 /**
 * Decomposes a complex primitive type into a simpler primitive type, for
 * instance triangle strips to triangles, puts these in a new GeomPatches
 * object and returns a pointer to the new primitive definition.  If the
 * decomposition cannot be performed, this might return the original object.
 *
 * This method is useful for application code that wants to use tesselation
 * shaders on arbitrary geometry.
 */ 1 4 this 3 3454  
569 0 0 7 729 3454 0 0 161 /**
 * Adds adjacency information to this primitive.  May return null if this type
 * of geometry does not support adjacency information.
 *
 * @since 1.10.0
 */ 1 4 this 3 3454  
570 0 0 6 730 3177 0 0 91 /**
 * Returns the number of bytes consumed by the primitive and its index
 * table(s).
 */ 1 4 this 3 3454  
571 0 0 6 731 3177 0 0 68 /**
 * Returns the number of bytes stored in the vertices array.
 */ 1 4 this 3 3454  
572 0 0 7 732 3398 0 0 125 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * the vertex index array is modified.
 */ 1 4 this 3 3454  
573 0 0 6 736 3178 0 0 186 /**
 * Returns true if the primitive data is currently resident in memory.  If
 * this returns false, the primitive data will be brought back into memory
 * shortly; try again later.
 */ 2 4 this 3 3454  14 current_thread 5 3399  
574 0 0 6 737 3178 0 0 195 /**
 * Verifies that the primitive only references vertices that actually exist
 * within the indicated GeomVertexData.  Returns true if the primitive appears
 * to be valid, false otherwise.
 */ 2 4 this 3 3454  11 vertex_data 1 3368  
575 0 0 6 737 3178 0 0 10 /**
 *
 */ 2 4 this 3 3454  11 data_reader 1 3456  
576 0 0 4 738 3346 0 0 10 /**
 *
 */ 2 4 this 3 3454  3 out 1 3347  
577 0 0 4 739 3346 0 0 10 /**
 *
 */ 3 4 this 3 3454  3 out 1 3347  12 indent_level 1 3177  
578 0 0 7 740 3365 0 0 479 /**
 * Returns a const pointer to the vertex index array so application code can
 * read it directly.  This might return NULL if the primitive is nonindexed.
 * Do not attempt to modify the returned array; use modify_vertices() or
 * set_vertices() for this.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3454  
579 0 0 7 741 3402 0 0 53 /**
 * Equivalent to get_vertices().get_handle().
 */ 2 4 this 3 3454  14 current_thread 1 3399  
580 0 0 7 742 3213 1897 0 869 /**
 * Returns a modifiable pointer to the vertex index list, so application code
 * can directly fiddle with this data.  Use with caution, since there are no
 * checks that the data will be left in a stable state.
 *
 * If this is called on a nonindexed primitive, it will implicitly be
 * converted to an indexed primitive.
 *
 * If num_vertices is not -1, it specifies an artificial limit to the number
 * of vertices in the array.  Otherwise, all of the vertices in the array will
 * be used.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 2 4 this 3 3453  12 num_vertices 5 3177  
581 0 0 7 743 3403 1934 0 56 /**
 * Equivalent to modify_vertices().get_handle().
 */ 2 4 this 3 3453  14 current_thread 1 3399  
582 0 0 4 744 3346 0 0 711 /**
 * Completely replaces the vertex index list with a new table.  Chances are
 * good that you should also replace the ends list with set_ends() at the same
 * time.
 *
 * If num_vertices is not -1, it specifies an artificial limit to the number
 * of vertices in the array.  Otherwise, all of the vertices in the array will
 * be used.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 3 4 this 3 3453  8 vertices 1 3365  12 num_vertices 5 3177  
583 0 0 4 745 3346 0 0 465 /**
 * Sets the primitive up as a nonindexed primitive, using the indicated vertex
 * range.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 3 4 this 3 3453  12 first_vertex 1 3177  12 num_vertices 1 3177  
584 0 0 6 746 3177 0 0 334 /**
 * A convenience function to return the gap between successive index numbers,
 * in bytes, of the index data.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3454  
585 0 0 6 747 3177 0 0 189 /**
 * If relevant, returns the index value that may be used in some cases to
 * signify the end of a primitive.  This is typically the highest value that
 * the numeric type can store.
 */ 1 4 this 3 3454  
586 0 0 7 750 3461 0 0 580 /**
 * Returns a const pointer to the primitive ends array so application code can
 * read it directly.  Do not attempt to modify the returned array; use
 * modify_ends() or set_ends() for this.
 *
 * Note that simple primitive types, like triangles, do not have a ends array:
 * since all the primitives have the same number of vertices, it is not
 * needed.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3454  
587 0 0 7 751 3464 0 0 755 /**
 * Returns a modifiable pointer to the primitive ends array, so application
 * code can directly fiddle with this data.  Use with caution, since there are
 * no checks that the data will be left in a stable state.
 *
 * Note that simple primitive types, like triangles, do not have a ends array:
 * since all the primitives have the same number of vertices, it is not
 * needed.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3453  
588 0 0 4 752 3346 0 0 716 /**
 * Completely replaces the primitive ends array with a new table.  Chances are
 * good that you should also replace the vertices list with set_vertices() at
 * the same time.
 *
 * Note that simple primitive types, like triangles, do not have a ends array:
 * since all the primitives have the same number of vertices, it is not
 * needed.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 2 4 this 3 3453  4 ends 1 3464  
589 0 0 7 753 3365 0 0 482 /**
 * Returns a const pointer to the primitive mins array so application code can
 * read it directly.  Do not attempt to modify the returned array; use
 * set_minmax() for this.
 *
 * Note that simple primitive types, like triangles, do not have a mins array.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3454  
590 0 0 7 754 3365 0 0 473 /**
 * Returns a const pointer to the primitive maxs array so application code can
 * read it directly.  Do not attempt to modify the returned array; use
 * set_minmax().
 *
 * Note that simple primitive types, like triangles, do not have a maxs array.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3454  
591 0 0 4 757 3346 0 0 687 /**
 * Explicitly specifies the minimum and maximum vertices, as well as the lists
 * of per-component min and max.
 *
 * Use this method with extreme caution.  It's generally better to let the
 * GeomPrimitive compute these explicitly, unless for some reason you can do
 * it faster and you absolutely need the speed improvement.
 *
 * Note that any modification to the vertex array will normally cause this to
 * be recomputed, unless you set it immediately again.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 5 4 this 3 3453  10 min_vertex 1 3177  10 max_vertex 1 3177  4 mins 1 3213  4 maxs 1 3213  
592 0 0 4 758 3346 0 0 339 /**
 * Undoes a previous call to set_minmax(), and allows the minimum and maximum
 * values to be recomputed normally.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3453  
593 0 0 6 759 3177 0 0 558 /**
 * If the primitive type is a simple type in which all primitives have the
 * same number of vertices, like triangles, returns the number of vertices per
 * primitive.  If the primitive type is a more complex type in which different
 * primitives might have different numbers of vertices, for instance a
 * triangle strip, returns 0.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3454  
594 0 0 6 760 3177 0 0 336 /**
 * Returns the minimum number of vertices that must be added before
 * close_primitive() may legally be called.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3454  
595 0 0 6 761 3177 0 0 479 /**
 * Returns the number of vertices that are added between primitives that
 * aren't, strictly speaking, part of the primitives themselves.  This is
 * used, for instance, to define degenerate triangles to connect otherwise
 * disconnected triangle strips.
 *
 * This method is intended for low-level usage only.  There are higher-level
 * methods for more common usage.  We recommend you do not use this method
 * directly.  If you do, be sure you know what you are doing!
 */ 1 4 this 3 3454  
596 0 0 7 765 3362 0 0 0 0 
597 0 0 7 670 3411 0 0 0 1 4 this 3 3453  
598 0 0 6 672 3353 0 0 0 1 4 this 3 3453  
599 0 0 15 767 3251 0 0 50 /**
 * Initialize the texture stage from other
 */ 1 4 copy 1 3465  
600 0 0 7 767 3251 0 0 55 /**
 * Initialize the texture stage at construction
 */ 1 4 name 1 3342  
601 0 0 7 768 3251 0 0 0 2 4 this 3 3251  4 copy 1 3465  
602 0 0 4 773 3346 0 0 49 /**
 * Changes the name of this texture stage
 */ 2 4 this 3 3251  4 name 1 3342  
603 0 0 6 774 3342 0 0 49 /**
 * Returns the name of this texture stage
 */ 1 4 this 3 3465  
604 0 0 4 775 3346 0 0 439 /**
 * Changes the order in which the texture associated with this stage is
 * rendered relative to the other texture stages.  When geometry is rendered
 * with multiple textures, the textures are rendered in order from the lowest
 * sort number to the highest sort number.
 *
 * Also see set_priority(), which is used to select the most important
 * textures for rendering when some must be omitted because of hardware
 * limitations.
 */ 2 4 this 3 3251  4 sort 1 3177  
605 0 0 6 776 3177 0 0 56 /**
 * Returns the sort order of this texture stage.
 */ 1 4 this 3 3465  
606 0 0 4 777 3346 0 0 555 /**
 * Changes the relative importance of the texture associated with this stage
 * relative to the other texture stages that are applied simultaneously.
 *
 * This is unrelated to set_sort(), which controls the order in which multiple
 * textures are applied.  The priority number is used to decide which of the
 * requested textures are to be selected for rendering when more textures are
 * requested than the hardware will support.  The highest-priority n textures
 * are selected for rendering, and then rendered in order by their sort
 * factor.
 */ 2 4 this 3 3251  8 priority 1 3177  
607 0 0 6 778 3177 0 0 163 /**
 * Returns the priority associated with this stage.
 *
 * This is specially helpful for cards that do not support more than n stages
 * of multi-texturing.
 */ 1 4 this 3 3465  
608 0 0 4 779 3346 0 0 161 /**
 * Indicate which set of UV's this texture stage will use.  Geometry may have
 * any number of associated UV sets, each of which must have a unique name.
 */ 2 4 this 3 3251  4 name 1 3181  
609 0 0 4 779 3346 0 0 161 /**
 * Indicate which set of UV's this texture stage will use.  Geometry may have
 * any number of associated UV sets, each of which must have a unique name.
 */ 2 4 this 3 3251  13 texcoord_name 1 3342  
610 0 0 7 780 3181 0 0 79 /**
 * See set_texcoord_name.  The default is InternalName::get_texcoord().
 */ 1 4 this 3 3465  
611 0 0 7 781 3181 0 0 153 /**
 * Returns the set of tangents this texture stage will use.  This is the same
 * as get_texcoord_name(), except that the first part is "tangent".
 */ 1 4 this 3 3465  
612 0 0 7 782 3181 0 0 155 /**
 * Returns the set of binormals this texture stage will use.  This is the same
 * as get_binormal_name(), except that the first part is "binormal".
 */ 1 4 this 3 3465  
613 0 0 4 783 3346 0 0 45 /**
 * Set the mode of this texture stage
 */ 2 4 this 3 3251  4 mode 1 3244  
614 0 0 6 784 3244 0 0 40 /**
 * Return the mode of this stage
 */ 1 4 this 3 3465  
615 0 0 6 785 3178 0 0 168 /**
 * Returns true if the TextureStage is relevant to the classic fixed function
 * pipeline.  This excludes texture stages such as normal mapping and the
 * like.
 */ 1 4 this 3 3465  
616 0 0 4 786 3346 0 0 39 /**
 * Set the color for this stage
 */ 2 4 this 3 3251  5 color 1 3445  
617 0 0 7 787 3467 0 0 42 /**
 * return the color for this stage
 */ 1 4 this 3 3465  
618 0 0 4 788 3346 0 0 215 /**
 * Sets an additional factor that will scale all three r, g, b components
 * after the texture has been applied.  This is used only when the mode is
 * CM_combine.
 *
 * The only legal values are 1, 2, or 4.
 */ 2 4 this 3 3251  9 rgb_scale 1 3177  
619 0 0 6 789 3177 0 0 31 /**
 * See set_rgb_scale().
 */ 1 4 this 3 3465  
620 0 0 4 790 3346 0 0 203 /**
 * Sets an additional factor that will scale the alpha component after the
 * texture has been applied.  This is used only when the mode is CM_combine.
 *
 * The only legal values are 1, 2, or 4.
 */ 2 4 this 3 3251  11 alpha_scale 1 3177  
621 0 0 6 791 3177 0 0 33 /**
 * See set_alpha_scale().
 */ 1 4 this 3 3465  
622 0 0 4 792 3346 0 0 471 /**
 * Sets the saved_result flag.  When this is true, the output of this stage
 * will be supplied as the "last_saved_result" source for any future stages,
 * until the next TextureStage with a saved_result set true is encountered.
 *
 * This can be used to reuse the results of this texture stage as input to
 * more than one stage later in the pipeline.
 *
 * The last texture in the pipeline (the one with the highest sort value)
 * should not have this flag set.
 */ 2 4 this 3 3251  12 saved_result 1 3178  
623 0 0 6 793 3178 0 0 92 /**
 * Returns the current setting of the saved_result flag.  See
 * set_saved_result().
 */ 1 4 this 3 3465  
624 0 0 4 794 3346 0 0 342 /**
 * Sets the tex_view_offset value.  This is used only when a special multiview
 * texture is bound to the TextureStage, and it selects the particular view of
 * the texture that is to be used.
 *
 * This value is added to the similar parameter on DisplayRegion to derive the
 * final texture view index that is selected for rendering.
 */ 2 4 this 3 3251  15 tex_view_offset 1 3177  
625 0 0 6 795 3177 0 0 93 /**
 * Returns the current setting of the tex_view_offset.  See
 * set_tex_view_offset().
 */ 1 4 this 3 3465  
626 0 0 4 796 3346 0 0 135 /**
 * Specifies any of the CombineMode values that represent a one-parameter
 * operation.  Specifically, this is CM_replace only.
 */ 4 4 this 3 3251  4 mode 1 3245  7 source0 1 3246  8 operand0 1 3247  
627 0 0 4 796 3346 0 0 174 /**
 * Specifies any of the CombineMode values that represent a two-parameter
 * operation.  Specifically, this is everything except for CM_replace and
 * CM_interpolate.
 */ 6 4 this 3 3251  4 mode 1 3245  7 source0 1 3246  8 operand0 1 3247  7 source1 1 3246  8 operand1 1 3247  
628 0 0 4 796 3346 0 0 139 /**
 * Specifies any of the CombineMode values that represent a one-parameter
 * operation.  Specifically, this is CM_interpolate only.
 */ 8 4 this 3 3251  4 mode 1 3245  7 source0 1 3246  8 operand0 1 3247  7 source1 1 3246  8 operand1 1 3247  7 source2 1 3246  8 operand2 1 3247  
629 0 0 6 797 3245 0 0 35 /**
 * Get the combine_rgb_mode
 */ 1 4 this 3 3465  
630 0 0 6 798 3177 0 0 139 /**
 * Returns the number of meaningful operands that may be retrieved via
 * get_combine_rgb_sourceN() and get_combine_rgb_operandN().
 */ 1 4 this 3 3465  
631 0 0 6 799 3246 0 0 42 /**
 * Get source0 of combine_rgb_mode
 */ 1 4 this 3 3465  
632 0 0 6 800 3247 0 0 43 /**
 * Get operand0 of combine_rgb_mode
 */ 1 4 this 3 3465  
633 0 0 6 801 3246 0 0 42 /**
 * Get source1 of combine_rgb_mode
 */ 1 4 this 3 3465  
634 0 0 6 802 3247 0 0 43 /**
 * Get operand1 of combine_rgb_mode
 */ 1 4 this 3 3465  
635 0 0 6 803 3246 0 0 42 /**
 * Get source2 of combine_rgb_mode
 */ 1 4 this 3 3465  
636 0 0 6 804 3247 0 0 43 /**
 * Get operand2 of combine_rgb_mode
 */ 1 4 this 3 3465  
637 0 0 4 805 3346 0 0 135 /**
 * Specifies any of the CombineMode values that represent a one-parameter
 * operation.  Specifically, this is CM_replace only.
 */ 4 4 this 3 3251  4 mode 1 3245  7 source0 1 3246  8 operand0 1 3247  
638 0 0 4 805 3346 0 0 174 /**
 * Specifies any of the CombineMode values that represent a two-parameter
 * operation.  Specifically, this is everything except for CM_replace and
 * CM_interpolate.
 */ 6 4 this 3 3251  4 mode 1 3245  7 source0 1 3246  8 operand0 1 3247  7 source1 1 3246  8 operand1 1 3247  
639 0 0 4 805 3346 0 0 139 /**
 * Specifies any of the CombineMode values that represent a one-parameter
 * operation.  Specifically, this is CM_interpolate only.
 */ 8 4 this 3 3251  4 mode 1 3245  7 source0 1 3246  8 operand0 1 3247  7 source1 1 3246  8 operand1 1 3247  7 source2 1 3246  8 operand2 1 3247  
640 0 0 6 806 3245 0 0 33 /**
 * Get combine_alpha_mode
 */ 1 4 this 3 3465  
641 0 0 6 807 3177 0 0 143 /**
 * Returns the number of meaningful operands that may be retrieved via
 * get_combine_alpha_sourceN() and get_combine_alpha_operandN().
 */ 1 4 this 3 3465  
642 0 0 6 808 3246 0 0 44 /**
 * Get source0 of combine_alpha_mode
 */ 1 4 this 3 3465  
643 0 0 6 809 3247 0 0 45 /**
 * Get operand0 of combine_alpha_mode
 */ 1 4 this 3 3465  
644 0 0 6 810 3246 0 0 44 /**
 * Get source1 of combine_alpha_mode
 */ 1 4 this 3 3465  
645 0 0 6 811 3247 0 0 45 /**
 * Get operand1 of combine_alpha_mode
 */ 1 4 this 3 3465  
646 0 0 6 812 3246 0 0 44 /**
 * Get source2 of combine_alpha_mode
 */ 1 4 this 3 3465  
647 0 0 6 813 3247 0 0 45 /**
 * Get operand2 of combine_alpha_mode
 */ 1 4 this 3 3465  
648 0 0 6 814 3178 0 0 123 /**
 * Returns true if the TextureStage is affected by the setting of the current
 * ColorScaleAttrib, false otherwise.
 */ 1 4 this 3 3465  
649 0 0 6 815 3178 0 0 120 /**
 * Returns true if the TextureStage makes use of whatever color is specified
 * in set_color(), false otherwise.
 */ 1 4 this 3 3465  
650 0 0 6 816 3178 0 0 96 /**
 * Returns true if the TextureStage makes use of the CS_primary_color combine
 * source.
 */ 1 4 this 3 3465  
651 0 0 6 817 3178 0 0 96 /**
 * Returns true if the TextureStage makes use of the CS_primary_color combine
 * source.
 */ 1 4 this 3 3465  
652 0 0 6 818 3178 0 0 0 2 4 this 3 3465  5 other 1 3465  
653 0 0 6 819 3178 0 0 0 2 4 this 3 3465  5 other 1 3465  
654 0 0 6 820 3178 0 0 0 2 4 this 3 3465  5 other 1 3465  
655 0 0 6 821 3177 0 0 267 /**
 * Returns a number less than zero if this TextureStage sorts before the other
 * one, greater than zero if it sorts after, or zero if they are equivalent.
 * The sorting order is arbitrary and largely meaningless, except to
 * differentiate different stages.
 */ 2 4 this 3 3465  5 other 1 3465  
656 0 0 4 822 3346 0 0 43 /**
 * Writes the details of this stage
 */ 2 4 this 3 3465  3 out 1 3347  
657 0 0 4 822 3346 0 0 43 /**
 * Writes the details of this stage
 */ 3 4 this 3 3465  3 out 1 3347  12 indent_level 1 3177  
658 0 0 4 823 3346 0 0 36 /**
 * Just a single line output
 */ 2 4 this 3 3465  3 out 1 3347  
659 0 0 7 824 3251 0 0 180 /**
 * Returns the default TextureStage that will be used for all texturing that
 * does not name a particular stage.  This generally handles the normal
 * single-texture case.
 */ 0 
660 0 0 7 842 3362 0 0 0 0 
661 0 0 7 848 3257 2260 0 10 /**
 *
 */ 1 4 data 1 3368  
662 0 0 7 849 3257 2260 0 0 2 4 this 3 3257  4 copy 1 3468  
663 0 0 4 851 3346 0 0 0 2 4 this 3 3257  4 size 1 3209  
664 0 0 7 854 3257 2260 0 200 /**
 * Returns a newly-allocated Geom that is a shallow copy of this one.  It will
 * be a different Geom pointer, but its internal data may or may not be shared
 * with that of the original Geom.
 */ 1 4 this 3 3468  
665 0 0 6 855 3172 0 0 361 /**
 * Returns the fundamental primitive type that is common to all GeomPrimitives
 * added within the Geom.  All nested primitives within a particular Geom must
 * be the same type (that is, you can mix triangles and tristrips, because
 * they are both the same fundamental type PT_polygons, but you cannot mix
 * triangles and points withn the same Geom).
 */ 1 4 this 3 3468  
666 0 0 6 856 3171 0 0 118 /**
 * Returns the shade model common to all of the individual GeomPrimitives that
 * have been added to the geom.
 */ 1 4 this 3 3468  
667 0 0 6 857 3177 0 0 130 /**
 * Returns the set of GeomRendering bits that represent the rendering
 * properties required to properly render this Geom.
 */ 1 4 this 3 3468  
668 0 0 6 861 3169 0 0 189 /**
 * Returns the minimum (i.e.  most dynamic) usage_hint among all of the
 * individual GeomPrimitives that have been added to the geom.
 * @deprecated  This is no longer very useful.
 */ 1 4 this 3 3468  
669 0 0 4 862 3346 0 0 273 /**
 * Changes the UsageHint hint for all of the primitives on this Geom to the
 * same value.  See get_usage_hint().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3257  10 usage_hint 1 3169  
670 0 0 7 863 3368 0 0 146 /**
 * Returns a const pointer to the GeomVertexData, for application code to
 * directly examine (but not modify) the geom's underlying data.
 */ 2 4 this 3 3468  14 current_thread 5 3399  
671 0 0 7 864 3441 2051 0 294 /**
 * Returns a modifiable pointer to the GeomVertexData, so that application
 * code may directly maniuplate the geom's underlying data.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
672 0 0 4 865 3346 0 0 243 /**
 * Replaces the Geom's underlying vertex data table with a completely new
 * table.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3257  4 data 1 3368  
673 0 0 4 866 3346 0 0 501 /**
 * Replaces a Geom's vertex table with a new table, and simultaneously adds
 * the indicated offset to all vertex references within the Geom's primitives.
 * This is intended to be used to combine multiple GeomVertexDatas from
 * different Geoms into a single big buffer, with each Geom referencing a
 * subset of the vertices in the buffer.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 3 4 this 3 3257  4 data 1 3368  6 offset 1 3177  
674 0 0 6 867 3177 0 0 414 /**
 * Converts the geom from indexed to nonindexed by duplicating vertices as
 * necessary.  If composite_only is true, then only composite primitives such
 * as trifans and tristrips are converted.  Returns the number of
 * GeomPrimitive objects converted.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3257  14 composite_only 1 3178  
675 0 0 7 868 3368 0 0 865 /**
 * Returns a GeomVertexData that represents the results of computing the
 * vertex animation on the CPU for this Geom's vertex data.
 *
 * If there is no CPU-defined vertex animation on this object, this just
 * returns the original object.
 *
 * If there is vertex animation, but the VertexTransform values have not
 * changed since last time, this may return the same pointer it returned
 * previously.  Even if the VertexTransform values have changed, it may still
 * return the same pointer, but with its contents modified (this is preferred,
 * since it allows the graphics backend to update vertex buffers optimally).
 *
 * If force is false, this method may return immediately with stale data, if
 * the vertex data is not completely resident.  If force is true, this method
 * will never return stale data, but may block until the data is available.
 */ 3 4 this 3 3468  5 force 1 3178  14 current_thread 5 3399  
676 0 0 6 869 3178 0 0 120 /**
 * Returns true if there appear to be no vertices to be rendered by this Geom,
 * false if has some actual data.
 */ 1 4 this 3 3468  
677 0 0 6 870 3209 0 0 151 /**
 * Returns the number of GeomPrimitive objects stored within the Geom, each of
 * which represents a number of primitives of a particular type.
 */ 1 4 this 3 3468  
678 0 0 7 871 3454 0 0 211 /**
 * Returns a const pointer to the ith GeomPrimitive object stored within the
 * Geom.  Use this call only to inspect the ith object; use modify_primitive()
 * or set_primitive() if you want to modify it.
 */ 2 4 this 3 3468  1 i 1 3209  
679 0 0 7 873 3453 2124 0 331 /**
 * Returns a modifiable pointer to the ith GeomPrimitive object stored within
 * the Geom, so application code can directly manipulate the properties of
 * this primitive.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3257  1 i 1 3209  
680 0 0 4 874 3346 0 0 247 /**
 * Replaces the ith GeomPrimitive object stored within the Geom with the new
 * object.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 3 4 this 3 3257  1 i 1 3209  9 primitive 1 3454  
681 0 0 4 875 3346 0 0 342 /**
 * Inserts a new GeomPrimitive structure to the Geom object.  This specifies a
 * particular subset of vertices that are used to define geometric primitives
 * of the indicated type.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 3 4 this 3 3257  1 i 1 3209  9 primitive 1 3454  
682 0 0 4 876 3346 0 0 342 /**
 * Inserts a new GeomPrimitive structure to the Geom object.  This specifies a
 * particular subset of vertices that are used to define geometric primitives
 * of the indicated type.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3257  9 primitive 1 3454  
683 0 0 4 877 3346 0 0 203 /**
 * Removes the ith primitive from the list.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3257  1 i 1 3209  
684 0 0 4 878 3346 0 0 332 /**
 * Removes all the primitives from the Geom object (but keeps the same table
 * of vertices).  You may then re-add primitives one at a time via calls to
 * add_primitive().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
685 0 0 7 881 3257 2260 0 118 /**
 * Decomposes all of the primitives within this Geom, returning the result.
 * See GeomPrimitive::decompose().
 */ 1 4 this 3 3468  
686 0 0 7 882 3257 2260 0 120 /**
 * Doublesides all of the primitives within this Geom, returning the result.
 * See GeomPrimitive::doubleside().
 */ 1 4 this 3 3468  
687 0 0 7 883 3257 2260 0 115 /**
 * Reverses all of the primitives within this Geom, returning the result.  See
 * GeomPrimitive::reverse().
 */ 1 4 this 3 3468  
688 0 0 7 884 3257 2260 0 113 /**
 * Rotates all of the primitives within this Geom, returning the result.  See
 * GeomPrimitive::rotate().
 */ 1 4 this 3 3468  
689 0 0 7 885 3257 2260 0 541 /**
 * Unifies all of the primitives contained within this Geom into a single (or
 * as few as possible, within the constraints of max_indices) primitive
 * objects.  This may require decomposing the primitives if, for instance, the
 * Geom contains both triangle strips and triangle fans.
 *
 * max_indices represents the maximum number of indices that will be put in
 * any one GeomPrimitive.  If preserve_order is true, then the primitives will
 * not be reordered during the operation, even if this results in a suboptimal
 * result.
 */ 3 4 this 3 3468  11 max_indices 1 3177  14 preserve_order 1 3178  
690 0 0 7 886 3257 2260 0 100 /**
 * Returns a new Geom with points at all the vertices.  See
 * GeomPrimitive::make_points().
 */ 1 4 this 3 3468  
691 0 0 7 887 3257 2260 0 95 /**
 * Returns a new Geom with lines at all the edges.  See
 * GeomPrimitive::make_lines().
 */ 1 4 this 3 3468  
692 0 0 7 888 3257 2260 0 102 /**
 * Returns a new Geom with each primitive converted into a patch.  Calls
 * decompose() first.
 */ 1 4 this 3 3468  
693 0 0 7 889 3257 2260 0 139 /**
 * Returns a new Geom with each primitive converted into a corresponding
 * version with adjacency information.
 *
 * @since 1.10.0
 */ 1 4 this 3 3468  
694 0 0 4 890 3346 0 0 279 /**
 * Decomposes all of the primitives within this Geom, leaving the results in
 * place.  See GeomPrimitive::decompose().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
695 0 0 4 891 3346 0 0 281 /**
 * Doublesides all of the primitives within this Geom, leaving the results in
 * place.  See GeomPrimitive::doubleside().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
696 0 0 4 892 3346 0 0 275 /**
 * Reverses all of the primitives within this Geom, leaving the results in
 * place.  See GeomPrimitive::reverse().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
697 0 0 4 893 3346 0 0 273 /**
 * Rotates all of the primitives within this Geom, leaving the results in
 * place.  See GeomPrimitive::rotate().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
698 0 0 4 894 3346 0 0 693 /**
 * Unifies all of the primitives contained within this Geom into a single (or
 * as few as possible, within the constraints of max_indices) primitive
 * objects.  This may require decomposing the primitives if, for instance, the
 * Geom contains both triangle strips and triangle fans.
 *
 * max_indices represents the maximum number of indices that will be put in
 * any one GeomPrimitive.  If preserve_order is true, then the primitives will
 * not be reordered during the operation, even if this results in a suboptimal
 * result.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 3 4 this 3 3257  11 max_indices 1 3177  14 preserve_order 1 3178  
699 0 0 4 895 3346 0 0 275 /**
 * Replaces the GeomPrimitives within this Geom with corresponding GeomPoints.
 * See GeomPrimitive::make_points().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
700 0 0 4 896 3346 0 0 321 /**
 * Replaces the GeomPrimitives within this Geom with corresponding GeomLines,
 * representing a wireframe of the primitives.  See
 * GeomPrimitive::make_lines().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
701 0 0 4 897 3346 0 0 278 /**
 * Replaces the GeomPrimitives within this Geom with corresponding
 * GeomPatches.  See GeomPrimitive::make_patches().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
702 0 0 4 898 3346 0 0 324 /**
 * Replaces the GeomPrimitives within this Geom with corresponding versions
 * with adjacency information.  See GeomPrimitive::make_adjacency().
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 *
 * @since 1.10.0
 */ 1 4 this 3 3257  
703 0 0 6 899 3178 0 0 451 /**
 * Copies the primitives from the indicated Geom into this one.  This does
 * require that both Geoms contain the same fundamental type primitives, both
 * have a compatible shade model, and both use the same GeomVertexData.  Both
 * Geoms must also be the same specific class type (i.e.  if one is a
 * GeomTextGlyph, they both must be.)
 *
 * Returns true if the copy is successful, or false otherwise (because the
 * Geoms were mismatched).
 */ 2 4 this 3 3257  5 other 1 3468  
704 0 0 6 900 3177 0 0 119 /**
 * Returns the number of bytes consumed by the geom and its primitives (but
 * not including its vertex table).
 */ 1 4 this 3 3468  
705 0 0 7 901 3398 0 0 281 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * any of the primitives in the Geom is modified, or the set of primitives is
 * modified.  However, this does not include modifications to the vertex data,
 * which should be tested separately.
 */ 2 4 this 3 3468  14 current_thread 5 3399  
706 0 0 6 904 3178 0 0 286 /**
 * Returns true if all the primitive arrays are currently resident in memory.
 * If this returns false, the data will be brought back into memory shortly;
 * try again later.
 *
 * This does not also test the Geom's associated GeomVertexData.  That must be
 * tested separately.
 */ 1 4 this 3 3468  
707 0 0 4 905 3346 0 0 477 /**
 * Applies the indicated transform to all of the vertices in the Geom.  If the
 * Geom happens to share a vertex table with another Geom, this operation will
 * duplicate the vertex table instead of breaking the other Geom; however, if
 * multiple Geoms with shared tables are transformed by the same matrix, they
 * will no longer share tables after the operation.  Consider using the
 * GeomTransformer if you will be applying the same transform to multiple
 * Geoms.
 */ 2 4 this 3 3257  3 mat 1 3418  
708 0 0 6 906 3178 0 0 209 /**
 * Verifies that the all of the primitives within the geom reference vertices
 * that actually exist within the geom's GeomVertexData.  Returns true if the
 * geom appears to be valid, false otherwise.
 */ 1 4 this 3 3468  
709 0 0 6 906 3178 0 0 212 /**
 * Verifies that the all of the primitives within the geom reference vertices
 * that actually exist within the indicated GeomVertexData.  Returns true if
 * the geom appears to be valid, false otherwise.
 */ 2 4 this 3 3468  11 vertex_data 1 3368  
710 0 0 7 907 3471 0 0 52 /**
 * Returns the bounding volume for the Geom.
 */ 2 4 this 3 3468  14 current_thread 5 3399  
711 0 0 6 908 3177 0 0 85 /**
 * Returns the number of vertices rendered by all primitives within the Geom.
 */ 2 4 this 3 3468  14 current_thread 5 3399  
712 0 0 4 909 3346 0 0 147 /**
 * Marks the bounding volume of the Geom as stale so that it should be
 * recomputed.  Usually it is not necessary to call this explicitly.
 */ 1 4 this 3 3468  
713 0 0 4 910 3346 0 0 594 /**
 * Specifies the desired type of bounding volume that will be created for this
 * Geom.  This is normally BoundingVolume::BT_default, which means to set the
 * type according to the config variable "bounds-type".
 *
 * If this is BT_sphere or BT_box, a BoundingSphere or BoundingBox is
 * explicitly created.  If it is BT_best, a BoundingBox is created.
 *
 * This affects the implicit bounding volume only.  If an explicit bounding
 * volume is set on the Geom with set_bounds(), that bounding volume type is
 * used.  (This is different behavior from the similar method on PandaNode.)
 */ 2 4 this 3 3257  11 bounds_type 1 3254  
714 0 0 6 911 3254 0 0 71 /**
 * Returns the bounding volume type set with set_bounds_type().
 */ 1 4 this 3 3468  
715 0 0 4 912 3346 0 0 417 /**
 * Resets the bounding volume so that it is the indicated volume.  When it is
 * explicitly set, the bounding volume will no longer be automatically
 * computed; call clear_bounds() if you would like to return the bounding
 * volume to its default behavior.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3257  6 volume 1 3471  
716 0 0 4 913 3346 0 0 317 /**
 * Reverses the effect of a previous call to set_bounds(), and allows the
 * bounding volume to be automatically computed once more based on the
 * vertices.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 1 4 this 3 3257  
717 0 0 4 917 3346 0 0 10 /**
 *
 */ 2 4 this 3 3468  3 out 1 3347  
718 0 0 4 918 3346 0 0 10 /**
 *
 */ 3 4 this 3 3468  3 out 1 3347  12 indent_level 5 3177  
719 0 0 4 919 3346 0 0 263 /**
 * Removes all of the previously-cached results of munge_geom().
 *
 * This blows away the entire cache, upstream and downstream the pipeline.
 * Use clear_cache_stage() instead if you only want to blow away the cache at
 * the current stage and upstream.
 */ 1 4 this 3 3257  
720 0 0 4 920 3346 0 0 310 /**
 * Removes all of the previously-cached results of munge_geom(), at the
 * current pipeline stage and upstream.  Does not affect the downstream cache.
 *
 * Don't call this in a downstream thread unless you don't mind it blowing
 * away other changes you might have recently made in an upstream thread.
 */ 2 4 this 3 3257  14 current_thread 1 3399  
721 0 0 4 921 3346 0 0 351 /**
 * Indicates that the geom should be enqueued to be prepared in the indicated
 * prepared_objects at the beginning of the next frame.  This will ensure the
 * geom is already loaded into geom memory if it is expected to be rendered
 * soon.
 *
 * Use this function instead of prepare_now() to preload geoms from a user
 * interface standpoint.
 */ 2 4 this 3 3257  16 prepared_objects 1 3404  
722 0 0 6 922 3178 0 0 131 /**
 * Returns true if the geom has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */ 2 4 this 3 3468  16 prepared_objects 1 3404  
723 0 0 6 923 3178 0 0 154 /**
 * Frees the geom context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */ 2 4 this 3 3257  16 prepared_objects 1 3404  
724 0 0 6 924 3177 0 0 149 /**
 * Frees the context allocated on all objects for which the geom has been
 * declared.  Returns the number of contexts which have been freed.
 */ 1 4 this 3 3257  
725 0 0 6 925 3472 0 0 519 /**
 * Creates a context for the geom on the particular GSG, if it does not
 * already exist.  Returns the new (or old) GeomContext.  This assumes that
 * the GraphicsStateGuardian is the currently active rendering context and
 * that it is ready to accept new geoms.  If this is not necessarily the case,
 * you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a geom does not need to be explicitly prepared by the user before it may be
 * rendered.
 */ 3 4 this 3 3257  16 prepared_objects 1 3404  3 gsg 1 3405  
726 0 0 7 926 3362 0 0 0 0 
727 0 0 7 844 3411 0 0 0 1 4 this 3 3257  
728 0 0 6 846 3353 0 0 0 1 4 this 3 3257  
729 0 0 7 928 3257 2260 0 10 /**
 *
 */ 1 4 this 3 3473  
730 0 0 7 931 3362 0 0 0 0 
731 0 0 7 934 3475 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
732 0 0 15 934 3475 2124 0 10 /**
 *
 */ 1 4 copy 1 3476  
733 0 0 4 935 3346 0 0 0 2 4 this 3 3475  4 size 1 3209  
734 0 0 7 938 3362 0 0 0 0 
735 0 0 7 940 3478 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
736 0 0 15 940 3478 2124 0 10 /**
 *
 */ 1 4 copy 1 3479  
737 0 0 4 941 3346 0 0 0 2 4 this 3 3478  4 size 1 3209  
738 0 0 7 944 3362 0 0 0 0 
739 0 0 7 946 3481 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
740 0 0 15 946 3481 2124 0 10 /**
 *
 */ 1 4 copy 1 3482  
741 0 0 4 947 3346 0 0 0 2 4 this 3 3481  4 size 1 3209  
742 0 0 7 950 3362 0 0 0 0 
743 0 0 7 952 3484 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
744 0 0 15 952 3484 2124 0 10 /**
 *
 */ 1 4 copy 1 3485  
745 0 0 4 953 3346 0 0 0 2 4 this 3 3484  4 size 1 3209  
746 0 0 7 956 3362 0 0 0 0 
747 0 0 15 958 3489 2124 0 10 /**
 *
 */ 1 4 copy 1 3487  
748 0 0 7 958 3489 2124 0 240 /**
 * The number of vertices per patch must be specified to the GeomPatches
 * constructor, and it may not be changed during the lifetime of the
 * GeomPatches object.  Create a new GeomPatches if you need to have a
 * different value.
 */ 2 22 num_vertices_per_patch 1 3177  10 usage_hint 1 3169  
749 0 0 4 959 3346 0 0 0 2 4 this 3 3489  4 size 1 3209  
750 0 0 7 962 3362 0 0 0 0 
751 0 0 7 964 3490 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
752 0 0 15 964 3490 2124 0 10 /**
 *
 */ 1 4 copy 1 3491  
753 0 0 4 965 3346 0 0 0 2 4 this 3 3490  4 size 1 3209  
754 0 0 7 968 3362 0 0 0 0 
755 0 0 7 970 3493 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
756 0 0 15 970 3493 2124 0 10 /**
 *
 */ 1 4 copy 1 3494  
757 0 0 4 971 3346 0 0 0 2 4 this 3 3493  4 size 1 3209  
758 0 0 7 974 3362 0 0 0 0 
759 0 0 7 976 3496 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
760 0 0 15 976 3496 2124 0 10 /**
 *
 */ 1 4 copy 1 3497  
761 0 0 4 977 3346 0 0 0 2 4 this 3 3496  4 size 1 3209  
762 0 0 7 980 3362 0 0 0 0 
763 0 0 7 982 3499 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
764 0 0 15 982 3499 2124 0 10 /**
 *
 */ 1 4 copy 1 3500  
765 0 0 4 983 3346 0 0 0 2 4 this 3 3499  4 size 1 3209  
766 0 0 7 986 3362 0 0 0 0 
767 0 0 7 988 3502 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
768 0 0 15 988 3502 2124 0 10 /**
 *
 */ 1 4 copy 1 3503  
769 0 0 4 989 3346 0 0 0 2 4 this 3 3502  4 size 1 3209  
770 0 0 7 992 3362 0 0 0 0 
771 0 0 7 994 3505 2124 0 10 /**
 *
 */ 1 10 usage_hint 1 3169  
772 0 0 15 994 3505 2124 0 10 /**
 *
 */ 1 4 copy 1 3506  
773 0 0 4 995 3346 0 0 0 2 4 this 3 3505  4 size 1 3209  
774 0 0 7 998 3362 0 0 0 0 
775 0 0 23 1000 3508 2386 0 90 /**
 * Constructs a new reader to process the vertices of the indicated array
 * only.
 */ 2 10 array_data 1 3365  14 current_thread 5 3399  
776 0 0 23 1000 3508 2386 0 90 /**
 * Constructs a new reader to process the vertices of the indicated array
 * only.
 */ 3 10 array_data 1 3365  6 column 1 3177  14 current_thread 5 3399  
777 0 0 23 1000 3508 2386 0 171 /**
 * Constructs a new reader to process the vertices of the indicated data
 * object.  This flavor creates the reader specifically to process the named
 * data type.
 */ 3 11 vertex_data 1 3368  4 name 1 3193  14 current_thread 5 3399  
778 0 0 23 1000 3508 2386 0 91 /**
 * Constructs a new reader to process the vertices of the indicated data
 * object.
 */ 2 11 vertex_data 1 3368  14 current_thread 5 3399  
779 0 0 15 1000 3508 2386 0 10 /**
 *
 */ 1 4 copy 1 3509  
780 0 0 23 1000 3508 2386 0 167 /**
 * Constructs an invalid GeomVertexReader.  You must use the assignment
 * operator to assign a valid GeomVertexReader to this object before you can
 * use it.
 */ 1 14 current_thread 5 3399  
781 0 0 6 1001 3508 0 0 0 2 4 this 3 3508  4 copy 1 3509  
782 0 0 7 1003 3368 0 0 155 /**
 * Returns the vertex data object that the reader is processing.  This may
 * return NULL if the reader was constructed with just an array pointer.
 */ 1 4 this 3 3509  
783 0 0 7 1004 3365 0 0 90 /**
 * Returns the particular array object that the reader is currently
 * processing.
 */ 1 4 this 3 3509  
784 0 0 7 1005 3402 0 0 146 /**
 * Returns the read handle to the array object that the read is currently
 * processing.  This low-level call should be used with caution.
 */ 1 4 this 3 3509  
785 0 0 6 1006 3209 0 0 197 /**
 * Returns the per-row stride (bytes between consecutive rows) of the
 * underlying vertex array.  This low-level information is normally not needed
 * to use the GeomVertexReader directly.
 */ 1 4 this 3 3509  
786 0 0 7 1007 3399 0 0 120 /**
 * Returns the Thread pointer of the currently-executing thread, as passed to
 * the constructor of this object.
 */ 1 4 this 3 3509  
787 0 0 4 1008 3346 0 0 563 /**
 * Sets the value of the force flag.  When this is true (the default), vertex
 * data will be paged in from disk if necessary.  When this is false, the
 * GeomVertexData will simply return a failure code when attempting to read
 * vertex data that is not resident (but will put it on the queue to become
 * resident later).
 *
 * Normally, vertex data is always resident, so this will not be an issue.  It
 * is only possible for vertex data to be nonresident if you have enabled
 * vertex paging via the GeomVertexArrayData and VertexDataPage interfaces.
 */ 2 4 this 3 3508  5 force 1 3178  
788 0 0 6 1009 3178 0 0 65 /**
 * Returns the value of the force flag.  See set_force().
 */ 1 4 this 3 3509  
789 0 0 6 1010 3178 0 0 309 /**
 * Sets up the reader to use the data type with the indicated name.
 *
 * This also resets the read row number to the start row (the same value
 * passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */ 2 4 this 3 3508  4 name 1 3193  
790 0 0 6 1010 3178 0 0 334 /**
 * Sets up the reader to use the nth data type of the GeomVertexFormat,
 * numbering from 0.
 *
 * This also resets the read row number to the start row (the same value
 * passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */ 2 4 this 3 3508  6 column 1 3177  
791 0 0 6 1010 3178 0 0 334 /**
 * Sets up the reader to use the indicated column description on the given
 * array.
 *
 * This also resets the current read row number to the start row (the same
 * value passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */ 3 4 this 3 3508  5 array 1 3177  6 column 1 3187  
792 0 0 4 1011 3346 0 0 60 /**
 * Resets the GeomVertexReader to the initial state.
 */ 1 4 this 3 3508  
793 0 0 6 1012 3178 0 0 183 /**
 * Returns true if a valid data type has been successfully set, or false if
 * the data type does not exist (or if get_force() is false and the vertex
 * data is nonresident).
 */ 1 4 this 3 3509  
794 0 0 6 1013 3177 0 0 93 /**
 * Returns the array index containing the data type that the reader is working
 * on.
 */ 1 4 this 3 3509  
795 0 0 6 1014 3187 0 0 82 /**
 * Returns the description of the data type that the reader is working on.
 */ 1 4 this 3 3509  
796 0 0 4 1015 3346 0 0 344 /**
 * Sets the start row to the indicated value, without internal checks.  This
 * is the same as set_row(), but it does not check for the possibility that
 * the array has been reallocated internally for some reason; use only when
 * you are confident that the array is unchanged and you really need every bit
 * of available performance.
 */ 2 4 this 3 3508  3 row 1 3177  
797 0 0 4 1016 3346 0 0 260 /**
 * Sets the start row to the indicated value.  The reader will begin reading
 * from the indicated row; each subsequent get_data*() call will return the
 * data from the subsequent row.  If set_column() is called, the reader will
 * return to this row.
 */ 2 4 this 3 3508  3 row 1 3177  
798 0 0 6 1017 3177 0 0 125 /**
 * Returns the row index at which the reader started.  It will return to this
 * row if you reset the current column.
 */ 1 4 this 3 3509  
799 0 0 6 1018 3177 0 0 106 /**
 * Returns the row index from which the data will be retrieved by the next
 * call to get_data*().
 */ 1 4 this 3 3509  
800 0 0 6 1019 3178 0 0 179 /**
 * Returns true if the reader is currently at the end of the list of vertices,
 * false otherwise.  If this is true, another call to get_data*() will result
 * in a crash.
 */ 1 4 this 3 3509  
801 0 0 6 1020 3221 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 1-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
802 0 0 6 1021 3511 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 2-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
803 0 0 6 1022 3513 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 3-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
804 0 0 6 1023 3515 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 4-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
805 0 0 7 1024 3518 0 0 210 /**
 * Returns the 3-by-3 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */ 1 4 this 3 3508  
806 0 0 7 1025 3519 0 0 210 /**
 * Returns the 4-by-4 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */ 1 4 this 3 3508  
807 0 0 6 1026 3520 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 1-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
808 0 0 6 1027 3521 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 2-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
809 0 0 6 1028 3524 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 3-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
810 0 0 6 1029 3527 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 4-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
811 0 0 7 1030 3531 0 0 210 /**
 * Returns the 3-by-3 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */ 1 4 this 3 3508  
812 0 0 7 1031 3533 0 0 210 /**
 * Returns the 4-by-4 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */ 1 4 this 3 3508  
813 0 0 6 1032 3220 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 1-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
814 0 0 6 1033 3534 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 2-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
815 0 0 6 1034 3535 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 3-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
816 0 0 6 1035 3442 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 4-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
817 0 0 7 1036 3537 0 0 210 /**
 * Returns the 3-by-3 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */ 1 4 this 3 3508  
818 0 0 7 1037 3417 0 0 210 /**
 * Returns the 4-by-4 matrix associated with the read row and advances the
 * read row.  This is a special method that only works when the column in
 * question contains a matrix of an appropriate size.
 */ 1 4 this 3 3508  
819 0 0 6 1038 3177 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 1-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
820 0 0 6 1039 3538 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 2-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
821 0 0 6 1040 3541 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 3-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
822 0 0 6 1041 3544 0 0 121 /**
 * Returns the data associated with the read row, expressed as a 4-component
 * value, and advances the read row.
 */ 1 4 this 3 3508  
823 0 0 4 1042 3346 0 0 10 /**
 *
 */ 2 4 this 3 3509  3 out 1 3347  
824 0 0 23 1044 3547 2429 0 90 /**
 * Constructs a new writer to process the vertices of the indicated array
 * only.
 */ 2 10 array_data 1 3213  14 current_thread 5 3399  
825 0 0 23 1044 3547 2429 0 90 /**
 * Constructs a new writer to process the vertices of the indicated array
 * only.
 */ 3 10 array_data 1 3213  6 column 1 3177  14 current_thread 5 3399  
826 0 0 23 1044 3547 2429 0 171 /**
 * Constructs a new writer to process the vertices of the indicated data
 * object.  This flavor creates the writer specifically to process the named
 * data type.
 */ 3 11 vertex_data 1 3441  4 name 1 3193  14 current_thread 5 3399  
827 0 0 23 1044 3547 2429 0 91 /**
 * Constructs a new writer to process the vertices of the indicated data
 * object.
 */ 2 11 vertex_data 1 3441  14 current_thread 5 3399  
828 0 0 15 1044 3547 2429 0 10 /**
 *
 */ 1 4 copy 1 3548  
829 0 0 23 1044 3547 2429 0 167 /**
 * Constructs an invalid GeomVertexWriter.  You must use the assignment
 * operator to assign a valid GeomVertexWriter to this object before you can
 * use it.
 */ 1 14 current_thread 5 3399  
830 0 0 6 1045 3547 0 0 0 2 4 this 3 3547  4 copy 1 3548  
831 0 0 7 1047 3441 2051 0 155 /**
 * Returns the vertex data object that the writer is processing.  This may
 * return NULL if the writer was constructed with just an array pointer.
 */ 1 4 this 3 3548  
832 0 0 7 1048 3213 1897 0 90 /**
 * Returns the particular array object that the writer is currently
 * processing.
 */ 1 4 this 3 3548  
833 0 0 7 1049 3403 1934 0 238 /**
 * Returns the write handle to the array object that the writer is currently
 * processing.  This low-level call should be used with caution; be careful
 * with modifying the data in the handle out from under the GeomVertexWriter.
 */ 1 4 this 3 3548  
834 0 0 6 1050 3209 0 0 197 /**
 * Returns the per-row stride (bytes between consecutive rows) of the
 * underlying vertex array.  This low-level information is normally not needed
 * to use the GeomVertexWriter directly.
 */ 1 4 this 3 3548  
835 0 0 7 1051 3399 0 0 120 /**
 * Returns the Thread pointer of the currently-executing thread, as passed to
 * the constructor of this object.
 */ 1 4 this 3 3548  
836 0 0 6 1052 3178 0 0 303 /**
 * Sets up the writer to use the data type with the indicated name.
 *
 * This also resets the write number to the start row (the same value passed
 * to a previous call to set_row(), or 0 if set_row() was never called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */ 2 4 this 3 3547  4 name 1 3193  
837 0 0 6 1052 3178 0 0 335 /**
 * Sets up the writer to use the nth data type of the GeomVertexFormat,
 * numbering from 0.
 *
 * This also resets the write row number to the start row (the same value
 * passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */ 2 4 this 3 3547  6 column 1 3177  
838 0 0 6 1052 3178 0 0 335 /**
 * Sets up the writer to use the indicated column description on the given
 * array.
 *
 * This also resets the current write row number to the start row (the same
 * value passed to a previous call to set_row(), or 0 if set_row() was never
 * called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */ 3 4 this 3 3547  5 array 1 3177  6 column 1 3187  
839 0 0 4 1053 3346 0 0 60 /**
 * Resets the GeomVertexWriter to the initial state.
 */ 1 4 this 3 3547  
840 0 0 6 1054 3178 0 0 297 /**
 * This ensures that enough memory space for num_rows is allocated, so that
 * you may add up to num_rows rows without causing a new memory allocation.
 * This is a performance optimization only; it is especially useful when you
 * know the number of rows you will be adding ahead of time.
 */ 2 4 this 3 3547  8 num_rows 1 3177  
841 0 0 6 1055 3178 0 0 116 /**
 * Returns true if a valid data type has been successfully set, or false if
 * the data type does not exist.
 */ 1 4 this 3 3548  
842 0 0 6 1056 3177 0 0 93 /**
 * Returns the array index containing the data type that the writer is working
 * on.
 */ 1 4 this 3 3548  
843 0 0 6 1057 3187 0 0 82 /**
 * Returns the description of the data type that the writer is working on.
 */ 1 4 this 3 3548  
844 0 0 4 1058 3346 0 0 344 /**
 * Sets the start row to the indicated value, without internal checks.  This
 * is the same as set_row(), but it does not check for the possibility that
 * the array has been reallocated internally for some reason; use only when
 * you are confident that the array is unchanged and you really need every bit
 * of available performance.
 */ 2 4 this 3 3547  3 row 1 3177  
845 0 0 4 1059 3346 0 0 257 /**
 * Sets the start row to the indicated value.  The writer will begin writing
 * to the indicated row; each subsequent set_data*() call will store the data
 * into the subsequent row.  If set_column() is called, the writer will return
 * to this row.
 */ 2 4 this 3 3547  3 row 1 3177  
846 0 0 6 1060 3177 0 0 125 /**
 * Returns the row index at which the writer started.  It will return to this
 * row if you reset the current column.
 */ 1 4 this 3 3548  
847 0 0 6 1061 3177 0 0 117 /**
 * Returns the row index to which the data will be written at the next call to
 * set_data*() or add_data*().
 */ 1 4 this 3 3548  
848 0 0 6 1062 3178 0 0 231 /**
 * Returns true if the writer is currently at the end of the list of vertices,
 * false otherwise.  If this is true, another call to set_data*() will result
 * in a crash, but another call to add_data*() will add a new row.
 */ 1 4 this 3 3548  
849 0 0 4 1063 3346 0 0 167 /**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3221  
850 0 0 4 1064 3346 0 0 167 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3511  
851 0 0 4 1064 3346 0 0 167 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 3 4 this 3 3547  1 x 1 3221  1 y 1 3221  
852 0 0 4 1065 3346 0 0 167 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3513  
853 0 0 4 1065 3346 0 0 167 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 4 4 this 3 3547  1 x 1 3221  1 y 1 3221  1 z 1 3221  
854 0 0 4 1066 3346 0 0 167 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3515  
855 0 0 4 1066 3346 0 0 167 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 5 4 this 3 3547  1 x 1 3221  1 y 1 3221  1 z 1 3221  1 w 1 3221  
856 0 0 4 1067 3346 0 0 219 /**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  3 mat 1 3550  
857 0 0 4 1068 3346 0 0 219 /**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  3 mat 1 3552  
858 0 0 4 1069 3346 0 0 167 /**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3520  
859 0 0 4 1070 3346 0 0 167 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3521  
860 0 0 4 1070 3346 0 0 167 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 3 4 this 3 3547  1 x 1 3520  1 y 1 3520  
861 0 0 4 1071 3346 0 0 167 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3524  
862 0 0 4 1071 3346 0 0 167 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 4 4 this 3 3547  1 x 1 3520  1 y 1 3520  1 z 1 3520  
863 0 0 4 1072 3346 0 0 167 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3527  
864 0 0 4 1072 3346 0 0 167 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 5 4 this 3 3547  1 x 1 3520  1 y 1 3520  1 z 1 3520  1 w 1 3520  
865 0 0 4 1073 3346 0 0 219 /**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  3 mat 1 3554  
866 0 0 4 1074 3346 0 0 219 /**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  3 mat 1 3556  
867 0 0 4 1075 3346 0 0 167 /**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3220  
868 0 0 4 1076 3346 0 0 167 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3534  
869 0 0 4 1076 3346 0 0 167 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 3 4 this 3 3547  1 x 1 3220  1 y 1 3220  
870 0 0 4 1077 3346 0 0 167 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3535  
871 0 0 4 1077 3346 0 0 167 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 4 4 this 3 3547  1 x 1 3220  1 y 1 3220  1 z 1 3220  
872 0 0 4 1078 3346 0 0 167 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3442  
873 0 0 4 1078 3346 0 0 167 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 5 4 this 3 3547  1 x 1 3220  1 y 1 3220  1 z 1 3220  1 w 1 3220  
874 0 0 4 1079 3346 0 0 219 /**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  3 mat 1 3558  
875 0 0 4 1080 3346 0 0 219 /**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  3 mat 1 3418  
876 0 0 4 1081 3346 0 0 167 /**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3177  
877 0 0 4 1082 3346 0 0 167 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3538  
878 0 0 4 1082 3346 0 0 167 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 3 4 this 3 3547  1 a 1 3177  1 b 1 3177  
879 0 0 4 1083 3346 0 0 167 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3541  
880 0 0 4 1083 3346 0 0 167 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 4 4 this 3 3547  1 a 1 3177  1 b 1 3177  1 c 1 3177  
881 0 0 4 1084 3346 0 0 167 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 2 4 this 3 3547  4 data 1 3544  
882 0 0 4 1084 3346 0 0 167 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * It is an error for the write row to advance past the end of data.
 */ 5 4 this 3 3547  1 a 1 3177  1 b 1 3177  1 c 1 3177  1 d 1 3177  
883 0 0 4 1085 3346 0 0 191 /**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3221  
884 0 0 4 1086 3346 0 0 191 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3511  
885 0 0 4 1086 3346 0 0 191 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 3 4 this 3 3547  1 x 1 3221  1 y 1 3221  
886 0 0 4 1087 3346 0 0 191 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3513  
887 0 0 4 1087 3346 0 0 191 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 4 4 this 3 3547  1 x 1 3221  1 y 1 3221  1 z 1 3221  
888 0 0 4 1088 3346 0 0 191 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3515  
889 0 0 4 1088 3346 0 0 191 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 5 4 this 3 3547  1 x 1 3221  1 y 1 3221  1 z 1 3221  1 w 1 3221  
890 0 0 4 1089 3346 0 0 243 /**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  3 mat 1 3550  
891 0 0 4 1090 3346 0 0 243 /**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  3 mat 1 3552  
892 0 0 4 1091 3346 0 0 191 /**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3520  
893 0 0 4 1092 3346 0 0 191 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3521  
894 0 0 4 1092 3346 0 0 191 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 3 4 this 3 3547  1 x 1 3520  1 y 1 3520  
895 0 0 4 1093 3346 0 0 191 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3524  
896 0 0 4 1093 3346 0 0 191 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 4 4 this 3 3547  1 x 1 3520  1 y 1 3520  1 z 1 3520  
897 0 0 4 1094 3346 0 0 191 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3527  
898 0 0 4 1094 3346 0 0 191 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 5 4 this 3 3547  1 x 1 3520  1 y 1 3520  1 z 1 3520  1 w 1 3520  
899 0 0 4 1095 3346 0 0 243 /**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  3 mat 1 3554  
900 0 0 4 1096 3346 0 0 243 /**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  3 mat 1 3556  
901 0 0 4 1097 3346 0 0 191 /**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3220  
902 0 0 4 1098 3346 0 0 191 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3534  
903 0 0 4 1098 3346 0 0 191 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 3 4 this 3 3547  1 x 1 3220  1 y 1 3220  
904 0 0 4 1099 3346 0 0 191 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3535  
905 0 0 4 1099 3346 0 0 191 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 4 4 this 3 3547  1 x 1 3220  1 y 1 3220  1 z 1 3220  
906 0 0 4 1100 3346 0 0 191 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3442  
907 0 0 4 1100 3346 0 0 191 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 5 4 this 3 3547  1 x 1 3220  1 y 1 3220  1 z 1 3220  1 w 1 3220  
908 0 0 4 1101 3346 0 0 243 /**
 * Sets the write row to a 3-by-3 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  3 mat 1 3558  
909 0 0 4 1102 3346 0 0 243 /**
 * Sets the write row to a 4-by-4 matrix, and advances the write row.  This is
 * a special method that can only be used on matrix columns.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  3 mat 1 3418  
910 0 0 4 1103 3346 0 0 191 /**
 * Sets the write row to a particular 1-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3177  
911 0 0 4 1104 3346 0 0 191 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3538  
912 0 0 4 1104 3346 0 0 191 /**
 * Sets the write row to a particular 2-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 3 4 this 3 3547  1 a 1 3177  1 b 1 3177  
913 0 0 4 1105 3346 0 0 191 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3541  
914 0 0 4 1105 3346 0 0 191 /**
 * Sets the write row to a particular 3-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 4 4 this 3 3547  1 a 1 3177  1 b 1 3177  1 c 1 3177  
915 0 0 4 1106 3346 0 0 191 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 2 4 this 3 3547  4 data 1 3544  
916 0 0 4 1106 3346 0 0 191 /**
 * Sets the write row to a particular 4-component value, and advances the
 * write row.
 *
 * If the write row advances past the end of data, implicitly adds a new row
 * to the data.
 */ 5 4 this 3 3547  1 a 1 3177  1 b 1 3177  1 c 1 3177  1 d 1 3177  
917 0 0 4 1107 3346 0 0 10 /**
 *
 */ 2 4 this 3 3548  3 out 1 3347  
918 0 0 23 1113 3560 2497 0 92 /**
 * Constructs a new rewriter to process the vertices of the indicated array
 * only.
 */ 2 10 array_data 1 3213  14 current_thread 5 3399  
919 0 0 23 1113 3560 2497 0 92 /**
 * Constructs a new rewriter to process the vertices of the indicated array
 * only.
 */ 3 10 array_data 1 3213  6 column 1 3177  14 current_thread 5 3399  
920 0 0 23 1113 3560 2497 0 175 /**
 * Constructs a new rewriter to process the vertices of the indicated data
 * object.  This flavor creates the rewriter specifically to process the named
 * data type.
 */ 3 11 vertex_data 1 3441  4 name 1 3193  14 current_thread 5 3399  
921 0 0 23 1113 3560 2497 0 93 /**
 * Constructs a new rewriter to process the vertices of the indicated data
 * object.
 */ 2 11 vertex_data 1 3441  14 current_thread 5 3399  
922 0 0 15 1113 3560 2497 0 10 /**
 *
 */ 1 4 copy 1 3561  
923 0 0 23 1113 3560 2497 0 171 /**
 * Constructs an invalid GeomVertexRewriter.  You must use the assignment
 * operator to assign a valid GeomVertexRewriter to this object before you can
 * use it.
 */ 1 14 current_thread 5 3399  
924 0 0 6 1114 3560 0 0 0 2 4 this 3 3560  4 copy 1 3561  
925 0 0 7 1116 3441 2051 0 74 /**
 * Returns the vertex data object that the rewriter is processing.
 */ 1 4 this 3 3561  
926 0 0 7 1117 3213 1897 0 92 /**
 * Returns the particular array object that the rewriter is currently
 * processing.
 */ 1 4 this 3 3561  
927 0 0 7 1118 3403 1934 0 245 /**
 * Returns the write handle to the array object that the rewriter is currently
 * processing.  This low-level call should be used with caution; be careful
 * with modifying the data in the handle out from under the
 * GeomVertexRewriter.
 */ 1 4 this 3 3561  
928 0 0 6 1119 3209 0 0 199 /**
 * Returns the per-row stride (bytes between consecutive rows) of the
 * underlying vertex array.  This low-level information is normally not needed
 * to use the GeomVertexRewriter directly.
 */ 1 4 this 3 3561  
929 0 0 7 1120 3399 0 0 120 /**
 * Returns the Thread pointer of the currently-executing thread, as passed to
 * the constructor of this object.
 */ 1 4 this 3 3561  
930 0 0 6 1121 3178 0 0 327 /**
 * Sets up the rewriter to use the data type with the indicated name.
 *
 * This also resets both the read and write row numbers to the start row (the
 * same value passed to a previous call to set_row(), or 0 if set_row() was
 * never called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */ 2 4 this 3 3560  4 name 1 3193  
931 0 0 6 1121 3178 0 0 352 /**
 * Sets up the rewriter to use the nth data type of the GeomVertexFormat,
 * numbering from 0.
 *
 * This also resets both the read and write row numbers to the start row (the
 * same value passed to a previous call to set_row(), or 0 if set_row() was
 * never called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */ 2 4 this 3 3560  6 column 1 3177  
932 0 0 6 1121 3178 0 0 344 /**
 * Sets up the rewriter to use the indicated column description on the given
 * array.
 *
 * This also resets both the read and write row numbers to the start row (the
 * same value passed to a previous call to set_row(), or 0 if set_row() was
 * never called.)
 *
 * The return value is true if the data type is valid, false otherwise.
 */ 3 4 this 3 3560  5 array 1 3177  6 column 1 3187  
933 0 0 4 1122 3346 0 0 62 /**
 * Resets the GeomVertexRewriter to the initial state.
 */ 1 4 this 3 3560  
934 0 0 6 1123 3178 0 0 116 /**
 * Returns true if a valid data type has been successfully set, or false if
 * the data type does not exist.
 */ 1 4 this 3 3561  
935 0 0 6 1124 3177 0 0 95 /**
 * Returns the array index containing the data type that the rewriter is
 * working on.
 */ 1 4 this 3 3561  
936 0 0 6 1125 3187 0 0 84 /**
 * Returns the description of the data type that the rewriter is working on.
 */ 1 4 this 3 3561  
937 0 0 4 1126 3346 0 0 344 /**
 * Sets the start row to the indicated value, without internal checks.  This
 * is the same as set_row(), but it does not check for the possibility that
 * the array has been reallocated internally for some reason; use only when
 * you are confident that the array is unchanged and you really need every bit
 * of available performance.
 */ 2 4 this 3 3560  3 row 1 3177  
938 0 0 4 1127 3346 0 0 132 /**
 * Sets the start, write, and write index to the indicated value.  The
 * rewriter will begin traversing from the given row.
 */ 2 4 this 3 3560  3 row 1 3177  
939 0 0 6 1128 3177 0 0 127 /**
 * Returns the row index at which the rewriter started.  It will return to
 * this row if you reset the current column.
 */ 1 4 this 3 3561  
940 0 0 6 1129 3178 0 0 116 /**
 * Returns true if the reader or writer is currently at the end of the list of
 * vertices, false otherwise.
 */ 1 4 this 3 3561  
941 0 0 4 1130 3346 0 0 10 /**
 *
 */ 2 4 this 3 3561  3 out 1 3347  
942 0 0 6 1109 3547 0 0 0 1 4 this 3 3560  
943 0 0 6 1111 3508 0 0 0 1 4 this 3 3560  
944 0 0 7 1134 3563 2552 0 72 /**
 * Creates a new SamplerState initialized to the default values.
 */ 0 
945 0 0 15 1134 3563 2552 0 0 1 6 param0 0 3564  
946 0 0 6 1135 3564 0 0 83 /**
 * Returns a reference to the global default immutable SamplerState object.
 */ 0 
947 0 0 4 1136 3346 0 0 221 /**
 * This setting determines what happens when the SamplerState is sampled with
 * a U value outside the range 0.0-1.0.  The default is WM_repeat, which
 * indicates that the SamplerState should repeat indefinitely.
 */ 2 4 this 3 3563  4 wrap 1 3274  
948 0 0 4 1137 3346 0 0 221 /**
 * This setting determines what happens when the SamplerState is sampled with
 * a V value outside the range 0.0-1.0.  The default is WM_repeat, which
 * indicates that the SamplerState should repeat indefinitely.
 */ 2 4 this 3 3563  4 wrap 1 3274  
949 0 0 4 1138 3346 0 0 67 /**
 * The W wrap direction is only used for 3-d SamplerStates.
 */ 2 4 this 3 3563  4 wrap 1 3274  
950 0 0 4 1139 3346 0 0 106 /**
 * Sets the filtering method that should be used when viewing the SamplerState
 * from a distance.
 */ 2 4 this 3 3563  6 filter 1 3273  
951 0 0 4 1140 3346 0 0 99 /**
 * Sets the filtering method that should be used when viewing the SamplerState
 * up close.
 */ 2 4 this 3 3563  6 filter 1 3273  
952 0 0 4 1141 3346 0 0 418 /**
 * Specifies the level of anisotropic filtering to apply to the SamplerState.
 * Set this 0 to indicate the default value, which is specified in the
 * SamplerState-anisotropic-degree config variable.
 *
 * To explicitly disable anisotropic filtering, set this value to 1.  To
 * explicitly enable anisotropic filtering, set it to a value higher than 1;
 * larger numbers indicate greater degrees of filtering.
 */ 2 4 this 3 3563  18 anisotropic_degree 1 3177  
953 0 0 4 1142 3346 0 0 198 /**
 * Specifies the solid color of the SamplerState's border.  Some OpenGL
 * implementations use a border for tiling SamplerStates; in Panda, it is only
 * used for specifying the clamp color.
 */ 2 4 this 3 3563  5 color 1 3445  
954 0 0 4 1143 3346 0 0 123 /**
 * Sets the minimum level of detail that will be used when sampling this
 * texture.  This may be a negative value.
 */ 2 4 this 3 3563  7 min_lod 1 3220  
955 0 0 4 1144 3346 0 0 159 /**
 * Sets the maximum level of detail that will be used when sampling this
 * texture.  This may exceed the number of mipmap levels that the texture has.
 */ 2 4 this 3 3563  7 max_lod 1 3220  
956 0 0 4 1145 3346 0 0 211 /**
 * Sets the value that will be added to the level of detail when sampling the
 * texture.  This may be a negative value, although some graphics hardware may
 * not support the use of negative LOD values.
 */ 2 4 this 3 3563  8 lod_bias 1 3220  
957 0 0 6 1146 3274 0 0 67 /**
 * Returns the wrap mode of the texture in the U direction.
 */ 1 4 this 3 3564  
958 0 0 6 1147 3274 0 0 67 /**
 * Returns the wrap mode of the texture in the V direction.
 */ 1 4 this 3 3564  
959 0 0 6 1148 3274 0 0 116 /**
 * Returns the wrap mode of the texture in the W direction.  This is the depth
 * direction of 3-d textures.
 */ 1 4 this 3 3564  
960 0 0 6 1149 3273 0 0 214 /**
 * Returns the filter mode of the texture for minification.  If this is one of
 * the mipmap constants, then the texture requires mipmaps.  This may return
 * FT_default; see also get_effective_minfilter().
 */ 1 4 this 3 3564  
961 0 0 6 1150 3273 0 0 179 /**
 * Returns the filter mode of the texture for magnification.  The mipmap
 * constants are invalid here.  This may return FT_default; see also
 * get_effective_minfilter().
 */ 1 4 this 3 3564  
962 0 0 6 1151 3273 0 0 200 /**
 * Returns the filter mode of the texture for minification, with special
 * treatment for FT_default.  This will normally not return FT_default, unless
 * there is an error in the config file.
 */ 1 4 this 3 3564  
963 0 0 6 1152 3273 0 0 201 /**
 * Returns the filter mode of the texture for magnification, with special
 * treatment for FT_default.  This will normally not return FT_default, unless
 * there is an error in the config file.
 */ 1 4 this 3 3564  
964 0 0 6 1153 3177 0 0 198 /**
 * Returns the degree of anisotropic filtering that should be applied to the
 * texture.  This value may return 0, indicating the default value; see also
 * get_effective_anisotropic_degree.
 */ 1 4 this 3 3564  
965 0 0 6 1154 3177 0 0 184 /**
 * Returns the degree of anisotropic filtering that should be applied to the
 * texture.  This value will normally not return 0, unless there is an error
 * in the config file.
 */ 1 4 this 3 3564  
966 0 0 6 1155 3445 0 0 186 /**
 * Returns the solid color of the texture's border.  Some OpenGL
 * implementations use a border for tiling textures; in Panda, it is only used
 * for specifying the clamp color.
 */ 1 4 this 3 3564  
967 0 0 6 1156 3220 0 0 99 /**
 * Returns the minimum level of detail that will be observed when sampling
 * this texture.
 */ 1 4 this 3 3564  
968 0 0 6 1157 3220 0 0 99 /**
 * Returns the maximum level of detail that will be observed when sampling
 * this texture.
 */ 1 4 this 3 3564  
969 0 0 6 1158 3220 0 0 108 /**
 * Returns the bias that will be added to the texture level of detail when
 * sampling this texture.
 */ 1 4 this 3 3564  
970 0 0 6 1173 3178 0 0 117 /**
 * Returns true if the minfilter settings on this sampler indicate the use of
 * mipmapping, false otherwise.
 */ 1 4 this 3 3564  
971 0 0 6 1174 3178 0 0 109 /**
 * Returns true if the indicated filter type requires the use of mipmaps, or
 * false if it does not.
 */ 1 4 type 1 3273  
972 0 0 6 1175 3342 0 0 71 /**
 * Returns the indicated FilterType converted to a string word.
 */ 1 2 ft 1 3273  
973 0 0 6 1176 3273 0 0 165 /**
 * Returns the FilterType value associated with the given string
 * representation, or FT_invalid if the string does not match any known
 * FilterType value.
 */ 1 3 str 1 3342  
974 0 0 6 1177 3342 0 0 69 /**
 * Returns the indicated WrapMode converted to a string word.
 */ 1 2 wm 1 3274  
975 0 0 6 1178 3274 0 0 158 /**
 * Returns the WrapMode value associated with the given string representation,
 * or WM_invalid if the string does not match any known WrapMode value.
 */ 1 3 str 1 3342  
976 0 0 6 1179 3178 0 0 0 2 4 this 3 3564  5 other 1 3564  
977 0 0 6 1180 3178 0 0 0 2 4 this 3 3564  5 other 1 3564  
978 0 0 6 1181 3178 0 0 0 2 4 this 3 3564  5 other 1 3564  
979 0 0 4 1182 3346 0 0 250 /**
 * Indicates that the sampler should be enqueued to be prepared in the
 * indicated prepared_objects at the beginning of the next frame.
 *
 * Use this function instead of prepare_now() to preload samplers from a user
 * interface standpoint.
 */ 2 4 this 3 3564  16 prepared_objects 1 3404  
980 0 0 6 1183 3178 0 0 134 /**
 * Returns true if the sampler has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */ 2 4 this 3 3564  16 prepared_objects 1 3404  
981 0 0 4 1184 3346 0 0 157 /**
 * Frees the texture context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */ 2 4 this 3 3564  16 prepared_objects 1 3404  
982 0 0 6 1185 3565 0 0 531 /**
 * Creates a context for the sampler on the particular GSG, if it does not
 * already exist.  Returns the new (or old) SamplerContext.  This assumes that
 * the GraphicsStateGuardian is the currently active rendering context and
 * that it is ready to accept new textures.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a sampler does not need to be explicitly prepared by the user before it may
 * be rendered.
 */ 3 4 this 3 3564  16 prepared_objects 1 3404  3 gsg 1 3405  
983 0 0 7 1186 3362 0 0 0 0 
984 0 0 7 1200 3325 2558 0 192 /**
 * Constructs an empty texture.  The default is to set up the texture as an
 * empty 2-d texture; follow up with one of the variants of setup_texture() if
 * this is not what you want.
 */ 1 4 name 5 3342  
985 0 0 7 1202 3325 2558 0 369 /**
 * Returns a new copy of the same Texture.  This copy, if applied to geometry,
 * will be copied into texture as a separate texture from the original, so it
 * will be duplicated in texture memory (and may be independently modified if
 * desired).
 *
 * If the Texture is a VideoTexture, the resulting duplicate may be animated
 * independently of the original.
 */ 1 4 this 3 3567  
986 0 0 4 1203 3346 0 0 90 /**
 * Reinitializes the texture to its default, empty state (except for the
 * name).
 */ 1 4 this 3 3325  
987 0 0 4 1204 3346 0 0 243 /**
 * Sets the texture to the indicated type and dimensions, presumably in
 * preparation for calling read() or load(), or set_ram_image() or
 * modify_ram_image(), or use set_clear_color to let the texture be cleared to
 * a solid color.
 */ 7 4 this 3 3325  12 texture_type 1 3277  6 x_size 1 3177  6 y_size 1 3177  6 z_size 1 3177  14 component_type 1 3278  6 format 1 3279  
988 0 0 4 1205 3346 0 0 228 /**
 * Sets the texture as an empty 1-d texture with no dimensions.  Follow up
 * with read() or load() to fill the texture properties and image data, or use
 * set_clear_color to let the texture be cleared to a solid color.
 */ 1 4 this 3 3325  
989 0 0 4 1205 3346 0 0 255 /**
 * Sets the texture as an empty 1-d texture with the specified dimensions and
 * properties.  Follow up with set_ram_image() or modify_ram_image() to fill
 * the image data, or use set_clear_color to let the texture be cleared to a
 * solid color.
 */ 4 4 this 3 3325  6 x_size 1 3177  14 component_type 1 3278  6 format 1 3279  
990 0 0 4 1206 3346 0 0 228 /**
 * Sets the texture as an empty 2-d texture with no dimensions.  Follow up
 * with read() or load() to fill the texture properties and image data, or use
 * set_clear_color to let the texture be cleared to a solid color.
 */ 1 4 this 3 3325  
991 0 0 4 1206 3346 0 0 255 /**
 * Sets the texture as an empty 2-d texture with the specified dimensions and
 * properties.  Follow up with set_ram_image() or modify_ram_image() to fill
 * the image data, or use set_clear_color to let the texture be cleared to a
 * solid color.
 */ 5 4 this 3 3325  6 x_size 1 3177  6 y_size 1 3177  14 component_type 1 3278  6 format 1 3279  
992 0 0 4 1207 3346 0 0 313 /**
 * Sets the texture as an empty 3-d texture with no dimensions (though if you
 * know the depth ahead of time, it saves a bit of reallocation later). Follow
 * up with read() or load() to fill the texture properties and image data, or
 * use set_clear_color to let the texture be cleared to a solid color.
 */ 2 4 this 3 3325  6 z_size 5 3177  
993 0 0 4 1207 3346 0 0 181 /**
 * Sets the texture as an empty 3-d texture with the specified dimensions and
 * properties.  Follow up with set_ram_image() or modify_ram_image() to fill
 * the image data.
 */ 6 4 this 3 3325  6 x_size 1 3177  6 y_size 1 3177  6 z_size 1 3177  14 component_type 1 3278  6 format 1 3279  
994 0 0 4 1208 3346 0 0 233 /**
 * Sets the texture as an empty cube map texture with no dimensions.  Follow
 * up with read() or load() to fill the texture properties and image data, or
 * use set_clear_color to let the texture be cleared to a solid color.
 */ 1 4 this 3 3325  
995 0 0 4 1208 3346 0 0 397 /**
 * Sets the texture as an empty cube map texture with the specified dimensions
 * and properties.  Follow up with set_ram_image() or modify_ram_image() to
 * fill the image data, or use set_clear_color to let the texture be cleared
 * to a solid color.
 *
 * Note that a cube map should always consist of six square images, so x_size
 * and y_size will be the same, and z_size is always 6.
 */ 4 4 this 3 3325  4 size 1 3177  14 component_type 1 3278  6 format 1 3279  
996 0 0 4 1209 3346 0 0 322 /**
 * Sets the texture as an empty 2-d texture array with no dimensions (though
 * if you know the depth ahead of time, it saves a bit of reallocation later).
 * Follow up with read() or load() to fill the texture properties and image
 * data, or use set_clear_color to let the texture be cleared to a solid
 * color.
 */ 2 4 this 3 3325  6 z_size 5 3177  
997 0 0 4 1209 3346 0 0 261 /**
 * Sets the texture as an empty 2-d texture array with the specified
 * dimensions and properties.  Follow up with set_ram_image() or
 * modify_ram_image() to fill the image data, or use set_clear_color to let
 * the texture be cleared to a solid color.
 */ 6 4 this 3 3325  6 x_size 1 3177  6 y_size 1 3177  6 z_size 1 3177  14 component_type 1 3278  6 format 1 3279  
998 0 0 4 1210 3346 0 0 297 /**
 * Sets the texture as cube map array with N cube maps.  Note that this number
 * is not the same as the z_size.  Follow up with read() or load() to fill the
 * texture properties and image data, or use set_clear_color to let the
 * texture be cleared to a solid color.
 *
 * @since 1.10.0
 */ 2 4 this 3 3325  13 num_cube_maps 1 3177  
999 0 0 4 1210 3346 0 0 376 /**
 * Sets the texture as cube map array with N cube maps with the specified
 * dimensions and format.  Follow up with set_ram_image() or
 * modify_ram_image() to fill the image data, or use set_clear_color to let
 * the texture be cleared to a solid color.
 *
 * The num_cube_maps given here is multiplied by six to become the z_size of
 * the image.
 *
 * @since 1.10.0
 */ 5 4 this 3 3325  4 size 1 3177  13 num_cube_maps 1 3177  14 component_type 1 3278  6 format 1 3279  
1000 0 0 4 1211 3346 0 0 329 /**
 * Sets the texture as an empty buffer texture with the specified size and
 * properties.  Follow up with set_ram_image() or modify_ram_image() to fill
 * the image data, or use set_clear_color to let the texture be cleared to a
 * solid color.
 *
 * Note that a buffer texture's format needs to match the component type.
 */ 5 4 this 3 3325  4 size 1 3177  14 component_type 1 3278  6 format 1 3279  5 usage 1 3169  
1001 0 0 4 1212 3346 0 0 296 /**
 * Generates a special cube map image in the texture that can be used to apply
 * bump mapping effects: for each texel in the cube map that is indexed by the
 * 3-d texture coordinates (x, y, z), the resulting value is the normalized
 * vector (x, y, z) (compressed from -1..1 into 0..1).
 */ 2 4 this 3 3325  4 size 1 3177  
1002 0 0 4 1213 3346 0 0 253 /**
 * Generates a special 256x1 1-d texture that can be used to apply an
 * arbitrary alpha scale to objects by judicious use of texture matrix.  The
 * texture is a gradient, with an alpha of 0 on the left (U = 0), and 255 on
 * the right (U = 1).
 */ 1 4 this 3 3325  
1003 0 0 4 1214 3346 0 0 445 /**
 * Clears the texture data without changing its format or resolution.  The
 * texture is cleared on both the graphics hardware and from RAM, unlike
 * clear_ram_image, which only removes the data from RAM.
 *
 * If a clear color has been specified using set_clear_color, the texture will
 * be cleared using a solid color.
 *
 * The texture data will be cleared the first time in which the texture is
 * used after this method is called.
 */ 1 4 this 3 3325  
1004 0 0 6 1215 3178 0 0 76 /**
 * Returns true if a color was previously set using set_clear_color.
 */ 1 4 this 3 3567  
1005 0 0 7 1216 3467 0 0 75 /**
 * Returns the color that was previously set using set_clear_color.
 */ 1 4 this 3 3567  
1006 0 0 4 1217 3346 0 0 359 /**
 * Sets the color that will be used to fill the texture image in absence of
 * any image data.  It is used when any of the setup_texture functions or
 * clear_image is called and image data is not provided using read() or
 * modify_ram_image().
 *
 * This does not affect a texture that has already been cleared; call
 * clear_image to clear it again.
 */ 2 4 this 3 3325  5 color 1 3445  
1007 0 0 4 1218 3346 0 0 161 /**
 * The opposite of set_clear_color.  If the image is cleared after setting
 * this, its contents may be undefined (or may in fact not be cleared at all).
 */ 1 4 this 3 3325  
1008 0 0 6 1219 3412 0 0 94 /**
 * Returns the raw image data for a single pixel if it were set to the clear
 * color.
 */ 1 4 this 3 3567  
1009 0 0 6 1221 3178 0 0 241 /**
 * Combine a 3-component image with a grayscale image to get a 4-component
 * image.
 *
 * See the description of the full-parameter read() method for the meaning of
 * the primary_file_num_channels and alpha_file_channel parameters.
 */ 6 4 this 3 3325  8 fullpath 1 3569  14 alpha_fullpath 1 3569  25 primary_file_num_channels 1 3177  18 alpha_file_channel 1 3177  7 options 5 3570  
1010 0 0 6 1221 3178 0 0 2873 /**
 * Reads the texture from the indicated filename.  If
 * primary_file_num_channels is not 0, it specifies the number of components
 * to downgrade the image to if it is greater than this number.
 *
 * If the filename has the extension .txo, this implicitly reads a texture
 * object instead of a filename (which replaces all of the texture
 * properties).  In this case, all the rest of the parameters are ignored, and
 * the filename should not contain any hash marks; just the one named file
 * will be read, since a single .txo file can contain all pages and mipmaps
 * necessary to define a texture.
 *
 * If alpha_fullpath is not empty, it specifies the name of a file from which
 * to retrieve the alpha.  In this case, alpha_file_channel represents the
 * numeric channel of this image file to use as the resulting texture's alpha
 * channel; usually, this is 0 to indicate the grayscale combination of r, g,
 * b; or it may be a one-based channel number, e.g.  1 for the red channel, 2
 * for the green channel, and so on.
 *
 * If read pages is false, then z indicates the page number into which this
 * image will be assigned.  Normally this is 0 for the first (or only) page of
 * the texture.  3-D textures have one page for each level of depth, and cube
 * map textures always have six pages.
 *
 * If read_pages is true, multiple images will be read at once, one for each
 * page of a cube map or a 3-D texture.  In this case, the filename should
 * contain a sequence of one or more hash marks ("#") which will be filled in
 * with the z value of each page, zero-based.  In this case, the z parameter
 * indicates the maximum z value that will be loaded, or 0 to load all
 * filenames that exist.
 *
 * If read_mipmaps is false, then n indicates the mipmap level to which this
 * image will be assigned.  Normally this is 0 for the base texture image, but
 * it is possible to load custom mipmap levels into the later images.  After
 * the base texture image is loaded (thus defining the size of the texture),
 * you can call get_expected_num_mipmap_levels() to determine the maximum
 * sensible value for n.
 *
 * If read_mipmaps is true, multiple images will be read as above, but this
 * time the images represent the different mipmap levels of the texture image.
 * In this case, the n parameter indicates the maximum n value that will be
 * loaded, or 0 to load all filenames that exist (up to the expected number of
 * mipmap levels).
 *
 * If both read_pages and read_mipmaps is true, then both sequences will be
 * read; the filename should contain two sequences of hash marks, separated by
 * some character such as a hyphen, underscore, or dot.  The first hash mark
 * sequence will be filled in with the mipmap level, while the second hash
 * mark sequence will be the page index.
 *
 * This method implicitly sets keep_ram_image to false.
 */ 11 4 this 3 3325  8 fullpath 1 3569  14 alpha_fullpath 1 3569  25 primary_file_num_channels 1 3177  18 alpha_file_channel 1 3177  1 z 1 3177  1 n 1 3177  10 read_pages 1 3178  12 read_mipmaps 1 3178  6 record 5 3573  7 options 5 3570  
1011 0 0 6 1221 3178 0 0 53 /**
 * Reads the named filename into the texture.
 */ 3 4 this 3 3325  8 fullpath 1 3569  7 options 5 3570  
1012 0 0 6 1221 3178 0 0 263 /**
 * Reads a single file into a single page or mipmap level, or automatically
 * reads a series of files into a series of pages and/or mipmap levels.
 *
 * See the description of the full-parameter read() method for the meaning of
 * the various parameters.
 */ 7 4 this 3 3325  8 fullpath 1 3569  1 z 1 3177  1 n 1 3177  10 read_pages 1 3178  12 read_mipmaps 1 3178  7 options 5 3570  
1013 0 0 6 1222 3178 0 0 52 /**
 * Writes the texture to the named filename.
 */ 2 4 this 3 3325  8 fullpath 1 3569  
1014 0 0 6 1222 3178 0 0 2253 /**
 * Writes a single page or mipmap level to a single file, or automatically
 * writes a series of pages and/or mipmap levels to a numbered series of
 * files.
 *
 * If the filename ends in the extension .txo, this implicitly writes a Panda
 * texture object (.txo) instead of an image file.  In this case, the
 * remaining parameters are ignored, and only one file is written, which will
 * contain all of the pages and resident mipmap levels in the texture.
 *
 * If write_pages is false, then z indicates the page number to write.  3-D
 * textures have one page number for each level of depth; cube maps have six
 * pages number 0 through 5.  Other kinds of textures have only one page,
 * numbered 0.  If there are multiple views, the range of z is increased; the
 * total range is [0, get_num_pages()).
 *
 * If write_pages is true, then all pages of the texture will be written.  In
 * this case z is ignored, and the filename should contain a sequence of hash
 * marks ("#") which will be filled in with the page index number.
 *
 * If write_mipmaps is false, then n indicates the mipmap level number to
 * write.  Normally, this is 0, for the base texture image.  Normally, the
 * mipmap levels of a texture are not available in RAM (they are generated
 * automatically by the graphics card). However, if you have the mipmap levels
 * available, for instance because you called generate_ram_mipmap_images() to
 * generate them internally, or you called
 * GraphicsEngine::extract_texture_data() to retrieve them from the graphics
 * card, then you may write out each mipmap level with this parameter.
 *
 * If write_mipmaps is true, then all mipmap levels of the texture will be
 * written.  In this case n is ignored, and the filename should contain a
 * sequence of hash marks ("#") which will be filled in with the mipmap level
 * number.
 *
 * If both write_pages and write_mipmaps is true, then all pages and all
 * mipmap levels will be written.  In this case, the filename should contain
 * two different sequences of hash marks, separated by a character such as a
 * hyphen, underscore, or dot.  The first hash mark sequence will be filled in
 * with the mipmap level, while the second hash mark sequence will be the page
 * index.
 */ 6 4 this 3 3325  8 fullpath 1 3569  1 z 1 3177  1 n 1 3177  11 write_pages 1 3178  13 write_mipmaps 1 3178  
1015 0 0 4 1222 3346 0 0 107 /**
 * Not to be confused with write(Filename), this method simply describes the
 * texture properties.
 */ 3 4 this 3 3567  3 out 1 3347  12 indent_level 1 3177  
1016 0 0 6 1223 3178 0 0 380 /**
 * Reads the texture from a Panda texture object.  This defines the complete
 * Texture specification, including the image data as well as all texture
 * properties.  This only works if the txo file contains a static Texture
 * image, as opposed to a subclass of Texture such as a movie texture.
 *
 * Pass a real filename if it is available, or empty string if it is not.
 */ 3 4 this 3 3325  2 in 1 3575  8 filename 5 3342  
1017 0 0 7 1224 3325 2558 0 310 /**
 * Constructs a new Texture object from the txo file.  This is similar to
 * Texture::read_txo(), but it constructs and returns a new object, which
 * allows it to return a subclass of Texture (for instance, a movie texture).
 *
 * Pass a real filename if it is available, or empty string if it is not.
 */ 2 2 in 1 3575  8 filename 5 3342  
1018 0 0 6 1225 3178 0 0 214 /**
 * Writes the texture to a Panda texture object.  This defines the complete
 * Texture specification, including the image data as well as all texture
 * properties.
 *
 * The filename is just for reference.
 */ 3 4 this 3 3567  3 out 1 3347  8 filename 5 3342  
1019 0 0 6 1226 3178 0 0 381 /**
 * Reads the texture from a DDS file object.  This is a Microsoft-defined file
 * format; it is similar in principle to a txo object, in that it is designed
 * to contain the texture image in a form as similar as possible to its
 * runtime image, and it can contain mipmaps, pre-compressed textures, and so
 * on.
 *
 * As with read_txo, the filename is just for reference.
 */ 4 4 this 3 3325  2 in 1 3575  8 filename 5 3342  11 header_only 5 3178  
1020 0 0 6 1227 3178 0 0 379 /**
 * Reads the texture from a KTX file object.  This is a Khronos-defined file
 * format; it is similar in principle to a dds object, in that it is designed
 * to contain the texture image in a form as similar as possible to its
 * runtime image, and it can contain mipmaps, pre-compressed textures, and so
 * on.
 *
 * As with read_dds, the filename is just for reference.
 */ 4 4 this 3 3325  2 in 1 3575  8 filename 5 3342  11 header_only 5 3178  
1021 0 0 6 1228 3178 0 0 57 /**
 * Replaces the texture with the indicated image.
 */ 3 4 this 3 3325  8 pnmimage 1 3577  7 options 5 3570  
1022 0 0 6 1228 3178 0 0 86 /**
 * Stores the indicated image in the given page and mipmap level.  See read().
 */ 5 4 this 3 3325  8 pnmimage 1 3577  1 z 1 3177  1 n 1 3177  7 options 5 3570  
1023 0 0 6 1228 3178 0 0 57 /**
 * Replaces the texture with the indicated image.
 */ 3 4 this 3 3325  3 pfm 1 3580  7 options 5 3570  
1024 0 0 6 1228 3178 0 0 86 /**
 * Stores the indicated image in the given page and mipmap level.  See read().
 */ 5 4 this 3 3325  3 pfm 1 3580  1 z 1 3177  1 n 1 3177  7 options 5 3570  
1025 0 0 6 1229 3178 0 0 328 /**
 * Stores the indicated image in a region of the texture.  The texture
 * properties remain unchanged.  This can be more efficient than updating an
 * entire texture, but has a few restrictions: for one, you must ensure that
 * the texture is still in RAM (eg.  using set_keep_ram_image) and it may not
 * be compressed.
 */ 6 4 this 3 3325  8 pnmimage 1 3577  1 x 1 3177  1 y 1 3177  1 z 5 3177  1 n 5 3177  
1026 0 0 6 1230 3178 0 0 86 /**
 * Saves the texture to the indicated PNMImage, but does not write it to disk.
 */ 2 4 this 3 3567  8 pnmimage 1 3583  
1027 0 0 6 1230 3178 0 0 84 /**
 * Saves the indicated page and mipmap level of the texture to the PNMImage.
 */ 4 4 this 3 3567  8 pnmimage 1 3583  1 z 1 3177  1 n 1 3177  
1028 0 0 6 1230 3178 0 0 85 /**
 * Saves the texture to the indicated PfmFile, but does not write it to disk.
 */ 2 4 this 3 3567  3 pfm 1 3584  
1029 0 0 6 1230 3178 0 0 83 /**
 * Saves the indicated page and mipmap level of the texture to the PfmFile.
 */ 4 4 this 3 3567  3 pfm 1 3584  1 z 1 3177  1 n 1 3177  
1030 0 0 6 1231 3178 0 0 269 /**
 * Re-reads the Texture from its disk file.  Useful when you know the image on
 * disk has recently changed, and you want to update the Texture image.
 *
 * Returns true on success, false on failure (in which case, the Texture may
 * or may not still be valid).
 */ 1 4 this 3 3325  
1031 0 0 7 1232 3325 2558 0 189 /**
 * Loads a texture whose filename is derived by concatenating a suffix to the
 * filename of this texture.  May return NULL, for example, if this texture
 * doesn't have a filename.
 */ 2 4 this 3 3567  6 suffix 1 3193  
1032 0 0 6 1233 3178 0 0 94 /**
 * Returns true if the filename has been set and is available.  See
 * set_filename().
 */ 1 4 this 3 3567  
1033 0 0 6 1234 3569 0 0 130 /**
 * Returns the filename that has been set.  This is the name of the file as it
 * was requested.  Also see get_fullpath().
 */ 1 4 this 3 3567  
1034 0 0 4 1235 3346 0 0 376 /**
 * Sets the name of the file that contains the image's contents.  Normally,
 * this is set automatically when the image is loaded, for instance via
 * Texture::read().
 *
 * The Texture's get_name() function used to return the filename, but now
 * returns just the basename (without the extension), which is a more useful
 * name for identifying an image in show code.
 */ 2 4 this 3 3325  8 filename 1 3569  
1035 0 0 4 1236 3346 0 0 79 /**
 * Removes the filename, if it was previously set.  See set_filename().
 */ 1 4 this 3 3325  
1036 0 0 6 1240 3178 0 0 106 /**
 * Returns true if the alpha_filename has been set and is available.  See
 * set_alpha_filename().
 */ 1 4 this 3 3567  
1037 0 0 6 1241 3569 0 0 214 /**
 * Returns the alpha_filename that has been set.  If this is set, it
 * represents the name of the alpha component, which is stored in a separate
 * file.  See also get_filename(), and get_alpha_fullpath().
 */ 1 4 this 3 3567  
1038 0 0 4 1242 3346 0 0 555 /**
 * Sets the name of the file that contains the image's alpha channel contents.
 * Normally, this is set automatically when the image is loaded, for instance
 * via Texture::read().
 *
 * The Texture's get_filename() function returns the name of the image file
 * that was loaded into the buffer.  In the case where a texture specified two
 * separate files to load, a 1- or 3-channel color image and a 1-channel alpha
 * image, the alpha_filename is updated to contain the name of the image file
 * that was loaded into the buffer's alpha channel.
 */ 2 4 this 3 3325  14 alpha_filename 1 3569  
1039 0 0 4 1243 3346 0 0 94 /**
 * Removes the alpha filename, if it was previously set.  See
 * set_alpha_filename().
 */ 1 4 this 3 3325  
1040 0 0 6 1245 3178 0 0 94 /**
 * Returns true if the fullpath has been set and is available.  See
 * set_fullpath().
 */ 1 4 this 3 3567  
1041 0 0 6 1246 3569 0 0 135 /**
 * Returns the fullpath that has been set.  This is the full path to the file
 * as it was found along the texture search path.
 */ 1 4 this 3 3567  
1042 0 0 4 1247 3346 0 0 216 /**
 * Sets the full pathname to the file that contains the image's contents, as
 * found along the search path.  Normally, this is set automatically when the
 * image is loaded, for instance via Texture::read().
 */ 2 4 this 3 3325  8 fullpath 1 3569  
1043 0 0 4 1248 3346 0 0 79 /**
 * Removes the fullpath, if it was previously set.  See set_fullpath().
 */ 1 4 this 3 3325  
1044 0 0 6 1250 3178 0 0 106 /**
 * Returns true if the alpha_fullpath has been set and is available.  See
 * set_alpha_fullpath().
 */ 1 4 this 3 3567  
1045 0 0 6 1251 3569 0 0 168 /**
 *
 * Returns the alpha_fullpath that has been set.  This is the full path to the
 * alpha part of the image file as it was found along the texture search path.
 */ 1 4 this 3 3567  
1046 0 0 4 1252 3346 0 0 230 /**
 * Sets the full pathname to the file that contains the image's alpha channel
 * contents, as found along the search path.  Normally, this is set
 * automatically when the image is loaded, for instance via Texture::read().
 */ 2 4 this 3 3325  14 alpha_fullpath 1 3569  
1047 0 0 4 1253 3346 0 0 94 /**
 * Removes the alpha fullpath, if it was previously set.  See
 * set_alpha_fullpath().
 */ 1 4 this 3 3325  
1048 0 0 6 1255 3177 0 0 60 /**
 * Returns the width of the texture image in texels.
 */ 1 4 this 3 3567  
1049 0 0 4 1256 3346 0 0 132 /**
 * Changes the x size indicated for the texture.  This also implicitly unloads
 * the texture if it has already been loaded.
 */ 2 4 this 3 3325  6 x_size 1 3177  
1050 0 0 6 1258 3177 0 0 100 /**
 * Returns the height of the texture image in texels.  For a 1-d texture, this
 * will be 1.
 */ 1 4 this 3 3567  
1051 0 0 4 1259 3346 0 0 132 /**
 * Changes the y size indicated for the texture.  This also implicitly unloads
 * the texture if it has already been loaded.
 */ 2 4 this 3 3325  6 y_size 1 3177  
1052 0 0 6 1261 3177 0 0 154 /**
 * Returns the depth of the texture image in texels.  For a 1-d texture or 2-d
 * texture, this will be 1. For a cube map texture, this will be 6.
 */ 1 4 this 3 3567  
1053 0 0 4 1262 3346 0 0 132 /**
 * Changes the z size indicated for the texture.  This also implicitly unloads
 * the texture if it has already been loaded.
 */ 2 4 this 3 3325  6 z_size 1 3177  
1054 0 0 6 1264 3177 0 0 426 /**
 * Returns the number of "views" in the texture.  A view is a completely
 * separate image stored within the Texture object.  Most textures have only
 * one view, but a stereo texture, for instance, may have two views, a left
 * and a right image.  Other uses for multiple views are not yet defined.
 *
 * If this value is greater than one, the additional views are accessed as
 * additional pages beyond get_z_size().
 */ 1 4 this 3 3567  
1055 0 0 4 1265 3346 0 0 503 /**
 * Sets the number of "views" within a texture.  A view is a completely
 * separate image stored within the Texture object.  Most textures have only
 * one view, but a stereo texture, for instance, may have two views, a left
 * and a right image.  Other uses for multiple views are not yet defined.
 *
 * If this value is greater than one, the additional views are accessed as
 * additional pages beyond get_z_size().
 *
 * This also implicitly unloads the texture if it has already been loaded.
 */ 2 4 this 3 3325  9 num_views 1 3177  
1056 0 0 6 1267 3177 0 0 318 /**
 * Returns the total number of pages in the texture.  Each "page" is a 2-d
 * texture image within the larger image--a face of a cube map, or a level of
 * a 3-d texture.  Normally, get_num_pages() is the same as get_z_size().
 * However, in a multiview texture, this returns get_z_size() *
 * get_num_views().
 */ 1 4 this 3 3567  
1057 0 0 6 1268 3177 0 0 194 /**
 * Returns the number of color components for each texel of the texture image.
 * This is 3 for an rgb texture or 4 for an rgba texture; it may also be 1 or
 * 2 for a grayscale texture.
 */ 1 4 this 3 3567  
1058 0 0 6 1269 3177 0 0 141 /**
 * Returns the number of bytes stored for each color component of a texel.
 * Typically this is 1, but it may be 2 for 16-bit texels.
 */ 1 4 this 3 3567  
1059 0 0 6 1270 3277 0 0 61 /**
 * Returns the overall interpretation of the texture.
 */ 1 4 this 3 3567  
1060 0 0 6 1271 3169 0 0 114 /**
 * Returns the usage hint specified for buffer textures, or UH_unspecified for
 * all other texture types.
 */ 1 4 this 3 3567  
1061 0 0 6 1277 3279 0 0 153 /**
 * Returns the format of the texture, which represents both the semantic
 * meaning of the texels and, to some extent, their storage information.
 */ 1 4 this 3 3567  
1062 0 0 4 1278 3346 0 0 112 /**
 * Changes the format value for the texture components.  This implicitly sets
 * num_components as well.
 */ 2 4 this 3 3325  6 format 1 3279  
1063 0 0 6 1280 3278 0 0 79 /**
 * Returns the numeric interpretation of each component of the texture.
 */ 1 4 this 3 3567  
1064 0 0 4 1281 3346 0 0 111 /**
 * Changes the data value for the texture components.  This implicitly sets
 * component_width as well.
 */ 2 4 this 3 3325  14 component_type 1 3278  
1065 0 0 6 1283 3274 0 0 208 /**
 * Returns the wrap mode of the texture in the U direction.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1066 0 0 4 1284 3346 0 0 0 2 4 this 3 3325  4 wrap 1 3585  
1067 0 0 6 1286 3274 0 0 208 /**
 * Returns the wrap mode of the texture in the V direction.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1068 0 0 4 1287 3346 0 0 0 2 4 this 3 3325  4 wrap 1 3585  
1069 0 0 6 1289 3274 0 0 257 /**
 * Returns the wrap mode of the texture in the W direction.  This is the depth
 * direction of 3-d textures.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1070 0 0 4 1290 3346 0 0 0 2 4 this 3 3325  4 wrap 1 3585  
1071 0 0 6 1292 3273 0 0 355 /**
 * Returns the filter mode of the texture for minification.  If this is one of
 * the mipmap constants, then the texture requires mipmaps.  This may return
 * FT_default; see also get_effective_minfilter().
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1072 0 0 6 1293 3273 0 0 341 /**
 * Returns the filter mode of the texture for minification, with special
 * treatment for FT_default.  This will normally not return FT_default, unless
 * there is an error in the config file.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1073 0 0 4 1294 3346 0 0 0 2 4 this 3 3325  6 filter 1 3586  
1074 0 0 6 1297 3273 0 0 320 /**
 * Returns the filter mode of the texture for magnification.  The mipmap
 * constants are invalid here.  This may return FT_default; see also
 * get_effective_minfilter().
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1075 0 0 6 1298 3273 0 0 342 /**
 * Returns the filter mode of the texture for magnification, with special
 * treatment for FT_default.  This will normally not return FT_default, unless
 * there is an error in the config file.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1076 0 0 4 1299 3346 0 0 0 2 4 this 3 3325  6 filter 1 3586  
1077 0 0 6 1302 3177 0 0 339 /**
 * Returns the degree of anisotropic filtering that should be applied to the
 * texture.  This value may return 0, indicating the default value; see also
 * get_effective_anisotropic_degree.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1078 0 0 6 1303 3177 0 0 325 /**
 * Returns the degree of anisotropic filtering that should be applied to the
 * texture.  This value will normally not return 0, unless there is an error
 * in the config file.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1079 0 0 4 1304 3346 0 0 548 /**
 * Specifies the level of anisotropic filtering to apply to the texture.  Set
 * this 0 to indicate the default value, which is specified in the texture-
 * anisotropic-degree config variable.
 *
 * To explicitly disable anisotropic filtering, set this value to 1.  To
 * explicitly enable anisotropic filtering, set it to a value higher than 1;
 * larger numbers indicate greater degrees of filtering.
 *
 * This sets the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 2 4 this 3 3325  18 anisotropic_degree 1 3177  
1080 0 0 7 1307 3467 0 0 327 /**
 * Returns the solid color of the texture's border.  Some OpenGL
 * implementations use a border for tiling textures; in Panda, it is only used
 * for specifying the clamp color.
 *
 * This returns the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1081 0 0 4 1308 3346 0 0 326 /**
 * Specifies the solid color of the texture's border.  Some OpenGL
 * implementations use a border for tiling textures; in Panda, it is only used
 * for specifying the clamp color.
 *
 * This sets the default sampler state for this texture; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 2 4 this 3 3325  5 color 1 3445  
1082 0 0 6 1310 3178 0 0 430 /**
 * Returns true if the texture indicates it wants to be compressed, either
 * with CM_on or higher, or CM_default and compressed-textures is true.
 *
 * If true returned, this is not a guarantee that the texture is actually
 * successfully compressed on the GSG.  It may be that the GSG does not
 * support the requested compression mode, in which case the texture may
 * actually be stored uncompressed in texture memory.
 */ 1 4 this 3 3567  
1083 0 0 6 1311 3282 0 0 431 /**
 * Returns the compression mode requested for this particular texture, or
 * CM_off if the texture is not to be compressed.
 *
 * If a value other than CM_off is returned, this is not a guarantee that the
 * texture is actually successfully compressed on the GSG.  It may be that the
 * GSG does not support the requested compression mode, in which case the
 * texture may actually be stored uncompressed in texture memory.
 */ 1 4 this 3 3567  
1084 0 0 4 1312 3346 0 0 645 /**
 * Requests that this particular Texture be compressed when it is loaded into
 * texture memory.
 *
 * This refers to the internal compression of the texture image within texture
 * memory; it is not related to jpeg or png compression, which are disk file
 * compression formats.  The actual disk file that generated this texture may
 * be stored in a compressed or uncompressed format supported by Panda; it
 * will be decompressed on load, and then recompressed by the graphics API if
 * this parameter is not CM_off.
 *
 * If the GSG does not support this texture compression mode, the texture will
 * silently be loaded uncompressed.
 */ 2 4 this 3 3325  11 compression 1 3282  
1085 0 0 6 1314 3178 0 0 378 /**
 * Returns a flag on the texture that indicates whether the texture is
 * intended to be used as a direct-render target, by binding a framebuffer to
 * a texture and rendering directly into the texture.
 *
 * Normally, a user should not need to set this flag directly; it is set
 * automatically by the low-level display code when a texture is bound to a
 * framebuffer.
 */ 1 4 this 3 3567  
1086 0 0 4 1315 3346 0 0 539 /**
 * Sets a flag on the texture that indicates whether the texture is intended
 * to be used as a direct-render target, by binding a framebuffer to a texture
 * and rendering directly into the texture.
 *
 * This controls some low-level choices made about the texture object itself.
 * For instance, compressed textures are disallowed when this flag is set
 * true.
 *
 * Normally, a user should not need to set this flag directly; it is set
 * automatically by the low-level display code when a texture is bound to a
 * framebuffer.
 */ 2 4 this 3 3325  17 render_to_texture 1 3178  
1087 0 0 6 1317 3564 0 0 222 /**
 * This returns the default sampler state for this texture, containing the
 * wrap and filter properties specified on the texture level; it may still be
 * overridden by a sampler state specified at a higher level.
 */ 1 4 this 3 3567  
1088 0 0 4 1318 3346 0 0 502 /**
 * This sets the default sampler state for this texture, containing the wrap
 * and filter properties specified on the texture level; it may still be
 * overridden by a sampler state specified at a higher level.  This
 * encompasses the settings for get_wrap_u, get_minfilter,
 * get_anisotropic_degree, etc.
 *
 * This makes a copy of the SamplerState object, so future modifications of
 * the same SamplerState will have no effect on this texture unless you call
 * set_default_sampler again.
 */ 2 4 this 3 3325  7 sampler 1 3564  
1089 0 0 6 1321 3178 0 0 117 /**
 * Returns true if the minfilter settings on this texture indicate the use of
 * mipmapping, false otherwise.
 */ 1 4 this 3 3567  
1090 0 0 6 1322 3283 0 0 149 /**
 * Returns the current quality_level hint.  See set_quality_level().  This
 * value may return QL_default; see get_effective_quality_level().
 */ 1 4 this 3 3567  
1091 0 0 6 1323 3283 0 0 235 /**
 * Returns the current quality_level hint, or the global default quality_level
 * if this texture doesn't specify a quality level.  This value will not
 * normally return QL_default (unless there is an error in the config file)
 */ 1 4 this 3 3567  
1092 0 0 4 1324 3346 0 0 264 /**
 * Sets a hint to the renderer about the desired performance / quality
 * tradeoff for this particular texture.  This is most useful for the
 * tinydisplay software renderer; for normal, hardware-accelerated renderers,
 * this may have little or no effect.
 */ 2 4 this 3 3325  13 quality_level 1 3283  
1093 0 0 6 1327 3177 0 0 249 /**
 * Returns the number of mipmap levels that should be defined for this
 * texture, given the texture's size.
 *
 * Note that this returns a number appropriate for mipmapping, even if the
 * texture does not currently have mipmapping enabled.
 */ 1 4 this 3 3567  
1094 0 0 6 1328 3177 0 0 100 /**
 * Returns the x_size that the nth mipmap level should have, based on the
 * texture's size.
 */ 2 4 this 3 3567  1 n 1 3177  
1095 0 0 6 1329 3177 0 0 100 /**
 * Returns the y_size that the nth mipmap level should have, based on the
 * texture's size.
 */ 2 4 this 3 3567  1 n 1 3177  
1096 0 0 6 1330 3177 0 0 100 /**
 * Returns the z_size that the nth mipmap level should have, based on the
 * texture's size.
 */ 2 4 this 3 3567  1 n 1 3177  
1097 0 0 6 1331 3177 0 0 280 /**
 * Returns the total number of pages that the nth mipmap level should have,
 * based on the texture's size.  This is usually the same as
 * get_expected_mipmap_z_size(), except for a multiview texture, in which case
 * it is get_expected_mipmap_z_size() * get_num_views().
 */ 2 4 this 3 3567  1 n 1 3177  
1098 0 0 6 1333 3178 0 0 1090 /**
 * Returns true if the Texture has its image contents available in main RAM,
 * false if it exists only in texture memory or in the prepared GSG context.
 *
 * Note that this has nothing to do with whether get_ram_image() will fail or
 * not.  Even if has_ram_image() returns false, get_ram_image() may still
 * return a valid RAM image, because get_ram_image() will automatically load
 * the texture from disk if necessary.  The only thing has_ram_image() tells
 * you is whether the texture is available right now without hitting the disk
 * first.
 *
 * Note also that if an application uses only one GSG, it may appear that
 * has_ram_image() returns true if the texture has not yet been loaded by the
 * GSG, but this correlation is not true in general and should not be depended
 * on.  Specifically, if an application ever uses multiple GSG's in its
 * lifetime (for instance, by opening more than one window, or by closing its
 * window and opening another one later), then has_ram_image() may well return
 * false on textures that have never been loaded on the current GSG.
 */ 1 4 this 3 3567  
1099 0 0 6 1334 3178 0 0 146 /**
 * Returns true if the Texture has its image contents available in main RAM
 * and is uncompressed, false otherwise.  See has_ram_image().
 */ 1 4 this 3 3567  
1100 0 0 6 1335 3178 0 0 284 /**
 * Returns true if the texture's image contents are currently available in
 * main RAM, or there is reason to believe it can be loaded on demand.  That
 * is, this function returns a "best guess" as to whether get_ram_image() will
 * succeed without actually calling it first.
 */ 1 4 this 3 3567  
1101 0 0 6 1336 3209 0 0 141 /**
 * Returns the total number of bytes used by the in-memory image, across all
 * pages and views, or 0 if there is no in-memory image.
 */ 1 4 this 3 3567  
1102 0 0 6 1337 3209 0 0 208 /**
 * Returns the number of bytes used by the in-memory image per view, or 0 if
 * there is no in-memory image.  Since each view is a stack of z_size pages,
 * this is get_z_size() * get_ram_page_size().
 */ 1 4 this 3 3567  
1103 0 0 6 1338 3209 0 0 345 /**
 * Returns the number of bytes used by the in-memory image per page, or 0 if
 * there is no in-memory image.
 *
 * For a non-compressed texture, this is the same as
 * get_expected_ram_page_size().  For a compressed texture, this may be a
 * smaller value.  (We do assume that all pages will be the same size on a
 * compressed texture).
 */ 1 4 this 3 3567  
1104 0 0 6 1339 3209 0 0 122 /**
 * Returns the number of bytes that *ought* to be used by the in-memory image,
 * based on the texture parameters.
 */ 1 4 this 3 3567  
1105 0 0 6 1340 3209 0 0 178 /**
 * Returns the number of bytes that should be used per each Z page of the 3-d
 * texture.  For a 2-d or 1-d texture, this is the same as
 * get_expected_ram_image_size().
 */ 1 4 this 3 3567  
1106 0 0 7 1346 3587 0 0 1159 /**
 * Returns the system-RAM image data associated with the texture.  If the
 * texture does not currently have an associated RAM image, and the texture
 * was generated by loading an image from a disk file (the most common case),
 * this forces the reload of the same texture.  This can happen if
 * keep_texture_ram is configured to false, and we have previously prepared
 * this texture with a GSG.
 *
 * Note that it is not correct to call has_ram_image() first to test whether
 * this function will fail.  A false return value from has_ram_image()
 * indicates only that get_ram_image() may need to reload the texture from
 * disk, which it will do automatically.  However, you can call
 * might_have_ram_image(), which will return true if the ram image exists, or
 * there is a reasonable reason to believe it can be loaded.
 *
 * On the other hand, it is possible that the texture cannot be found on disk
 * or is otherwise unavailable.  If that happens, this function will return
 * NULL. There is no way to predict with 100% accuracy whether get_ram_image()
 * will return NULL without calling it first; might_have_ram_image() is the
 * closest.
 */ 1 4 this 3 3325  
1107 0 0 6 1347 3282 0 0 338 /**
 * Returns the compression mode in which the ram image is already stored pre-
 * compressed.  If this is other than CM_off, you cannot rely on the contents
 * of the ram image to be anything predicatable (it will not be an array of x
 * by y pixels, and it probably won't have the same length as
 * get_expected_ram_image_size()).
 */ 1 4 this 3 3567  
1108 0 0 7 1348 3587 0 0 586 /**
 * Returns the system-RAM image associated with the texture, in an
 * uncompressed form if at all possible.
 *
 * If get_ram_image_compression() is CM_off, then the system-RAM image is
 * already uncompressed, and this returns the same thing as get_ram_image().
 *
 * If get_ram_image_compression() is anything else, then the system-RAM image
 * is compressed.  In this case, the image will be reloaded from the
 * *original* file (not from the cache), in the hopes that an uncompressed
 * image will be found there.
 *
 * If an uncompressed image cannot be found, returns NULL.
 */ 1 4 this 3 3325  
1109 0 0 7 1349 3587 0 0 1220 /**
 * Returns the uncompressed system-RAM image data associated with the texture.
 * Rather than just returning a pointer to the data, like
 * get_uncompressed_ram_image, this function first processes the data and
 * reorders the components using the specified format string, and places these
 * into a new char array.
 *
 * The 'format' argument should specify in which order the components of the
 * texture must be.  For example, valid format strings are "RGBA", "GA",
 * "ABRG" or "AAA".  A component can also be written as "0" or "1", which
 * means an empty/black or a full/white channel, respectively.
 *
 * This function is particularly useful to copy an image in-memory to a
 * different library (for example, PIL or wxWidgets) that require a different
 * component order than Panda's internal format, BGRA. Note, however, that
 * this conversion can still be too slow if you want to do it every frame, and
 * should thus be avoided for that purpose.
 *
 * The only requirement for the reordering is that an uncompressed image must
 * be available.  If the RAM image is compressed, it will attempt to re-load
 * the texture from disk, if it doesn't find an uncompressed image there, it
 * will return NULL.
 */ 2 4 this 3 3325  16 requested_format 1 3342  
1110 0 0 7 1350 3590 0 0 246 /**
 * Returns a modifiable pointer to the system-RAM image.  This assumes the RAM
 * image should be uncompressed.  If the RAM image has been dumped, or is
 * stored compressed, creates a new one.
 *
 * This does *not* affect keep_ram_image.
 */ 1 4 this 3 3325  
1111 0 0 7 1351 3590 0 0 198 /**
 * Discards the current system-RAM image for the texture, if any, and
 * allocates a new buffer of the appropriate size.  Returns the new buffer.
 *
 * This does *not* affect keep_ram_image.
 */ 1 4 this 3 3325  
1112 0 0 36 1352 3346 0 0 0 4 4 this 3 3325  5 image 1 3358  11 compression 5 3282  9 page_size 5 3209  
1113 0 0 36 1353 3346 0 0 0 3 4 this 3 3325  5 image 1 3358  15 provided_format 1 3342  
1114 0 0 4 1354 3346 0 0 49 /**
 * Discards the current system-RAM image.
 */ 1 4 this 3 3325  
1115 0 0 4 1355 3346 0 0 476 /**
 * Sets the flag that indicates whether this Texture is eligible to have its
 * main RAM copy of the texture memory dumped when the texture is prepared for
 * rendering.
 *
 * This will be false for most textures, which can reload their images if
 * needed by rereading the input file.  However, textures that were generated
 * dynamically and cannot be easily reloaded will want to set this flag to
 * true, so that the texture will always keep its image copy around.
 */ 2 4 this 3 3325  14 keep_ram_image 1 3178  
1116 0 0 6 1356 3178 0 0 207 /**
 * Returns the flag that indicates whether this Texture is eligible to have
 * its main RAM copy of the texture memory dumped when the texture is prepared
 * for rendering.  See set_keep_ram_image().
 */ 1 4 this 3 3567  
1117 0 0 6 1357 3178 0 0 200 /**
 * Returns true if there is enough information in this Texture object to write
 * it to the bam cache successfully, false otherwise.  For most textures, this
 * is the same as has_ram_image().
 */ 1 4 this 3 3567  
1118 0 0 39 1361 3325 2558 0 0 2 4 this 3 3567  4 memo 1 3358  
1119 0 0 6 1362 3178 0 0 802 /**
 * Attempts to compress the texture's RAM image internally, to a format
 * supported by the indicated GSG.  In order for this to work, the squish
 * library must have been compiled into Panda.
 *
 * If compression is CM_on, then an appropriate compression method that is
 * supported by the indicated GSG is automatically chosen.  If the GSG pointer
 * is NULL, any of the standard DXT1/3/5 compression methods will be used,
 * regardless of whether it is supported.
 *
 * If compression is any specific compression method, that method is used
 * regardless of whether the GSG supports it.
 *
 * quality_level determines the speed/quality tradeoff of the compression.  If
 * it is QL_default, the texture's own quality_level parameter is used.
 *
 * Returns true if successful, false otherwise.
 */ 4 4 this 3 3325  11 compression 5 3282  13 quality_level 5 3283  3 gsg 5 3405  
1120 0 0 6 1363 3178 0 0 279 /**
 * Attempts to uncompress the texture's RAM image internally.  In order for
 * this to work, the squish library must have been compiled into Panda, and
 * the ram image must be compressed in a format supported by squish.
 *
 * Returns true if successful, false otherwise.
 */ 1 4 this 3 3325  
1121 0 0 6 1364 3177 0 0 285 /**
 * Returns the maximum number of mipmap level images available in system
 * memory.  The actual number may be less than this (that is, there might be
 * gaps in the sequence); use has_ram_mipmap_image() to verify each level.
 *
 * Also see get_num_loadable_ram_mipmap_images().
 */ 1 4 this 3 3567  
1122 0 0 6 1365 3178 0 0 317 /**
 * Returns true if the Texture has the nth mipmap level available in system
 * memory, false otherwise.  If the texture's minfilter mode requires
 * mipmapping (see uses_mipmaps()), and all the texture's mipmap levels are
 * not available when the texture is rendered, they will be generated
 * automatically.
 */ 2 4 this 3 3567  1 n 1 3177  
1123 0 0 6 1366 3177 0 0 558 /**
 * Returns the number of contiguous mipmap levels that exist in RAM, up until
 * the first gap in the sequence.  It is guaranteed that at least mipmap
 * levels [0, get_num_ram_mipmap_images()) exist.
 *
 * The number returned will never exceed the number of required mipmap images
 * based on the size of the texture and its filter mode.
 *
 * This method is different from get_num_ram_mipmap_images() in that it
 * returns only the number of mipmap levels that can actually be usefully
 * loaded, regardless of the actual number that may be stored.
 */ 1 4 this 3 3567  
1124 0 0 6 1367 3178 0 0 149 /**
 * Returns true if all expected mipmap levels have been defined and exist in
 * the system RAM, or false if even one mipmap level is missing.
 */ 1 4 this 3 3567  
1125 0 0 6 1368 3209 0 0 148 /**
 * Returns the number of bytes used by the in-memory image for mipmap level n,
 * or 0 if there is no in-memory image for this mipmap level.
 */ 2 4 this 3 3567  1 n 1 3177  
1126 0 0 6 1369 3209 0 0 542 /**
 * Returns the number of bytes used by the in-memory image per view for mipmap
 * level n, or 0 if there is no in-memory image for this mipmap level.
 *
 * A "view" is a collection of z_size pages for each mipmap level.  Most
 * textures have only one view, except for multiview or stereo textures.
 *
 * For a non-compressed texture, this is the same as
 * get_expected_ram_mipmap_view_size().  For a compressed texture, this may be
 * a smaller value.  (We do assume that all pages will be the same size on a
 * compressed texture).
 */ 2 4 this 3 3567  1 n 1 3177  
1127 0 0 6 1370 3209 0 0 393 /**
 * Returns the number of bytes used by the in-memory image per page for mipmap
 * level n, or 0 if there is no in-memory image for this mipmap level.
 *
 * For a non-compressed texture, this is the same as
 * get_expected_ram_mipmap_page_size().  For a compressed texture, this may be
 * a smaller value.  (We do assume that all pages will be the same size on a
 * compressed texture).
 */ 2 4 this 3 3567  1 n 1 3177  
1128 0 0 6 1371 3209 0 0 141 /**
 * Returns the number of bytes that *ought* to be used by the in-memory image
 * for mipmap level n, based on the texture parameters.
 */ 2 4 this 3 3567  1 n 1 3177  
1129 0 0 6 1372 3209 0 0 258 /**
 * Returns the number of bytes that *ought* to be used by each view of the in-
 * memory image for mipmap level n, based on the texture parameters.  For a
 * normal, non-multiview texture, this is the same as
 * get_expected_ram_mipmap_image_size(n).
 */ 2 4 this 3 3567  1 n 1 3177  
1130 0 0 6 1373 3209 0 0 205 /**
 * Returns the number of bytes that should be used per each Z page of the 3-d
 * texture, for mipmap level n.  For a 2-d or 1-d texture, this is the same as
 * get_expected_ram_mipmap_view_size(n).
 */ 2 4 this 3 3567  1 n 1 3177  
1131 0 0 7 1374 3587 0 0 151 /**
 * Returns the system-RAM image data associated with the nth mipmap level, if
 * present.  Returns NULL if the nth mipmap level is not present.
 */ 2 4 this 3 3567  1 n 1 3177  
1132 0 0 4 1375 3346 0 0 182 /**
 * Similiar to get_ram_mipmap_image(), however, in this case the void pointer
 * for the given ram image is returned.  This will be NULL unless it has been
 * explicitly set.
 */ 2 4 this 3 3567  1 n 1 3177  
1133 0 0 7 1376 3590 0 0 231 /**
 * Returns a modifiable pointer to the system-RAM image for the nth mipmap
 * level.  This assumes the RAM image is uncompressed; if this is not the
 * case, raises an assertion.
 *
 * This does *not* affect keep_ram_image.
 */ 2 4 this 3 3325  1 n 1 3177  
1134 0 0 7 1377 3590 0 0 207 /**
 * Discards the current system-RAM image for the nth mipmap level, if any, and
 * allocates a new buffer of the appropriate size.  Returns the new buffer.
 *
 * This does *not* affect keep_ram_image.
 */ 2 4 this 3 3325  1 n 1 3177  
1135 0 0 4 1379 3346 0 0 287 /**
 * Accepts a raw pointer cast as an int, which is then passed to
 * set_ram_mipmap_pointer(); see the documentation for that method.
 *
 * This variant is particularly useful to set an external pointer from a
 * language like Python, which doesn't support void pointers directly.
 */ 4 4 this 3 3325  7 pointer 1 3591  1 n 1 3177  9 page_size 1 3177  
1136 0 0 4 1380 3346 0 0 262 /**
 * Replaces the current system-RAM image for the indicated mipmap level with
 * the new data.  If compression is not CM_off, it indicates that the new data
 * is already pre-compressed in the indicated format.
 *
 * This does *not* affect keep_ram_image.
 */ 4 4 this 3 3325  1 n 1 3177  5 image 1 3587  9 page_size 5 3209  
1137 0 0 4 1381 3346 0 0 74 /**
 * Discards the current system-RAM image for the nth mipmap level.
 */ 2 4 this 3 3325  1 n 1 3177  
1138 0 0 4 1382 3346 0 0 107 /**
 * Discards the current system-RAM image for all mipmap levels, except level 0
 * (the base image).
 */ 1 4 this 3 3325  
1139 0 0 4 1383 3346 0 0 453 /**
 * Automatically fills in the n mipmap levels of the Texture, based on the
 * texture's source image.  This requires the texture's uncompressed ram image
 * to be available in system memory.  If it is not already, it will be fetched
 * if possible.
 *
 * This call is not normally necessary, since the mipmap levels will be
 * generated automatically if needed.  But there may be certain cases in which
 * you would like to call this explicitly.
 */ 1 4 this 3 3325  
1140 0 0 6 1386 3177 0 0 61 /**
 * Returns the width of the "simple" image in texels.
 */ 1 4 this 3 3567  
1141 0 0 6 1387 3177 0 0 62 /**
 * Returns the height of the "simple" image in texels.
 */ 1 4 this 3 3567  
1142 0 0 6 1388 3178 0 0 82 /**
 * Returns true if the Texture has a "simple" image available in main RAM.
 */ 1 4 this 3 3567  
1143 0 0 6 1389 3209 0 0 103 /**
 * Returns the number of bytes used by the "simple" image, or 0 if there is no
 * simple image.
 */ 1 4 this 3 3567  
1144 0 0 7 1390 3587 0 0 511 /**
 * Returns the image data associated with the "simple" texture image.  This is
 * provided for some textures as an option to display while the main texture
 * image is being loaded from disk.
 *
 * Unlike get_ram_image(), this function will always return immediately.
 * Either the simple image is available, or it is not.
 *
 * The "simple" image is always 4 components, 1 byte each, regardless of the
 * parameters of the full texture.  The simple image is only supported for
 * ordinary 2-d textures.
 */ 1 4 this 3 3567  
1145 0 0 4 1391 3346 0 0 638 /**
 * Replaces the internal "simple" texture image.  This can be used as an
 * option to display while the main texture image is being loaded from disk.
 * It is normally a very small image, 16x16 or smaller (and maybe even 1x1),
 * that is designed to give just enough sense of color to serve as a
 * placeholder until the full texture is available.
 *
 * The "simple" image is always 4 components, 1 byte each, regardless of the
 * parameters of the full texture.  The simple image is only supported for
 * ordinary 2-d textures.
 *
 * Also see generate_simple_ram_image(), modify_simple_ram_image(), and
 * new_simple_ram_image().
 */ 4 4 this 3 3325  5 image 1 3587  6 x_size 1 3177  6 y_size 1 3177  
1146 0 0 7 1392 3590 0 0 111 /**
 * Returns a modifiable pointer to the internal "simple" texture image.  See
 * set_simple_ram_image().
 */ 1 4 this 3 3325  
1147 0 0 7 1393 3590 0 0 164 /**
 * Creates an empty array for the simple ram image of the indicated size, and
 * returns a modifiable pointer to the new array.  See set_simple_ram_image().
 */ 3 4 this 3 3325  6 x_size 1 3177  6 y_size 1 3177  
1148 0 0 4 1394 3346 0 0 185 /**
 * Computes the "simple" ram image by loading the main RAM image, if it is not
 * already available, and reducing it to 16x16 or smaller.  This may be an
 * expensive operation.
 */ 1 4 this 3 3325  
1149 0 0 4 1395 3346 0 0 47 /**
 * Discards the current "simple" image.
 */ 1 4 this 3 3325  
1150 0 0 7 1401 3592 3153 0 492 /**
 * Returns a TexturePeeker object that can be used to examine the individual
 * texels stored within this Texture by (u, v) coordinate.
 *
 * If the texture has a ram image resident, that image is used.  If it does
 * not have a full ram image but does have a simple_ram_image resident, that
 * image is used instead.  If neither image is resident the full image is
 * reloaded.
 *
 * Returns NULL if the texture cannot find an image to load, or the texture
 * format is incompatible.
 */ 1 4 this 3 3325  
1151 0 0 7 1402 3398 0 0 151 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture properties (unrelated to the image) are modified.
 */ 1 4 this 3 3567  
1152 0 0 7 1403 3398 0 0 152 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture image data (including mipmap levels) are modified.
 */ 1 4 this 3 3567  
1153 0 0 7 1404 3398 0 0 136 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture's "simple" image data is modified.
 */ 1 4 this 3 3567  
1154 0 0 6 1408 3178 0 0 136 /**
 * Returns true if set_auto_texture_scale() has been set to something other
 * than ATS_unspecified for this particular texture.
 */ 1 4 this 3 3567  
1155 0 0 6 1409 3289 0 0 171 /**
 * Returns the power-of-2 texture-scaling mode that will be applied to this
 * particular texture when it is next loaded from disk.  See
 * set_textures_power_2().
 */ 1 4 this 3 3567  
1156 0 0 4 1410 3346 0 0 173 /**
 * Specifies the power-of-2 texture-scaling mode that will be applied to this
 * particular texture when it is next loaded from disk.  See
 * set_textures_power_2().
 */ 2 4 this 3 3325  5 scale 1 3289  
1157 0 0 7 1413 3594 0 0 363 /**
 * Indicates that the texture should be enqueued to be prepared in the
 * indicated prepared_objects at the beginning of the next frame.  This will
 * ensure the texture is already loaded into texture memory if it is expected
 * to be rendered soon.
 *
 * Use this function instead of prepare_now() to preload textures from a user
 * interface standpoint.
 */ 2 4 this 3 3325  16 prepared_objects 1 3404  
1158 0 0 6 1414 3178 0 0 134 /**
 * Returns true if the texture has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */ 2 4 this 3 3567  16 prepared_objects 1 3404  
1159 0 0 6 1415 3178 0 0 176 /**
 * Returns true if the texture needs to be re-loaded onto the indicated GSG,
 * either because its image data is out-of-date, or because it's not fully
 * prepared now.
 */ 2 4 this 3 3567  16 prepared_objects 1 3404  
1160 0 0 6 1416 3209 0 0 335 /**
 * Returns the number of bytes which the texture is reported to consume within
 * graphics memory, for the indicated GSG.  This may return a nonzero value
 * even if the texture is not currently resident; you should also check
 * get_resident() if you want to know how much space the texture is actually
 * consuming right now.
 */ 2 4 this 3 3567  16 prepared_objects 1 3404  
1161 0 0 6 1417 3178 0 0 106 /**
 * Returns true if this Texture was rendered in the most recent frame within
 * the indicated GSG.
 */ 2 4 this 3 3567  16 prepared_objects 1 3404  
1162 0 0 6 1418 3178 0 0 115 /**
 * Returns true if this Texture is reported to be resident within graphics
 * memory for the indicated GSG.
 */ 2 4 this 3 3567  16 prepared_objects 1 3404  
1163 0 0 6 1419 3178 0 0 157 /**
 * Frees the texture context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */ 2 4 this 3 3325  16 prepared_objects 1 3404  
1164 0 0 6 1420 3177 0 0 152 /**
 * Frees the context allocated on all objects for which the texture has been
 * declared.  Returns the number of contexts which have been freed.
 */ 1 4 this 3 3325  
1165 0 0 6 1421 3209 0 0 437 /**
 * Estimates the amount of texture memory that will be consumed by loading
 * this texture.  This returns a value that is not specific to any particular
 * graphics card or driver; it tries to make a reasonable assumption about how
 * a driver will load the texture.  It does not account for texture
 * compression or anything fancy.  This is mainly useful for debugging and
 * reporting purposes.
 *
 * Returns a value in bytes.
 */ 1 4 this 3 3567  
1166 0 0 4 1422 3346 0 0 237 /**
 * Records an arbitrary object in the Texture, associated with a specified
 * key.  The object may later be retrieved by calling get_aux_data() with the
 * same key.
 *
 * These data objects are not recorded to a bam or txo file.
 */ 3 4 this 3 3325  3 key 1 3342  8 aux_data 1 3290  
1167 0 0 4 1423 3346 0 0 67 /**
 * Removes a record previously recorded via set_aux_data().
 */ 2 4 this 3 3325  3 key 1 3342  
1168 0 0 7 1424 3290 0 0 142 /**
 * Returns a record previously recorded via set_aux_data().  Returns NULL if
 * there was no record associated with the indicated key.
 */ 2 4 this 3 3567  3 key 1 3342  
1169 0 0 4 1428 3346 0 0 232 /**
 * Set this flag to ATS_none, ATS_up, ATS_down, or ATS_pad to control the
 * scaling of textures in general, if a particular texture does not override
 * this.  See also set_auto_texture_scale() for the per-texture override.
 */ 1 5 scale 1 3289  
1170 0 0 6 1429 3289 0 0 251 /**
 * This flag returns ATS_none, ATS_up, or ATS_down and controls the scaling of
 * textures in general.  It is initialized from the config variable of the
 * same name, but it can be subsequently adjusted.  See also
 * get_auto_texture_scale().
 */ 0 
1171 0 0 6 1430 3178 0 0 181 /**
 * If true, then get_textures_power_2 has been set using set_textures_power_2.
 * If false, then get_textures_power_2 simply returns the config variable of
 * the same name.
 */ 0 
1172 0 0 6 1431 3177 0 0 61 /**
 * Returns size of the pad region.  See set_pad_size.
 */ 1 4 this 3 3567  
1173 0 0 6 1432 3177 0 0 61 /**
 * Returns size of the pad region.  See set_pad_size.
 */ 1 4 this 3 3567  
1174 0 0 6 1433 3177 0 0 61 /**
 * Returns size of the pad region.  See set_pad_size.
 */ 1 4 this 3 3567  
1175 0 0 7 1434 3595 0 0 523 /**
 * Returns a scale pair that is suitable for applying to geometry via
 * NodePath::set_tex_scale(), which will convert texture coordinates on the
 * geometry from the range 0..1 into the appropriate range to render the video
 * part of the texture.
 *
 * This is necessary only if a padding size has been set via set_pad_size()
 * (or implicitly via something like "textures-power-2 pad" in the config.prc
 * file).  In this case, this is a convenient way to generate UV's that
 * reflect the built-in padding size.
 */ 1 4 this 3 3567  
1176 0 0 4 1435 3346 0 0 468 /**
 * Sets the size of the pad region.
 *
 * Sometimes, when a video card demands power-of-two textures, it is necessary
 * to create a big texture and then only use a portion of it.  The pad region
 * indicates which portion of the texture is not really in use.  All
 * operations use the texture as a whole, including the pad region, unless
 * they explicitly state that they use only the non-pad region.
 *
 * Changing the texture's size clears the pad region.
 */ 4 4 this 3 3325  1 x 5 3177  1 y 5 3177  1 z 5 3177  
1177 0 0 4 1436 3346 0 0 104 /**
 * Changes the size of the texture, padding if necessary, and setting the pad
 * region as well.
 */ 4 4 this 3 3325  1 x 5 3177  1 y 5 3177  1 z 5 3177  
1178 0 0 6 1437 3177 0 0 168 /**
 * Returns the X size of the original disk image that this Texture was loaded
 * from (if it came from a disk file), before any automatic rescaling by
 * Panda.
 */ 1 4 this 3 3567  
1179 0 0 6 1438 3177 0 0 168 /**
 * Returns the Y size of the original disk image that this Texture was loaded
 * from (if it came from a disk file), before any automatic rescaling by
 * Panda.
 */ 1 4 this 3 3567  
1180 0 0 6 1439 3177 0 0 168 /**
 * Returns the Z size of the original disk image that this Texture was loaded
 * from (if it came from a disk file), before any automatic rescaling by
 * Panda.
 */ 1 4 this 3 3567  
1181 0 0 4 1443 3346 0 0 113 /**
 * Specifies the size of the texture as it exists in its original disk file,
 * before any Panda scaling.
 */ 4 4 this 3 3325  1 x 1 3177  1 y 1 3177  1 z 5 3177  
1182 0 0 4 1444 3346 0 0 274 /**
 * Sets the flag that indicates the texture has been loaded from a disk file
 * or PNMImage.  You should also ensure the filename has been set correctly.
 * When this flag is true, the texture may be automatically reloaded when its
 * ram image needs to be replaced.
 */ 2 4 this 3 3325  4 flag 5 3178  
1183 0 0 6 1445 3178 0 0 133 /**
 * Returns the flag that indicates the texture has been loaded from a disk
 * file or PNMImage.  See set_loaded_from_image().
 */ 1 4 this 3 3567  
1184 0 0 4 1447 3346 0 0 189 /**
 * Sets the flag that indicates the texture has been loaded from a txo file.
 * You probably shouldn't be setting this directly; it is set automatically
 * when a Texture is loaded.
 */ 2 4 this 3 3325  4 flag 5 3178  
1185 0 0 6 1448 3178 0 0 90 /**
 * Returns the flag that indicates the texture has been loaded from a txo
 * file.
 */ 1 4 this 3 3567  
1186 0 0 6 1450 3178 0 0 289 /**
 * Returns true if the special flag was set that indicates to the GSG that the
 * Texture's format should be chosen to exactly match the framebuffer's
 * format, presumably because the application intends to copy image data from
 * the framebuffer into the Texture (or vice-versa).
 */ 1 4 this 3 3567  
1187 0 0 4 1451 3346 0 0 399 /**
 * Sets the special flag that, if true, indicates to the GSG that the
 * Texture's format should be chosen to exactly match the framebuffer's
 * format, presumably because the application intends to copy image data from
 * the framebuffer into the Texture (or vice-versa).
 *
 * This sets only the graphics card's idea of the texture format; it is not
 * related to the system-memory format.
 */ 2 4 this 3 3325  4 flag 1 3178  
1188 0 0 6 1453 3178 0 0 102 /**
 * Returns the setting of the post_load_store_cache flag.  See
 * set_post_load_store_cache().
 */ 1 4 this 3 3567  
1189 0 0 4 1454 3346 0 0 418 /**
 * Sets the post_load_store_cache flag.  When this is set, the next time the
 * texture is loaded on a GSG, it will automatically extract its RAM image
 * from the GSG and save it to the global BamCache.
 *
 * This is used to store compressed RAM images in the BamCache.  This flag
 * should not be set explicitly; it is set automatically by the TexturePool
 * when model-cache-compressed-textures is set true.
 */ 2 4 this 3 3325  4 flag 1 3178  
1190 0 0 6 1456 3596 0 0 531 /**
 * Creates a context for the texture on the particular GSG, if it does not
 * already exist.  Returns the new (or old) TextureContext.  This assumes that
 * the GraphicsStateGuardian is the currently active rendering context and
 * that it is ready to accept new textures.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a texture does not need to be explicitly prepared by the user before it may
 * be rendered.
 */ 4 4 this 3 3325  4 view 1 3177  16 prepared_objects 1 3404  3 gsg 1 3405  
1191 0 0 6 1457 3177 0 0 74 /**
 * Returns the smallest power of 2 greater than or equal to value.
 */ 1 5 value 1 3177  
1192 0 0 6 1458 3177 0 0 70 /**
 * Returns the largest power of 2 less than or equal to value.
 */ 1 5 value 1 3177  
1193 0 0 4 1459 3346 0 0 451 /**
 * Asks the PNMImage to change its scale when it reads the image, according to
 * the whims of the Config.prc file.
 *
 * For most efficient results, this method should be called after
 * pnmimage.read_header() has been called, but before pnmimage.read().  This
 * method may also be called after pnmimage.read(), i.e.  when the pnmimage is
 * already loaded; in this case it will rescale the image on the spot.  Also
 * see rescale_texture().
 */ 2 4 this 3 3325  8 pnmimage 1 3583  
1194 0 0 4 1459 3346 0 0 451 /**
 * Asks the PNMImage to change its scale when it reads the image, according to
 * the whims of the Config.prc file.
 *
 * For most efficient results, this method should be called after
 * pnmimage.read_header() has been called, but before pnmimage.read().  This
 * method may also be called after pnmimage.read(), i.e.  when the pnmimage is
 * already loaded; in this case it will rescale the image on the spot.  Also
 * see rescale_texture().
 */ 3 8 pnmimage 1 3583  4 name 1 3342  18 auto_texture_scale 5 3289  
1195 0 0 6 1460 3178 0 0 391 /**
 * This method is similar to consider_rescale(), but instead of scaling a
 * separate PNMImage, it will ask the Texture to rescale its own internal
 * image to a power of 2, according to the config file requirements.  This may
 * be useful after loading a Texture image by hand, instead of reading it from
 * a disk file.  Returns true if the texture is changed, false if it was not.
 */ 1 4 this 3 3325  
1196 0 0 6 1461 3342 0 0 72 /**
 * Returns the indicated TextureType converted to a string word.
 */ 1 2 tt 1 3277  
1197 0 0 6 1462 3277 0 0 78 /**
 * Returns the TextureType corresponding to the indicated string word.
 */ 1 3 str 1 3342  
1198 0 0 6 1463 3342 0 0 74 /**
 * Returns the indicated ComponentType converted to a string word.
 */ 1 2 ct 1 3278  
1199 0 0 6 1464 3278 0 0 80 /**
 * Returns the ComponentType corresponding to the indicated string word.
 */ 1 3 str 1 3342  
1200 0 0 6 1465 3342 0 0 67 /**
 * Returns the indicated Format converted to a string word.
 */ 1 1 f 1 3279  
1201 0 0 6 1466 3279 0 0 73 /**
 * Returns the Format corresponding to the indicated string word.
 */ 1 3 str 1 3342  
1202 0 0 6 1467 3342 0 0 76 /**
 * Returns the indicated CompressionMode converted to a string word.
 */ 1 2 cm 1 3282  
1203 0 0 6 1468 3282 0 0 96 /**
 * Returns the CompressionMode value associated with the given string
 * representation.
 */ 1 3 str 1 3342  
1204 0 0 6 1469 3342 0 0 73 /**
 * Returns the indicated QualityLevel converted to a string word.
 */ 1 3 tql 1 3283  
1205 0 0 6 1470 3283 0 0 93 /**
 * Returns the QualityLevel value associated with the given string
 * representation.
 */ 1 3 str 1 3342  
1206 0 0 7 1471 3362 0 0 0 0 
1207 0 0 7 1189 3241 0 0 0 1 4 this 3 3325  
1208 0 0 6 1191 3374 0 0 0 1 4 this 3 3325  
1209 0 0 15 1496 3331 0 0 0 1 6 param0 0 3597  
1210 0 0 7 1477 3331 0 0 52 /**
 * Loads the shader with the given filename.
 */ 2 4 file 1 3569  4 lang 5 3293  
1211 0 0 7 1477 3331 0 0 77 /**
 * This variant of Shader::load loads all shader programs separately.
 */ 6 4 lang 1 3293  6 vertex 1 3569  8 fragment 1 3569  8 geometry 5 3569  12 tess_control 5 3569  15 tess_evaluation 5 3569  
1212 0 0 23 1478 3331 0 0 64 /**
 * Loads the shader, using the strings as shader bodies.
 */ 6 4 lang 1 3293  6 vertex 1 3342  8 fragment 1 3342  8 geometry 5 3342  12 tess_control 5 3342  15 tess_evaluation 5 3342  
1213 0 0 23 1478 3331 0 0 61 /**
 * Loads the shader, using the string as shader body.
 */ 2 4 body 1 3342  4 lang 5 3293  
1214 0 0 7 1479 3331 0 0 34 /**
 * Loads a compute shader.
 */ 2 4 lang 1 3293  2 fn 1 3569  
1215 0 0 7 1480 3331 0 0 58 /**
 * Loads the compute shader from the given string.
 */ 2 4 lang 1 3293  4 body 1 3342  
1216 0 0 7 1481 3599 0 0 66 /**
 * Return the Shader's filename for the given shader type.
 */ 2 4 this 3 3597  4 type 5 3294  
1217 0 0 4 1482 3346 0 0 154 /**
 * Sets the Shader's filename for the given shader type.  Useful for
 * associating a shader created with Shader.make with a name for diagnostics.
 */ 3 4 this 3 3331  4 type 1 3294  8 filename 1 3569  
1218 0 0 6 1483 3342 0 0 62 /**
 * Return the Shader's text for the given shader type.
 */ 2 4 this 3 3597  4 type 5 3294  
1219 0 0 6 1484 3178 0 0 160 /**
 * Returns true if the shader contains a compile-time error.  This doesn't
 * tell you whether or not the shader is supported on the current video card.
 */ 1 4 this 3 3597  
1220 0 0 6 1485 3293 0 0 72 /**
 * Returns the shader language in which this shader was written.
 */ 1 4 this 3 3597  
1221 0 0 6 1486 3178 0 0 94 /**
 * Returns true if the fullpath has been set and is available.  See
 * set_fullpath().
 */ 1 4 this 3 3597  
1222 0 0 6 1487 3569 0 0 126 /**
 * Returns the fullpath that has been set.  This is the full path to the file
 * as it was found along the model-path.
 */ 1 4 this 3 3597  
1223 0 0 6 1488 3178 0 0 102 /**
 * Returns the setting of the cache_compiled_shader flag.  See
 * set_cache_compiled_shader().
 */ 1 4 this 3 3597  
1224 0 0 4 1489 3346 0 0 414 /**
 * Sets the cache_compiled_shader flag.  When this is set, the next time the
 * Shader is loaded on a GSG, it will automatically extract the compiled
 * shader from the GSG and save it to the global BamCache.
 *
 * This is used to store compiled shaders in the BamCache.  This flag should
 * not be set explicitly; it is set automatically by the ShaderPool when
 * model-cache-compiled-shaders is set true.
 */ 2 4 this 3 3331  4 flag 1 3178  
1225 0 0 7 1490 3594 0 0 362 /**
 * Indicates that the shader should be enqueued to be prepared in the
 * indicated prepared_objects at the beginning of the next frame.  This will
 * ensure the texture is already loaded into texture memory if it is expected
 * to be rendered soon.
 *
 * Use this function instead of prepare_now() to preload textures from a user
 * interface standpoint.
 */ 2 4 this 3 3331  16 prepared_objects 1 3404  
1226 0 0 6 1491 3178 0 0 133 /**
 * Returns true if the shader has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */ 2 4 this 3 3597  16 prepared_objects 1 3404  
1227 0 0 6 1492 3178 0 0 157 /**
 * Frees the texture context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */ 2 4 this 3 3331  16 prepared_objects 1 3404  
1228 0 0 6 1493 3177 0 0 152 /**
 * Frees the context allocated on all objects for which the texture has been
 * declared.  Returns the number of contexts which have been freed.
 */ 1 4 this 3 3331  
1229 0 0 6 1494 3600 0 0 528 /**
 * Creates a context for the shader on the particular GSG, if it does not
 * already exist.  Returns the new (or old) ShaderContext.  This assumes that
 * the GraphicsStateGuardian is the currently active rendering context and
 * that it is ready to accept new textures.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a shader does not need to be explicitly prepared by the user before it may
 * be rendered.
 */ 3 4 this 3 3331  16 prepared_objects 1 3404  3 gsg 1 3405  
1230 0 0 7 1495 3362 0 0 0 0 
1231 0 0 15 1505 3603 2790 0 0 1 6 param0 0 3601  
1232 0 0 7 1505 3603 2790 0 155 /**
 * Creates an uninitialized buffer object with the given size.  For now, these
 * parameters cannot be modified, but this may change in the future.
 */ 3 4 name 1 3342  4 size 1 3298  10 usage_hint 1 3169  
1233 0 0 7 1505 3603 2790 0 152 /**
 * Creates a buffer object initialized with the given data.  For now, these
 * parameters cannot be modified, but this may change in the future.
 */ 3 4 name 1 3342  12 initial_data 1 3412  10 usage_hint 1 3169  
1234 0 0 4 1511 3346 0 0 344 /**
 * Indicates that the data should be enqueued to be prepared in the indicated
 * prepared_objects at the beginning of the next frame.  This will ensure the
 * data is already loaded into the GSG if it is expected to be rendered soon.
 *
 * Use this function instead of prepare_now() to preload datas from a user
 * interface standpoint.
 */ 2 4 this 3 3603  16 prepared_objects 1 3404  
1235 0 0 6 1512 3178 0 0 131 /**
 * Returns true if the data has already been prepared or enqueued for
 * preparation on the indicated GSG, false otherwise.
 */ 2 4 this 3 3601  16 prepared_objects 1 3404  
1236 0 0 6 1513 3451 0 0 521 /**
 * Creates a context for the data on the particular GSG, if it does not
 * already exist.  Returns the new (or old) BufferContext.  This assumes
 * that the GraphicsStateGuardian is the currently active rendering context
 * and that it is ready to accept new datas.  If this is not necessarily the
 * case, you should use prepare() instead.
 *
 * Normally, this is not called directly except by the GraphicsStateGuardian;
 * a data does not need to be explicitly prepared by the user before it may be
 * rendered.
 */ 3 4 this 3 3603  16 prepared_objects 1 3404  3 gsg 1 3405  
1237 0 0 6 1514 3178 0 0 154 /**
 * Frees the data context only on the indicated object, if it exists there.
 * Returns true if it was released, false if it had not been prepared.
 */ 2 4 this 3 3603  16 prepared_objects 1 3404  
1238 0 0 6 1515 3177 0 0 149 /**
 * Frees the context allocated on all objects for which the data has been
 * declared.  Returns the number of contexts which have been freed.
 */ 1 4 this 3 3603  
1239 0 0 7 1516 3362 0 0 0 0 
1240 0 0 7 1498 3241 0 0 0 1 4 this 3 3603  
1241 0 0 6 1500 3374 0 0 0 1 4 this 3 3603  
1242 0 0 6 1502 3353 0 0 0 1 4 this 3 3603  
1243 0 0 6 1518 3342 0 0 167 /**
 * Returns the name of the PreparedGraphicsObjects structure.  This is an
 * arbitrary name that serves mainly to uniquify the context for PStats
 * reporting.
 */ 1 4 this 3 3604  
1244 0 0 4 1519 3346 0 0 503 /**
 * Sets an artificial cap on graphics memory that will be imposed on this GSG.
 *
 * This limits the total amount of graphics memory, including texture memory
 * and vertex buffer memory, that will be consumed by the GSG, regardless of
 * whether the hardware claims to provide more graphics memory than this.  It
 * is useful to put a ceiling on graphics memory consumed, since some drivers
 * seem to allow the application to consume more memory than the hardware can
 * realistically support.
 */ 2 4 this 3 3404  5 limit 1 3209  
1245 0 0 6 1520 3209 0 0 127 /**
 * Returns the artificial cap on graphics memory that will be imposed on this
 * GSG.  See set_graphics_memory_limit().
 */ 1 4 this 3 3604  
1246 0 0 4 1521 3346 0 0 127 /**
 * Writes to the indicated ostream a report of how the various textures and
 * vertex buffers are allocated in the LRU.
 */ 2 4 this 3 3604  3 out 1 3347  
1247 0 0 4 1522 3346 0 0 127 /**
 * Writes to the indicated ostream a report of how the various textures and
 * vertex buffers are allocated in the LRU.
 */ 2 4 this 3 3604  3 out 1 3347  
1248 0 0 4 1523 3346 0 0 62 /**
 * Releases all prepared objects of all kinds at once.
 */ 1 4 this 3 3404  
1249 0 0 6 1524 3177 0 0 107 /**
 * Returns the number of objects of any kind that have been enqueued to be
 * prepared on this GSG.
 */ 1 4 this 3 3604  
1250 0 0 6 1525 3177 0 0 100 /**
 * Returns the number of objects of any kind that have already been prepared
 * on this GSG.
 */ 1 4 this 3 3604  
1251 0 0 4 1526 3346 0 0 156 /**
 * Indicates that a texture would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */ 2 4 this 3 3404  3 tex 1 3325  
1252 0 0 6 1527 3178 0 0 84 /**
 * Returns true if the texture has been queued on this GSG, false otherwise.
 */ 2 4 this 3 3604  3 tex 1 3567  
1253 0 0 6 1528 3178 0 0 385 /**
 * Removes a texture from the queued list of textures to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the texture will automatically
 * be dequeued and prepared at the next frame.
 *
 * The return value is true if the texture is successfully dequeued, false if
 * it had not been queued.
 */ 2 4 this 3 3404  3 tex 1 3325  
1254 0 0 6 1529 3178 0 0 86 /**
 * Returns true if the texture has been prepared on this GSG, false otherwise.
 */ 2 4 this 3 3604  3 tex 1 3567  
1255 0 0 4 1530 3346 0 0 107 /**
 * Releases a texture if it has already been prepared, or removes it from the
 * preparation queue.
 */ 2 4 this 3 3404  3 tex 1 3325  
1256 0 0 4 1530 3346 0 0 478 /**
 * Indicates that a texture context, created by a previous call to
 * prepare_texture(), is no longer needed.  The driver resources will not be
 * freed until some GSG calls update(), indicating it is at a stage where it
 * is ready to release textures--this prevents conflicts from threading or
 * multiple GSG's sharing textures (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_texture is called).
 */ 2 4 this 3 3404  2 tc 1 3596  
1257 0 0 6 1531 3177 0 0 184 /**
 * Releases all textures at once.  This will force them to be reloaded into
 * texture memory for all GSG's that share this object.  Returns the number of
 * textures released.
 */ 1 4 this 3 3404  
1258 0 0 6 1532 3177 0 0 96 /**
 * Returns the number of textures that have been enqueued to be prepared on
 * this GSG.
 */ 1 4 this 3 3604  
1259 0 0 6 1533 3177 0 0 86 /**
 * Returns the number of textures that have already been prepared on this GSG.
 */ 1 4 this 3 3604  
1260 0 0 6 1534 3596 0 0 727 /**
 * Immediately creates a new TextureContext for the indicated texture and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new textures.  If
 * this is not necessarily the case, you should use enqueue_texture() instead.
 *
 * Normally, this function is not called directly.  Call
 * Texture::prepare_now() instead.
 *
 * The TextureContext contains all of the pertinent information needed by the
 * GSG to keep track of this one particular texture, and will exist as long as
 * the texture is ready to be rendered.
 *
 * When either the Texture or the PreparedGraphicsObjects object destructs,
 * the TextureContext will be deleted.
 */ 4 4 this 3 3404  3 tex 1 3325  4 view 1 3177  3 gsg 1 3405  
1261 0 0 4 1535 3346 0 0 156 /**
 * Indicates that a sampler would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */ 2 4 this 3 3404  7 sampler 1 3564  
1262 0 0 6 1536 3178 0 0 84 /**
 * Returns true if the sampler has been queued on this GSG, false otherwise.
 */ 2 4 this 3 3604  7 sampler 1 3564  
1263 0 0 6 1537 3178 0 0 385 /**
 * Removes a sampler from the queued list of samplers to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the sampler will automatically
 * be dequeued and prepared at the next frame.
 *
 * The return value is true if the sampler is successfully dequeued, false if
 * it had not been queued.
 */ 2 4 this 3 3404  7 sampler 1 3564  
1264 0 0 6 1538 3178 0 0 86 /**
 * Returns true if the sampler has been prepared on this GSG, false otherwise.
 */ 2 4 this 3 3604  7 sampler 1 3564  
1265 0 0 4 1539 3346 0 0 261 /**
 * Indicates that a sampler context, created by a previous call to
 * prepare_sampler(), is no longer needed.  The driver resources will not be
 * freed until some GSG calls update(), indicating it is at a stage where it
 * is ready to release samplers.
 */ 2 4 this 3 3404  2 sc 1 3565  
1266 0 0 4 1539 3346 0 0 107 /**
 * Releases a sampler if it has already been prepared, or removes it from the
 * preparation queue.
 */ 2 4 this 3 3404  7 sampler 1 3564  
1267 0 0 6 1540 3177 0 0 161 /**
 * Releases all samplers at once.  This will force them to be reloaded for all
 * GSG's that share this object.  Returns the number of samplers released.
 */ 1 4 this 3 3404  
1268 0 0 6 1541 3177 0 0 96 /**
 * Returns the number of samplers that have been enqueued to be prepared on
 * this GSG.
 */ 1 4 this 3 3604  
1269 0 0 6 1542 3177 0 0 86 /**
 * Returns the number of samplers that have already been prepared on this GSG.
 */ 1 4 this 3 3604  
1270 0 0 6 1543 3565 0 0 727 /**
 * Immediately creates a new SamplerContext for the indicated sampler and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new samplers.  If
 * this is not necessarily the case, you should use enqueue_sampler() instead.
 *
 * Normally, this function is not called directly.  Call
 * Sampler::prepare_now() instead.
 *
 * The SamplerContext contains all of the pertinent information needed by the
 * GSG to keep track of this one particular sampler, and will exist as long as
 * the sampler is ready to be rendered.
 *
 * When either the Sampler or the PreparedGraphicsObjects object destructs,
 * the SamplerContext will be deleted.
 */ 3 4 this 3 3404  7 sampler 1 3564  3 gsg 1 3405  
1271 0 0 4 1544 3346 0 0 153 /**
 * Indicates that a geom would like to be put on the list to be prepared when
 * the GSG is next ready to do this (presumably at the next frame).
 */ 2 4 this 3 3404  4 geom 1 3257  
1272 0 0 6 1545 3178 0 0 81 /**
 * Returns true if the geom has been queued on this GSG, false otherwise.
 */ 2 4 this 3 3604  4 geom 1 3468  
1273 0 0 6 1546 3178 0 0 374 /**
 * Removes a geom from the queued list of geoms to be prepared.  Normally it
 * is not necessary to call this, unless you change your mind about preparing
 * it at the last minute, since the geom will automatically be dequeued and
 * prepared at the next frame.
 *
 * The return value is true if the geom is successfully dequeued, false if it
 * had not been queued.
 */ 2 4 this 3 3404  4 geom 1 3257  
1274 0 0 6 1547 3178 0 0 95 /**
 * Returns true if the vertex buffer has been prepared on this GSG, false
 * otherwise.
 */ 2 4 this 3 3604  4 geom 1 3468  
1275 0 0 4 1548 3346 0 0 463 /**
 * Indicates that a geom context, created by a previous call to
 * prepare_geom(), is no longer needed.  The driver resources will not be
 * freed until some GSG calls update(), indicating it is at a stage where it
 * is ready to release geoms--this prevents conflicts from threading or
 * multiple GSG's sharing geoms (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_geom is called).
 */ 2 4 this 3 3404  2 gc 1 3472  
1276 0 0 6 1549 3177 0 0 175 /**
 * Releases all geoms at once.  This will force them to be reloaded into geom
 * memory for all GSG's that share this object.  Returns the number of geoms
 * released.
 */ 1 4 this 3 3404  
1277 0 0 6 1550 3177 0 0 93 /**
 * Returns the number of geoms that have been enqueued to be prepared on this
 * GSG.
 */ 1 4 this 3 3604  
1278 0 0 6 1551 3177 0 0 83 /**
 * Returns the number of geoms that have already been prepared on this GSG.
 */ 1 4 this 3 3604  
1279 0 0 6 1552 3472 0 0 697 /**
 * Immediately creates a new GeomContext for the indicated geom and returns
 * it.  This assumes that the GraphicsStateGuardian is the currently active
 * rendering context and that it is ready to accept new geoms.  If this is not
 * necessarily the case, you should use enqueue_geom() instead.
 *
 * Normally, this function is not called directly.  Call Geom::prepare_now()
 * instead.
 *
 * The GeomContext contains all of the pertinent information needed by the GSG
 * to keep track of this one particular geom, and will exist as long as the
 * geom is ready to be rendered.
 *
 * When either the Geom or the PreparedGraphicsObjects object destructs, the
 * GeomContext will be deleted.
 */ 3 4 this 3 3404  4 geom 1 3257  3 gsg 1 3405  
1280 0 0 4 1553 3346 0 0 155 /**
 * Indicates that a shader would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */ 2 4 this 3 3404  6 shader 1 3331  
1281 0 0 6 1554 3178 0 0 83 /**
 * Returns true if the shader has been queued on this GSG, false otherwise.
 */ 2 4 this 3 3604  6 shader 1 3597  
1282 0 0 6 1555 3178 0 0 382 /**
 * Removes a shader from the queued list of shaders to be prepared.  Normally
 * it is not necessary to call this, unless you change your mind about
 * preparing it at the last minute, since the shader will automatically be
 * dequeued and prepared at the next frame.
 *
 * The return value is true if the shader is successfully dequeued, false if
 * it had not been queued.
 */ 2 4 this 3 3404  6 shader 1 3331  
1283 0 0 6 1556 3178 0 0 85 /**
 * Returns true if the shader has been prepared on this GSG, false otherwise.
 */ 2 4 this 3 3604  6 shader 1 3597  
1284 0 0 4 1557 3346 0 0 473 /**
 * Indicates that a shader context, created by a previous call to
 * prepare_shader(), is no longer needed.  The driver resources will not be
 * freed until some GSG calls update(), indicating it is at a stage where it
 * is ready to release shaders--this prevents conflicts from threading or
 * multiple GSG's sharing shaders (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_shader is called).
 */ 2 4 this 3 3404  2 sc 1 3600  
1285 0 0 6 1558 3177 0 0 181 /**
 * Releases all shaders at once.  This will force them to be reloaded into
 * shader memory for all GSG's that share this object.  Returns the number of
 * shaders released.
 */ 1 4 this 3 3404  
1286 0 0 6 1559 3177 0 0 95 /**
 * Returns the number of shaders that have been enqueued to be prepared on
 * this GSG.
 */ 1 4 this 3 3604  
1287 0 0 6 1560 3177 0 0 85 /**
 * Returns the number of shaders that have already been prepared on this GSG.
 */ 1 4 this 3 3604  
1288 0 0 6 1561 3600 0 0 717 /**
 * Immediately creates a new ShaderContext for the indicated shader and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new shaders.  If
 * this is not necessarily the case, you should use enqueue_shader() instead.
 *
 * Normally, this function is not called directly.  Call Shader::prepare_now()
 * instead.
 *
 * The ShaderContext contains all of the pertinent information needed by the
 * GSG to keep track of this one particular shader, and will exist as long as
 * the shader is ready to be rendered.
 *
 * When either the Shader or the PreparedGraphicsObjects object destructs, the
 * ShaderContext will be deleted.
 */ 3 4 this 3 3404  6 shader 1 3331  3 gsg 1 3405  
1289 0 0 4 1562 3346 0 0 155 /**
 * Indicates that a buffer would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */ 2 4 this 3 3404  4 data 1 3213  
1290 0 0 6 1563 3178 0 0 93 /**
 * Returns true if the vertex buffer has been queued on this GSG, false
 * otherwise.
 */ 2 4 this 3 3604  4 data 1 3365  
1291 0 0 6 1564 3178 0 0 383 /**
 * Removes a buffer from the queued list of data arrays to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the data will automatically be
 * dequeued and prepared at the next frame.
 *
 * The return value is true if the buffer is successfully dequeued, false if
 * it had not been queued.
 */ 2 4 this 3 3404  4 data 1 3213  
1292 0 0 6 1565 3178 0 0 95 /**
 * Returns true if the vertex buffer has been prepared on this GSG, false
 * otherwise.
 */ 2 4 this 3 3604  4 data 1 3365  
1293 0 0 4 1566 3346 0 0 481 /**
 * Indicates that a data context, created by a previous call to
 * prepare_vertex_buffer(), is no longer needed.  The driver resources will
 * not be freed until some GSG calls update(), indicating it is at a stage
 * where it is ready to release datas--this prevents conflicts from threading
 * or multiple GSG's sharing datas (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_vertex_buffer is called).
 */ 2 4 this 3 3404  3 vbc 1 3407  
1294 0 0 6 1567 3177 0 0 175 /**
 * Releases all datas at once.  This will force them to be reloaded into data
 * memory for all GSG's that share this object.  Returns the number of datas
 * released.
 */ 1 4 this 3 3404  
1295 0 0 6 1568 3177 0 0 102 /**
 * Returns the number of vertex buffers that have been enqueued to be prepared
 * on this GSG.
 */ 1 4 this 3 3604  
1296 0 0 6 1569 3177 0 0 95 /**
 * Returns the number of vertex buffers that have already been prepared on
 * this GSG.
 */ 1 4 this 3 3604  
1297 0 0 6 1570 3407 0 0 733 /**
 * Immediately creates a new VertexBufferContext for the indicated data and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new datas.  If this
 * is not necessarily the case, you should use enqueue_vertex_buffer()
 * instead.
 *
 * Normally, this function is not called directly.  Call Data::prepare_now()
 * instead.
 *
 * The VertexBufferContext contains all of the pertinent information needed by
 * the GSG to keep track of this one particular data, and will exist as long
 * as the data is ready to be rendered.
 *
 * When either the Data or the PreparedGraphicsObjects object destructs, the
 * VertexBufferContext will be deleted.
 */ 3 4 this 3 3404  4 data 1 3213  3 gsg 1 3405  
1298 0 0 4 1571 3346 0 0 155 /**
 * Indicates that a buffer would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */ 2 4 this 3 3404  4 data 1 3453  
1299 0 0 6 1572 3178 0 0 92 /**
 * Returns true if the index buffer has been queued on this GSG, false
 * otherwise.
 */ 2 4 this 3 3604  4 data 1 3454  
1300 0 0 6 1573 3178 0 0 383 /**
 * Removes a buffer from the queued list of data arrays to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the data will automatically be
 * dequeued and prepared at the next frame.
 *
 * The return value is true if the buffer is successfully dequeued, false if
 * it had not been queued.
 */ 2 4 this 3 3404  4 data 1 3453  
1301 0 0 6 1574 3178 0 0 94 /**
 * Returns true if the index buffer has been prepared on this GSG, false
 * otherwise.
 */ 2 4 this 3 3604  4 data 1 3454  
1302 0 0 4 1575 3346 0 0 479 /**
 * Indicates that a data context, created by a previous call to
 * prepare_index_buffer(), is no longer needed.  The driver resources will not
 * be freed until some GSG calls update(), indicating it is at a stage where
 * it is ready to release datas--this prevents conflicts from threading or
 * multiple GSG's sharing datas (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_index_buffer is called).
 */ 2 4 this 3 3404  3 ibc 1 3606  
1303 0 0 6 1576 3177 0 0 175 /**
 * Releases all datas at once.  This will force them to be reloaded into data
 * memory for all GSG's that share this object.  Returns the number of datas
 * released.
 */ 1 4 this 3 3404  
1304 0 0 6 1577 3177 0 0 101 /**
 * Returns the number of index buffers that have been enqueued to be prepared
 * on this GSG.
 */ 1 4 this 3 3604  
1305 0 0 6 1578 3177 0 0 94 /**
 * Returns the number of index buffers that have already been prepared on this
 * GSG.
 */ 1 4 this 3 3604  
1306 0 0 6 1579 3606 0 0 726 /**
 * Immediately creates a new IndexBufferContext for the indicated data and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new datas.  If this
 * is not necessarily the case, you should use enqueue_index_buffer() instead.
 *
 * Normally, this function is not called directly.  Call Data::prepare_now()
 * instead.
 *
 * The IndexBufferContext contains all of the pertinent information needed by
 * the GSG to keep track of this one particular data, and will exist as long
 * as the data is ready to be rendered.
 *
 * When either the Data or the PreparedGraphicsObjects object destructs, the
 * IndexBufferContext will be deleted.
 */ 3 4 this 3 3404  4 data 1 3453  3 gsg 1 3405  
1307 0 0 4 1580 3346 0 0 155 /**
 * Indicates that a buffer would like to be put on the list to be prepared
 * when the GSG is next ready to do this (presumably at the next frame).
 */ 2 4 this 3 3404  4 data 1 3603  
1308 0 0 6 1581 3178 0 0 92 /**
 * Returns true if the index buffer has been queued on this GSG, false
 * otherwise.
 */ 2 4 this 3 3604  4 data 1 3601  
1309 0 0 6 1582 3178 0 0 383 /**
 * Removes a buffer from the queued list of data arrays to be prepared.
 * Normally it is not necessary to call this, unless you change your mind
 * about preparing it at the last minute, since the data will automatically be
 * dequeued and prepared at the next frame.
 *
 * The return value is true if the buffer is successfully dequeued, false if
 * it had not been queued.
 */ 2 4 this 3 3404  4 data 1 3603  
1310 0 0 6 1583 3178 0 0 94 /**
 * Returns true if the index buffer has been prepared on this GSG, false
 * otherwise.
 */ 2 4 this 3 3604  4 data 1 3601  
1311 0 0 4 1584 3346 0 0 481 /**
 * Indicates that a data context, created by a previous call to
 * prepare_shader_buffer(), is no longer needed.  The driver resources will not
 * be freed until some GSG calls update(), indicating it is at a stage where
 * it is ready to release datas--this prevents conflicts from threading or
 * multiple GSG's sharing datas (we have no way of knowing which graphics
 * context is currently active, or what state it's in, at the time
 * release_shader_buffer is called).
 */ 2 4 this 3 3404  2 bc 1 3451  
1312 0 0 6 1585 3177 0 0 175 /**
 * Releases all datas at once.  This will force them to be reloaded into data
 * memory for all GSG's that share this object.  Returns the number of datas
 * released.
 */ 1 4 this 3 3404  
1313 0 0 6 1586 3177 0 0 101 /**
 * Returns the number of index buffers that have been enqueued to be prepared
 * on this GSG.
 */ 1 4 this 3 3604  
1314 0 0 6 1587 3177 0 0 94 /**
 * Returns the number of index buffers that have already been prepared on this
 * GSG.
 */ 1 4 this 3 3604  
1315 0 0 6 1588 3451 0 0 712 /**
 * Immediately creates a new BufferContext for the indicated data and
 * returns it.  This assumes that the GraphicsStateGuardian is the currently
 * active rendering context and that it is ready to accept new datas.  If this
 * is not necessarily the case, you should use enqueue_shader_buffer() instead.
 *
 * Normally, this function is not called directly.  Call Data::prepare_now()
 * instead.
 *
 * The BufferContext contains all of the pertinent information needed by
 * the GSG to keep track of this one particular data, and will exist as long
 * as the data is ready to be rendered.
 *
 * When either the Data or the PreparedGraphicsObjects object destructs, the
 * BufferContext will be deleted.
 */ 3 4 this 3 3404  4 data 1 3603  3 gsg 1 3405  
1316 0 0 7 1594 3453 2124 0 68 /**
 * Returns the pointer to the client-side array data object.
 */ 1 4 this 3 3607  
1317 0 0 6 1595 3178 0 0 101 /**
 * Returns true if the data has changed size since the last time mark_loaded()
 * was called.
 */ 2 4 this 3 3607  6 reader 1 3609  
1318 0 0 6 1596 3178 0 0 111 /**
 * Returns true if the data has changed its usage hint since the last time
 * mark_loaded() was called.
 */ 2 4 this 3 3607  6 reader 1 3609  
1319 0 0 6 1597 3178 0 0 102 /**
 * Returns true if the data has been modified since the last time
 * mark_loaded() was called.
 */ 2 4 this 3 3607  6 reader 1 3609  
1320 0 0 7 1598 3362 0 0 0 0 
1321 0 0 6 1590 3451 0 0 0 1 4 this 3 3606  
1322 0 0 6 1592 3351 0 0 0 1 4 this 3 3606  
1323 0 0 7 1602 3614 2948 0 0 1 4 this 3 3612  
1324 0 0 6 1603 3178 0 0 447 /**
 * Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is
 * the center of the lens and (-1,-1) is the lower-left corner, compute the
 * corresponding vector in space that maps to this point, if such a vector can
 * be determined.  The vector is returned by indicating the points on the near
 * plane and far plane that both map to the indicated 2-d point.
 *
 * Returns true if the vector is defined, or false otherwise.
 */ 4 4 this 3 3612  7 point2d 1 3615  10 near_point 1 3619  9 far_point 1 3619  
1325 0 0 6 1603 3178 0 0 499 /**
 * Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is
 * the center of the lens and (-1,-1) is the lower-left corner, compute the
 * corresponding vector in space that maps to this point, if such a vector can
 * be determined.  The vector is returned by indicating the points on the near
 * plane and far plane that both map to the indicated 2-d point.
 *
 * The z coordinate of the 2-d point is ignored.
 *
 * Returns true if the vector is defined, or false otherwise.
 */ 4 4 this 3 3612  7 point2d 1 3620  10 near_point 1 3619  9 far_point 1 3619  
1326 0 0 6 1604 3178 0 0 262 /**
 * Uses the depth component of the 3-d result from project() to compute the
 * original point in 3-d space corresponding to a particular point on the
 * lens.  This exactly reverses project(), assuming the point does fall
 * legitimately within the lens.
 */ 3 4 this 3 3612  7 point2d 1 3620  7 point3d 1 3619  
1327 0 0 6 1605 3178 0 0 513 /**
 * Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is
 * the center of the lens and (-1,-1) is the lower-left corner, compute the
 * vector that corresponds to the view direction.  This will be parallel to
 * the normal on the surface (the far plane) corresponding to the lens shape
 * at this point.
 *
 * See the comment block on Lens::extrude_vec_impl() for a more in-depth
 * comment on the meaning of this vector.
 *
 * Returns true if the vector is defined, or false otherwise.
 */ 3 4 this 3 3612  7 point2d 1 3615  5 vec3d 1 3622  
1328 0 0 6 1605 3178 0 0 565 /**
 * Given a 2-d point in the range (-1,1) in both dimensions, where (0,0) is
 * the center of the lens and (-1,-1) is the lower-left corner, compute the
 * vector that corresponds to the view direction.  This will be parallel to
 * the normal on the surface (the far plane) corresponding to the lens shape
 * at this point.
 *
 * See the comment block on Lens::extrude_vec_impl() for a more in-depth
 * comment on the meaning of this vector.
 *
 * The z coordinate of the 2-d point is ignored.
 *
 * Returns true if the vector is defined, or false otherwise.
 */ 3 4 this 3 3612  7 point2d 1 3620  5 vec3d 1 3622  
1329 0 0 6 1606 3178 0 0 449 /**
 * Given a 3-d point in space, determine the 2-d point this maps to, in the
 * range (-1,1) in both dimensions, where (0,0) is the center of the lens and
 * (-1,-1) is the lower-left corner.
 *
 * Returns true if the 3-d point is in front of the lens and within the
 * viewing frustum (in which case point2d is filled in), or false otherwise
 * (in which case point2d will be filled in with something, which may or may
 * not be meaningful).
 */ 3 4 this 3 3612  7 point3d 1 3620  7 point2d 1 3624  
1330 0 0 6 1606 3178 0 0 618 /**
 * Given a 3-d point in space, determine the 2-d point this maps to, in the
 * range (-1,1) in both dimensions, where (0,0) is the center of the lens and
 * (-1,-1) is the lower-left corner.
 *
 * The z coordinate will also be set to a value in the range (-1, 1), where 1
 * represents a point on the near plane, and -1 represents a point on the far
 * plane.
 *
 * Returns true if the 3-d point is in front of the lens and within the
 * viewing frustum (in which case point2d is filled in), or false otherwise
 * (in which case point2d will be filled in with something, which may or may
 * not be meaningful).
 */ 3 4 this 3 3612  7 point3d 1 3620  7 point2d 1 3619  
1331 0 0 4 1607 3346 0 0 343 /**
 * Sets the name of the event that will be generated whenever any properties
 * of the Lens have changed.  If this is not set for a particular lens, no
 * event will be generated.
 *
 * The event is thrown with one parameter, the lens itself.  This can be used
 * to automatically track changes to camera fov, etc.  in the application.
 */ 2 4 this 3 3614  5 event 1 3342  
1332 0 0 6 1608 3342 0 0 128 /**
 * Returns the name of the event that will be generated whenever any
 * properties of this particular Lens have changed.
 */ 1 4 this 3 3612  
1333 0 0 4 1610 3346 0 0 138 /**
 * Specifies the coordinate system that all 3-d computations are performed
 * within for this Lens.  Normally, this is CS_default.
 */ 2 4 this 3 3614  2 cs 1 3303  
1334 0 0 6 1611 3303 0 0 136 /**
 * Returns the coordinate system that all 3-d computations are performed
 * within for this Lens.  Normally, this is CS_default.
 */ 1 4 this 3 3612  
1335 0 0 4 1614 3346 0 0 72 /**
 * Resets all lens parameters to their initial default settings.
 */ 1 4 this 3 3614  
1336 0 0 4 1615 3346 0 0 767 /**
 * Sets the size and shape of the "film" within the lens.  This both
 * establishes the units used by calls like set_focal_length(), and
 * establishes the aspect ratio of the frame.
 *
 * In a physical camera, the field of view of a lens is determined by the
 * lens' focal length and by the size of the film area exposed by the lens.
 * For instance, a 35mm camera exposes a rectangle on the film about 24mm x
 * 36mm, which means a 50mm lens gives about a 40-degree horizontal field of
 * view.
 *
 * In the virtual camera, you may set the film size to any units here, and
 * specify a focal length in the same units to simulate the same effect.  Or,
 * you may ignore this parameter, and specify the field of view and aspect
 * ratio of the lens directly.
 */ 2 4 this 3 3614  9 film_size 1 3534  
1337 0 0 4 1615 3346 0 0 206 /**
 * Sets the horizontal size of the film without changing its shape.  The
 * aspect ratio remains unchanged; this computes the vertical size of the film
 * to automatically maintain the aspect ratio.
 */ 2 4 this 3 3614  5 width 1 3220  
1338 0 0 4 1615 3346 0 0 767 /**
 * Sets the size and shape of the "film" within the lens.  This both
 * establishes the units used by calls like set_focal_length(), and
 * establishes the aspect ratio of the frame.
 *
 * In a physical camera, the field of view of a lens is determined by the
 * lens' focal length and by the size of the film area exposed by the lens.
 * For instance, a 35mm camera exposes a rectangle on the film about 24mm x
 * 36mm, which means a 50mm lens gives about a 40-degree horizontal field of
 * view.
 *
 * In the virtual camera, you may set the film size to any units here, and
 * specify a focal length in the same units to simulate the same effect.  Or,
 * you may ignore this parameter, and specify the field of view and aspect
 * ratio of the lens directly.
 */ 3 4 this 3 3614  5 width 1 3220  6 height 1 3220  
1339 0 0 6 1616 3534 0 0 102 /**
 * Returns the horizontal and vertical film size of the virtual film.  See
 * set_film_size().
 */ 1 4 this 3 3612  
1340 0 0 4 1621 3346 0 0 193 /**
 * Sets the horizontal and vertical offset amounts of this Lens.  These are
 * both in the same units specified in set_film_size().
 *
 * This can be used to establish an off-axis lens.
 */ 2 4 this 3 3614  11 film_offset 1 3534  
1341 0 0 4 1621 3346 0 0 193 /**
 * Sets the horizontal and vertical offset amounts of this Lens.  These are
 * both in the same units specified in set_film_size().
 *
 * This can be used to establish an off-axis lens.
 */ 3 4 this 3 3614  1 x 1 3220  1 y 1 3220  
1342 0 0 6 1622 3625 0 0 102 /**
 * Returns the horizontal and vertical offset amounts of this Lens.  See
 * set_film_offset().
 */ 1 4 this 3 3612  
1343 0 0 4 1627 3346 0 0 246 /**
 * Sets the focal length of the lens.  This may adjust the field-of-view
 * correspondingly, and is an alternate way to specify field of view.
 *
 * For certain kinds of lenses (e.g.  OrthographicLens), the focal length has
 * no meaning.
 */ 2 4 this 3 3614  12 focal_length 1 3220  
1344 0 0 6 1628 3220 0 0 257 /**
 * Returns the focal length of the lens.  This may have been set explicitly by
 * a previous call to set_focal_length(), or it may be computed based on the
 * lens' fov and film_size.  For certain kinds of lenses, the focal length has
 * no meaning.
 */ 1 4 this 3 3612  
1345 0 0 4 1630 3346 0 0 499 /**
 * Sets the field of view of the smallest dimension of the window.  If the
 * window is wider than it is tall, this specifies the vertical field of view;
 * if it is taller than it is wide, this specifies the horizontal field of
 * view.
 *
 * In many cases, this is preferable to setting either the horizontal or
 * vertical field of view explicitly.  Setting this parameter means that
 * pulling the window wider will widen the field of view, which is usually
 * what you expect to happen.
 */ 2 4 this 3 3614  7 min_fov 1 3220  
1346 0 0 4 1631 3346 0 0 334 /**
 * Sets the field of view of the lens in both dimensions.  This establishes
 * both the field of view and the aspect ratio of the lens.  This is one way
 * to specify the field of view of a lens; set_focal_length() is another way.
 *
 * For certain kinds of lenses (like OrthographicLens), the field of view has
 * no meaning.
 */ 2 4 this 3 3614  3 fov 1 3534  
1347 0 0 4 1631 3346 0 0 172 /**
 * Sets the horizontal field of view of the lens without changing the aspect
 * ratio.  The vertical field of view is adjusted to maintain the same aspect
 * ratio.
 */ 2 4 this 3 3614  3 fov 1 3220  
1348 0 0 4 1631 3346 0 0 327 /**
 * Sets the field of view of the lens in both dimensions.  This establishes
 * both the field of view and the aspect ratio of the lens.  This is one way
 * to specify the field of view of a lens; set_focal_length() is another way.
 *
 * For certain kinds of lenses (like OrthoLens), the field of view has no
 * meaning.
 */ 3 4 this 3 3614  4 hfov 1 3220  4 vfov 1 3220  
1349 0 0 6 1632 3534 0 0 96 /**
 * Returns the horizontal and vertical film size of the virtual film.  See
 * set_fov().
 */ 1 4 this 3 3612  
1350 0 0 6 1633 3220 0 0 72 /**
 * Returns the horizontal component of fov only.  See get_fov().
 */ 1 4 this 3 3612  
1351 0 0 6 1634 3220 0 0 70 /**
 * Returns the vertical component of fov only.  See get_fov().
 */ 1 4 this 3 3612  
1352 0 0 6 1635 3220 0 0 101 /**
 * Returns the field of view of the narrowest dimension of the window.  See
 * set_min_fov().
 */ 1 4 this 3 3612  
1353 0 0 4 1638 3346 0 0 189 /**
 * Sets the aspect ratio of the lens.  This is the ratio of the height to the
 * width of the generated image.  Setting this overrides the two-parameter fov
 * or film size setting.
 */ 2 4 this 3 3614  12 aspect_ratio 1 3220  
1354 0 0 6 1639 3220 0 0 126 /**
 * Returns the aspect ratio of the Lens.  This is determined based on the
 * indicated film size; see set_film_size().
 */ 1 4 this 3 3612  
1355 0 0 4 1641 3346 0 0 142 /**
 * Defines the position of the near plane (or cylinder, sphere, whatever).
 * Points closer to the lens than this may not be rendered.
 */ 2 4 this 3 3614  13 near_distance 1 3220  
1356 0 0 6 1642 3220 0 0 82 /**
 * Returns the position of the near plane (or cylinder, sphere, whatever).
 */ 1 4 this 3 3612  
1357 0 0 4 1643 3346 0 0 144 /**
 * Defines the position of the far plane (or cylinder, sphere, whatever).
 * Points farther from the lens than this may not be rendered.
 */ 2 4 this 3 3614  12 far_distance 1 3220  
1358 0 0 6 1644 3220 0 0 81 /**
 * Returns the position of the far plane (or cylinder, sphere, whatever).
 */ 1 4 this 3 3612  
1359 0 0 4 1645 3346 0 0 58 /**
 * Simultaneously changes the near and far planes.
 */ 3 4 this 3 3614  13 near_distance 1 3220  12 far_distance 1 3220  
1360 0 0 6 1648 3220 0 0 143 /**
 * Returns the default near plane distance that will be assigned to each
 * newly-created lens.  This is read from the Config.prc file.
 */ 0 
1361 0 0 6 1649 3220 0 0 143 /**
 * Returns the default far plane distance that will be assigned to each newly-
 * created lens.  This is read from the Config.prc file.
 */ 0 
1362 0 0 4 1650 3346 0 0 311 /**
 * Sets the direction in which the lens is facing.  Normally, this is down the
 * forward axis (usually the Y axis), but it may be rotated.  This is only one
 * way of specifying the rotation; you may also specify an explicit vector in
 * which to look, or you may give a complete transformation matrix.
 */ 2 4 this 3 3614  8 view_hpr 1 3535  
1363 0 0 4 1650 3346 0 0 311 /**
 * Sets the direction in which the lens is facing.  Normally, this is down the
 * forward axis (usually the Y axis), but it may be rotated.  This is only one
 * way of specifying the rotation; you may also specify an explicit vector in
 * which to look, or you may give a complete transformation matrix.
 */ 4 4 this 3 3614  1 h 1 3220  1 p 1 3220  1 r 1 3220  
1364 0 0 6 1651 3535 0 0 61 /**
 * Returns the direction in which the lens is facing.
 */ 1 4 this 3 3612  
1365 0 0 4 1656 3346 0 0 185 /**
 * Specifies the direction in which the lens is facing by giving an axis to
 * look along, and a perpendicular (or at least non-parallel) up axis.
 *
 * See also set_view_hpr().
 */ 3 4 this 3 3614  11 view_vector 1 3626  9 up_vector 1 3626  
1366 0 0 4 1656 3346 0 0 185 /**
 * Specifies the direction in which the lens is facing by giving an axis to
 * look along, and a perpendicular (or at least non-parallel) up axis.
 *
 * See also set_view_hpr().
 */ 7 4 this 3 3614  1 x 1 3220  1 y 1 3220  1 z 1 3220  1 i 1 3220  1 j 1 3220  1 k 1 3220  
1367 0 0 6 1657 3626 0 0 59 /**
 * Returns the axis along which the lens is facing.
 */ 1 4 this 3 3612  
1368 0 0 6 1658 3626 0 0 107 /**
 * Returns the axis perpendicular to the camera's view vector that indicates
 * the "up" direction.
 */ 1 4 this 3 3612  
1369 0 0 7 1659 3619 0 0 93 /**
 * Returns the center point of the lens: the point from which the lens is
 * viewing.
 */ 1 4 this 3 3612  
1370 0 0 4 1663 3346 0 0 459 /**
 * Sets the distance between the left and right eyes of a stereo camera.  This
 * distance is used to apply a stereo effect when the lens is rendered on a
 * stereo display region.  It only has an effect on a PerspectiveLens.
 *
 * The left eye and the right eye are each offset along the X axis by half of
 * this distance, so that this parameter specifies the total distance between
 * them.
 *
 * Also see set_convergence_distance(), which relates.
 */ 2 4 this 3 3614  20 interocular_distance 1 3220  
1371 0 0 6 1664 3220 0 0 42 /**
 * See set_interocular_distance().
 */ 1 4 this 3 3612  
1372 0 0 4 1665 3346 0 0 1332 /**
 * Sets the distance between between the camera plane and the point in the
 * distance that the left and right eyes are both looking at.  This distance
 * is used to apply a stereo effect when the lens is rendered on a stereo
 * display region.  It only has an effect on a PerspectiveLens.
 *
 * This parameter must be greater than 0, but may be as large as you like.  It
 * controls the distance at which the two stereo images will appear to
 * converge, which is a normal property of stereo vision.  Normally this
 * should be set to the distance from the camera to the area of interest in
 * your scene.  Anything beyond this distance will appear to go into the
 * screen, and anything closer will appear to come out of the screen.  If you
 * want to simulate parallel stereo, set this to infinity.
 *
 * Note that this creates an off-axis frustum, which means that the lenses are
 * still pointing in the same direction, which is usually more desirable than
 * the more naive toe-in approach, where the two lenses are simply tilted
 * toward each other.
 *
 * Prior to Panda3D 1.9.0, the convergence was being calculated incorrectly.
 * It has since been corrected.  To restore the legacy behavior you can set
 * the stereo-lens-old-convergence variable to true.
 *
 * Also see set_interocular_distance(), which relates.
 */ 2 4 this 3 3614  20 convergence_distance 1 3220  
1373 0 0 6 1666 3220 0 0 42 /**
 * See set_convergence_distance().
 */ 1 4 this 3 3612  
1374 0 0 4 1669 3346 0 0 489 /**
 * Sets an arbitrary transformation on the lens.  This replaces the individual
 * transformation components like set_view_hpr().
 *
 * Setting a transformation here will have a slightly different effect than
 * putting one on the LensNode that contains this lens.  In particular,
 * lighting and other effects computations will still be performed on the lens
 * in its untransformed (facing forward) position, but the actual projection
 * matrix will be transformed by this matrix.
 */ 2 4 this 3 3614  8 view_mat 1 3418  
1375 0 0 6 1670 3418 0 0 61 /**
 * Returns the direction in which the lens is facing.
 */ 1 4 this 3 3612  
1376 0 0 4 1671 3346 0 0 49 /**
 * Resets the lens transform to identity.
 */ 1 4 this 3 3614  
1377 0 0 4 1676 3346 0 0 617 /**
 * Indicates the ratio of keystone correction to perform on the lens, in each
 * of three axes.  This will build a special non-affine scale factor into the
 * projection matrix that will compensate for keystoning of a projected image;
 * this can be used to compensate for a projector that for physical reasons
 * cannot be aimed directly at its screen.
 *
 * The default value is taken from the default-keystone Config variable.  0, 0
 * indicates no keystone correction; specify a small value (usually in the
 * range -1 .. 1) in either the x or y position to generate a keystone
 * correction in that axis.
 */ 2 4 this 3 3614  8 keystone 1 3534  
1378 0 0 6 1677 3534 0 0 66 /**
 * Returns the keystone correction specified for the lens.
 */ 1 4 this 3 3612  
1379 0 0 4 1678 3346 0 0 49 /**
 * Disables the lens keystone correction.
 */ 1 4 this 3 3614  
1380 0 0 4 1680 3346 0 0 425 /**
 * Specifies a custom matrix to transform the points on the film after they
 * have been converted into nominal film space (-1 .. 1 in U and V).  This can
 * be used to introduce arbitrary scales, rotations, or other linear
 * transforms to the media plane.  This is normally a 2-d matrix, but a full
 * 4x4 matrix may be specified.  This is applied on top of any film size, lens
 * shift, and/or keystone correction.
 */ 2 4 this 3 3614  15 custom_film_mat 1 3418  
1381 0 0 6 1681 3418 0 0 62 /**
 * Returns the custom_film_mat specified for the lens.
 */ 1 4 this 3 3612  
1382 0 0 4 1682 3346 0 0 56 /**
 * Disables the lens custom_film_mat correction.
 */ 1 4 this 3 3614  
1383 0 0 4 1684 3346 0 0 2188 /**
 * Sets up the lens to use the frustum defined by the four indicated points.
 * This is most useful for a PerspectiveLens, but it may be called for other
 * kinds of lenses as well.
 *
 * The frustum will be rooted at the origin (or by whatever translation might
 * have been specified in a previous call to set_view_mat).
 *
 * It is legal for the four points not to be arranged in a rectangle; if this
 * is the case, the frustum will be fitted as tightly as possible to cover all
 * four points.
 *
 * The flags parameter contains the union of one or more of the following bits
 * to control the behavior of this function:
 *
 * FC_roll - If this is included, the camera may be rotated so that its up
 * vector is perpendicular to the top line.  Otherwise, the standard up vector
 * is used.
 *
 * FC_camera_plane - This allows the camera plane to be adjusted to be as
 * nearly perpendicular to the center of the frustum as possible.  Without
 * this bit, the orientation camera plane is defined by position of the four
 * points (which should all be coplanar).  With this bit, the camera plane is
 * arbitrary, and may be chosen so that the four points do not themselves lie
 * in the camera plane (but the points will still be within the frustum).
 *
 * FC_off_axis - This allows the resulting frustum to be off-axis to get the
 * tightest possible fit.  Without this bit, the viewing axis will be centered
 * within the frustum, but there may be more wasted space along the edges.
 *
 * FC_aspect_ratio - This allows the frustum to be scaled non-proportionately
 * in the vertical and horizontal dimensions, if necessary, to get a tighter
 * fit.  Without this bit, the current aspect ratio will be preserved.
 *
 * FC_shear - This allows the frustum to be sheared, if necessary, to get the
 * tightest possible fit.  This may result in a parallelogram-based frustum,
 * which will give a slanted appearance to the rendered image.  Without this
 * bit, the frustum will be rectangle-based.
 *
 * In general, if 0 is passed in as the value for flags, the generated frustum
 * will be a loose fit but sane; if -1 is passed in, it will be a tighter fit
 * and possibly screwy.
 */ 6 4 this 3 3614  2 ul 1 3535  2 ur 1 3535  2 ll 1 3535  2 lr 1 3535  5 flags 1 3177  
1384 0 0 4 1685 3346 0 0 169 /**
 * Forces all internal parameters of the Lens to be recomputed.  Normally,
 * this should never need to be called; it is provided only to assist in
 * debugging.
 */ 1 4 this 3 3614  
1385 0 0 6 1686 3178 0 0 206 /**
 * Returns true if the lens represents a linear projection (e.g.
 * PerspectiveLens, OrthographicLens), and therefore there is a valid matrix
 * returned by get_projection_mat(), or false otherwise.
 */ 1 4 this 3 3612  
1386 0 0 6 1687 3178 0 0 124 /**
 * Returns true if the lens represents a perspective projection (i.e.  it is a
 * PerspectiveLens), false otherwise.
 */ 1 4 this 3 3612  
1387 0 0 6 1688 3178 0 0 126 /**
 * Returns true if the lens represents a orthographic projection (i.e.  it is
 * a OrthographicLens), false otherwise.
 */ 1 4 this 3 3612  
1388 0 0 7 1689 3257 2260 0 236 /**
 * Allocates and returns a new Geom that can be rendered to show a visible
 * representation of the frustum used for this kind of lens, if it makes sense
 * to do so.  If a visible representation cannot be created, returns NULL.
 */ 1 4 this 3 3614  
1389 0 0 7 1690 3628 0 0 190 /**
 * Allocates and returns a new BoundingVolume that encloses the frustum used
 * for this kind of lens, if possible.  If a suitable bounding volume cannot
 * be created, returns NULL.
 */ 1 4 this 3 3612  
1390 0 0 6 1691 3418 0 0 183 /**
 * Returns the complete transformation matrix from a 3-d point in space to a
 * point on the film, if such a matrix exists, or the identity matrix if the
 * lens is nonlinear.
 */ 2 4 this 3 3612  7 channel 5 3302  
1391 0 0 6 1692 3418 0 0 128 /**
 * Returns the matrix that transforms from a 2-d point on the film to a 3-d
 * vector in space, if such a matrix exists.
 */ 2 4 this 3 3612  7 channel 5 3302  
1392 0 0 6 1693 3418 0 0 101 /**
 * Returns the matrix that transforms from a point behind the lens to a point
 * on the film.
 */ 1 4 this 3 3612  
1393 0 0 6 1694 3418 0 0 101 /**
 * Returns the matrix that transforms from a point on the film to a point
 * behind the lens.
 */ 1 4 this 3 3612  
1394 0 0 6 1695 3418 0 0 103 /**
 * Returns the matrix that transforms from a point in front of the lens to a
 * point in space.
 */ 1 4 this 3 3612  
1395 0 0 6 1696 3418 0 0 103 /**
 * Returns the matrix that transforms from a point in space to a point in
 * front of the lens.
 */ 1 4 this 3 3612  
1396 0 0 4 1697 3346 0 0 10 /**
 *
 */ 2 4 this 3 3612  3 out 1 3347  
1397 0 0 4 1698 3346 0 0 10 /**
 *
 */ 3 4 this 3 3612  3 out 1 3347  12 indent_level 5 3177  
1398 0 0 7 1699 3398 0 0 192 /**
 * Returns the UpdateSeq that is incremented whenever the lens properties are
 * changed.  As long as this number remains the same, you may assume the lens
 * properties are unchanged.
 */ 1 4 this 3 3612  
1399 0 0 7 1700 3362 0 0 0 0 
1400 0 0 15 1707 3631 2955 0 10 /**
 *
 */ 1 4 copy 1 3629  
1401 0 0 7 1707 3631 2955 0 10 /**
 *
 */ 1 4 name 5 3342  
1402 0 0 7 1708 3631 2955 0 0 2 4 this 3 3631  4 copy 1 3629  
1403 0 0 7 1710 3631 2955 0 40 /**
 * Returns the default material.
 */ 0 
1404 0 0 6 1711 3178 0 0 104 /**
 * Returns true if the base color has been explicitly set for this material,
 * false otherwise.
 */ 1 4 this 3 3629  
1405 0 0 6 1712 3445 0 0 162 /**
 * Returns the base_color color setting, if it has been set.  If neither the
 * base color nor the metallic have been set, this returns the diffuse color.
 */ 1 4 this 3 3629  
1406 0 0 4 1713 3346 0 0 444 /**
 * Specifies the base color of the material.  In conjunction with
 * set_metallic, this is an alternate way to specify the color of a material.
 * For dielectrics, this will determine the value of the diffuse color, and
 * for metals, this will determine the value of the specular color.
 *
 * Setting this will clear an explicit specular, diffuse or ambient color
 * assignment.
 *
 * If this is not set, the object color will be used.
 */ 2 4 this 3 3631  5 color 1 3445  
1407 0 0 4 1714 3346 0 0 67 /**
 * Removes the explicit base_color color from the material.
 */ 1 4 this 3 3631  
1408 0 0 6 1715 3178 0 0 107 /**
 * Returns true if the ambient color has been explicitly set for this
 * material, false otherwise.
 */ 1 4 this 3 3629  
1409 0 0 6 1716 3445 0 0 126 /**
 * Returns the ambient color setting, if it has been set.  Returns (0,0,0,0)
 * if the ambient color has not been set.
 */ 1 4 this 3 3629  
1410 0 0 4 1717 3346 0 0 313 /**
 * Specifies the ambient color setting of the material.  This will be the
 * multiplied by any ambient lights in effect on the material to set its base
 * color.
 *
 * This is the color of the object as it appears in the absence of direct
 * light.
 *
 * If this is not set, the object color will be used.
 */ 2 4 this 3 3631  5 color 1 3445  
1411 0 0 4 1718 3346 0 0 64 /**
 * Removes the explicit ambient color from the material.
 */ 1 4 this 3 3631  
1412 0 0 6 1719 3178 0 0 107 /**
 * Returns true if the diffuse color has been explicitly set for this
 * material, false otherwise.
 */ 1 4 this 3 3629  
1413 0 0 6 1720 3445 0 0 126 /**
 * Returns the diffuse color setting, if it has been set.  Returns (1,1,1,1)
 * if the diffuse color has not been set.
 */ 1 4 this 3 3629  
1414 0 0 4 1721 3346 0 0 396 /**
 * Specifies the diffuse color setting of the material.  This will be
 * multiplied by any lights in effect on the material to get the color in the
 * parts of the object illuminated by the lights.
 *
 * This is the primary color of an object; the color of the object as it
 * appears in direct light, in the absence of highlights.
 *
 * If this is not set, the object color will be used.
 */ 2 4 this 3 3631  5 color 1 3445  
1415 0 0 4 1722 3346 0 0 64 /**
 * Removes the explicit diffuse color from the material.
 */ 1 4 this 3 3631  
1416 0 0 6 1723 3178 0 0 108 /**
 * Returns true if the specular color has been explicitly set for this
 * material, false otherwise.
 */ 1 4 this 3 3629  
1417 0 0 6 1724 3445 0 0 128 /**
 * Returns the specular color setting, if it has been set.  Returns (0,0,0,0)
 * if the specular color has not been set.
 */ 1 4 this 3 3629  
1418 0 0 4 1725 3346 0 0 448 /**
 * Specifies the specular color setting of the material.  This will be
 * multiplied by any lights in effect on the material to compute the color of
 * specular highlights on the object.
 *
 * This is the highlight color of an object: the color of small highlight
 * reflections.
 *
 * If this is not set, the specular color is taken from the index of
 * refraction, which is 1 by default (meaning no specular reflections are
 * generated).
 */ 2 4 this 3 3631  5 color 1 3445  
1419 0 0 4 1726 3346 0 0 65 /**
 * Removes the explicit specular color from the material.
 */ 1 4 this 3 3631  
1420 0 0 6 1727 3178 0 0 108 /**
 * Returns true if the emission color has been explicitly set for this
 * material, false otherwise.
 */ 1 4 this 3 3629  
1421 0 0 6 1728 3445 0 0 128 /**
 * Returns the emission color setting, if it has been set.  Returns (0,0,0,0)
 * if the emission color has not been set.
 */ 1 4 this 3 3629  
1422 0 0 4 1729 3346 0 0 437 /**
 * Specifies the emission color setting of the material.  This is the color of
 * the object as it appears in the absence of any light whatsover, including
 * ambient light.  It is as if the object is glowing by this color (although
 * of course it will not illuminate neighboring objects).
 *
 * If this is not set, the object will not glow by its own light and will only
 * appear visible in the presence of one or more lights.
 */ 2 4 this 3 3631  5 color 1 3445  
1423 0 0 4 1730 3346 0 0 65 /**
 * Removes the explicit emission color from the material.
 */ 1 4 this 3 3631  
1424 0 0 6 1731 3220 0 0 58 /**
 * Returns the shininess exponent of the material.
 */ 1 4 this 3 3629  
1425 0 0 4 1732 3346 0 0 429 /**
 * Sets the shininess exponent of the material.  This controls the size of the
 * specular highlight spot.  In general, larger number produce a smaller
 * specular highlight, which makes the object appear shinier.  Smaller numbers
 * produce a larger highlight, which makes the object appear less shiny.
 *
 * This is usually in the range 0..128.
 *
 * Setting a shininess value removes any previous roughness assignment.
 */ 2 4 this 3 3631  9 shininess 1 3220  
1426 0 0 6 1733 3178 0 0 103 /**
 * Returns true if the roughness has been explicitly set for this material,
 * false otherwise.
 */ 1 4 this 3 3629  
1427 0 0 6 1734 3220 0 0 152 /**
 * Returns the roughness previously specified by set_roughness.  If none was
 * previously set, this value is computed from the shininess value.
 */ 1 4 this 3 3629  
1428 0 0 4 1735 3346 0 0 379 /**
 * Sets the roughness exponent of the material, where 0 is completely shiny
 * (infinite shininess), and 1 is a completely dull object (0 shininess).
 * This is a different, more perceptually intuitive way of controlling the
 * size of the specular spot, and more commonly used in physically-based
 * rendering.
 *
 * Setting a roughness recalculates the shininess value.
 */ 2 4 this 3 3631  9 roughness 1 3220  
1429 0 0 6 1736 3178 0 0 102 /**
 * Returns true if the metallic has been explicitly set for this material,
 * false otherwise.
 */ 1 4 this 3 3629  
1430 0 0 6 1737 3220 0 0 98 /**
 * Returns the metallic setting, if it has been set.  Returns 0 if it has not
 * been set.
 */ 1 4 this 3 3629  
1431 0 0 4 1738 3346 0 0 369 /**
 * Sets the metallic setting of the material, which is is used for physically-
 * based rendering models.  This is usually 0 for dielectric materials and 1
 * for metals.  It really does not make sense to set this to a value other
 * than 0 or 1, but it is nonetheless a float for compatibility with tools
 * that allow setting this to values other than 0 or 1.
 */ 2 4 this 3 3631  8 metallic 1 3220  
1432 0 0 4 1739 3346 0 0 67 /**
 * Removes the explicit metallic setting from the material.
 */ 1 4 this 3 3631  
1433 0 0 6 1740 3178 0 0 97 /**
 * Returns true if a refractive index has explicitly been specified for this
 * material.
 */ 1 4 this 3 3629  
1434 0 0 6 1741 3220 0 0 91 /**
 * Returns the index of refraction, or 1 if none has been set for this
 * material.
 */ 1 4 this 3 3629  
1435 0 0 4 1742 3346 0 0 356 /**
 * Sets the index of refraction of the material, which is used to determine
 * the specular color in absence of an explicit specular color assignment.
 * This is usually 1.5 for dielectric materials.  It is not very useful for
 * metals, since they cannot be described as easily with a single number.
 *
 * Should be 1 or higher.  The default is 1.
 */ 2 4 this 3 3631  16 refractive_index 1 3220  
1436 0 0 6 1743 3178 0 0 59 /**
 * Returns the local viewer flag.  Set set_local().
 */ 1 4 this 3 3629  
1437 0 0 4 1744 3346 0 0 252 /**
 * Sets the local viewer flag.  Set this true to enable camera-relative
 * specular highlights, or false to use orthogonal specular highlights.  The
 * default value is true.  Applications that use orthogonal projection should
 * specify false.
 */ 2 4 this 3 3631  5 local 1 3178  
1438 0 0 6 1745 3178 0 0 80 /**
 * Returns the state of the two-sided lighting flag.  See set_twoside().
 */ 1 4 this 3 3629  
1439 0 0 4 1746 3346 0 0 241 /**
 * Set this true to enable two-sided lighting.  When two-sided lighting is on,
 * both sides of a polygon will be lit by this material.  The default is for
 * two-sided lighting to be off, in which case only the front surface is lit.
 */ 2 4 this 3 3631  7 twoside 1 3178  
1440 0 0 6 1747 3178 0 0 0 2 4 this 3 3629  5 other 1 3629  
1441 0 0 6 1748 3178 0 0 0 2 4 this 3 3629  5 other 1 3629  
1442 0 0 6 1749 3178 0 0 0 2 4 this 3 3629  5 other 1 3629  
1443 0 0 6 1750 3177 0 0 266 /**
 * Returns a number less than zero if this material sorts before the other
 * one, greater than zero if it sorts after, or zero if they are equivalent.
 * The sorting order is arbitrary and largely meaningless, except to
 * differentiate different materials.
 */ 2 4 this 3 3629  5 other 1 3629  
1444 0 0 4 1751 3346 0 0 10 /**
 *
 */ 2 4 this 3 3629  3 out 1 3347  
1445 0 0 4 1752 3346 0 0 10 /**
 *
 */ 3 4 this 3 3629  3 out 1 3347  6 indent 1 3177  
1446 0 0 6 1753 3178 0 0 62 /**
 * @deprecated This no longer has any meaning in 1.10.
 */ 1 4 this 3 3629  
1447 0 0 4 1754 3346 0 0 62 /**
 * @deprecated This no longer has any meaning in 1.10.
 */ 1 4 this 3 3631  
1448 0 0 7 1766 3362 0 0 0 0 
1449 0 0 7 1703 3241 0 0 0 1 4 this 3 3631  
1450 0 0 6 1705 3374 0 0 0 1 4 this 3 3631  
1451 0 0 7 1768 3631 2955 0 657 /**
 * Returns a Material pointer that represents the same material described by
 * temp, except that it is a shared pointer.
 *
 * Each call to get_material() passing an equivalent Material pointer will
 * return the same shared pointer.
 *
 * If you modify the shared pointer, it will automatically disassociate it
 * from the pool.
 *
 * Also, the return value may be a different pointer than that passed in, or
 * it may be the same pointer.  In either case, the passed in pointer has now
 * been sacrificed to the greater good and should not be used again (like any
 * other PointerTo, it will be freed when the last reference count is
 * removed).
 */ 1 4 temp 1 3631  
1452 0 0 4 1769 3346 0 0 56 /**
 * Removes the indicated material from the pool.
 */ 1 4 temp 1 3631  
1453 0 0 4 1770 3346 0 0 90 /**
 * Releases all materials in the pool and restores the pool to the empty
 * state.
 */ 0 
1454 0 0 6 1771 3177 0 0 215 /**
 * Releases only those materials in the pool that have a reference count of
 * exactly 1; i.e.  only those materials that are not being used outside of
 * the pool.  Returns the number of materials released.
 */ 0 
1455 0 0 4 1772 3346 0 0 82 /**
 * Lists the contents of the material pool to the indicated output stream.
 */ 1 3 out 1 3347  
1456 0 0 4 1773 3346 0 0 82 /**
 * Lists the contents of the material pool to the indicated output stream.
 */ 1 3 out 1 3347  
1457 0 0 7 1776 3632 3021 0 10 /**
 *
 */ 0 
1458 0 0 4 1777 3346 0 0 559 /**
 * Explicitly specifies the projection matrix.  This matrix should convert X
 * and Y to the range [-film_size/2, film_size/2], where (-fs/2,-fs/2) is the
 * lower left corner of the screen and (fs/2, fs/2) is the upper right.  Z
 * should go to the range [-1, 1], where -1 is the near plane and 1 is the far
 * plane.  Note that this is a left-handed Y-up coordinate system.
 *
 * The default film_size for a MatrixLens is 2, so the default range is [-1,
 * 1] for both X and Y.  This is consistent with the GL conventions for
 * projection matrices.
 */ 2 4 this 3 3632  8 user_mat 1 3418  
1459 0 0 6 1778 3418 0 0 161 /**
 * Returns the explicit projection matrix as set by the user.  This does not
 * include transforms on the lens or film (e.g.  a film offset or view hpr).
 */ 1 4 this 3 3633  
1460 0 0 4 1780 3346 0 0 424 /**
 * Sets a custom projection matrix for the left eye.  This is only used if the
 * lens is attached to a stereo camera, in which case the left eye matrix will
 * be used to draw the scene in the left eye (but the center matrix--the
 * user_mat--will still be used to cull the scene).
 *
 * This matrix should not be too different from the center matrix (set by
 * set_user_mat()) or culling errors may become obvious.
 */ 2 4 this 3 3632  8 user_mat 1 3418  
1461 0 0 4 1781 3346 0 0 130 /**
 * Removes the custom projection matrix set for the left eye, and uses the
 * center matrix (set by set_user_mat) instead.
 */ 1 4 this 3 3632  
1462 0 0 6 1782 3178 0 0 179 /**
 * Returns true if the camera has a custom projection matrix set for the left
 * eye, or false if the center matrix (set by set_user_mat) will be used for
 * the left eye.
 */ 1 4 this 3 3633  
1463 0 0 6 1783 3418 0 0 148 /**
 * Returns the custom projection matrix for the left eye, if any, or the
 * center matrix if there is no custom matrix set for the left eye.
 */ 1 4 this 3 3633  
1464 0 0 4 1784 3346 0 0 427 /**
 * Sets a custom projection matrix for the right eye.  This is only used if
 * the lens is attached to a stereo camera, in which case the right eye matrix
 * will be used to draw the scene in the right eye (but the center matrix--the
 * user_mat--will still be used to cull the scene).
 *
 * This matrix should not be too different from the center matrix (set by
 * set_user_mat()) or culling errors may become obvious.
 */ 2 4 this 3 3632  8 user_mat 1 3418  
1465 0 0 4 1785 3346 0 0 131 /**
 * Removes the custom projection matrix set for the right eye, and uses the
 * center matrix (set by set_user_mat) instead.
 */ 1 4 this 3 3632  
1466 0 0 6 1786 3178 0 0 181 /**
 * Returns true if the camera has a custom projection matrix set for the right
 * eye, or false if the center matrix (set by set_user_mat) will be used for
 * the right eye.
 */ 1 4 this 3 3633  
1467 0 0 6 1787 3418 0 0 150 /**
 * Returns the custom projection matrix for the right eye, if any, or the
 * center matrix if there is no custom matrix set for the right eye.
 */ 1 4 this 3 3633  
1468 0 0 7 1788 3362 0 0 0 0 
1469 0 0 7 1791 3635 3024 0 10 /**
 *
 */ 0 
1470 0 0 7 1792 3362 0 0 0 0 
1471 0 0 23 1796 3636 3029 0 94 /**
 * Creates a new ParamTextureSampler storing the given texture and sampler
 * objects.
 */ 2 3 tex 1 3325  7 sampler 1 3564  
1472 0 0 7 1797 3325 2558 0 57 /**
 * Retrieves the texture stored in the parameter.
 */ 1 4 this 3 3637  
1473 0 0 6 1798 3564 0 0 63 /**
 * Retrieves the sampler state stored in the parameter.
 */ 1 4 this 3 3637  
1474 0 0 7 1802 3362 0 0 0 0 
1475 0 0 23 1805 3639 3038 0 101 /**
 * Creates a new ParamTextureImage storing the given texture and image binding
 * parameters.
 */ 5 3 tex 1 3325  4 read 1 3178  5 write 1 3178  1 z 5 3177  1 n 5 3177  
1476 0 0 7 1806 3325 2558 0 57 /**
 * Retrieves the texture stored in the parameter.
 */ 1 4 this 3 3640  
1477 0 0 6 1807 3178 0 0 79 /**
 * Returns true if this image should be bound with read access enabled.
 */ 1 4 this 3 3640  
1478 0 0 6 1808 3178 0 0 80 /**
 * Returns true if this image should be bound with write access enabled.
 */ 1 4 this 3 3640  
1479 0 0 6 1809 3178 0 0 83 /**
 * Returns true if all layers of this image should be bound simultaneously.
 */ 1 4 this 3 3640  
1480 0 0 6 1810 3177 0 0 56 /**
 * Returns the image level that should be bound.
 */ 1 4 this 3 3640  
1481 0 0 6 1811 3177 0 0 115 /**
 * Returns the image layer that should be bound.  This is undefined if
 * get_bind_layered() returns false.
 */ 1 4 this 3 3640  
1482 0 0 7 1817 3362 0 0 0 0 
1483 0 0 7 1820 3642 3041 0 10 /**
 *
 */ 0 
1484 0 0 7 1820 3642 3041 0 10 /**
 *
 */ 2 4 hfov 1 3220  4 vfov 1 3220  
1485 0 0 7 1821 3362 0 0 0 0 
1486 0 0 15 1824 3645 3048 0 0 1 6 param0 0 3643  
1487 0 0 7 1824 3645 3048 0 122 /**
 * Create a new TextureReloadRequest, and add it to the loader via
 * load_async(), to begin an asynchronous load.
 */ 4 4 name 1 3342  3 pgo 1 3404  7 texture 1 3325  16 allow_compressed 1 3178  
1488 0 0 7 1825 3404 0 0 112 /**
 * Returns the PreparedGraphicsObjects object associated with this
 * asynchronous TextureReloadRequest.
 */ 1 4 this 3 3643  
1489 0 0 7 1826 3325 2558 0 96 /**
 * Returns the Texture object associated with this asynchronous
 * TextureReloadRequest.
 */ 1 4 this 3 3643  
1490 0 0 6 1827 3178 0 0 105 /**
 * Returns the "allow compressed" flag associated with this asynchronous
 * TextureReloadRequest.
 */ 1 4 this 3 3643  
1491 0 0 6 1828 3178 0 0 154 /**
 * Returns true if this request has completed, false if it is still pending.
 * Equivalent to `req.done() and not req.cancelled()`.
 * @see done()
 */ 1 4 this 3 3643  
1492 0 0 7 1830 3362 0 0 0 0 
1493 0 0 7 1837 3325 2558 0 64 /**
 * Returns the pointer to the associated Texture object.
 */ 1 4 this 3 3646  
1494 0 0 6 1838 3177 0 0 152 /**
 * Returns the specific view of a multiview texture this context represents.
 * In the usual case, with a non-multiview texture, this will be 0.
 */ 1 4 this 3 3646  
1495 0 0 6 1839 3298 0 0 198 /**
 * Returns an implementation-defined handle or pointer that can be used
 * to interface directly with the underlying API.
 * Returns 0 if the underlying implementation does not support this.
 */ 1 4 this 3 3646  
1496 0 0 6 1840 3298 0 0 253 /**
 * Similar to get_native_id, but some implementations use a separate
 * identifier for the buffer object associated with buffer textures.
 * Returns 0 if the underlying implementation does not support this, or
 * if this is not a buffer texture.
 */ 1 4 this 3 3646  
1497 0 0 6 1841 3178 0 0 126 /**
 * Returns true if the texture properties or image have been modified since
 * the last time mark_loaded() was called.
 */ 1 4 this 3 3646  
1498 0 0 6 1842 3178 0 0 142 /**
 * Returns true if the texture properties (unrelated to the image) have been
 * modified since the last time mark_loaded() was called.
 */ 1 4 this 3 3646  
1499 0 0 6 1843 3178 0 0 111 /**
 * Returns true if the texture image has been modified since the last time
 * mark_loaded() was called.
 */ 1 4 this 3 3646  
1500 0 0 6 1844 3178 0 0 129 /**
 * Returns true if the texture's "simple" image has been modified since the
 * last time mark_simple_loaded() was called.
 */ 1 4 this 3 3646  
1501 0 0 7 1845 3398 0 0 151 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture properties (unrelated to the image) are modified.
 */ 1 4 this 3 3646  
1502 0 0 7 1846 3398 0 0 152 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture image data (including mipmap levels) are modified.
 */ 1 4 this 3 3646  
1503 0 0 7 1847 3398 0 0 136 /**
 * Returns a sequence number which is guaranteed to change at least every time
 * the texture's "simple" image data is modified.
 */ 1 4 this 3 3646  
1504 0 0 7 1848 3362 0 0 0 0 
1505 0 0 6 1833 3451 0 0 0 1 4 this 3 3596  
1506 0 0 6 1835 3351 0 0 0 1 4 this 3 3596  
1507 0 0 7 1851 3331 0 0 10 /**
 *
 */ 1 4 this 3 3648  
1508 0 0 7 1854 3362 0 0 0 0 
1509 0 0 7 1857 3650 3072 0 10 /**
 *
 */ 1 4 name 1 3193  
1510 0 0 7 1857 3650 3072 0 10 /**
 *
 */ 1 4 name 1 3342  
1511 0 0 4 1858 3346 0 0 45 /**
 * Stores the indicated slider value.
 */ 2 4 this 3 3650  6 slider 1 3220  
1512 0 0 7 1859 3362 0 0 0 0 
1513 0 0 7 1862 3651 3077 0 10 /**
 *
 */ 1 4 name 1 3342  
1514 0 0 6 1863 3342 0 0 77 /**
 * Returns the name passed to the constructor.  Completely arbitrary.
 */ 1 4 this 3 3652  
1515 0 0 4 1864 3346 0 0 39 /**
 * Stores the indicated matrix.
 */ 2 4 this 3 3651  6 matrix 1 3418  
1516 0 0 7 1865 3362 0 0 0 0 
1517 0 0 6 1873 3178 0 0 207 /**
 * Returns the flag that indicates whether this Texture is eligible to have
 * its main RAM copy of the texture memory dumped when the texture is prepared
 * for rendering.  See set_keep_ram_image().
 */ 1 4 this 3 3654  
1518 0 0 6 1874 3177 0 0 200 /**
 * Returns the width in texels of the source video stream.  This is not
 * necessarily the width of the actual texture, since the texture may have
 * been expanded to raise it to a power of 2.
 */ 1 4 this 3 3654  
1519 0 0 6 1875 3177 0 0 202 /**
 * Returns the height in texels of the source video stream.  This is not
 * necessarily the height of the actual texture, since the texture may have
 * been expanded to raise it to a power of 2.
 */ 1 4 this 3 3654  
1520 0 0 7 1878 3362 0 0 0 0 
1521 0 0 7 1868 3325 2558 0 0 1 4 this 3 3656  
1522 0 0 6 1871 3657 0 0 0 1 4 this 3 3656  
1523 0 0 7 1885 3213 1897 0 68 /**
 * Returns the pointer to the client-side array data object.
 */ 1 4 this 3 3658  
1524 0 0 6 1886 3178 0 0 101 /**
 * Returns true if the data has changed size since the last time mark_loaded()
 * was called.
 */ 2 4 this 3 3658  6 reader 1 3402  
1525 0 0 6 1887 3178 0 0 111 /**
 * Returns true if the data has changed its usage hint since the last time
 * mark_loaded() was called.
 */ 2 4 this 3 3658  6 reader 1 3402  
1526 0 0 6 1888 3178 0 0 102 /**
 * Returns true if the data has been modified since the last time
 * mark_loaded() was called.
 */ 2 4 this 3 3658  6 reader 1 3402  
1527 0 0 7 1889 3362 0 0 0 0 
1528 0 0 6 1881 3451 0 0 0 1 4 this 3 3407  
1529 0 0 6 1883 3351 0 0 0 1 4 this 3 3407  
1530 0 0 7 1892 3660 3099 0 10 /**
 *
 */ 0 
1531 0 0 55 1892 3660 3099 0 0 1 8 sequence 1 3358  
1532 0 0 15 1892 3660 3099 0 10 /**
 *
 */ 1 4 copy 1 3661  
1533 0 0 6 1893 3660 0 0 0 2 4 this 3 3660  4 copy 1 3661  
1534 0 0 38 1895 3358 0 0 0 1 4 this 3 3661  
1535 0 0 4 1896 3346 0 0 48 /**
 * Adds a new Texture to the collection.
 */ 2 4 this 3 3660  7 texture 1 3325  
1536 0 0 6 1897 3178 0 0 154 /**
 * Removes the indicated Texture from the collection.  Returns true if the
 * texture was removed, false if it was not a member of the collection.
 */ 2 4 this 3 3660  7 texture 1 3325  
1537 0 0 4 1898 3346 0 0 211 /**
 * Adds all the Textures indicated in the other collection to this texture.
 * The other textures are simply appended to the end of the textures in this
 * list; duplicates are not automatically removed.
 */ 2 4 this 3 3660  5 other 1 3661  
1538 0 0 4 1899 3346 0 0 94 /**
 * Removes from this collection all of the Textures listed in the other
 * collection.
 */ 2 4 this 3 3660  5 other 1 3661  
1539 0 0 4 1900 3346 0 0 195 /**
 * Removes any duplicate entries of the same Textures on this collection.  If
 * a Texture appears multiple times, the first appearance is retained;
 * subsequent appearances are removed.
 */ 1 4 this 3 3660  
1540 0 0 6 1901 3178 0 0 96 /**
 * Returns true if the indicated Texture appears in this collection, false
 * otherwise.
 */ 2 4 this 3 3661  7 texture 1 3325  
1541 0 0 4 1902 3346 0 0 52 /**
 * Removes all Textures from the collection.
 */ 1 4 this 3 3660  
1542 0 0 4 1903 3346 0 0 157 /**
 * This is a hint to Panda to allocate enough memory to hold the given number
 * of NodePaths, if you know ahead of time how many you will be adding.
 */ 2 4 this 3 3660  3 num 1 3209  
1543 0 0 7 1904 3325 2558 0 121 /**
 * Returns the texture in the collection with the indicated name, if any, or
 * NULL if no texture has that name.
 */ 2 4 this 3 3661  4 name 1 3342  
1544 0 0 6 1905 3177 0 0 60 /**
 * Returns the number of Textures in the collection.
 */ 1 4 this 3 3661  
1545 0 0 7 1906 3325 2558 0 53 /**
 * Returns the nth Texture in the collection.
 */ 2 4 this 3 3661  5 index 1 3177  
1546 0 0 7 1908 3325 2558 0 142 /**
 * Returns the nth Texture in the collection.  This is the same as
 * get_texture(), but it may be a more convenient way to access it.
 */ 2 4 this 3 3661  5 index 1 3177  
1547 0 0 6 1909 3177 0 0 110 /**
 * Returns the number of textures in the collection.  This is the same thing
 * as get_num_textures().
 */ 1 4 this 3 3661  
1548 0 0 6 1910 3660 0 0 0 2 4 this 3 3660  5 other 1 3661  
1549 0 0 7 1911 3660 3099 0 0 2 4 this 3 3661  5 other 1 3661  
1550 0 0 4 1912 3346 0 0 155 /**
 * Adds a new Texture to the collection.  This method duplicates the
 * add_texture() method; it is provided to satisfy Python's naming convention.
 */ 2 4 this 3 3660  7 texture 1 3325  
1551 0 0 4 1913 3346 0 0 157 /**
 * Appends the other list onto the end of this one.  This method duplicates
 * the += operator; it is provided to satisfy Python's naming convention.
 */ 2 4 this 3 3660  5 other 1 3661  
1552 0 0 4 1914 3346 0 0 106 /**
 * Writes a brief one-line description of the TextureCollection to the
 * indicated output stream.
 */ 2 4 this 3 3661  3 out 1 3347  
1553 0 0 4 1915 3346 0 0 111 /**
 * Writes a complete multi-line description of the TextureCollection to the
 * indicated output stream.
 */ 3 4 this 3 3661  3 out 1 3347  12 indent_level 5 3177  
1554 0 0 6 1917 3178 0 0 77 /**
 * Returns true if the texture has ever been loaded, false otherwise.
 */ 1 8 filename 1 3569  
1555 0 0 6 1918 3178 0 0 313 /**
 * Loads the given filename up into a texture, if it has not already been
 * loaded, and returns true to indicate success, or false to indicate failure.
 * If this returns true, it is guaranteed that a subsequent call to
 * load_texture() with the same texture name will return a valid Texture
 * pointer.
 */ 1 8 filename 1 3569  
1556 0 0 7 1919 3325 2558 0 93 /**
 * Returns the texture that has already been previously loaded, or NULL
 * otherwise.
 */ 5 8 filename 1 3569  14 alpha_filename 1 3569  25 primary_file_num_channels 5 3177  18 alpha_file_channel 5 3177  12 read_mipmaps 5 3178  
1557 0 0 7 1919 3325 2558 0 93 /**
 * Returns the texture that has already been previously loaded, or NULL
 * otherwise.
 */ 3 8 filename 1 3569  25 primary_file_num_channels 5 3177  12 read_mipmaps 5 3178  
1558 0 0 7 1920 3325 2558 0 489 /**
 * Loads the given filename up into a texture, if it has not already been
 * loaded, and returns the new texture.  If a texture with the same filename
 * was previously loaded, returns that one instead.  If the texture file
 * cannot be found, returns NULL.
 *
 * If read_mipmaps is true, both filenames should contain a hash mark ('#'),
 * which will be filled in with the mipmap level number; and the texture will
 * be defined with a series of images, two for each mipmap level.
 */ 6 8 filename 1 3569  14 alpha_filename 1 3569  25 primary_file_num_channels 5 3177  18 alpha_file_channel 5 3177  12 read_mipmaps 5 3178  7 options 5 3570  
1559 0 0 7 1920 3325 2558 0 487 /**
 * Loads the given filename up into a texture, if it has not already been
 * loaded, and returns the new texture.  If a texture with the same filename
 * was previously loaded, returns that one instead.  If the texture file
 * cannot be found, returns NULL.
 *
 * If read_mipmaps is true, the filename should contain a hash mark ('#'),
 * which will be filled in with the mipmap level number; and the texture will
 * be defined with a series of images, one for each mipmap level.
 */ 4 8 filename 1 3569  25 primary_file_num_channels 5 3177  12 read_mipmaps 5 3178  7 options 5 3570  
1560 0 0 7 1921 3325 2558 0 490 /**
 * Loads a 3-D texture that is specified with a series of n pages, all
 * numbered in sequence, and beginning with index 0.  The filename should
 * include a sequence of one or more hash characters ("#") which will be
 * filled in with the index number of each level.
 *
 * If read_mipmaps is true, the filename should contain an additional hash
 * mark.  The first hash mark will be filled in with the mipmap level number,
 * and the second with the index number of each 3-d level.
 */ 3 16 filename_pattern 1 3569  12 read_mipmaps 5 3178  7 options 5 3570  
1561 0 0 7 1922 3325 2558 0 496 /**
 * Loads a 2-D texture array that is specified with a series of n pages, all
 * numbered in sequence, and beginning with index 0.  The filename should
 * include a sequence of one or more hash characters ("#") which will be
 * filled in with the index number of each level.
 *
 * If read_mipmaps is true, the filename should contain an additional hash
 * mark.  The first hash mark will be filled in with the mipmap level number,
 * and the second with the index number of each 2-d level.
 */ 3 16 filename_pattern 1 3569  12 read_mipmaps 5 3178  7 options 5 3570  
1562 0 0 7 1923 3325 2558 0 457 /**
 * Loads a cube map texture that is specified with a series of 6 pages,
 * numbered 0 through 5.  The filename should include a sequence of one or
 * more hash characters ("#") which will be filled in with the index number of
 * each pagee.
 *
 * If read_mipmaps is true, the filename should contain an additional hash
 * mark.  The first hash mark will be filled in with the mipmap level number,
 * and the second with the face number, 0 through 5.
 */ 3 16 filename_pattern 1 3569  12 read_mipmaps 5 3178  7 options 5 3570  
1563 0 0 7 1924 3325 2558 0 290 /**
 * Returns a standard Texture object that has been created with
 * Texture::generate_normalization_cube_map().  This Texture may be shared by
 * any application code requiring a normalization cube map.  It will be at
 * least as large as the specified size, though it may be larger.
 */ 1 4 size 1 3177  
1564 0 0 7 1925 3325 2558 0 296 /**
 * Returns a standard Texture object that has been created with
 * Texture::generate_alpha_scale_map().
 *
 * This Texture object is used internally by Panda to apply an alpha scale to
 * an object (instead of munging its vertices) when
 * gsg->get_alpha_scale_via_texture() returns true.
 */ 0 
1565 0 0 4 1926 3346 0 0 226 /**
 * Adds the indicated already-loaded texture to the pool.  The texture must
 * have a filename set for its name.  The texture will always replace any
 * previously-loaded texture in the pool that had the same filename.
 */ 1 7 texture 1 3325  
1566 0 0 4 1927 3346 0 0 404 /**
 * Removes the indicated texture from the pool, indicating it will never be
 * loaded again; the texture may then be freed.  If this function is never
 * called, a reference count will be maintained on every texture every loaded,
 * and textures will never be freed.
 *
 * The texture's name should not have been changed during its lifetime, or
 * this function may fail to locate it in the pool.
 */ 1 7 texture 1 3325  
1567 0 0 4 1928 3346 0 0 86 /**
 * Releases all textures in the pool and restores the pool to the empty state.
 */ 0 
1568 0 0 4 1929 3346 0 0 131 /**
 * Should be called when the model-path changes, to blow away the cache of
 * texture pathnames found along the model-path.
 */ 0 
1569 0 0 6 1930 3177 0 0 212 /**
 * Releases only those textures in the pool that have a reference count of
 * exactly 1; i.e.  only those textures that are not being used outside of the
 * pool.  Returns the number of textures released.
 */ 0 
1570 0 0 4 1931 3346 0 0 57 /**
 * Lists the contents of the texture pool to cout
 */ 0 
1571 0 0 4 1931 3346 0 0 81 /**
 * Lists the contents of the texture pool to the indicated output stream.
 */ 1 3 out 1 3347  
1572 0 0 7 1932 3325 2558 0 182 /**
 * Returns the first texture found in the pool that matches the indicated name
 * (which may contain wildcards).  Returns the texture if it is found, or NULL
 * if it is not.
 */ 1 4 name 1 3342  
1573 0 0 7 1933 3660 3099 0 124 /**
 * Returns the set of all textures found in the pool that match the indicated
 * name (which may contain wildcards).
 */ 1 4 name 5 3342  
1574 0 0 4 1934 3346 0 0 109 /**
 * Sets a bogus filename that will be loaded in lieu of any textures requested
 * from this point on.
 */ 1 8 filename 1 3569  
1575 0 0 4 1935 3346 0 0 79 /**
 * Restores normal behavior of loading the textures actually requested.
 */ 0 
1576 0 0 6 1936 3178 0 0 107 /**
 * Returns true if fake_texture_image mode has been enabled, false if we are
 * in the normal mode.
 */ 0 
1577 0 0 6 1937 3569 0 0 103 /**
 * Returns the filename that was specified with a previous call to
 * set_fake_texture_image().
 */ 0 
1578 0 0 7 1938 3325 2558 0 185 /**
 * Creates a new Texture object of the appropriate type for the indicated
 * filename extension, according to the types that have been registered via
 * register_texture_type().
 */ 1 9 extension 1 3342  
1579 0 0 4 1939 3346 0 0 100 /**
 * Lists the contents of the texture pool to the indicated output stream.  For
 * debugging.
 */ 1 3 out 1 3347  
1580 0 0 15 1950 3592 3153 0 0 1 6 param0 0 3663  
1581 0 0 6 1942 3177 0 0 191 /**
 * Returns the width of the texture image that is contributing to the
 * TexturePeeker's information.  This may be either the Texture's full width,
 * or its simple ram image's width.
 */ 1 4 this 3 3663  
1582 0 0 6 1943 3177 0 0 194 /**
 * Returns the height of the texture image that is contributing to the
 * TexturePeeker's information.  This may be either the Texture's full height,
 * or its simple ram image's height.
 */ 1 4 this 3 3663  
1583 0 0 6 1944 3177 0 0 109 /**
 * Returns the depth of the texture image that is contributing to the
 * TexturePeeker's information.
 */ 1 4 this 3 3663  
1584 0 0 6 1945 3178 0 0 82 /**
 * Returns whether a given coordinate is inside of the texture dimensions.
 */ 3 4 this 3 3663  1 x 1 3177  1 y 1 3177  
1585 0 0 6 1945 3178 0 0 82 /**
 * Returns whether a given coordinate is inside of the texture dimensions.
 */ 4 4 this 3 3663  1 x 1 3177  1 y 1 3177  1 z 1 3177  
1586 0 0 4 1946 3346 0 0 309 /**
 * Fills "color" with the RGBA color of the texel at point (u, v).
 *
 * The texel color is determined via nearest-point sampling (no filtering of
 * adjacent pixels), regardless of the filter type associated with the
 * texture.  u, v, and w will wrap around regardless of the texture's wrap
 * mode.
 */ 4 4 this 3 3663  5 color 1 3467  1 u 1 3220  1 v 1 3220  
1587 0 0 4 1946 3346 0 0 312 /**
 * Fills "color" with the RGBA color of the texel at point (u, v, w).
 *
 * The texel color is determined via nearest-point sampling (no filtering of
 * adjacent pixels), regardless of the filter type associated with the
 * texture.  u, v, and w will wrap around regardless of the texture's wrap
 * mode.
 */ 5 4 this 3 3663  5 color 1 3467  1 u 1 3220  1 v 1 3220  1 w 1 3220  
1588 0 0 4 1947 3346 0 0 110 /**
 * Works like TexturePeeker::lookup(), but instead of uv-coordinates, integer
 * coordinates are used.
 */ 4 4 this 3 3663  5 color 1 3467  1 x 1 3177  1 y 1 3177  
1589 0 0 4 1947 3346 0 0 110 /**
 * Works like TexturePeeker::lookup(), but instead of uv-coordinates, integer
 * coordinates are used.
 */ 5 4 this 3 3663  5 color 1 3467  1 x 1 3177  1 y 1 3177  1 z 1 3177  
1590 0 0 6 1948 3178 0 0 233 /**
 * Performs a bilinear lookup to retrieve the color value stored at the uv
 * coordinate (u, v).
 *
 * In case the point is outside of the uv range, color is set to zero,
 * and false is returned.  Otherwise true is returned.
 */ 4 4 this 3 3663  5 color 1 3467  1 u 1 3220  1 v 1 3220  
1591 0 0 4 1949 3346 0 0 245 /**
 * Fills "color" with the average RGBA color of the texels within the
 * rectangle defined by the specified coordinate range.
 *
 * The texel color is linearly filtered over the entire region.  u, v, and w
 * must be in the range [0, 1].
 */ 6 4 this 3 3663  5 color 1 3467  5 min_u 1 3220  5 min_v 1 3220  5 max_u 1 3220  5 max_v 1 3220  
1592 0 0 4 1949 3346 0 0 245 /**
 * Fills "color" with the average RGBA color of the texels within the
 * rectangle defined by the specified coordinate range.
 *
 * The texel color is linearly filtered over the entire region.  u, v, and w
 * must be in the range [0, 1].
 */ 8 4 this 3 3663  5 color 1 3467  5 min_u 1 3220  5 min_v 1 3220  5 min_w 1 3220  5 max_u 1 3220  5 max_v 1 3220  5 max_w 1 3220  
1593 0 0 7 1954 3251 0 0 666 /**
 * Returns a TextureStage pointer that represents the same TextureStage
 * described by temp, except that it is a shared pointer.
 *
 * Each call to get_stage() passing an equivalent TextureStage pointer will
 * return the same shared pointer.
 *
 * If you modify the shared pointer, it will automatically disassociate it
 * from the pool.
 *
 * Also, the return value may be a different pointer than that passed in, or
 * it may be the same pointer.  In either case, the passed in pointer has now
 * been sacrificed to the greater good and should not be used again (like any
 * other PointerTo, it will be freed when the last reference count is
 * removed).
 */ 1 4 temp 1 3251  
1594 0 0 4 1955 3346 0 0 60 /**
 * Removes the indicated TextureStage from the pool.
 */ 1 4 temp 1 3251  
1595 0 0 4 1956 3346 0 0 94 /**
 * Releases all TextureStages in the pool and restores the pool to the empty
 * state.
 */ 0 
1596 0 0 4 1957 3346 0 0 489 /**
 * Specifies the fundamental operating mode of the TextureStagePool.
 *
 * If this is M_none, each call to get_stage() returns the same TextureStage
 * pointer that was passed in (the pool is effectively disabled).  If this is
 * M_name, each call to get_stage() returns the last TextureStage passed in
 * with the same name, whether it has different properties or not.  If this is
 * M_unique, then each call to get_stage() returns only TextureStages with
 * identical properties.
 */ 1 4 mode 1 3341  
1597 0 0 6 1958 3341 0 0 94 /**
 * Returns the fundamental operating mode of the TextureStagePool.  See
 * set_mode().
 */ 0 
1598 0 0 6 1960 3177 0 0 227 /**
 * Releases only those TextureStages in the pool that have a reference count
 * of exactly 1; i.e.  only those TextureStages that are not being used
 * outside of the pool.  Returns the number of TextureStages released.
 */ 0 
1599 0 0 4 1961 3346 0 0 86 /**
 * Lists the contents of the TextureStage pool to the indicated output stream.
 */ 1 3 out 1 3347  
1600 0 0 4 1962 3346 0 0 86 /**
 * Lists the contents of the TextureStage pool to the indicated output stream.
 */ 1 3 out 1 3347  
502
3163 11 AdaptiveLru 0 26625 11 AdaptiveLru 11 AdaptiveLru 0 0 0 1 1601 1602 0 14 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 0 0 1 0 3164 0 0 0 0 309
/**
 * A basic LRU-type algorithm, except that it is adaptive and attempts to
 * avoid evicting pages that have been used more frequently (even if less
 * recently) than other pages.
 *
 * The interface is designed to be identical to that for SimpleLru, so that it
 * may be used as a drop-in replacement.
 */

3164 7 Namable 0 2048 7 Namable 7 Namable 0 0 0 0 0 0 0 0 0 0 0 0 125
/**
 * A base class for all things which can have a name.  The name is either
 * empty or nonempty, but it is never NULL.
 */

3165 15 AdaptiveLruPage 0 26625 15 AdaptiveLruPage 15 AdaptiveLruPage 0 0 0 1 1621 1623 0 12 1622 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 0 0 2 3 3166 1617 1618 3 3167 1619 1620 0 0 575
/**
 * One atomic piece that may be managed by a AdaptiveLru chain.  To use this
 * class, inherit from it and override evict_lru().
 *
 * This class multiply inherits from two classes which in turn both inherit
 * from LinkedListNode.  This is just a sneaky C++ trick to allow this class
 * to inherit from LinkedListNode twice, so that pages can be stored on two
 * different linked lists simultaneously.  The AdaptiveLru class depends on
 * this; it maintains its pages in two different lists, one grouped by
 * priority, and one in order by next partial update needs.
 */

3166 26 AdaptiveLruPageDynamicList 0 1050624 26 AdaptiveLruPageDynamicList 26 AdaptiveLruPageDynamicList 0 0 0 0 0 0 0 0 0 0 0 0 114
// See the comment in the head of AdaptiveLruPage, below, for an explanation
// of these two silly little classes.

3167 25 AdaptiveLruPageStaticList 0 1050624 25 AdaptiveLruPageStaticList 25 AdaptiveLruPageStaticList 0 0 0 0 0 0 0 0 0 0 0 0 0

3168 9 GeomEnums 0 141313 9 GeomEnums 9 GeomEnums 0 0 0 1 1635 1636 0 0 0 0 0 0 7 3169 3170 3171 3172 3173 3174 3175 184
/**
 * This class exists just to provide scoping for the various enumerated types
 * used by Geom, GeomVertexData, GeomVertexArrayData, GeomPrimitive, and other
 * related classes.
 */

3169 9 UsageHint 0 794624 20 GeomEnums::UsageHint 20 GeomEnums::UsageHint 3168 0 0 0 0 0 0 0 0 0 5 9 UH_client 20 GeomEnums::UH_client 80
// UH_client: don't attempt to upload the data; always keep it on the
// client.
0 9 UH_stream 20 GeomEnums::UH_stream 154
// UH_stream: the data will be created once, used to render a few times,
// and then discarded.  This should be used for short-lived temporary
// objects.
1 10 UH_dynamic 21 GeomEnums::UH_dynamic 170
// UH_dynamic: the data will be repeatedly modified and re-rendered.  This
// is for data that will be modified at runtime, such as animated or soft-
// skinned vertices.
2 9 UH_static 20 GeomEnums::UH_static 281
// UH_static: the data will be created once, and used to render many
// times, without modification.  This is the most common case, since
// typically vertex data is not directly animated (this is not related to
// scene graph animation, e.g.  from adjusting transforms on a node).
3 14 UH_unspecified 25 GeomEnums::UH_unspecified 265
// UH_unspecified: the usage is unspecified.  This is intended as a "don't
// care" option for abstract objects; it should not be applied to any
// actual geometry to be rendered.  You take your chances if a geom
// actually gets into the scene graph with this set.
4 0 0

3170 13 GeomRendering 0 794624 24 GeomEnums::GeomRendering 24 GeomEnums::GeomRendering 3168 0 0 0 0 0 0 0 0 0 24 16 GR_indexed_point 27 GeomEnums::GR_indexed_point 31
// If there are indexed points.
1 16 GR_indexed_other 27 GeomEnums::GR_indexed_other 50
// If there is indexed geometry of any other type.
65536 15 GR_indexed_bits 26 GeomEnums::GR_indexed_bits 46
// The union of all of the indexed attributes.
65537 8 GR_point 19 GeomEnums::GR_point 34
// If there are any points at all.
2 21 GR_point_uniform_size 32 GeomEnums::GR_point_uniform_size 59
// If the points are all the same size, other than 1 pixel.
4 17 GR_per_point_size 28 GeomEnums::GR_per_point_size 52
// If the points have a per-vertex size designation.
8 20 GR_point_perspective 31 GeomEnums::GR_point_perspective 81
// If the points' size is specified in camera units rather than screen
// pixels.
16 21 GR_point_aspect_ratio 32 GeomEnums::GR_point_aspect_ratio 48
// If the points have a non-square aspect ratio.
32 14 GR_point_scale 25 GeomEnums::GR_point_scale 69
// If the points are under a scale transform, uniform or non-uniform.
64 15 GR_point_rotate 26 GeomEnums::GR_point_rotate 54
// If the points are rotated off the orthonormal axis.
128 15 GR_point_sprite 26 GeomEnums::GR_point_sprite 110
// If the points require texture coordinates interpolated across their
// face, to render textures as sprites.
256 26 GR_point_sprite_tex_matrix 37 GeomEnums::GR_point_sprite_tex_matrix 89
// If there is a texture matrix applied to the sprite's generated texture
// coordinates.
512 13 GR_point_bits 24 GeomEnums::GR_point_bits 72
// The union of all the above point attributes, except GR_indexed_point.
1022 17 GR_triangle_strip 28 GeomEnums::GR_triangle_strip 45
// If there are any of these composite types.
1024 15 GR_triangle_fan 26 GeomEnums::GR_triangle_fan 0
2048 13 GR_line_strip 24 GeomEnums::GR_line_strip 0
4096 17 GR_composite_bits 28 GeomEnums::GR_composite_bits 49
// The union of all of the above composite types.
7168 18 GR_strip_cut_index 29 GeomEnums::GR_strip_cut_index 66
// If strip-cut indices are used to restart a composite primitive.
131072 20 GR_flat_first_vertex 31 GeomEnums::GR_flat_first_vertex 68
// If the shade model requires a particular vertex for flat shading.
8192 19 GR_flat_last_vertex 30 GeomEnums::GR_flat_last_vertex 0
16384 19 GR_shade_model_bits 30 GeomEnums::GR_shade_model_bits 44
// The union of the above shade model types.
24576 24 GR_render_mode_wireframe 35 GeomEnums::GR_render_mode_wireframe 49
// If a particular non-fill polygon mode is used.
262144 20 GR_render_mode_point 31 GeomEnums::GR_render_mode_point 0
524288 12 GR_adjacency 23 GeomEnums::GR_adjacency 43
// The primitive has adjacency information.
1048576 0 265
// This type specifies a number of bits that are used to represent the
// rendering requirements of a particular Geom, as well as the rendering
// capabilities of the GSG.  The difference between the two indicates
// whether the Geom needs to be munged for the GSG.

3171 10 ShadeModel 0 794624 21 GeomEnums::ShadeModel 21 GeomEnums::ShadeModel 3168 0 0 0 0 0 0 0 0 0 4 10 SM_uniform 21 GeomEnums::SM_uniform 172
// SM_uniform: all vertices across all faces have the same colors and
// normals.  It doesn't really matter which ShadeModelAttrib mode is used
// to render this primitive.
0 9 SM_smooth 20 GeomEnums::SM_smooth 188
// SM_smooth: vertices within a single face have different colorsnormals
// that should be smoothed across the face.  This primitive should be
// rendered with SmoothModelAttrib::M_smooth.
1 20 SM_flat_first_vertex 31 GeomEnums::SM_flat_first_vertex 335
// SM_flat_(first,last)_vertex: each face within the primitive might have
// a different colornormal than the other faces, but across a particular
// face there is only one colornormal.  Each face's colornormal is taken
// from the (first, last) vertex of the face.  This primitive should be
// rendered with SmoothModelAttrib::M_flat.
2 19 SM_flat_last_vertex 30 GeomEnums::SM_flat_last_vertex 0
3 0 235
// The shade model specifies whether the per-vertex colors and normals
// indexed by a given primitive truly represent per-vertex colors and
// normals, or whether they actually represent per-triangle flat-shaded
// colors and normals.

3172 13 PrimitiveType 0 794624 24 GeomEnums::PrimitiveType 24 GeomEnums::PrimitiveType 3168 0 0 0 0 0 0 0 0 0 5 7 PT_none 18 GeomEnums::PT_none 0
0 11 PT_polygons 22 GeomEnums::PT_polygons 0
1 8 PT_lines 19 GeomEnums::PT_lines 0
2 9 PT_points 20 GeomEnums::PT_points 0
3 10 PT_patches 21 GeomEnums::PT_patches 0
4 0 165
// The primitive type represents the core primitive type of a particular
// GeomPrimitive.  It's used for determining what kind of antialiasing
// should be enabled.

3173 11 NumericType 0 794624 22 GeomEnums::NumericType 22 GeomEnums::NumericType 3168 0 0 0 0 0 0 0 0 0 12 8 NT_uint8 19 GeomEnums::NT_uint8 20
// An integer 0..255
0 9 NT_uint16 20 GeomEnums::NT_uint16 22
// An integer 0..65535
1 9 NT_uint32 20 GeomEnums::NT_uint32 27
// An integer 0..4294967295
2 14 NT_packed_dcba 25 GeomEnums::NT_packed_dcba 53
// DirectX style, four byte values packed in a uint32
3 14 NT_packed_dabc 25 GeomEnums::NT_packed_dabc 36
// DirectX packed color order (ARGB)
4 10 NT_float32 21 GeomEnums::NT_float32 27
// A single-precision float
5 10 NT_float64 21 GeomEnums::NT_float64 27
// A double-precision float
6 11 NT_stdfloat 22 GeomEnums::NT_stdfloat 69
// Either single- or double-precision, according to vertices-float64.
7 7 NT_int8 18 GeomEnums::NT_int8 23
// An integer -128..127
8 8 NT_int16 19 GeomEnums::NT_int16 27
// An integer -32768..32767
9 8 NT_int32 19 GeomEnums::NT_int32 37
// An integer -2147483648..2147483647
10 16 NT_packed_ufloat 27 GeomEnums::NT_packed_ufloat 54
// Three 10/11-bit float components packed in a uint32
11 0 120
// The numeric type determines what physical representation is used to
// encode a numeric value within the vertex data.

3174 8 Contents 0 794624 19 GeomEnums::Contents 19 GeomEnums::Contents 3168 0 0 0 0 0 0 0 0 0 10 7 C_other 18 GeomEnums::C_other 36
// Arbitrary meaning, leave it alone
0 7 C_point 18 GeomEnums::C_point 32
// A point in 3-space or 4-space
1 12 C_clip_point 23 GeomEnums::C_clip_point 48
// A point pre-transformed into clip coordinates
2 8 C_vector 19 GeomEnums::C_vector 59
// A surface tangent or binormal (see C_normal for normals)
3 10 C_texcoord 21 GeomEnums::C_texcoord 23
// A texture coordinate
4 7 C_color 18 GeomEnums::C_color 48
// 3- or 4-component color, ordered R, G, B, [A]
5 7 C_index 18 GeomEnums::C_index 39
// An index value into some other table
6 13 C_morph_delta 24 GeomEnums::C_morph_delta 55
// A delta from some base value, defining a blend shape
7 8 C_matrix 19 GeomEnums::C_matrix 118
// A transformation matrix.  This is typically three or four columns, but
// we pretend it's only one for convenience.
8 8 C_normal 19 GeomEnums::C_normal 124
// A special version of C_vector that should be used for normal vectors,
// which are scaled differently from other vectors.
9 0 194
// The contents determine the semantic meaning of a numeric value within the
// vertex data.  This is also used to determine what automatic transforms
// might be applied to the various columns.

3175 13 AnimationType 0 794624 24 GeomEnums::AnimationType 24 GeomEnums::AnimationType 3168 0 0 0 0 0 0 0 0 0 3 7 AT_none 18 GeomEnums::AT_none 23
// No vertex animation.
0 8 AT_panda 19 GeomEnums::AT_panda 51
// Vertex animation calculated on the CPU by Panda.
1 11 AT_hardware 22 GeomEnums::AT_hardware 55
// Hardware-accelerated animation on the graphics card.
2 0 86
// The type of animation data that is represented by a particular
// GeomVertexFormat.

3176 23 GeomVertexAnimationSpec 0 141313 23 GeomVertexAnimationSpec 23 GeomVertexAnimationSpec 0 0 0 1 1637 1646 3 3665 3666 3667 8 1638 1639 1640 1641 1642 1643 1644 1645 0 0 1 0 3168 0 0 0 0 550
/**
 * This object describes how the vertex animation, if any, represented in a
 * GeomVertexData is encoded.
 *
 * Vertex animation includes soft-skinned skeleton animation and morphs (blend
 * shapes), and might be performed on the CPU by Panda, or passed down to the
 * graphics backed to be performed on the hardware (depending on the
 * hardware's advertised capabilities).
 *
 * Changing this setting doesn't by itself change the way the animation is
 * actually performed; this just specifies how the vertices are set up to be
 * animated.
 */

3177 3 int 0 8194 3 int 3 int 0 1 0 0 0 0 0 0 0 0 0 0 0

3178 4 bool 0 8194 4 bool 4 bool 0 4 0 0 0 0 0 0 0 0 0 0 0

3179 12 InternalName 0 16852993 12 InternalName 12 InternalName 0 0 0 0 0 3 3668 3669 3670 35 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 0 0 1 0 3180 0 0 0 0 514
/**
 * Encodes a string name in a hash table, mapping it to a pointer.  This is
 * used to tokenify names so they may be used efficiently in low-level Panda
 * structures, for instance to differentiate the multiple sets of texture
 * coordinates that might be stored on a Geom.
 *
 * InternalNames are hierarchical, with the '.' used by convention as a
 * separator character.  You can construct a single InternalName as a
 * composition of one or more other names, or by giving it a source string
 * directly.
 */

3180 27 TypedWritableReferenceCount 0 2048 27 TypedWritableReferenceCount 27 TypedWritableReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 414
/**
 * A base class for things which need to inherit from both TypedWritable and
 * from ReferenceCount.  It's convenient to define this intermediate base
 * class instead of multiply inheriting from the two classes each time they
 * are needed, so that we can sensibly pass around pointers to things which
 * are both TypedWritables and ReferenceCounters.
 *
 * See also TypedObject for detailed instructions.
 */

3181 14 InternalName * 0 8576 14 InternalName * 14 InternalName * 0 0 3179 0 0 0 0 0 0 0 0 0 0

3182 6 string 0 2105344 11 std::string 11 std::string 0 0 3183 0 0 0 0 0 0 0 0 0 0

3183 20 basic_string< char > 0 2048 25 std::basic_string< char > 25 std::basic_string< char > 0 0 0 0 0 0 0 0 0 0 0 0 0

3184 12 string const 0 8832 17 std::string const 17 std::string const 0 0 3182 0 0 0 0 0 0 0 0 0 0

3185 16 GeomVertexColumn 0 26625 16 GeomVertexColumn 16 GeomVertexColumn 0 0 0 1 1682 1684 0 22 1683 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 0 0 1 0 3168 0 0 0 0 218
/**
 * This defines how a single column is interleaved within a vertex array
 * stored within a Geom.  The GeomVertexArrayFormat class maintains a list of
 * these to completely define a particular array structure.
 */

3186 21 GeomVertexArrayFormat 0 16803841 21 GeomVertexArrayFormat 21 GeomVertexArrayFormat 0 0 0 1 1710 1712 6 3671 3672 3673 3674 3675 3676 26 1711 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1 3870 0 2 3 3180 1706 1707 3 3168 1708 1709 0 0 717
/**
 * This describes the structure of a single array within a Geom data.  See
 * GeomVertexFormat for the parent class which collects together all of the
 * individual GeomVertexArrayFormat objects.
 *
 * A particular array may include any number of standard or user-defined
 * columns.  All columns consist of a sequence of one or more numeric values,
 * packed in any of a variety of formats; the semantic meaning of each column
 * is defined in general with its contents member, and in particular by its
 * name.  The standard array types used most often are named "vertex",
 * "normal", "texcoord", and "color"; other kinds of data may be piggybacked
 * into the data record simply by choosing a unique name.
 */

3187 24 GeomVertexColumn const * 0 8576 24 GeomVertexColumn const * 24 GeomVertexColumn const * 0 0 3188 0 0 0 0 0 0 0 0 0 0

3188 22 GeomVertexColumn const 0 8832 22 GeomVertexColumn const 22 GeomVertexColumn const 0 0 3185 0 0 0 0 0 0 0 0 0 0

3189 16 GeomVertexFormat 0 16803841 16 GeomVertexFormat 16 GeomVertexFormat 0 0 0 1 1742 1744 6 3677 3678 3679 3680 3681 3682 53 1743 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 8 3871 3872 3873 3874 3875 3876 3877 3878 0 2 3 3180 1738 1739 3 3168 1740 1741 0 0 924
/**
 * This class defines the physical layout of the vertex data stored within a
 * Geom.  The layout consists of a list of named columns, each of which has a
 * numeric type and a size.
 *
 * The columns are typically interleaved within a single array, but they may
 * also be distributed among multiple different arrays; at the extreme, each
 * column may be alone within its own array (which amounts to a parallel-array
 * definition).
 *
 * Thus, a GeomVertexFormat is really a list of GeomVertexArrayFormats, each
 * of which contains a list of columns.  However, a particular column name
 * should not appear more than once in the format, even between different
 * arrays.
 *
 * There are a handful of standard pre-defined GeomVertexFormat objects, or
 * you may define your own as needed.  You may record any combination of
 * standard and/or user-defined columns in your custom GeomVertexFormat
 * constructions.
 */

3190 29 GeomVertexAnimationSpec const 0 8832 29 GeomVertexAnimationSpec const 29 GeomVertexAnimationSpec const 0 0 3176 0 0 0 0 0 0 0 0 0 0

3191 29 GeomVertexArrayFormat const * 0 8576 29 GeomVertexArrayFormat const * 29 GeomVertexArrayFormat const * 0 0 3192 0 0 0 0 0 0 0 0 0 0

3192 27 GeomVertexArrayFormat const 0 8832 27 GeomVertexArrayFormat const 27 GeomVertexArrayFormat const 0 0 3186 0 0 0 0 0 0 0 0 0 0

3193 20 InternalName const * 0 8576 20 InternalName const * 20 InternalName const * 0 0 3194 0 0 0 0 0 0 0 0 0 0

3194 18 InternalName const 0 8832 18 InternalName const 18 InternalName const 0 0 3179 0 0 0 0 0 0 0 0 0 0

3195 9 SimpleLru 0 26625 9 SimpleLru 9 SimpleLru 0 0 0 1 1801 1802 0 10 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 0 0 2 3 3196 1797 1798 3 3164 1799 1800 0 0 83
/**
 * An implementation of a very simple LRU algorithm.  Also see AdaptiveLru.
 */

3196 14 LinkedListNode 0 2048 14 LinkedListNode 14 LinkedListNode 0 0 0 0 0 0 0 0 0 0 0 0 468
/**
 * This just stores the pointers to implement a doubly-linked list of some
 * kind of object.  There are occasions when a hand-rolled linked list is more
 * appropriate than an STL container.
 *
 * Typically, each node of the linked list, as well as the root of the list,
 * will inherit from this class.
 *
 * Note that this class is not inherently thread-safe; derived classes are
 * responsible for protecting any calls into it within mutexes, if necessary.
 */

3197 13 SimpleLruPage 0 26625 13 SimpleLruPage 13 SimpleLruPage 0 0 0 1 1815 1817 0 10 1816 1818 1819 1820 1821 1822 1823 1824 1825 1826 0 0 1 3 3196 1813 1814 0 0 134
/**
 * One atomic piece that may be managed by a SimpleLru chain.  To use this
 * class, inherit from it and override evict_lru().
 */

3198 15 SimpleAllocator 0 26625 15 SimpleAllocator 15 SimpleAllocator 0 0 0 1 1829 1830 0 9 1831 1832 1833 1834 1835 1836 1837 1838 1839 0 0 1 3 3196 1827 1828 0 0 227
/**
 * An implementation of a very simple block allocator.  This class can
 * allocate ranges of nonnegative integers within a specified upper limit; it
 * uses a simple first-fit algorithm to find the next available space.
 */

3199 20 SimpleAllocatorBlock 0 26625 20 SimpleAllocatorBlock 20 SimpleAllocatorBlock 0 0 0 0 1840 0 9 1841 1842 1843 1844 1845 1846 1847 1848 1849 0 0 1 0 3196 0 0 0 0 68
/**
 * A single block as returned from SimpleAllocator::alloc().
 */

3200 18 VertexDataSaveFile 0 75777 18 VertexDataSaveFile 18 VertexDataSaveFile 0 0 0 0 1830 0 3 1850 1851 1852 0 0 1 0 3198 0 0 0 0 174
/**
 * A temporary file to hold the vertex data that has been evicted from memory
 * and written to disk.  All vertex data arrays are written into one large
 * flat file.
 */

3201 14 VertexDataPage 0 43009 14 VertexDataPage 14 VertexDataPage 0 0 0 0 0 1 3683 18 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 0 0 2 3 3198 1853 1854 3 3197 1855 1856 0 1 3202 189
/**
 * A block of bytes that holds one or more VertexDataBlocks.  The entire page
 * may be paged out, in the form of in-memory compression or to an on-disk
 * cache file, if necessary.
 */

3202 8 RamClass 0 794624 24 VertexDataPage::RamClass 24 VertexDataPage::RamClass 3201 0 0 0 0 0 0 0 0 0 4 11 RC_resident 27 VertexDataPage::RC_resident 0
0 13 RC_compressed 29 VertexDataPage::RC_compressed 0
1 7 RC_disk 23 VertexDataPage::RC_disk 0
2 14 RC_end_of_list 30 VertexDataPage::RC_end_of_list 26
// list marker; do not use
3 0 159
// These are used to indicate the current residency state of the page, which
// may or may not have been temporarily evicted to satisfy memory
// requirements.

3203 20 VertexDataSaveFile * 0 8576 20 VertexDataSaveFile * 20 VertexDataSaveFile * 0 0 3200 0 0 0 0 0 0 0 0 0 0

3204 14 VertexDataBook 0 26625 14 VertexDataBook 14 VertexDataBook 0 0 0 1 1875 1876 0 5 1877 1878 1879 1880 1881 0 0 0 0 0 105
/**
 * A collection of VertexDataPages, which can be used to allocate new
 * VertexDataBlock objects.
 */

3205 15 VertexDataBlock 0 141313 15 VertexDataBlock 15 VertexDataBlock 0 0 0 0 1888 0 2 1886 1887 0 0 2 3 3199 1882 1883 3 3206 1884 1885 0 0 113
/**
 * A block of bytes that stores the actual raw vertex data referenced by a
 * GeomVertexArrayData object.
 */

3206 14 ReferenceCount 0 2048 14 ReferenceCount 14 ReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 203
/**
 * A base class for all things that want to be reference-counted.
 * ReferenceCount works in conjunction with PointerTo to automatically delete
 * objects when the last pointer to them goes away.
 */

3207 19 GeomVertexArrayData 0 26625 19 GeomVertexArrayData 19 GeomVertexArrayData 0 0 0 1 1895 1897 4 3684 3685 3686 3687 33 1896 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 0 0 3 3 3208 1889 1890 3 3197 1891 1892 3 3168 1893 1894 0 0 678
/**
 * This is the data for one array of a GeomVertexData structure.  Many
 * GeomVertexData structures will only define one array, with all data
 * elements interleaved (DirectX 8.0 and before insisted on this format); some
 * will define multiple arrays.
 *
 * DirectX calls this concept of one array a "stream". It also closely
 * correlates with the concept of a vertex buffer.
 *
 * This object is just a block of data.  In general, you should not be
 * directly messing with this object from application code.  See
 * GeomVertexData for the organizing structure, and see
 * GeomVertexReader/Writer/Rewriter for high-level tools to manipulate the
 * actual vertex data.
 */

3208 17 CopyOnWriteObject 0 2048 17 CopyOnWriteObject 17 CopyOnWriteObject 0 0 0 0 0 0 0 0 0 0 0 0 169
/**
 * This base class provides basic reference counting, but also can be used
 * with a CopyOnWritePointer to provide get_read_pointer() and
 * get_write_pointer().
 */

3209 6 size_t 0 2105344 11 std::size_t 11 std::size_t 0 0 3210 0 0 0 0 0 0 0 0 0 0

3210 22 unsigned long long int 0 8230 22 unsigned long long int 22 unsigned long long int 0 8 0 0 0 0 0 0 0 0 0 0 0

3211 9 UpdateSeq 0 2048 9 UpdateSeq 9 UpdateSeq 0 0 0 0 0 0 0 0 0 0 0 0 761
/**
 * This is a sequence number that increments monotonically.  It can be used to
 * track cache updates, or serve as a kind of timestamp for any changing
 * properties.
 *
 * A special class is used instead of simply an int, so we can elegantly
 * handle such things as wraparound and special cases.  There are two special
 * cases.  Firstly, a sequence number is 'initial' when it is first created.
 * This sequence is older than any other sequence number.  Secondly, a
 * sequence number may be explicitly set to 'old'.  This is older than any
 * other sequence number except 'initial'.  Finally, we have the explicit
 * number 'fresh', which is newer than any other sequence number.  All other
 * sequences are numeric and are monotonically increasing.
 */

3212 25 GeomVertexArrayDataHandle 0 26625 25 GeomVertexArrayDataHandle 25 GeomVertexArrayDataHandle 0 0 0 0 1934 5 3688 3689 3690 3691 3692 20 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 0 0 2 3 3206 1930 1931 3 3168 1932 1933 0 0 504
/**
 * This data object is returned by GeomVertexArrayData::get_handle() or
 * modify_handle(). As long as it exists, the data is locked; when the last of
 * these destructs, the data is unlocked.
 *
 * Only one thread at a time may lock the data; other threads attempting to
 * lock the data will block.  A given thread may simultaneously lock the data
 * multiple times.
 *
 * This class serves in lieu of a pair of GeomVertexArrayDataPipelineReader
 * and GeomVertexArrayDataPipelineWriter classes
 */

3213 21 GeomVertexArrayData * 0 8576 21 GeomVertexArrayData * 21 GeomVertexArrayData * 0 0 3207 0 0 0 0 0 0 0 0 0 0

3214 16 GeomCacheManager 0 43009 16 GeomCacheManager 16 GeomCacheManager 0 0 0 0 0 0 5 1955 1956 1957 1958 1959 0 0 0 0 0 640
/**
 * This is used to keep track of, and limit the size of, the cache of munged
 * vertices, which would otherwise be distributed through all of the
 * GeomVertexData objects in the system.
 *
 * The actual data in the cache is not stored here, but rather it is
 * distributed among the various GeomVertexData source objects.  This allows
 * the cache data to propagate through the multiprocess pipeline.
 *
 * This structure actually caches any of a number of different types of
 * pointers, and mixes them all up in the same LRU cache list.  Some of them
 * (such as GeomMunger) are reference-counted here in the cache; most are not.
 */

3215 15 VertexTransform 0 75777 15 VertexTransform 15 VertexTransform 0 0 0 0 0 1 3693 9 1960 1961 1962 1963 1964 1965 1966 1967 1968 0 0 1 0 3180 0 0 0 0 305
/**
 * This is an abstract base class that holds a pointer to some transform,
 * computed in some arbitrary way, that is to be applied to vertices during
 * rendering.  This is used to implement soft-skinned and animated vertices.
 * Derived classes will define how the transform is actually computed.
 */

3216 14 TransformTable 0 75777 14 TransformTable 14 TransformTable 0 0 0 1 1969 0 3 3694 3695 3696 12 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1 3879 0 1 0 3180 0 0 0 0 328
/**
 * Stores the total set of VertexTransforms that the vertices in a particular
 * GeomVertexData object might depend on.
 *
 * This structure is used for a GeomVertexData set up to compute its dynamic
 * vertices on the graphics card.  See TransformBlendTable for one set up to
 * compute its dynamic vertices on the CPU.
 */

3217 23 VertexTransform const * 0 8576 23 VertexTransform const * 23 VertexTransform const * 0 0 3218 0 0 0 0 0 0 0 0 0 0

3218 21 VertexTransform const 0 8832 21 VertexTransform const 21 VertexTransform const 0 0 3215 0 0 0 0 0 0 0 0 0 0

3219 14 TransformBlend 0 26625 14 TransformBlend 14 TransformBlend 0 0 0 1 1982 1984 3 3697 3698 3699 23 1983 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 1 3880 0 0 0 0 150
/**
 * This defines a single entry in a TransformBlendTable.  It represents a
 * unique combination of VertexTransform pointers and blend amounts.
 */

3220 11 PN_stdfloat 0 2105344 11 PN_stdfloat 11 PN_stdfloat 0 0 3221 0 0 0 0 0 0 0 0 0 0

3221 5 float 0 8194 5 float 5 float 0 2 0 0 0 0 0 0 0 0 0 0 0

3222 19 TransformBlendTable 0 75777 19 TransformBlendTable 19 TransformBlendTable 0 0 0 1 2007 0 5 3700 3701 3702 3703 3704 14 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 1 3881 0 1 0 3208 0 0 0 0 537
/**
 * This structure collects together the different combinations of transforms
 * and blend amounts used by a GeomVertexData, to facilitate computing dynamic
 * vertices on the CPU at runtime.  Each vertex has a pointer to exactly one
 * of the entries in this table, and each entry defines a number of
 * transform/blend combinations.
 *
 * This structure is used for a GeomVertexData set up to compute its dynamic
 * vertices on the CPU.  See TransformTable for one set up to compute its
 * dynamic vertices on the graphics card.
 */

3223 20 TransformBlend const 0 8832 20 TransformBlend const 20 TransformBlend const 0 0 3219 0 0 0 0 0 0 0 0 0 0

3224 17 SparseArray const 0 8832 17 SparseArray const 17 SparseArray const 0 0 3225 0 0 0 0 0 0 0 0 0 0

3225 11 SparseArray 0 2048 11 SparseArray 11 SparseArray 0 0 0 0 0 0 0 0 0 0 0 0 736
/**
 * This class records a set of integers, where each integer is either present
 * or not present in the set.
 *
 * It is similar in principle and in interface to a BitArray (which can be
 * thought of as a set of integers, one integer corresponding to each
 * different bit position), but the SparseArray is implemented as a list of
 * min/max subrange lists, rather than as a bitmask.
 *
 * This makes it particularly efficient for storing sets which consist of
 * large sections of consecutively included or consecutively excluded
 * elements, with arbitrarily large integers, but particularly inefficient for
 * doing boolean operations such as & or |.
 *
 * Also, unlike BitArray, the SparseArray can store negative integers.
 */

3226 12 VertexSlider 0 75777 12 VertexSlider 12 VertexSlider 0 0 0 0 0 3 3705 3706 3707 6 2022 2023 2024 2025 2026 2027 0 0 1 0 3180 0 0 0 0 343
/**
 * This is an abstract base class that retains some slider value, which is a
 * linear value that typically ranges from 0.0 to 1.0, and is used to control
 * the animation of morphs (blend shapes).
 *
 * It is similar to VertexTransform, which keeps a full 4x4 transform matrix,
 * but the VertexSlider only keeps a single float value.
 */

3227 11 SliderTable 0 75777 11 SliderTable 11 SliderTable 0 0 0 1 2028 0 1 3708 16 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 1 3882 0 1 0 3180 0 0 0 0 402
/**
 * Stores the total set of VertexSliders that the vertices in a particular
 * GeomVertexData object might depend on.
 *
 * This is similar to a TransformTable, but it stores VertexSliders instead of
 * VertexTransforms, and it stores them by name instead of by index number.
 * Also, it is only used when animating vertices on the CPU, since GPU's don't
 * support morphs at this point in time.
 */

3228 14 GeomVertexData 0 26625 14 GeomVertexData 14 GeomVertexData 0 0 0 1 2049 2051 8 3709 3710 3711 3712 3713 3714 3715 3716 53 2050 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 1 3883 0 2 3 3208 2045 2046 3 3168 2047 2048 0 0 1085
/**
 * This defines the actual numeric vertex data stored in a Geom, in the
 * structure defined by a particular GeomVertexFormat object.
 *
 * The data consists of one or more arrays, each of which in turn consists of
 * a series of rows, one per vertex.  All arrays should have the same number
 * of rows; each vertex is defined by the column data from a particular row
 * across all arrays.
 *
 * Often, there will be only one array per Geom, and the various columns
 * defined in the GeomVertexFormat will be interleaved within that array.
 * However, it is also possible to have multiple different arrays, with a
 * certain subset of the total columns defined in each array.
 *
 * However the data is distributed, the effect is of a single table of
 * vertices, where each vertex is represented by one row of the table.
 *
 * In general, application code should not attempt to directly manipulate the
 * vertex data through this structure; instead, use the GeomVertexReader,
 * GeomVertexWriter, and GeomVertexRewriter objects to read and write vertex
 * data at a high level.
 */

3229 24 GeomVertexFormat const * 0 8576 24 GeomVertexFormat const * 24 GeomVertexFormat const * 0 0 3230 0 0 0 0 0 0 0 0 0 0

3230 22 GeomVertexFormat const 0 8832 22 GeomVertexFormat const 22 GeomVertexFormat const 0 0 3189 0 0 0 0 0 0 0 0 0 0

3231 37 ConstPointerTo< GeomVertexArrayData > 0 2048 37 ConstPointerTo< GeomVertexArrayData > 37 ConstPointerTo< GeomVertexArrayData > 0 0 0 0 0 0 0 0 0 0 0 0 0

3232 22 TransformTable const * 0 8576 22 TransformTable const * 22 TransformTable const * 0 0 3233 0 0 0 0 0 0 0 0 0 0

3233 20 TransformTable const 0 8832 20 TransformTable const 20 TransformTable const 0 0 3216 0 0 0 0 0 0 0 0 0 0

3234 19 SliderTable const * 0 8576 19 SliderTable const * 19 SliderTable const * 0 0 3235 0 0 0 0 0 0 0 0 0 0

3235 17 SliderTable const 0 8832 17 SliderTable const 17 SliderTable const 0 0 3227 0 0 0 0 0 0 0 0 0 0

3236 22 AnimateVerticesRequest 0 141313 22 AnimateVerticesRequest 22 AnimateVerticesRequest 0 0 0 1 2104 2107 0 2 2105 2106 0 0 1 0 3237 0 0 0 0 587
/**
 * This class object manages a single asynchronous request to animate vertices
 * on a GeomVertexData object.  animate_vertices will be called with
 * force=true (i.e.  blocking) in a sub-thread (if threading is available).
 * No result is stored or returned from this object.  It is expected that the
 * result will be cached and available for immediate use later during
 * rendering.  Thus it is important that the main thread block while these
 * requests are being run (presumably on multiple CPUs/cores), to ensure that
 * the data has been computed by the time it's needed.
 */

3237 9 AsyncTask 0 2048 9 AsyncTask 9 AsyncTask 0 0 0 0 0 0 0 0 0 0 0 0 217
/**
 * This class represents a concrete task performed by an AsyncManager.
 * Normally, you would subclass from this class, and override do_task(), to
 * define the functionality you wish to have the task perform.
 */

3238 12 SavedContext 0 141313 12 SavedContext 12 SavedContext 0 0 0 0 2109 0 1 2108 0 0 1 0 3239 0 0 0 0 176
/**
 * This is the base class for all GSG-specific context objects, such as
 * TextureContext and GeomContext.  It exists mainly to provide some
 * structural organization.
 */

3239 11 TypedObject 0 2048 11 TypedObject 11 TypedObject 0 0 0 0 0 0 0 0 0 0 0 0 2508
/**
 * This is an abstract class that all classes which use TypeHandle, and also
 * provide virtual functions to support polymorphism, should inherit from.
 * Each derived class should define get_type(), which should return the
 * specific type of the derived class.  Inheriting from this automatically
 * provides support for is_of_type() and is_exact_type().
 *
 * All classes that inherit directly or indirectly from TypedObject should
 * redefine get_type() and force_init_type(), as shown below.  Some classes
 * that do not inherit from TypedObject may still declare TypeHandles for
 * themselves by defining methods called get_class_type() and init_type().
 * Classes such as these may serve as base classes, but the dynamic type
 * identification system will be limited.  Classes that do not inherit from
 * TypedObject need not define the virtual functions get_type() and
 * force_init_type() (or any other virtual functions).
 *
 * There is a specific layout for defining the overrides from this class.
 * Keeping the definitions formatted just like these examples will allow
 * someone in the future to use a sed (or similar) script to make global
 * changes, if necessary.  Avoid rearranging the braces or the order of the
 * functions unless you're ready to change them in every file all at once.
 *
 * What follows are some examples that can be used in new classes that you
 * create.
 *
 * @par In the class definition (.h file):
 * @code
 * public:
 *   static TypeHandle get_class_type() {
 *     return _type_handle;
 *   }
 *   static void init_type() {
 *     <<<BaseClassOne>>>::init_type();
 *     <<<BaseClassTwo>>>::init_type();
 *     <<<BaseClassN>>>::init_type();
 *     register_type(_type_handle, "<<<ThisClassStringName>>>",
 *                   <<<BaseClassOne>>>::get_class_type(),
 *                   <<<BaseClassTwo>>>::get_class_type(),
 *                   <<<BaseClassN>>>::get_class_type());
 *   }
 *   virtual TypeHandle get_type() const {
 *     return get_class_type();
 *   }
 *   virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
 *
 * private:
 *   static TypeHandle _type_handle;
 * @endcode
 *
 * @par In the class .cxx file:
 * @code
 * TypeHandle <<<ThisClassStringName>>>::_type_handle;
 * @endcode
 *
 * @par In the class config_<<<PackageName>>>.cxx file:
 * @code
 * ConfigureFn(config_<<<PackageName>>>) {
 *   <<<ClassOne>>>::init_type();
 *   <<<ClassTwo>>>::init_type();
 *   <<<ClassN>>>::init_type();
 * }
 * @endcode
 */

3240 13 BufferContext 0 26625 13 BufferContext 13 BufferContext 0 0 0 0 2112 5 3717 3718 3719 3720 3721 5 2113 2114 2115 2116 2118 0 0 1 3 3238 2110 2111 0 0 459
/**
 * This is a base class for those kinds of SavedContexts that occupy an
 * easily-measured (and substantial) number of bytes in the video card's frame
 * buffer memory or AGP memory.  At the present, this includes most of the
 * SavedContext types: VertexBufferContext and IndexBufferContext, as well as
 * TextureContext.
 *
 * This class provides methods for tracking the video memory utilization, as
 * well as residency of each object, via PStats.
 */

3241 29 TypedWritableReferenceCount * 0 8576 29 TypedWritableReferenceCount * 29 TypedWritableReferenceCount * 0 0 3180 0 0 0 0 0 0 0 0 0 0

3242 13 GeomPrimitive 0 26625 13 GeomPrimitive 13 GeomPrimitive 0 0 0 0 2124 15 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 75 2123 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 1 3884 0 2 3 3208 2119 2120 3 3168 2121 2122 0 0 803
/**
 * This is an abstract base class for a family of classes that represent the
 * fundamental geometry primitives that may be stored in a Geom.
 *
 * They all have in common the fact that they are defined by tables of vertex
 * data stored in a GeomVertexData object.  Each GeomPrimitive object contains
 * an ordered list of integers, which index into the vertex array defined by
 * the GeomVertexData and define the particular vertices of the GeomVertexData
 * that are used for this primitive.
 *
 * The meaning of a given arrangement of vertices is defined by each
 * individual primitive type; for instance, a GeomTriangle renders a triangle
 * from each three consecutive vertices, while a GeomTriangleStrip renders a
 * strip of (n - 2) connected triangles from each sequence of n vertices.
 */

3243 12 TextureStage 0 75777 12 TextureStage 12 TextureStage 0 0 0 1 2199 0 13 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 54 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 0 0 1 0 3180 0 0 0 4 3244 3245 3246 3247 336
/**
 * Defines the properties of a named stage of the multitexture pipeline.  The
 * TextureAttrib will associated a number of these stages with Texture
 * objects, and the GSG will render geometry by sorting all of the currently
 * active TextureStages in order and then issuing the appropriate rendering
 * calls to activate them.
 */

3244 4 Mode 0 794624 18 TextureStage::Mode 18 TextureStage::Mode 3243 0 0 0 0 0 0 0 0 0 17 10 M_modulate 24 TextureStage::M_modulate 0
0 7 M_decal 21 TextureStage::M_decal 0
1 7 M_blend 21 TextureStage::M_blend 0
2 9 M_replace 23 TextureStage::M_replace 0
3 5 M_add 19 TextureStage::M_add 0
4 9 M_combine 23 TextureStage::M_combine 0
5 19 M_blend_color_scale 33 TextureStage::M_blend_color_scale 0
6 15 M_modulate_glow 29 TextureStage::M_modulate_glow 47
// When fixed-function, equivalent to modulate.
7 16 M_modulate_gloss 30 TextureStage::M_modulate_gloss 47
// When fixed-function, equivalent to modulate.
8 8 M_normal 22 TextureStage::M_normal 0
9 15 M_normal_height 29 TextureStage::M_normal_height 0
10 6 M_glow 20 TextureStage::M_glow 49
// Rarely used: modulate_glow  is more efficient.
11 7 M_gloss 21 TextureStage::M_gloss 49
// Rarely used: modulate_gloss is more efficient.
12 8 M_height 22 TextureStage::M_height 49
// Rarely used: normal_height  is more efficient.
13 10 M_selector 24 TextureStage::M_selector 0
14 14 M_normal_gloss 28 TextureStage::M_normal_gloss 0
15 10 M_emission 24 TextureStage::M_emission 0
16 0 0

3245 11 CombineMode 0 794624 25 TextureStage::CombineMode 25 TextureStage::CombineMode 3243 0 0 0 0 0 0 0 0 0 9 12 CM_undefined 26 TextureStage::CM_undefined 0
0 10 CM_replace 24 TextureStage::CM_replace 0
1 11 CM_modulate 25 TextureStage::CM_modulate 0
2 6 CM_add 20 TextureStage::CM_add 0
3 13 CM_add_signed 27 TextureStage::CM_add_signed 0
4 14 CM_interpolate 28 TextureStage::CM_interpolate 0
5 11 CM_subtract 25 TextureStage::CM_subtract 0
6 11 CM_dot3_rgb 25 TextureStage::CM_dot3_rgb 67
// The following are valid only for combine_rgb, not combine_alpha.
7 12 CM_dot3_rgba 26 TextureStage::CM_dot3_rgba 0
8 0 0

3246 13 CombineSource 0 794624 27 TextureStage::CombineSource 27 TextureStage::CombineSource 3243 0 0 0 0 0 0 0 0 0 7 12 CS_undefined 26 TextureStage::CS_undefined 0
0 10 CS_texture 24 TextureStage::CS_texture 0
1 11 CS_constant 25 TextureStage::CS_constant 0
2 16 CS_primary_color 30 TextureStage::CS_primary_color 0
3 11 CS_previous 25 TextureStage::CS_previous 0
4 23 CS_constant_color_scale 37 TextureStage::CS_constant_color_scale 0
5 20 CS_last_saved_result 34 TextureStage::CS_last_saved_result 0
6 0 0

3247 14 CombineOperand 0 794624 28 TextureStage::CombineOperand 28 TextureStage::CombineOperand 3243 0 0 0 0 0 0 0 0 0 5 12 CO_undefined 26 TextureStage::CO_undefined 0
0 12 CO_src_color 26 TextureStage::CO_src_color 0
1 22 CO_one_minus_src_color 36 TextureStage::CO_one_minus_src_color 0
2 12 CO_src_alpha 26 TextureStage::CO_src_alpha 0
3 22 CO_one_minus_src_alpha 36 TextureStage::CO_one_minus_src_alpha 0
4 0 0

3248 6 LColor 0 2105344 6 LColor 6 LColor 0 0 3249 0 0 0 0 0 0 0 0 0 0

3249 7 LColorf 0 2105344 7 LColorf 7 LColorf 0 0 3250 0 0 0 0 0 0 0 0 0 0

3250 10 LVecBase4f 0 2048 10 LVecBase4f 10 LVecBase4f 0 0 0 0 0 0 0 0 0 0 0 0 77
/**
 * This is the base class for all three-component vectors and points.
 */

3251 14 TextureStage * 0 8576 14 TextureStage * 14 TextureStage * 0 0 3243 0 0 0 0 0 0 0 0 0 0

3252 4 Geom 0 26625 4 Geom 4 Geom 0 0 0 1 2258 2260 7 3750 3751 3752 3753 3754 3755 3756 66 2259 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 1 3885 0 2 3 3208 2254 2255 3 3168 2256 2257 0 0 418
/**
 * A container for geometry primitives.  This class associates one or more
 * GeomPrimitive objects with a table of vertices defined by a GeomVertexData
 * object.  All of the primitives stored in a particular Geom are drawn from
 * the same set of vertices (each primitive uses a subset of all of the
 * vertices in the table), and all of them must be rendered at the same time,
 * in the same graphics state.
 */

3253 31 ConstPointerTo< GeomPrimitive > 0 2048 31 ConstPointerTo< GeomPrimitive > 31 ConstPointerTo< GeomPrimitive > 0 0 0 0 0 0 0 0 0 0 0 0 0

3254 10 BoundsType 0 794624 26 BoundingVolume::BoundsType 26 BoundingVolume::BoundsType 3255 0 0 0 0 0 0 0 0 0 5 10 BT_default 26 BoundingVolume::BT_default 0
0 7 BT_best 23 BoundingVolume::BT_best 0
1 9 BT_sphere 25 BoundingVolume::BT_sphere 0
2 6 BT_box 22 BoundingVolume::BT_box 0
3 10 BT_fastest 26 BoundingVolume::BT_fastest 0
4 0 80
// This enum is used to control the automatic generation of bounding
// volumes.

3255 14 BoundingVolume 0 2048 14 BoundingVolume 14 BoundingVolume 0 0 0 0 0 0 0 0 0 0 0 0 330
/**
 * This is an abstract class for any volume in any sense which can be said to
 * define the locality of reference of a node in a graph, along with all of
 * its descendants.  It is not necessarily a geometric volume (although see
 * GeometricBoundingVolume); this is simply an abstract interface for bounds
 * of any sort.
 */

3256 11 GeomContext 0 141313 11 GeomContext 11 GeomContext 0 0 0 0 2328 1 3757 2 2326 2327 0 0 1 0 3238 0 0 0 0 534
/**
 * This is a special class object that holds all the information returned by a
 * particular GSG to indicate the geom's internal context identifier.
 *
 * Geoms typically have an immediate-mode and a retained-mode operation.  When
 * using geoms in retained-mode (in response to Geom::prepare()), the GSG will
 * create some internal handle for the geom and store it here.  The geom
 * stores all of these handles internally.
 *
 * In the case of OpenGL, for example, a GeomContext corresponds to a display
 * list identifier.
 */

3257 6 Geom * 0 8576 6 Geom * 6 Geom * 0 0 3252 0 0 0 0 0 0 0 0 0 0

3258 9 GeomLines 0 75777 9 GeomLines 9 GeomLines 0 0 0 1 2329 2124 0 4 2330 2331 2332 2333 0 0 1 0 3242 0 0 0 0 58
/**
 * Defines a series of disconnected line segments.
 */

3259 18 GeomLinesAdjacency 0 75777 18 GeomLinesAdjacency 18 GeomLinesAdjacency 0 0 0 1 2334 2124 0 4 2335 2336 2337 2338 0 0 1 0 3242 0 0 0 0 139
/**
 * Defines a series of disconnected line segments with adjacency information,
 * for use with geometry shaders.
 *
 * @since 1.10.0
 */

3260 14 GeomLinestrips 0 75777 14 GeomLinestrips 14 GeomLinestrips 0 0 0 1 2339 2124 0 4 2340 2341 2342 2343 0 0 1 0 3242 0 0 0 0 43
/**
 * Defines a series of line strips.
 */

3261 23 GeomLinestripsAdjacency 0 75777 23 GeomLinestripsAdjacency 23 GeomLinestripsAdjacency 0 0 0 1 2344 2124 0 4 2345 2346 2347 2348 0 0 1 0 3242 0 0 0 0 90
/**
 * Defines a series of line strips with adjacency information.
 *
 * @since 1.10.0
 */

3262 11 GeomPatches 0 75777 11 GeomPatches 11 GeomPatches 0 0 0 1 2349 2124 0 4 2350 2351 2352 2353 0 0 1 0 3242 0 0 0 0 126
/**
 * Defines a series of "patches", fixed-size groupings of vertices that must
 * be processed by a tessellation shader.
 */

3263 10 GeomPoints 0 75777 10 GeomPoints 10 GeomPoints 0 0 0 1 2354 2124 0 4 2355 2356 2357 2358 0 0 1 0 3242 0 0 0 0 51
/**
 * Defines a series of disconnected points.
 */

3264 13 GeomTriangles 0 75777 13 GeomTriangles 13 GeomTriangles 0 0 0 1 2359 2124 0 4 2360 2361 2362 2363 0 0 1 0 3242 0 0 0 0 54
/**
 * Defines a series of disconnected triangles.
 */

3265 22 GeomTrianglesAdjacency 0 75777 22 GeomTrianglesAdjacency 22 GeomTrianglesAdjacency 0 0 0 1 2364 2124 0 4 2365 2366 2367 2368 0 0 1 0 3242 0 0 0 0 102
/**
 * Defines a series of disconnected triangles, with adjacency information.
 *
 * @since 1.10.0
 */

3266 11 GeomTrifans 0 75777 11 GeomTrifans 11 GeomTrifans 0 0 0 1 2369 2124 0 4 2370 2371 2372 2373 0 0 1 0 3242 0 0 0 0 45
/**
 * Defines a series of triangle fans.
 */

3267 13 GeomTristrips 0 75777 13 GeomTristrips 13 GeomTristrips 0 0 0 1 2374 2124 0 4 2375 2376 2377 2378 0 0 1 0 3242 0 0 0 0 47
/**
 * Defines a series of triangle strips.
 */

3268 22 GeomTristripsAdjacency 0 75777 22 GeomTristripsAdjacency 22 GeomTristripsAdjacency 0 0 0 1 2379 2124 0 4 2380 2381 2382 2383 0 0 1 0 3242 0 0 0 0 94
/**
 * Defines a series of triangle strips with adjacency information.
 *
 * @since 1.10.0
 */

3269 16 GeomVertexReader 0 26625 16 GeomVertexReader 16 GeomVertexReader 0 0 0 1 2384 2386 0 41 2385 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 0 0 1 0 3168 0 0 0 0 1256
/**
 * This object provides a high-level interface for quickly reading a sequence
 * of numeric values from a vertex table.
 *
 * It is particularly optimized for reading a single column of data values for
 * a series of vertices, without changing columns between each number.
 * Although you can also use one GeomVertexReader to read across the columns
 * if it is convenient, by calling set_column() repeatedly at each vertex, it
 * is faster to read down the columns, and to use a different GeomVertexReader
 * for each column.
 *
 * Note that a GeomVertexReader does not keep a reference count to the actual
 * vertex data buffer (it grabs the current data buffer from the
 * GeomVertexData whenever set_column() is called).  This means that it is
 * important not to keep a GeomVertexReader object around over a long period
 * of time in which the data buffer is likely to be deallocated; it is
 * intended for making a quick pass over the data in one session.
 *
 * It also means that you should create any GeomVertexWriters *before*
 * creating GeomVertexReaders on the same data, since the writer itself might
 * cause the vertex buffer to be deallocated.  Better yet, use a
 * GeomVertexRewriter if you are going to create both of them anyway.
 */

3270 16 GeomVertexWriter 0 26625 16 GeomVertexWriter 16 GeomVertexWriter 0 0 0 1 2427 2429 0 62 2428 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 0 0 1 0 3168 0 0 0 0 1822
/**
 * This object provides a high-level interface for quickly writing a sequence
 * of numeric values from a vertex table.
 *
 * This object can be used both to replace existing vertices in the table, or
 * to extend the table with new vertices.  The set_data*() family of methods
 * can only be used to replace existing data; it is an error to allow these to
 * run past the end of the data.  The add_data*() family of methods, on the
 * other hand, can be used to replace existing data or add new data; if you
 * call set_row() into the middle of existing data the add_data*() methods
 * will behave like the corresponding set_data*(), but if they run past the
 * end of existing data they will quietly add new vertices.
 *
 * Like GeomVertexReader, the writer is particularly optimized for writing a
 * single column of data values for a series of vertices, without changing
 * columns between each number.  Although you can also use one
 * GeomVertexWriter to write across the columns if it is convenient, by
 * calling set_column() repeatedly at each vertex, it is faster to write down
 * the columns, and to use a different GeomVertexWriter for each column.
 *
 * Note that, like a GeomVertexReader, a GeomVertexWriter does not keep a
 * reference count to the actual vertex data buffer.  This means that it is
 * important not to keep a GeomVertexWriter object around over a long period
 * of time in which the data buffer is likely to be deallocated; it is
 * intended for making a quick pass over the data in one session.
 *
 * It also means that you should create any GeomVertexWriters *before*
 * creating GeomVertexReaders on the same data, since the writer itself might
 * cause the vertex buffer to be deallocated.  Better yet, use a
 * GeomVertexRewriter if you are going to create both of them anyway.
 */

3271 18 GeomVertexRewriter 0 26625 18 GeomVertexRewriter 18 GeomVertexRewriter 0 0 0 1 2495 2497 0 16 2496 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 0 0 2 3 3270 2491 2492 3 3269 2493 2494 0 0 628
/**
 * This object provides the functionality of both a GeomVertexReader and a
 * GeomVertexWriter, combined together into one convenient package.  It is
 * designed for making a single pass over a GeomVertexData object, modifying
 * rows as it goes.
 *
 * Although it doesn't provide any real performance benefit over using a
 * separate reader and writer on the same data, it should probably be used in
 * preference to a separate reader and writer, because it makes an effort to
 * manage the reference counts properly between the reader and the writer to
 * avoid accidentally dereferencing either array while recopying.
 */

3272 12 SamplerState 0 141313 12 SamplerState 12 SamplerState 0 0 0 1 2513 2552 13 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 38 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 0 0 0 0 2 3273 3274 176
/**
 * Represents a set of settings that indicate how a texture is sampled.  This
 * can be used to sample the same texture using different settings in
 * different places.
 */

3273 10 FilterType 0 794624 24 SamplerState::FilterType 24 SamplerState::FilterType 3272 0 0 0 0 0 0 0 0 0 9 10 FT_nearest 24 SamplerState::FT_nearest 25
// Point sample the pixel
0 9 FT_linear 23 SamplerState::FT_linear 48
// Bilinear filtering of four neighboring pixels
1 25 FT_nearest_mipmap_nearest 39 SamplerState::FT_nearest_mipmap_nearest 55
// Point sample the pixel from the nearest mipmap level
2 24 FT_linear_mipmap_nearest 38 SamplerState::FT_linear_mipmap_nearest 58
// Bilinear filter the pixel from the nearest mipmap level
3 24 FT_nearest_mipmap_linear 38 SamplerState::FT_nearest_mipmap_linear 68
// Point sample the pixel from two mipmap levels, and linearly blend
4 23 FT_linear_mipmap_linear 37 SamplerState::FT_linear_mipmap_linear 116
// A.k.a.  trilinear filtering: Bilinear filter the pixel from two mipmap
// levels, and linearly blend the results.
5 9 FT_shadow 23 SamplerState::FT_shadow 79
// The OpenGL ARB_shadow extension can be thought of as a kind of
// filtering.
6 10 FT_default 24 SamplerState::FT_default 129
// Default is usually linear, but it depends on format.  This was added at
// the end of the list to avoid bumping TXO version #.
7 10 FT_invalid 24 SamplerState::FT_invalid 57
// Returned by string_filter_type() for an invalid match.
8 0 0

3274 8 WrapMode 0 794624 22 SamplerState::WrapMode 22 SamplerState::WrapMode 3272 0 0 0 0 0 0 0 0 0 6 8 WM_clamp 22 SamplerState::WM_clamp 59
// coords that would be outside [0-1] are clamped to 0 or 1
0 9 WM_repeat 23 SamplerState::WM_repeat 0
1 9 WM_mirror 23 SamplerState::WM_mirror 0
2 14 WM_mirror_once 28 SamplerState::WM_mirror_once 26
// mirror once, then clamp
3 15 WM_border_color 29 SamplerState::WM_border_color 105
// coords outside [0-1] use explicit border color
// Returned by string_wrap_mode() for an invalid match.
4 10 WM_invalid 24 SamplerState::WM_invalid 105
// coords outside [0-1] use explicit border color
// Returned by string_wrap_mode() for an invalid match.
5 0 0

3275 12 LColor const 0 8832 12 LColor const 12 LColor const 0 0 3248 0 0 0 0 0 0 0 0 0 0

3276 7 Texture 0 26625 7 Texture 7 Texture 0 0 0 1 2557 2558 57 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 205 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 0 0 2 3 3180 2553 2554 3 3164 2555 2556 0 7 3277 3278 3279 3280 3281 3282 3283 688
/**
 * Represents a texture object, which is typically a single 2-d image but may
 * also represent a 1-d or 3-d texture image, or the six 2-d faces of a cube
 * map texture.
 *
 * A texture's image data might be stored in system RAM (see get_ram_image())
 * or its image may be represented in texture memory on one or more
 * GraphicsStateGuardians (see prepare()), or both.  The typical usage pattern
 * is that a texture is loaded from an image file on disk, which copies its
 * image data into system RAM; then the first time the texture is rendered its
 * image data is copied to texture memory (actually, to the graphics API), and
 * the system RAM image is automatically freed.
 */

3277 11 TextureType 0 794624 20 Texture::TextureType 20 Texture::TextureType 3276 0 0 0 0 0 0 0 0 0 8 13 TT_1d_texture 22 Texture::TT_1d_texture 0
0 13 TT_2d_texture 22 Texture::TT_2d_texture 0
1 13 TT_3d_texture 22 Texture::TT_3d_texture 0
2 19 TT_2d_texture_array 28 Texture::TT_2d_texture_array 0
3 11 TT_cube_map 20 Texture::TT_cube_map 0
4 17 TT_buffer_texture 26 Texture::TT_buffer_texture 0
5 17 TT_cube_map_array 26 Texture::TT_cube_map_array 0
6 19 TT_1d_texture_array 28 Texture::TT_1d_texture_array 0
7 0 0

3278 13 ComponentType 0 794624 22 Texture::ComponentType 22 Texture::ComponentType 3276 0 0 0 0 0 0 0 0 0 9 15 T_unsigned_byte 24 Texture::T_unsigned_byte 0
0 16 T_unsigned_short 25 Texture::T_unsigned_short 0
1 7 T_float 16 Texture::T_float 0
2 19 T_unsigned_int_24_8 28 Texture::T_unsigned_int_24_8 9
// Packed
3 5 T_int 14 Texture::T_int 0
4 6 T_byte 15 Texture::T_byte 0
5 7 T_short 16 Texture::T_short 0
6 12 T_half_float 21 Texture::T_half_float 0
7 14 T_unsigned_int 23 Texture::T_unsigned_int 0
8 0 0

3279 6 Format 0 794624 15 Texture::Format 15 Texture::Format 3276 0 0 0 0 0 0 0 0 0 52 15 F_depth_stencil 24 Texture::F_depth_stencil 0
1 13 F_color_index 22 Texture::F_color_index 0
2 5 F_red 14 Texture::F_red 0
3 7 F_green 16 Texture::F_green 0
4 6 F_blue 15 Texture::F_blue 0
5 7 F_alpha 16 Texture::F_alpha 0
6 5 F_rgb 14 Texture::F_rgb 55
// any suitable RGB mode, whatever the hardware prefers
7 6 F_rgb5 15 Texture::F_rgb5 27
// 5 bits per R,G,B channel
8 6 F_rgb8 15 Texture::F_rgb8 27
// 8 bits per R,G,B channel
9 7 F_rgb12 16 Texture::F_rgb12 28
// 12 bits per R,G,B channel
10 8 F_rgb332 17 Texture::F_rgb332 33
// 3 bits per R & G, 2 bits for B
11 6 F_rgba 15 Texture::F_rgba 56
// any suitable RGBA mode, whatever the hardware prefers
12 6 F_rgbm 15 Texture::F_rgbm 58
// as above, but only requires 1 bit for alpha (i.e. mask)
13 7 F_rgba4 16 Texture::F_rgba4 29
// 4 bits per R,G,B,A channel
14 7 F_rgba5 16 Texture::F_rgba5 40
// 5 bits per R,G,B channel, 1 bit alpha
15 7 F_rgba8 16 Texture::F_rgba8 29
// 8 bits per R,G,B,A channel
16 8 F_rgba12 17 Texture::F_rgba12 30
// 12 bits per R,G,B,A channel
17 11 F_luminance 20 Texture::F_luminance 0
18 17 F_luminance_alpha 26 Texture::F_luminance_alpha 33
// 8 bits luminance, 8 bits alpha
19 21 F_luminance_alphamask 30 Texture::F_luminance_alphamask 46
// 8 bits luminance, only needs 1 bit of alpha
20 8 F_rgba16 17 Texture::F_rgba16 30
// 16 bits per R,G,B,A channel
21 8 F_rgba32 17 Texture::F_rgba32 30
// 32 bits per R,G,B,A channel
22 17 F_depth_component 26 Texture::F_depth_component 0
23 19 F_depth_component16 28 Texture::F_depth_component16 0
24 19 F_depth_component24 28 Texture::F_depth_component24 0
25 19 F_depth_component32 28 Texture::F_depth_component32 0
26 5 F_r16 14 Texture::F_r16 0
27 6 F_rg16 15 Texture::F_rg16 0
28 7 F_rgb16 16 Texture::F_rgb16 0
29 6 F_srgb 15 Texture::F_srgb 101
// These formats are in the sRGB color space.  RGB is 2.2 gamma corrected,
// alpha is always linear.
30 12 F_srgb_alpha 21 Texture::F_srgb_alpha 0
31 12 F_sluminance 21 Texture::F_sluminance 0
32 18 F_sluminance_alpha 27 Texture::F_sluminance_alpha 0
33 6 F_r32i 15 Texture::F_r32i 41
// 32-bit integer, used for atomic access
34 5 F_r32 14 Texture::F_r32 0
35 6 F_rg32 15 Texture::F_rg32 0
36 7 F_rgb32 16 Texture::F_rgb32 0
37 5 F_r8i 14 Texture::F_r8i 31
// 8 integer bits per R channel
38 6 F_rg8i 15 Texture::F_rg8i 33
// 8 integer bits per R,G channel
39 7 F_rgb8i 16 Texture::F_rgb8i 35
// 8 integer bits per R,G,B channel
40 8 F_rgba8i 17 Texture::F_rgba8i 37
// 8 integer bits per R,G,B,A channel
41 13 F_r11_g11_b10 22 Texture::F_r11_g11_b10 58
// unsigned floating-point, 11 Red, 11 Green, 10 Blue Bits
42 9 F_rgb9_e5 18 Texture::F_rgb9_e5 0
43 10 F_rgb10_a2 19 Texture::F_rgb10_a2 0
44 4 F_rg 13 Texture::F_rg 0
45 6 F_r16i 15 Texture::F_r16i 0
46 7 F_rg16i 16 Texture::F_rg16i 0
47 8 F_rgb16i 17 Texture::F_rgb16i 18
// not recommended
48 9 F_rgba16i 18 Texture::F_rgba16i 0
49 7 F_rg32i 16 Texture::F_rg32i 0
50 8 F_rgb32i 17 Texture::F_rgb32i 0
51 9 F_rgba32i 18 Texture::F_rgba32i 0
52 0 0

3280 20 DeprecatedFilterType 0 794624 29 Texture::DeprecatedFilterType 29 Texture::DeprecatedFilterType 3276 0 0 0 0 0 0 0 0 0 9 10 FT_nearest 19 Texture::FT_nearest 0
0 9 FT_linear 18 Texture::FT_linear 0
1 25 FT_nearest_mipmap_nearest 34 Texture::FT_nearest_mipmap_nearest 0
2 24 FT_linear_mipmap_nearest 33 Texture::FT_linear_mipmap_nearest 0
3 24 FT_nearest_mipmap_linear 33 Texture::FT_nearest_mipmap_linear 0
4 23 FT_linear_mipmap_linear 32 Texture::FT_linear_mipmap_linear 0
5 9 FT_shadow 18 Texture::FT_shadow 0
6 10 FT_default 19 Texture::FT_default 0
7 10 FT_invalid 19 Texture::FT_invalid 0
8 0 44
// Deprecated.  See SamplerState.FilterType.

3281 18 DeprecatedWrapMode 0 794624 27 Texture::DeprecatedWrapMode 27 Texture::DeprecatedWrapMode 3276 0 0 0 0 0 0 0 0 0 6 8 WM_clamp 17 Texture::WM_clamp 0
0 9 WM_repeat 18 Texture::WM_repeat 0
1 9 WM_mirror 18 Texture::WM_mirror 0
2 14 WM_mirror_once 23 Texture::WM_mirror_once 0
3 15 WM_border_color 24 Texture::WM_border_color 0
4 10 WM_invalid 19 Texture::WM_invalid 0
5 0 42
// Deprecated.  See SamplerState.WrapMode.

3282 15 CompressionMode 0 794624 24 Texture::CompressionMode 24 Texture::CompressionMode 3276 0 0 0 0 0 0 0 0 0 15 10 CM_default 19 Texture::CM_default 46
// on or off, according to compressed-textures
0 6 CM_off 15 Texture::CM_off 21
// uncompressed image
1 5 CM_on 14 Texture::CM_on 43
// whatever compression the driver supports
2 7 CM_fxt1 16 Texture::CM_fxt1 304
// Specific compression modes.  Use only when you really want to use a
// particular compression algorithm.  Use with caution; not all drivers
// support all compression modes.  You can use
// GSG::get_supports_compressed_texture_format() to query the available
// compression modes for a particular GSG.
3 7 CM_dxt1 16 Texture::CM_dxt1 39
// BC1: RGB with optional binary alpha.
4 7 CM_dxt2 16 Texture::CM_dxt2 45
// Like DXT3, but assumes premultiplied alpha
5 7 CM_dxt3 16 Texture::CM_dxt3 42
// BC2: RGB with uncompressed 4-bit alpha.
6 7 CM_dxt4 16 Texture::CM_dxt4 45
// Like DXT5, but assumes premultiplied alpha
7 7 CM_dxt5 16 Texture::CM_dxt5 51
// BC3: RGB with separately compressed 8-bit alpha.
8 12 CM_pvr1_2bpp 21 Texture::CM_pvr1_2bpp 0
9 12 CM_pvr1_4bpp 21 Texture::CM_pvr1_4bpp 0
10 7 CM_rgtc 16 Texture::CM_rgtc 53
// BC4/BC5: 1 or 2 channels, individually compressed.
11 7 CM_etc1 16 Texture::CM_etc1 0
12 7 CM_etc2 16 Texture::CM_etc2 0
13 6 CM_eac 15 Texture::CM_eac 24
// EAC: 1 or 2 channels.
14 0 0

3283 12 QualityLevel 0 794624 21 Texture::QualityLevel 21 Texture::QualityLevel 3276 0 0 0 0 0 0 0 0 0 4 10 QL_default 19 Texture::QL_default 37
// according to texture-quality-level
0 10 QL_fastest 19 Texture::QL_fastest 0
1 9 QL_normal 18 Texture::QL_normal 0
2 7 QL_best 16 Texture::QL_best 0
3 0 0

3284 14 Filename const 0 8832 14 Filename const 14 Filename const 0 0 3285 0 0 0 0 0 0 0 0 0 0

3285 8 Filename 0 2048 8 Filename 8 Filename 0 0 0 0 0 0 0 0 0 0 0 0 839
/**
 * The name of a file, such as a texture file or an Egg file.  Stores the full
 * pathname, and includes functions for extracting out the directory prefix
 * part and the file extension and stuff.
 *
 * A Filename is also aware of the mapping between the Unix-like filename
 * convention we use internally, and the local OS's specific filename
 * convention, and it knows how to perform basic OS-specific I/O, like testing
 * for file existence and searching a searchpath, as well as the best way to
 * open an fstream for reading or writing.
 *
 * Note that the methods of Filename that interact with the filesystem (such
 * as exists(), open_read(), etc.) directly interface with the operating system
 * and are not aware of Panda's virtual file system.  To interact with the VFS,
 * use the methods on VirtualFileSystem instead.
 */

3286 18 SamplerState const 0 8832 18 SamplerState const 18 SamplerState const 0 0 3272 0 0 0 0 0 0 0 0 0 0

3287 10 CPTA_uchar 0 2105344 10 CPTA_uchar 10 CPTA_uchar 0 0 3288 0 0 0 0 0 0 0 0 0 0

3288 36 ConstPointerToArray< unsigned char > 0 2048 36 ConstPointerToArray< unsigned char > 36 ConstPointerToArray< unsigned char > 0 0 0 0 0 0 0 0 0 0 0 0 0

3289 16 AutoTextureScale 0 532480 16 AutoTextureScale 16 AutoTextureScale 0 0 0 0 0 0 0 0 0 0 5 8 ATS_none 8 ATS_none 0
0 8 ATS_down 8 ATS_down 0
1 6 ATS_up 6 ATS_up 0
2 7 ATS_pad 7 ATS_pad 0
3 15 ATS_unspecified 15 ATS_unspecified 0
4 0 0

3290 21 TypedReferenceCount * 0 8576 21 TypedReferenceCount * 21 TypedReferenceCount * 0 0 3291 0 0 0 0 0 0 0 0 0 0

3291 19 TypedReferenceCount 0 2048 19 TypedReferenceCount 19 TypedReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 410
/**
 * A base class for things which need to inherit from both TypedObject and
 * from ReferenceCount.  It's convenient to define this intermediate base
 * class instead of multiply inheriting from the two classes each time they
 * are needed, so that we can sensibly pass around pointers to things which
 * are both TypedObjects and ReferenceCounters.
 *
 * See also TypedObject for detailed instructions.
 */

3292 6 Shader 0 75777 6 Shader 6 Shader 0 0 0 1 2783 0 0 19 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 0 0 1 0 3180 0 0 0 4 3293 3294 3295 3296 8
/**

 */

3293 14 ShaderLanguage 0 794624 22 Shader::ShaderLanguage 22 Shader::ShaderLanguage 3292 0 0 0 0 0 0 0 0 0 5 7 SL_none 15 Shader::SL_none 0
0 5 SL_Cg 13 Shader::SL_Cg 0
1 7 SL_GLSL 15 Shader::SL_GLSL 0
2 7 SL_HLSL 15 Shader::SL_HLSL 0
3 9 SL_SPIR_V 17 Shader::SL_SPIR_V 0
4 0 0

3294 10 ShaderType 0 794624 18 Shader::ShaderType 18 Shader::ShaderType 3292 0 0 0 0 0 0 0 0 0 8 7 ST_none 15 Shader::ST_none 0
0 9 ST_vertex 17 Shader::ST_vertex 0
1 11 ST_fragment 19 Shader::ST_fragment 0
2 11 ST_geometry 19 Shader::ST_geometry 0
3 15 ST_tess_control 23 Shader::ST_tess_control 0
4 18 ST_tess_evaluation 26 Shader::ST_tess_evaluation 0
5 10 ST_compute 18 Shader::ST_compute 0
6 8 ST_COUNT 16 Shader::ST_COUNT 0
7 0 0

3295 16 AutoShaderSwitch 0 794624 24 Shader::AutoShaderSwitch 24 Shader::AutoShaderSwitch 3292 0 0 0 0 0 0 0 0 0 5 9 AS_normal 17 Shader::AS_normal 0
1 7 AS_glow 15 Shader::AS_glow 0
2 8 AS_gloss 16 Shader::AS_gloss 0
4 7 AS_ramp 15 Shader::AS_ramp 0
8 9 AS_shadow 17 Shader::AS_shadow 0
16 0 0

3296 13 AutoShaderBit 0 794624 21 Shader::AutoShaderBit 21 Shader::AutoShaderBit 3292 0 0 0 0 0 0 0 0 0 5 20 bit_AutoShaderNormal 28 Shader::bit_AutoShaderNormal 20
// bit for AS_normal
0 18 bit_AutoShaderGlow 26 Shader::bit_AutoShaderGlow 18
// bit for AS_glow
1 19 bit_AutoShaderGloss 27 Shader::bit_AutoShaderGloss 19
// bit for AS_gloss
2 18 bit_AutoShaderRamp 26 Shader::bit_AutoShaderRamp 18
// bit for AS_ramp
3 20 bit_AutoShaderShadow 28 Shader::bit_AutoShaderShadow 20
// bit for AS_shadow
4 0 0

3297 12 ShaderBuffer 0 26625 12 ShaderBuffer 12 ShaderBuffer 0 0 0 1 2791 2790 2 3828 3829 6 2794 2795 2796 2797 2798 2799 0 0 3 3 3180 2784 2785 3 3164 2786 2787 3 3168 2788 2789 0 0 93
/**
 * This is a generic buffer object that lives in graphics memory.
 *
 * @since 1.10.0
 */

3298 8 uint64_t 0 2105344 8 uint64_t 8 uint64_t 0 0 3210 0 0 0 0 0 0 0 0 0 0

3299 23 PreparedGraphicsObjects 0 75777 23 PreparedGraphicsObjects 23 PreparedGraphicsObjects 0 0 0 0 0 0 71 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 0 0 1 0 3206 0 0 0 0 658
/**
 * A table of objects that are saved within the graphics context for reference
 * by handle later.  Generally, this represents things like OpenGL texture
 * objects or display lists (or their equivalent on other platforms).
 *
 * This object simply records the pointers to the context objects created by
 * the individual GSG's; these context objects will contain enough information
 * to reference or release the actual object stored within the graphics
 * context.
 *
 * These tables may potentially be shared between related graphics contexts,
 * hence their storage here in a separate object rather than as a part of the
 * GraphicsStateGuardian.
 */

3300 18 IndexBufferContext 0 141313 18 IndexBufferContext 18 IndexBufferContext 0 0 0 0 2880 0 5 2875 2876 2877 2878 2879 0 0 2 3 3240 2871 2872 3 3165 2873 2874 0 0 366
/**
 * This is a special class object that holds all the information returned by a
 * particular GSG to indicate the vertex data array's internal context
 * identifier.
 *
 * This allows the GSG to cache the vertex data array in whatever way makes
 * sense.  For instance, DirectX can allocate a vertex buffer for the array.
 * OpenGL can create a buffer object.
 */

3301 4 Lens 0 141313 4 Lens 4 Lens 0 0 0 0 2948 16 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 67 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 0 0 1 0 3180 0 0 0 2 3302 3318 398
/**
 * A base class for any number of different kinds of lenses, linear and
 * otherwise.  Presently, this includes perspective and orthographic lenses.
 *
 * A Lens object is the main part of a Camera node, which defines the
 * fundamental interface to point-of-view for rendering.  Lenses are also used
 * in other contexts, however; for instance, a Spotlight is also defined using
 * a lens.
 */

3302 13 StereoChannel 0 794624 19 Lens::StereoChannel 19 Lens::StereoChannel 3301 0 0 0 0 0 0 0 0 0 4 7 SC_mono 13 Lens::SC_mono 0
0 7 SC_left 13 Lens::SC_left 0
1 8 SC_right 14 Lens::SC_right 0
2 9 SC_stereo 15 Lens::SC_stereo 24
// == SC_left | SC_right
3 0 0

3303 16 CoordinateSystem 0 532480 16 CoordinateSystem 16 CoordinateSystem 0 0 0 0 0 0 0 0 0 0 6 10 CS_default 10 CS_default 210
// The CS_default entry does not refer to a particular coordinate system,
// but rather to the value stored in default_coordinate_system, which in
// turn is loaded from the config variable "coordinate-system".
0 12 CS_zup_right 12 CS_zup_right 21
// Z-Up, Right-handed
1 12 CS_yup_right 12 CS_yup_right 21
// Y-Up, Right-handed
2 11 CS_zup_left 11 CS_zup_left 20
// Z-Up, Left-handed
3 11 CS_yup_left 11 CS_yup_left 20
// Y-Up, Left-handed
4 10 CS_invalid 10 CS_invalid 156
// CS_invalid is not a coordinate system at all.  It can be used in user-
// input processing code to indicate a contradictory coordinate system
// request.
5 0 0

3304 15 LVecBase2 const 0 8832 15 LVecBase2 const 15 LVecBase2 const 0 0 3305 0 0 0 0 0 0 0 0 0 0

3305 9 LVecBase2 0 2105344 9 LVecBase2 9 LVecBase2 0 0 3306 0 0 0 0 0 0 0 0 0 0

3306 10 LVecBase2f 0 2048 10 LVecBase2f 10 LVecBase2f 0 0 0 0 0 0 0 0 0 0 0 0 75
/**
 * This is the base class for all two-component vectors and points.
 */

3307 14 LVector2 const 0 8832 14 LVector2 const 14 LVector2 const 0 0 3308 0 0 0 0 0 0 0 0 0 0

3308 8 LVector2 0 2105344 8 LVector2 8 LVector2 0 0 3309 0 0 0 0 0 0 0 0 0 0

3309 9 LVector2f 0 2048 9 LVector2f 9 LVector2f 0 0 0 0 0 0 0 0 0 0 0 0 49
/**
 * This is a two-component vector offset.
 */

3310 15 LVecBase3 const 0 8832 15 LVecBase3 const 15 LVecBase3 const 0 0 3311 0 0 0 0 0 0 0 0 0 0

3311 9 LVecBase3 0 2105344 9 LVecBase3 9 LVecBase3 0 0 3312 0 0 0 0 0 0 0 0 0 0

3312 10 LVecBase3f 0 2048 10 LVecBase3f 10 LVecBase3f 0 0 0 0 0 0 0 0 0 0 0 0 77
/**
 * This is the base class for all three-component vectors and points.
 */

3313 7 LPoint3 0 2105344 7 LPoint3 7 LPoint3 0 0 3314 0 0 0 0 0 0 0 0 0 0

3314 8 LPoint3f 0 2048 8 LPoint3f 8 LPoint3f 0 0 0 0 0 0 0 0 0 0 0 0 337
/**
 * This is a three-component point in space (as opposed to a three-component
 * vector, which represents a direction and a distance).  Some of the methods
 * are slightly different between LPoint3 and LVector3; in particular,
 * subtraction of two points yields a vector, while addition of a vector and a
 * point yields a point.
 */

3315 14 LMatrix4 const 0 8832 14 LMatrix4 const 14 LMatrix4 const 0 0 3316 0 0 0 0 0 0 0 0 0 0

3316 8 LMatrix4 0 2105344 8 LMatrix4 8 LMatrix4 0 0 3317 0 0 0 0 0 0 0 0 0 0

3317 9 LMatrix4f 0 2048 9 LMatrix4f 9 LMatrix4f 0 0 0 0 0 0 0 0 0 0 0 0 45
/**
 * This is a 4-by-4 transform matrix.
 */

3318 11 FromCorners 0 794624 17 Lens::FromCorners 17 Lens::FromCorners 3301 0 0 0 0 0 0 0 0 0 6 7 FC_roll 13 Lens::FC_roll 0
1 15 FC_camera_plane 21 Lens::FC_camera_plane 0
2 11 FC_off_axis 17 Lens::FC_off_axis 0
4 15 FC_aspect_ratio 21 Lens::FC_aspect_ratio 0
8 8 FC_shear 14 Lens::FC_shear 0
16 11 FC_keystone 17 Lens::FC_keystone 0
32 0 183
// These flags are passed in as the last parameter to control the behavior
// of set_frustum_from_corners().  See the documentation for that method for
// an explanation of each flag.

3319 8 Material 0 26625 8 Material 8 Material 0 0 0 1 2953 2955 11 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 47 2954 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 0 0 2 3 3180 2949 2950 3 3164 2951 2952 0 0 682
/**
 * Defines the way an object appears in the presence of lighting.  A material
 * is only necessary if lighting is to be enabled; otherwise, the material
 * isn't used.
 *
 * There are two workflows that are supported: the "classic" workflow of
 * providing separate ambient, diffuse and specular colors, and the
 * "metalness" workflow, in which a base color is specified along with a
 * "metallic" value that indicates whether the material is a metal or a
 * dielectric.
 *
 * The size of the specular highlight can be specified by either specifying
 * the specular exponent (shininess) or by specifying a roughness value that
 * in perceptually linear in the range of 0-1.
 */

3320 12 MaterialPool 0 141313 12 MaterialPool 12 MaterialPool 0 0 0 0 3008 0 6 3002 3003 3004 3005 3006 3007 0 0 0 0 0 661
/**
 * The MaterialPool (there is only one in the universe) serves to unify
 * different pointers to the same Material, so we do not (a) waste memory with
 * many different Material objects that are all equivalent, and (b) waste time
 * switching the graphics engine between different Material states that are
 * really the same thing.
 *
 * The idea is to create a temporary Material representing the lighting state
 * you want to apply, then call get_material(), passing in your temporary
 * Material.  The return value will either be a new Material object, or it may
 * be the the same object you supplied; in either case, it will have the same
 * value.
 */

3321 10 MatrixLens 0 141313 10 MatrixLens 10 MatrixLens 0 0 0 1 3009 3021 1 3857 11 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 0 0 1 0 3301 0 0 0 0 274
/**
 * A completely generic linear lens.  This is provided for the benefit of low-
 * level code that wants to specify a perspective or orthographic frustum via
 * an explicit projection matrix, but not mess around with fov's or focal
 * lengths or any of that nonsense.
 */

3322 16 OrthographicLens 0 141313 16 OrthographicLens 16 OrthographicLens 0 0 0 1 3022 3024 0 1 3023 0 0 1 0 3301 0 0 0 0 400
/**
 * An orthographic lens.  Although this kind of lens is linear, like a
 * PerspectiveLens, it doesn't respect field-of-view or focal length
 * parameters, and adjusting these will have no effect.  Instead, its field of
 * view is controlled by adjusting the film_size; the orthographic lens
 * represents a planar projection onto its imaginary film of the specified
 * size, hanging in space.
 */

3323 19 ParamTextureSampler 0 141313 19 ParamTextureSampler 19 ParamTextureSampler 0 0 0 1 3025 3029 2 3858 3859 3 3026 3027 3028 0 0 1 0 3324 0 0 0 0 141
/**
 * A class object for storing a pointer to a Texture along with a sampler
 * state that indicates how to to sample the given texture.
 */

3324 14 ParamValueBase 0 2048 14 ParamValueBase 14 ParamValueBase 0 0 0 0 0 0 0 0 0 0 0 0 141
/**
 * A non-template base class of ParamValue (below), which serves mainly to
 * define the placeholder for the virtual output function.
 */

3325 9 Texture * 0 8576 9 Texture * 9 Texture * 0 0 3276 0 0 0 0 0 0 0 0 0 0

3326 17 ParamTextureImage 0 141313 17 ParamTextureImage 17 ParamTextureImage 0 0 0 1 3030 3038 5 3860 3861 3862 3863 3864 7 3031 3032 3033 3034 3035 3036 3037 0 0 1 0 3324 0 0 0 0 254
/**
 * A class object for storing a pointer to a Texture along with a set of
 * properties that indicates which image to bind to a shader input.
 *
 * This class is useful for binding texture images to a shader, which is a
 * fairly esoteric feature.
 */

3327 15 PerspectiveLens 0 141313 15 PerspectiveLens 15 PerspectiveLens 0 0 0 1 3039 3041 0 1 3040 0 0 1 0 3301 0 0 0 0 52
/**
 * A perspective-type lens: a normal camera.
 */

3328 20 TextureReloadRequest 0 141313 20 TextureReloadRequest 20 TextureReloadRequest 0 0 0 1 3042 3048 1 3865 5 3043 3044 3045 3046 3047 0 0 1 0 3237 0 0 0 0 245
/**
 * This loader request will call Texture::get_ram_image() in a sub-thread, to
 * force the texture's image to be re-read from disk.  It is used by
 * GraphicsStateGuardian::async_reload_texture(), when get_incomplete_render()
 * is true.
 */

3329 14 TextureContext 0 141313 14 TextureContext 14 TextureContext 0 0 0 0 3065 0 12 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 0 0 2 3 3240 3049 3050 3 3165 3051 3052 0 0 449
/**
 * This is a special class object that holds all the information returned by a
 * particular GSG to indicate the texture's internal context identifier.
 *
 * Textures typically have an immediate-mode and a retained-mode operation.
 * When using textures in retained-mode (in response to Texture::prepare()),
 * the GSG will create some internal handle for the texture and store it here.
 * The texture stores all of these handles internally.
 */

3330 13 ShaderContext 0 141313 13 ShaderContext 13 ShaderContext 0 0 0 0 3068 1 3866 2 3066 3067 0 0 1 0 3238 0 0 0 0 0

3331 8 Shader * 0 8576 8 Shader * 8 Shader * 0 0 3292 0 0 0 0 0 0 0 0 0 0

3332 16 UserVertexSlider 0 141313 16 UserVertexSlider 16 UserVertexSlider 0 0 0 1 3069 3072 0 2 3070 3071 0 0 1 0 3226 0 0 0 0 167
/**
 * This is a specialization on VertexSlider that allows the user to specify
 * any arbitrary slider valie he likes.  This is rarely used except for
 * testing.
 */

3333 19 UserVertexTransform 0 141313 19 UserVertexTransform 19 UserVertexTransform 0 0 0 1 3073 3077 0 3 3074 3075 3076 0 0 1 0 3215 0 0 0 0 174
/**
 * This is a specialization on VertexTransform that allows the user to specify
 * any arbitrary transform matrix he likes.  This is rarely used except for
 * testing.
 */

3334 12 VideoTexture 0 141313 12 VideoTexture 12 VideoTexture 0 0 0 0 3086 2 3867 3868 4 3082 3083 3084 3085 0 0 2 3 3276 3078 3079 3 3335 3080 3081 0 0 248
/**
 * The base class for a family of animated Textures that take their input from
 * a video source, such as a movie file.  These Textures may be stopped,
 * started, etc.  using the AnimInterface controls, similar to an animated
 * character.
 */

3335 13 AnimInterface 0 2048 13 AnimInterface 13 AnimInterface 0 0 0 0 0 0 0 0 0 0 0 0 226
/**
 * This is the fundamental interface for things that have a play/loop/stop
 * type interface for frame-based animation, such as animated characters.
 * This is the base class for AnimControl and other, similar classes.
 */

3336 19 VertexBufferContext 0 141313 19 VertexBufferContext 19 VertexBufferContext 0 0 0 0 3096 0 5 3091 3092 3093 3094 3095 0 0 2 3 3240 3087 3088 3 3165 3089 3090 0 0 366
/**
 * This is a special class object that holds all the information returned by a
 * particular GSG to indicate the vertex data array's internal context
 * identifier.
 *
 * This allows the GSG to cache the vertex data array in whatever way makes
 * sense.  For instance, DirectX can allocate a vertex buffer for the array.
 * OpenGL can create a buffer object.
 */

3337 17 TextureCollection 0 26625 17 TextureCollection 17 TextureCollection 0 0 0 1 3097 3099 0 21 3098 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 1 3886 0 0 0 0 97
/**
 * Manages a list of Texture objects, as returned by
 * TexturePool::find_all_textures().
 */

3338 11 TexturePool 0 141313 11 TexturePool 11 TexturePool 0 0 0 0 3143 0 23 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 0 0 0 0 0 235
/**
 * This is the preferred interface for loading textures from image files.  It
 * unifies all references to the same filename, so that multiple models that
 * reference the same textures don't waste texture memory unnecessarily.
 */

3339 13 TexturePeeker 0 141313 13 TexturePeeker 13 TexturePeeker 0 0 0 1 3152 3153 0 8 3144 3145 3146 3147 3148 3149 3150 3151 0 0 1 0 3206 0 0 0 0 166
/**
 * An instance of this object is returned by Texture::peek().  This object
 * allows quick and easy inspection of a texture's texels by (u, v)
 * coordinates.
 */

3340 16 TextureStagePool 0 141313 16 TextureStagePool 16 TextureStagePool 0 0 0 0 3162 1 3869 8 3154 3155 3156 3157 3158 3159 3160 3161 0 0 0 0 1 3341 359
/**
 * The TextureStagePool (there is only one in the universe) serves to unify
 * different pointers to the same TextureStage, mainly to help developers use
 * a common pointer to access things that are loaded from different model
 * files.
 *
 * It runs in one of three different modes, according to set_mode().  See that
 * method for more information.
 */

3341 4 Mode 0 794624 22 TextureStagePool::Mode 22 TextureStagePool::Mode 3340 0 0 0 0 0 0 0 0 0 3 6 M_none 24 TextureStagePool::M_none 0
0 6 M_name 24 TextureStagePool::M_name 0
1 8 M_unique 26 TextureStagePool::M_unique 0
2 0 0

3342 13 atomic string 0 2 13 atomic string 13 atomic string 0 7 0 0 0 0 0 0 0 0 0 0 0

3343 13 AdaptiveLru * 0 8576 13 AdaptiveLru * 13 AdaptiveLru * 0 0 3163 0 0 0 0 0 0 0 0 0 0

3344 19 AdaptiveLru const * 0 8576 19 AdaptiveLru const * 19 AdaptiveLru const * 0 0 3345 0 0 0 0 0 0 0 0 0 0

3345 17 AdaptiveLru const 0 8832 17 AdaptiveLru const 17 AdaptiveLru const 0 0 3163 0 0 0 0 0 0 0 0 0 0

3346 4 void 0 8194 4 void 4 void 0 6 0 0 0 0 0 0 0 0 0 0 0

3347 9 ostream * 0 8576 14 std::ostream * 14 std::ostream * 0 0 3348 0 0 0 0 0 0 0 0 0 0

3348 7 ostream 0 2048 12 std::ostream 12 std::ostream 0 0 0 0 0 0 0 0 0 0 0 0 0

3349 23 AdaptiveLruPage const * 0 8576 23 AdaptiveLruPage const * 23 AdaptiveLruPage const * 0 0 3350 0 0 0 0 0 0 0 0 0 0

3350 21 AdaptiveLruPage const 0 8832 21 AdaptiveLruPage const 21 AdaptiveLruPage const 0 0 3165 0 0 0 0 0 0 0 0 0 0

3351 17 AdaptiveLruPage * 0 8576 17 AdaptiveLruPage * 17 AdaptiveLruPage * 0 0 3165 0 0 0 0 0 0 0 0 0 0

3352 12 unsigned int 0 8198 12 unsigned int 12 unsigned int 0 1 0 0 0 0 0 0 0 0 0 0 0

3353 11 GeomEnums * 0 8576 11 GeomEnums * 11 GeomEnums * 0 0 3168 0 0 0 0 0 0 0 0 0 0

3354 17 GeomEnums const * 0 8576 17 GeomEnums const * 17 GeomEnums const * 0 0 3355 0 0 0 0 0 0 0 0 0 0

3355 15 GeomEnums const 0 8832 15 GeomEnums const 15 GeomEnums const 0 0 3168 0 0 0 0 0 0 0 0 0 0

3356 25 GeomVertexAnimationSpec * 0 8576 25 GeomVertexAnimationSpec * 25 GeomVertexAnimationSpec * 0 0 3176 0 0 0 0 0 0 0 0 0 0

3357 31 GeomVertexAnimationSpec const * 0 8576 31 GeomVertexAnimationSpec const * 31 GeomVertexAnimationSpec const * 0 0 3190 0 0 0 0 0 0 0 0 0 0

3358 10 PyObject * 0 8576 10 PyObject * 10 PyObject * 0 0 3359 0 0 0 0 0 0 0 0 0 0

3359 8 PyObject 0 2105344 8 PyObject 8 PyObject 0 0 3360 0 0 0 0 0 0 0 0 0 0

3360 7 _object 0 1024 7 _object 7 _object 0 0 0 0 0 0 0 0 0 0 0 0 0

3361 10 TypeHandle 0 16779264 10 TypeHandle 10 TypeHandle 0 0 0 0 0 0 0 0 0 0 0 0 732
/**
 * TypeHandle is the identifier used to differentiate C++ class types.  Any
 * C++ classes that inherit from some base class, and must be differentiated
 * at run time, should store a static TypeHandle object that can be queried
 * through a static member function named get_class_type().  Most of the time,
 * it is also desirable to inherit from TypedObject, which provides some
 * virtual functions to return the TypeHandle for a particular instance.
 *
 * At its essence, a TypeHandle is simply a unique identifier that is assigned
 * by the TypeRegistry.  The TypeRegistry stores a tree of TypeHandles, so
 * that ancestry of a particular type may be queried, and the type name may be
 * retrieved for run-time display.
 */

3362 12 TypeHandle * 0 8576 12 TypeHandle * 12 TypeHandle * 0 0 3361 0 0 0 0 0 0 0 0 0 0

3363 18 GeomVertexColumn * 0 8576 18 GeomVertexColumn * 18 GeomVertexColumn * 0 0 3185 0 0 0 0 0 0 0 0 0 0

3364 23 GeomVertexArrayFormat * 0 8576 23 GeomVertexArrayFormat * 23 GeomVertexArrayFormat * 0 0 3186 0 0 0 0 0 0 0 0 0 0

3365 27 GeomVertexArrayData const * 0 8576 27 GeomVertexArrayData const * 27 GeomVertexArrayData const * 0 0 3366 0 0 0 0 0 0 0 0 0 0

3366 25 GeomVertexArrayData const 0 8832 25 GeomVertexArrayData const 25 GeomVertexArrayData const 0 0 3207 0 0 0 0 0 0 0 0 0 0

3367 18 GeomVertexFormat * 0 8576 18 GeomVertexFormat * 18 GeomVertexFormat * 0 0 3189 0 0 0 0 0 0 0 0 0 0

3368 22 GeomVertexData const * 0 8576 22 GeomVertexData const * 22 GeomVertexData const * 0 0 3369 0 0 0 0 0 0 0 0 0 0

3369 20 GeomVertexData const 0 8832 20 GeomVertexData const 20 GeomVertexData const 0 0 3228 0 0 0 0 0 0 0 0 0 0

3370 11 SimpleLru * 0 8576 11 SimpleLru * 11 SimpleLru * 0 0 3195 0 0 0 0 0 0 0 0 0 0

3371 17 SimpleLru const * 0 8576 17 SimpleLru const * 17 SimpleLru const * 0 0 3372 0 0 0 0 0 0 0 0 0 0

3372 15 SimpleLru const 0 8832 15 SimpleLru const 15 SimpleLru const 0 0 3195 0 0 0 0 0 0 0 0 0 0

3373 16 LinkedListNode * 0 8576 16 LinkedListNode * 16 LinkedListNode * 0 0 3196 0 0 0 0 0 0 0 0 0 0

3374 9 Namable * 0 8576 9 Namable * 9 Namable * 0 0 3164 0 0 0 0 0 0 0 0 0 0

3375 21 SimpleLruPage const * 0 8576 21 SimpleLruPage const * 21 SimpleLruPage const * 0 0 3376 0 0 0 0 0 0 0 0 0 0

3376 19 SimpleLruPage const 0 8832 19 SimpleLruPage const 19 SimpleLruPage const 0 0 3197 0 0 0 0 0 0 0 0 0 0

3377 15 SimpleLruPage * 0 8576 15 SimpleLruPage * 15 SimpleLruPage * 0 0 3197 0 0 0 0 0 0 0 0 0 0

3378 7 Mutex * 0 8576 7 Mutex * 7 Mutex * 0 0 3379 0 0 0 0 0 0 0 0 0 0

3379 5 Mutex 0 2048 5 Mutex 5 Mutex 0 0 0 0 0 0 0 0 0 0 0 0 0

3380 17 SimpleAllocator * 0 8576 17 SimpleAllocator * 17 SimpleAllocator * 0 0 3198 0 0 0 0 0 0 0 0 0 0

3381 22 SimpleAllocatorBlock * 0 8576 22 SimpleAllocatorBlock * 22 SimpleAllocatorBlock * 0 0 3199 0 0 0 0 0 0 0 0 0 0

3382 23 SimpleAllocator const * 0 8576 23 SimpleAllocator const * 23 SimpleAllocator const * 0 0 3383 0 0 0 0 0 0 0 0 0 0

3383 21 SimpleAllocator const 0 8832 21 SimpleAllocator const 21 SimpleAllocator const 0 0 3198 0 0 0 0 0 0 0 0 0 0

3384 28 SimpleAllocatorBlock const * 0 8576 28 SimpleAllocatorBlock const * 28 SimpleAllocatorBlock const * 0 0 3385 0 0 0 0 0 0 0 0 0 0

3385 26 SimpleAllocatorBlock const 0 8832 26 SimpleAllocatorBlock const 26 SimpleAllocatorBlock const 0 0 3199 0 0 0 0 0 0 0 0 0 0

3386 26 VertexDataSaveFile const * 0 8576 26 VertexDataSaveFile const * 26 VertexDataSaveFile const * 0 0 3387 0 0 0 0 0 0 0 0 0 0

3387 24 VertexDataSaveFile const 0 8832 24 VertexDataSaveFile const 24 VertexDataSaveFile const 0 0 3200 0 0 0 0 0 0 0 0 0 0

3388 22 VertexDataPage const * 0 8576 22 VertexDataPage const * 22 VertexDataPage const * 0 0 3389 0 0 0 0 0 0 0 0 0 0

3389 20 VertexDataPage const 0 8832 20 VertexDataPage const 20 VertexDataPage const 0 0 3201 0 0 0 0 0 0 0 0 0 0

3390 16 VertexDataPage * 0 8576 16 VertexDataPage * 16 VertexDataPage * 0 0 3201 0 0 0 0 0 0 0 0 0 0

3391 17 VertexDataBlock * 0 8576 17 VertexDataBlock * 17 VertexDataBlock * 0 0 3205 0 0 0 0 0 0 0 0 0 0

3392 16 VertexDataBook * 0 8576 16 VertexDataBook * 16 VertexDataBook * 0 0 3204 0 0 0 0 0 0 0 0 0 0

3393 22 VertexDataBook const * 0 8576 22 VertexDataBook const * 22 VertexDataBook const * 0 0 3394 0 0 0 0 0 0 0 0 0 0

3394 20 VertexDataBook const 0 8832 20 VertexDataBook const 20 VertexDataBook const 0 0 3204 0 0 0 0 0 0 0 0 0 0

3395 23 VertexDataBlock const * 0 8576 23 VertexDataBlock const * 23 VertexDataBlock const * 0 0 3396 0 0 0 0 0 0 0 0 0 0

3396 21 VertexDataBlock const 0 8832 21 VertexDataBlock const 21 VertexDataBlock const 0 0 3205 0 0 0 0 0 0 0 0 0 0

3397 16 ReferenceCount * 0 8576 16 ReferenceCount * 16 ReferenceCount * 0 0 3206 0 0 0 0 0 0 0 0 0 0

3398 11 UpdateSeq * 0 8576 11 UpdateSeq * 11 UpdateSeq * 0 0 3211 0 0 0 0 0 0 0 0 0 0

3399 8 Thread * 0 8576 8 Thread * 8 Thread * 0 0 3400 0 0 0 0 0 0 0 0 0 0

3400 6 Thread 0 2048 6 Thread 6 Thread 0 0 0 0 0 0 0 0 0 0 0 0 396
/**
 * A thread; that is, a lightweight process.  This is an abstract base class;
 * to use it, you must subclass from it and redefine thread_main().
 *
 * The thread itself will keep a reference count on the Thread object while it
 * is running; when the thread returns from its root function, the Thread
 * object will automatically be destructed if no other pointers are
 * referencing it.
 */

3401 31 GeomVertexArrayDataHandle const 0 8832 31 GeomVertexArrayDataHandle const 31 GeomVertexArrayDataHandle const 0 0 3212 0 0 0 0 0 0 0 0 0 0

3402 33 GeomVertexArrayDataHandle const * 0 8576 33 GeomVertexArrayDataHandle const * 33 GeomVertexArrayDataHandle const * 0 0 3401 0 0 0 0 0 0 0 0 0 0

3403 27 GeomVertexArrayDataHandle * 0 8576 27 GeomVertexArrayDataHandle * 27 GeomVertexArrayDataHandle * 0 0 3212 0 0 0 0 0 0 0 0 0 0

3404 25 PreparedGraphicsObjects * 0 8576 25 PreparedGraphicsObjects * 25 PreparedGraphicsObjects * 0 0 3299 0 0 0 0 0 0 0 0 0 0

3405 27 GraphicsStateGuardianBase * 0 8576 27 GraphicsStateGuardianBase * 27 GraphicsStateGuardianBase * 0 0 3406 0 0 0 0 0 0 0 0 0 0

3406 25 GraphicsStateGuardianBase 0 2048 25 GraphicsStateGuardianBase 25 GraphicsStateGuardianBase 0 0 0 0 0 0 0 0 0 0 0 0 0

3407 21 VertexBufferContext * 0 8576 21 VertexBufferContext * 21 VertexBufferContext * 0 0 3336 0 0 0 0 0 0 0 0 0 0

3408 11 Py_buffer * 0 8576 11 Py_buffer * 11 Py_buffer * 0 0 3409 0 0 0 0 0 0 0 0 0 0

3409 9 Py_buffer 0 2105344 9 Py_buffer 9 Py_buffer 0 0 3410 0 0 0 0 0 0 0 0 0 0

3410 10 bufferinfo 0 1024 10 bufferinfo 10 bufferinfo 0 0 0 0 0 0 0 0 0 0 0 0 0

3411 19 CopyOnWriteObject * 0 8576 19 CopyOnWriteObject * 19 CopyOnWriteObject * 0 0 3208 0 0 0 0 0 0 0 0 0 0

3412 12 vector_uchar 0 2105344 12 vector_uchar 12 vector_uchar 0 0 3413 0 0 0 0 0 0 0 0 0 0

3413 24 pvector< unsigned char > 0 2048 24 pvector< unsigned char > 24 pvector< unsigned char > 0 0 0 0 0 0 0 0 0 0 0 0 0

3414 24 GeomCacheManager const * 0 8576 24 GeomCacheManager const * 24 GeomCacheManager const * 0 0 3415 0 0 0 0 0 0 0 0 0 0

3415 22 GeomCacheManager const 0 8832 22 GeomCacheManager const 22 GeomCacheManager const 0 0 3214 0 0 0 0 0 0 0 0 0 0

3416 18 GeomCacheManager * 0 8576 18 GeomCacheManager * 18 GeomCacheManager * 0 0 3214 0 0 0 0 0 0 0 0 0 0

3417 10 LMatrix4 * 0 8576 10 LMatrix4 * 10 LMatrix4 * 0 0 3316 0 0 0 0 0 0 0 0 0 0

3418 16 LMatrix4 const * 0 8576 16 LMatrix4 const * 16 LMatrix4 const * 0 0 3315 0 0 0 0 0 0 0 0 0 0

3419 16 TransformTable * 0 8576 16 TransformTable * 16 TransformTable * 0 0 3216 0 0 0 0 0 0 0 0 0 0

3420 16 TransformBlend * 0 8576 16 TransformBlend * 16 TransformBlend * 0 0 3219 0 0 0 0 0 0 0 0 0 0

3421 22 TransformBlend const * 0 8576 22 TransformBlend const * 22 TransformBlend const * 0 0 3223 0 0 0 0 0 0 0 0 0 0

3422 10 LPoint3d * 0 8576 10 LPoint3d * 10 LPoint3d * 0 0 3423 0 0 0 0 0 0 0 0 0 0

3423 8 LPoint3d 0 2048 8 LPoint3d 8 LPoint3d 0 0 0 0 0 0 0 0 0 0 0 0 337
/**
 * This is a three-component point in space (as opposed to a three-component
 * vector, which represents a direction and a distance).  Some of the methods
 * are slightly different between LPoint3 and LVector3; in particular,
 * subtraction of two points yields a vector, while addition of a vector and a
 * point yields a point.
 */

3424 10 LPoint3f * 0 8576 10 LPoint3f * 10 LPoint3f * 0 0 3314 0 0 0 0 0 0 0 0 0 0

3425 10 LPoint4d * 0 8576 10 LPoint4d * 10 LPoint4d * 0 0 3426 0 0 0 0 0 0 0 0 0 0

3426 8 LPoint4d 0 2048 8 LPoint4d 8 LPoint4d 0 0 0 0 0 0 0 0 0 0 0 0 51
/**
 * This is a four-component point in space.
 */

3427 10 LPoint4f * 0 8576 10 LPoint4f * 10 LPoint4f * 0 0 3428 0 0 0 0 0 0 0 0 0 0

3428 8 LPoint4f 0 2048 8 LPoint4f 8 LPoint4f 0 0 0 0 0 0 0 0 0 0 0 0 51
/**
 * This is a four-component point in space.
 */

3429 11 LVector3d * 0 8576 11 LVector3d * 11 LVector3d * 0 0 3430 0 0 0 0 0 0 0 0 0 0

3430 9 LVector3d 0 2048 9 LVector3d 9 LVector3d 0 0 0 0 0 0 0 0 0 0 0 0 338
/**
 * This is a three-component vector distance (as opposed to a three-component
 * point, which represents a particular point in space).  Some of the methods
 * are slightly different between LPoint3 and LVector3; in particular,
 * subtraction of two points yields a vector, while addition of a vector and a
 * point yields a point.
 */

3431 11 LVector3f * 0 8576 11 LVector3f * 11 LVector3f * 0 0 3432 0 0 0 0 0 0 0 0 0 0

3432 9 LVector3f 0 2048 9 LVector3f 9 LVector3f 0 0 0 0 0 0 0 0 0 0 0 0 338
/**
 * This is a three-component vector distance (as opposed to a three-component
 * point, which represents a particular point in space).  Some of the methods
 * are slightly different between LPoint3 and LVector3; in particular,
 * subtraction of two points yields a vector, while addition of a vector and a
 * point yields a point.
 */

3433 21 TransformBlendTable * 0 8576 21 TransformBlendTable * 21 TransformBlendTable * 0 0 3222 0 0 0 0 0 0 0 0 0 0

3434 27 TransformBlendTable const * 0 8576 27 TransformBlendTable const * 27 TransformBlendTable const * 0 0 3435 0 0 0 0 0 0 0 0 0 0

3435 25 TransformBlendTable const 0 8832 25 TransformBlendTable const 25 TransformBlendTable const 0 0 3222 0 0 0 0 0 0 0 0 0 0

3436 19 SparseArray const * 0 8576 19 SparseArray const * 19 SparseArray const * 0 0 3224 0 0 0 0 0 0 0 0 0 0

3437 13 SparseArray * 0 8576 13 SparseArray * 13 SparseArray * 0 0 3225 0 0 0 0 0 0 0 0 0 0

3438 20 VertexSlider const * 0 8576 20 VertexSlider const * 20 VertexSlider const * 0 0 3439 0 0 0 0 0 0 0 0 0 0

3439 18 VertexSlider const 0 8832 18 VertexSlider const 18 VertexSlider const 0 0 3226 0 0 0 0 0 0 0 0 0 0

3440 13 SliderTable * 0 8576 13 SliderTable * 13 SliderTable * 0 0 3227 0 0 0 0 0 0 0 0 0 0

3441 16 GeomVertexData * 0 8576 16 GeomVertexData * 16 GeomVertexData * 0 0 3228 0 0 0 0 0 0 0 0 0 0

3442 17 LVecBase4 const * 0 8576 17 LVecBase4 const * 17 LVecBase4 const * 0 0 3443 0 0 0 0 0 0 0 0 0 0

3443 15 LVecBase4 const 0 8832 15 LVecBase4 const 15 LVecBase4 const 0 0 3444 0 0 0 0 0 0 0 0 0 0

3444 9 LVecBase4 0 2105344 9 LVecBase4 9 LVecBase4 0 0 3250 0 0 0 0 0 0 0 0 0 0

3445 14 LColor const * 0 8576 14 LColor const * 14 LColor const * 0 0 3275 0 0 0 0 0 0 0 0 0 0

3446 30 AnimateVerticesRequest const * 0 8576 30 AnimateVerticesRequest const * 30 AnimateVerticesRequest const * 0 0 3447 0 0 0 0 0 0 0 0 0 0

3447 28 AnimateVerticesRequest const 0 8832 28 AnimateVerticesRequest const 28 AnimateVerticesRequest const 0 0 3236 0 0 0 0 0 0 0 0 0 0

3448 24 AnimateVerticesRequest * 0 8576 24 AnimateVerticesRequest * 24 AnimateVerticesRequest * 0 0 3236 0 0 0 0 0 0 0 0 0 0

3449 21 BufferContext const * 0 8576 21 BufferContext const * 21 BufferContext const * 0 0 3450 0 0 0 0 0 0 0 0 0 0

3450 19 BufferContext const 0 8832 19 BufferContext const 19 BufferContext const 0 0 3240 0 0 0 0 0 0 0 0 0 0

3451 15 BufferContext * 0 8576 15 BufferContext * 15 BufferContext * 0 0 3240 0 0 0 0 0 0 0 0 0 0

3452 14 SavedContext * 0 8576 14 SavedContext * 14 SavedContext * 0 0 3238 0 0 0 0 0 0 0 0 0 0

3453 15 GeomPrimitive * 0 8576 15 GeomPrimitive * 15 GeomPrimitive * 0 0 3242 0 0 0 0 0 0 0 0 0 0

3454 21 GeomPrimitive const * 0 8576 21 GeomPrimitive const * 21 GeomPrimitive const * 0 0 3455 0 0 0 0 0 0 0 0 0 0

3455 19 GeomPrimitive const 0 8832 19 GeomPrimitive const 19 GeomPrimitive const 0 0 3242 0 0 0 0 0 0 0 0 0 0

3456 36 GeomVertexDataPipelineReader const * 0 8576 36 GeomVertexDataPipelineReader const * 36 GeomVertexDataPipelineReader const * 0 0 3457 0 0 0 0 0 0 0 0 0 0

3457 34 GeomVertexDataPipelineReader const 0 8832 34 GeomVertexDataPipelineReader const 34 GeomVertexDataPipelineReader const 0 0 3458 0 0 0 0 0 0 0 0 0 0

3458 28 GeomVertexDataPipelineReader 0 1050624 28 GeomVertexDataPipelineReader 28 GeomVertexDataPipelineReader 0 0 0 0 0 0 0 0 0 0 0 0 198
/**
 * Encapsulates the data from a GeomVertexData, pre-fetched for one stage of
 * the pipeline.
 * Does not hold a reference to the GeomVertexData, so make sure it does not
 * go out of scope.
 */

3459 8 CPTA_int 0 2105344 8 CPTA_int 8 CPTA_int 0 0 3460 0 0 0 0 0 0 0 0 0 0

3460 26 ConstPointerToArray< int > 0 2048 26 ConstPointerToArray< int > 26 ConstPointerToArray< int > 0 0 0 0 0 0 0 0 0 0 0 0 0

3461 10 CPTA_int * 0 8576 10 CPTA_int * 10 CPTA_int * 0 0 3459 0 0 0 0 0 0 0 0 0 0

3462 7 PTA_int 0 2105344 7 PTA_int 7 PTA_int 0 0 3463 0 0 0 0 0 0 0 0 0 0

3463 21 PointerToArray< int > 0 2048 21 PointerToArray< int > 21 PointerToArray< int > 0 0 0 0 0 0 0 0 0 0 0 0 0

3464 9 PTA_int * 0 8576 9 PTA_int * 9 PTA_int * 0 0 3462 0 0 0 0 0 0 0 0 0 0

3465 20 TextureStage const * 0 8576 20 TextureStage const * 20 TextureStage const * 0 0 3466 0 0 0 0 0 0 0 0 0 0

3466 18 TextureStage const 0 8832 18 TextureStage const 18 TextureStage const 0 0 3243 0 0 0 0 0 0 0 0 0 0

3467 8 LColor * 0 8576 8 LColor * 8 LColor * 0 0 3248 0 0 0 0 0 0 0 0 0 0

3468 12 Geom const * 0 8576 12 Geom const * 12 Geom const * 0 0 3469 0 0 0 0 0 0 0 0 0 0

3469 10 Geom const 0 8832 10 Geom const 10 Geom const 0 0 3252 0 0 0 0 0 0 0 0 0 0

3470 20 BoundingVolume const 0 8832 20 BoundingVolume const 20 BoundingVolume const 0 0 3255 0 0 0 0 0 0 0 0 0 0

3471 22 BoundingVolume const * 0 8576 22 BoundingVolume const * 22 BoundingVolume const * 0 0 3470 0 0 0 0 0 0 0 0 0 0

3472 13 GeomContext * 0 8576 13 GeomContext * 13 GeomContext * 0 0 3256 0 0 0 0 0 0 0 0 0 0

3473 19 GeomContext const * 0 8576 19 GeomContext const * 19 GeomContext const * 0 0 3474 0 0 0 0 0 0 0 0 0 0

3474 17 GeomContext const 0 8832 17 GeomContext const 17 GeomContext const 0 0 3256 0 0 0 0 0 0 0 0 0 0

3475 11 GeomLines * 0 8576 11 GeomLines * 11 GeomLines * 0 0 3258 0 0 0 0 0 0 0 0 0 0

3476 17 GeomLines const * 0 8576 17 GeomLines const * 17 GeomLines const * 0 0 3477 0 0 0 0 0 0 0 0 0 0

3477 15 GeomLines const 0 8832 15 GeomLines const 15 GeomLines const 0 0 3258 0 0 0 0 0 0 0 0 0 0

3478 20 GeomLinesAdjacency * 0 8576 20 GeomLinesAdjacency * 20 GeomLinesAdjacency * 0 0 3259 0 0 0 0 0 0 0 0 0 0

3479 26 GeomLinesAdjacency const * 0 8576 26 GeomLinesAdjacency const * 26 GeomLinesAdjacency const * 0 0 3480 0 0 0 0 0 0 0 0 0 0

3480 24 GeomLinesAdjacency const 0 8832 24 GeomLinesAdjacency const 24 GeomLinesAdjacency const 0 0 3259 0 0 0 0 0 0 0 0 0 0

3481 16 GeomLinestrips * 0 8576 16 GeomLinestrips * 16 GeomLinestrips * 0 0 3260 0 0 0 0 0 0 0 0 0 0

3482 22 GeomLinestrips const * 0 8576 22 GeomLinestrips const * 22 GeomLinestrips const * 0 0 3483 0 0 0 0 0 0 0 0 0 0

3483 20 GeomLinestrips const 0 8832 20 GeomLinestrips const 20 GeomLinestrips const 0 0 3260 0 0 0 0 0 0 0 0 0 0

3484 25 GeomLinestripsAdjacency * 0 8576 25 GeomLinestripsAdjacency * 25 GeomLinestripsAdjacency * 0 0 3261 0 0 0 0 0 0 0 0 0 0

3485 31 GeomLinestripsAdjacency const * 0 8576 31 GeomLinestripsAdjacency const * 31 GeomLinestripsAdjacency const * 0 0 3486 0 0 0 0 0 0 0 0 0 0

3486 29 GeomLinestripsAdjacency const 0 8832 29 GeomLinestripsAdjacency const 29 GeomLinestripsAdjacency const 0 0 3261 0 0 0 0 0 0 0 0 0 0

3487 19 GeomPatches const * 0 8576 19 GeomPatches const * 19 GeomPatches const * 0 0 3488 0 0 0 0 0 0 0 0 0 0

3488 17 GeomPatches const 0 8832 17 GeomPatches const 17 GeomPatches const 0 0 3262 0 0 0 0 0 0 0 0 0 0

3489 13 GeomPatches * 0 8576 13 GeomPatches * 13 GeomPatches * 0 0 3262 0 0 0 0 0 0 0 0 0 0

3490 12 GeomPoints * 0 8576 12 GeomPoints * 12 GeomPoints * 0 0 3263 0 0 0 0 0 0 0 0 0 0

3491 18 GeomPoints const * 0 8576 18 GeomPoints const * 18 GeomPoints const * 0 0 3492 0 0 0 0 0 0 0 0 0 0

3492 16 GeomPoints const 0 8832 16 GeomPoints const 16 GeomPoints const 0 0 3263 0 0 0 0 0 0 0 0 0 0

3493 15 GeomTriangles * 0 8576 15 GeomTriangles * 15 GeomTriangles * 0 0 3264 0 0 0 0 0 0 0 0 0 0

3494 21 GeomTriangles const * 0 8576 21 GeomTriangles const * 21 GeomTriangles const * 0 0 3495 0 0 0 0 0 0 0 0 0 0

3495 19 GeomTriangles const 0 8832 19 GeomTriangles const 19 GeomTriangles const 0 0 3264 0 0 0 0 0 0 0 0 0 0

3496 24 GeomTrianglesAdjacency * 0 8576 24 GeomTrianglesAdjacency * 24 GeomTrianglesAdjacency * 0 0 3265 0 0 0 0 0 0 0 0 0 0

3497 30 GeomTrianglesAdjacency const * 0 8576 30 GeomTrianglesAdjacency const * 30 GeomTrianglesAdjacency const * 0 0 3498 0 0 0 0 0 0 0 0 0 0

3498 28 GeomTrianglesAdjacency const 0 8832 28 GeomTrianglesAdjacency const 28 GeomTrianglesAdjacency const 0 0 3265 0 0 0 0 0 0 0 0 0 0

3499 13 GeomTrifans * 0 8576 13 GeomTrifans * 13 GeomTrifans * 0 0 3266 0 0 0 0 0 0 0 0 0 0

3500 19 GeomTrifans const * 0 8576 19 GeomTrifans const * 19 GeomTrifans const * 0 0 3501 0 0 0 0 0 0 0 0 0 0

3501 17 GeomTrifans const 0 8832 17 GeomTrifans const 17 GeomTrifans const 0 0 3266 0 0 0 0 0 0 0 0 0 0

3502 15 GeomTristrips * 0 8576 15 GeomTristrips * 15 GeomTristrips * 0 0 3267 0 0 0 0 0 0 0 0 0 0

3503 21 GeomTristrips const * 0 8576 21 GeomTristrips const * 21 GeomTristrips const * 0 0 3504 0 0 0 0 0 0 0 0 0 0

3504 19 GeomTristrips const 0 8832 19 GeomTristrips const 19 GeomTristrips const 0 0 3267 0 0 0 0 0 0 0 0 0 0

3505 24 GeomTristripsAdjacency * 0 8576 24 GeomTristripsAdjacency * 24 GeomTristripsAdjacency * 0 0 3268 0 0 0 0 0 0 0 0 0 0

3506 30 GeomTristripsAdjacency const * 0 8576 30 GeomTristripsAdjacency const * 30 GeomTristripsAdjacency const * 0 0 3507 0 0 0 0 0 0 0 0 0 0

3507 28 GeomTristripsAdjacency const 0 8832 28 GeomTristripsAdjacency const 28 GeomTristripsAdjacency const 0 0 3268 0 0 0 0 0 0 0 0 0 0

3508 18 GeomVertexReader * 0 8576 18 GeomVertexReader * 18 GeomVertexReader * 0 0 3269 0 0 0 0 0 0 0 0 0 0

3509 24 GeomVertexReader const * 0 8576 24 GeomVertexReader const * 24 GeomVertexReader const * 0 0 3510 0 0 0 0 0 0 0 0 0 0

3510 22 GeomVertexReader const 0 8832 22 GeomVertexReader const 22 GeomVertexReader const 0 0 3269 0 0 0 0 0 0 0 0 0 0

3511 18 LVecBase2f const * 0 8576 18 LVecBase2f const * 18 LVecBase2f const * 0 0 3512 0 0 0 0 0 0 0 0 0 0

3512 16 LVecBase2f const 0 8832 16 LVecBase2f const 16 LVecBase2f const 0 0 3306 0 0 0 0 0 0 0 0 0 0

3513 18 LVecBase3f const * 0 8576 18 LVecBase3f const * 18 LVecBase3f const * 0 0 3514 0 0 0 0 0 0 0 0 0 0

3514 16 LVecBase3f const 0 8832 16 LVecBase3f const 16 LVecBase3f const 0 0 3312 0 0 0 0 0 0 0 0 0 0

3515 18 LVecBase4f const * 0 8576 18 LVecBase4f const * 18 LVecBase4f const * 0 0 3516 0 0 0 0 0 0 0 0 0 0

3516 16 LVecBase4f const 0 8832 16 LVecBase4f const 16 LVecBase4f const 0 0 3250 0 0 0 0 0 0 0 0 0 0

3517 9 LMatrix3f 0 2048 9 LMatrix3f 9 LMatrix3f 0 0 0 0 0 0 0 0 0 0 0 0 231
/**
 * This is a 3-by-3 transform matrix.  It typically will represent either a
 * rotation-and-scale (no translation) matrix in 3-d, or a full affine matrix
 * (rotation, scale, translation) in 2-d, e.g.  for a texture matrix.
 */

3518 11 LMatrix3f * 0 8576 11 LMatrix3f * 11 LMatrix3f * 0 0 3517 0 0 0 0 0 0 0 0 0 0

3519 11 LMatrix4f * 0 8576 11 LMatrix4f * 11 LMatrix4f * 0 0 3317 0 0 0 0 0 0 0 0 0 0

3520 6 double 0 8194 6 double 6 double 0 3 0 0 0 0 0 0 0 0 0 0 0

3521 18 LVecBase2d const * 0 8576 18 LVecBase2d const * 18 LVecBase2d const * 0 0 3522 0 0 0 0 0 0 0 0 0 0

3522 16 LVecBase2d const 0 8832 16 LVecBase2d const 16 LVecBase2d const 0 0 3523 0 0 0 0 0 0 0 0 0 0

3523 10 LVecBase2d 0 2048 10 LVecBase2d 10 LVecBase2d 0 0 0 0 0 0 0 0 0 0 0 0 75
/**
 * This is the base class for all two-component vectors and points.
 */

3524 18 LVecBase3d const * 0 8576 18 LVecBase3d const * 18 LVecBase3d const * 0 0 3525 0 0 0 0 0 0 0 0 0 0

3525 16 LVecBase3d const 0 8832 16 LVecBase3d const 16 LVecBase3d const 0 0 3526 0 0 0 0 0 0 0 0 0 0

3526 10 LVecBase3d 0 2048 10 LVecBase3d 10 LVecBase3d 0 0 0 0 0 0 0 0 0 0 0 0 77
/**
 * This is the base class for all three-component vectors and points.
 */

3527 18 LVecBase4d const * 0 8576 18 LVecBase4d const * 18 LVecBase4d const * 0 0 3528 0 0 0 0 0 0 0 0 0 0

3528 16 LVecBase4d const 0 8832 16 LVecBase4d const 16 LVecBase4d const 0 0 3529 0 0 0 0 0 0 0 0 0 0

3529 10 LVecBase4d 0 2048 10 LVecBase4d 10 LVecBase4d 0 0 0 0 0 0 0 0 0 0 0 0 77
/**
 * This is the base class for all three-component vectors and points.
 */

3530 9 LMatrix3d 0 2048 9 LMatrix3d 9 LMatrix3d 0 0 0 0 0 0 0 0 0 0 0 0 231
/**
 * This is a 3-by-3 transform matrix.  It typically will represent either a
 * rotation-and-scale (no translation) matrix in 3-d, or a full affine matrix
 * (rotation, scale, translation) in 2-d, e.g.  for a texture matrix.
 */

3531 11 LMatrix3d * 0 8576 11 LMatrix3d * 11 LMatrix3d * 0 0 3530 0 0 0 0 0 0 0 0 0 0

3532 9 LMatrix4d 0 2048 9 LMatrix4d 9 LMatrix4d 0 0 0 0 0 0 0 0 0 0 0 0 45
/**
 * This is a 4-by-4 transform matrix.
 */

3533 11 LMatrix4d * 0 8576 11 LMatrix4d * 11 LMatrix4d * 0 0 3532 0 0 0 0 0 0 0 0 0 0

3534 17 LVecBase2 const * 0 8576 17 LVecBase2 const * 17 LVecBase2 const * 0 0 3304 0 0 0 0 0 0 0 0 0 0

3535 17 LVecBase3 const * 0 8576 17 LVecBase3 const * 17 LVecBase3 const * 0 0 3310 0 0 0 0 0 0 0 0 0 0

3536 8 LMatrix3 0 2105344 8 LMatrix3 8 LMatrix3 0 0 3517 0 0 0 0 0 0 0 0 0 0

3537 10 LMatrix3 * 0 8576 10 LMatrix3 * 10 LMatrix3 * 0 0 3536 0 0 0 0 0 0 0 0 0 0

3538 18 LVecBase2i const * 0 8576 18 LVecBase2i const * 18 LVecBase2i const * 0 0 3539 0 0 0 0 0 0 0 0 0 0

3539 16 LVecBase2i const 0 8832 16 LVecBase2i const 16 LVecBase2i const 0 0 3540 0 0 0 0 0 0 0 0 0 0

3540 10 LVecBase2i 0 2048 10 LVecBase2i 10 LVecBase2i 0 0 0 0 0 0 0 0 0 0 0 0 75
/**
 * This is the base class for all two-component vectors and points.
 */

3541 18 LVecBase3i const * 0 8576 18 LVecBase3i const * 18 LVecBase3i const * 0 0 3542 0 0 0 0 0 0 0 0 0 0

3542 16 LVecBase3i const 0 8832 16 LVecBase3i const 16 LVecBase3i const 0 0 3543 0 0 0 0 0 0 0 0 0 0

3543 10 LVecBase3i 0 2048 10 LVecBase3i 10 LVecBase3i 0 0 0 0 0 0 0 0 0 0 0 0 77
/**
 * This is the base class for all three-component vectors and points.
 */

3544 18 LVecBase4i const * 0 8576 18 LVecBase4i const * 18 LVecBase4i const * 0 0 3545 0 0 0 0 0 0 0 0 0 0

3545 16 LVecBase4i const 0 8832 16 LVecBase4i const 16 LVecBase4i const 0 0 3546 0 0 0 0 0 0 0 0 0 0

3546 10 LVecBase4i 0 2048 10 LVecBase4i 10 LVecBase4i 0 0 0 0 0 0 0 0 0 0 0 0 77
/**
 * This is the base class for all three-component vectors and points.
 */

3547 18 GeomVertexWriter * 0 8576 18 GeomVertexWriter * 18 GeomVertexWriter * 0 0 3270 0 0 0 0 0 0 0 0 0 0

3548 24 GeomVertexWriter const * 0 8576 24 GeomVertexWriter const * 24 GeomVertexWriter const * 0 0 3549 0 0 0 0 0 0 0 0 0 0

3549 22 GeomVertexWriter const 0 8832 22 GeomVertexWriter const 22 GeomVertexWriter const 0 0 3270 0 0 0 0 0 0 0 0 0 0

3550 17 LMatrix3f const * 0 8576 17 LMatrix3f const * 17 LMatrix3f const * 0 0 3551 0 0 0 0 0 0 0 0 0 0

3551 15 LMatrix3f const 0 8832 15 LMatrix3f const 15 LMatrix3f const 0 0 3517 0 0 0 0 0 0 0 0 0 0

3552 17 LMatrix4f const * 0 8576 17 LMatrix4f const * 17 LMatrix4f const * 0 0 3553 0 0 0 0 0 0 0 0 0 0

3553 15 LMatrix4f const 0 8832 15 LMatrix4f const 15 LMatrix4f const 0 0 3317 0 0 0 0 0 0 0 0 0 0

3554 17 LMatrix3d const * 0 8576 17 LMatrix3d const * 17 LMatrix3d const * 0 0 3555 0 0 0 0 0 0 0 0 0 0

3555 15 LMatrix3d const 0 8832 15 LMatrix3d const 15 LMatrix3d const 0 0 3530 0 0 0 0 0 0 0 0 0 0

3556 17 LMatrix4d const * 0 8576 17 LMatrix4d const * 17 LMatrix4d const * 0 0 3557 0 0 0 0 0 0 0 0 0 0

3557 15 LMatrix4d const 0 8832 15 LMatrix4d const 15 LMatrix4d const 0 0 3532 0 0 0 0 0 0 0 0 0 0

3558 16 LMatrix3 const * 0 8576 16 LMatrix3 const * 16 LMatrix3 const * 0 0 3559 0 0 0 0 0 0 0 0 0 0

3559 14 LMatrix3 const 0 8832 14 LMatrix3 const 14 LMatrix3 const 0 0 3536 0 0 0 0 0 0 0 0 0 0

3560 20 GeomVertexRewriter * 0 8576 20 GeomVertexRewriter * 20 GeomVertexRewriter * 0 0 3271 0 0 0 0 0 0 0 0 0 0

3561 26 GeomVertexRewriter const * 0 8576 26 GeomVertexRewriter const * 26 GeomVertexRewriter const * 0 0 3562 0 0 0 0 0 0 0 0 0 0

3562 24 GeomVertexRewriter const 0 8832 24 GeomVertexRewriter const 24 GeomVertexRewriter const 0 0 3271 0 0 0 0 0 0 0 0 0 0

3563 14 SamplerState * 0 8576 14 SamplerState * 14 SamplerState * 0 0 3272 0 0 0 0 0 0 0 0 0 0

3564 20 SamplerState const * 0 8576 20 SamplerState const * 20 SamplerState const * 0 0 3286 0 0 0 0 0 0 0 0 0 0

3565 16 SamplerContext * 0 8576 16 SamplerContext * 16 SamplerContext * 0 0 3566 0 0 0 0 0 0 0 0 0 0

3566 14 SamplerContext 0 1050624 14 SamplerContext 14 SamplerContext 0 0 0 0 0 0 0 0 0 0 0 0 468
/**
 * This is a special class object that holds a handle to the sampler state
 * object given by the graphics back-end for a particular combination of
 * texture sampling settings.
 *
 * Some graphics back-ends (like OpenGL) use mutable sampler objects, whereas
 * others (Direct3D 10+) use immutable ones.  In Panda3D, each unique sampler
 * state has its own SamplerContext, which simplifies the implementation and
 * makes redundant sampler objects impossible.
 */

3567 15 Texture const * 0 8576 15 Texture const * 15 Texture const * 0 0 3568 0 0 0 0 0 0 0 0 0 0

3568 13 Texture const 0 8832 13 Texture const 13 Texture const 0 0 3276 0 0 0 0 0 0 0 0 0 0

3569 16 Filename const * 0 8576 16 Filename const * 16 Filename const * 0 0 3284 0 0 0 0 0 0 0 0 0 0

3570 21 LoaderOptions const * 0 8576 21 LoaderOptions const * 21 LoaderOptions const * 0 0 3571 0 0 0 0 0 0 0 0 0 0

3571 19 LoaderOptions const 0 8832 19 LoaderOptions const 19 LoaderOptions const 0 0 3572 0 0 0 0 0 0 0 0 0 0

3572 13 LoaderOptions 0 2048 13 LoaderOptions 13 LoaderOptions 0 0 0 0 0 0 0 0 0 0 0 0 65
/**
 * Specifies parameters that may be passed to the loader.
 */

3573 16 BamCacheRecord * 0 8576 16 BamCacheRecord * 16 BamCacheRecord * 0 0 3574 0 0 0 0 0 0 0 0 0 0

3574 14 BamCacheRecord 0 2048 14 BamCacheRecord 14 BamCacheRecord 0 0 0 0 0 0 0 0 0 0 0 0 231
/**
 * An instance of this class is written to the front of a Bam or Txo file to
 * make the file a cached instance of some other loadable resource.  This
 * record contains information needed to test the validity of the cache.
 */

3575 9 istream * 0 8576 14 std::istream * 14 std::istream * 0 0 3576 0 0 0 0 0 0 0 0 0 0

3576 7 istream 0 2048 12 std::istream 12 std::istream 0 0 0 0 0 0 0 0 0 0 0 0 0

3577 16 PNMImage const * 0 8576 16 PNMImage const * 16 PNMImage const * 0 0 3578 0 0 0 0 0 0 0 0 0 0

3578 14 PNMImage const 0 8832 14 PNMImage const 14 PNMImage const 0 0 3579 0 0 0 0 0 0 0 0 0 0

3579 8 PNMImage 0 2048 8 PNMImage 8 PNMImage 0 0 0 0 0 0 0 0 0 0 0 0 1516
/**
 * The name of this class derives from the fact that we originally implemented
 * it as a layer on top of the "pnm library", based on netpbm, which was built
 * to implement pbm, pgm, and pbm files, and is the underlying support of a
 * number of public-domain image file converters.  Nowadays we are no longer
 * derived directly from the pnm library, mainly to allow support of C++
 * iostreams instead of the C stdio FILE interface.
 *
 * Conceptually, a PNMImage is a two-dimensional array of xels, which are the
 * PNM-defined generic pixel type.  Each xel may have a red, green, and blue
 * component, or (if the image is grayscale) a gray component.  The image may
 * be read in, the individual xels manipulated, and written out again, or a
 * black image may be constructed from scratch.
 *
 * A PNMImage has a color space and a maxval, the combination of which defines
 * how a floating-point linear color value is encoded as an integer value in
 * memory.  The functions ending in _val operate on encoded colors, whereas
 * the regular ones work with linear floating-point values.  All operations
 * are color space correct unless otherwise specified.
 *
 * The image is of size XSize() by YSize() xels, numbered from top to bottom,
 * left to right, beginning at zero.
 *
 * Files can be specified by filename, or by an iostream pointer.  The
 * filename "-" refers to stdin or stdout.
 *
 * This class is not inherently thread-safe; use it from a single thread or
 * protect access using a mutex.
 */

3580 15 PfmFile const * 0 8576 15 PfmFile const * 15 PfmFile const * 0 0 3581 0 0 0 0 0 0 0 0 0 0

3581 13 PfmFile const 0 8832 13 PfmFile const 13 PfmFile const 0 0 3582 0 0 0 0 0 0 0 0 0 0

3582 7 PfmFile 0 2048 7 PfmFile 7 PfmFile 0 0 0 0 0 0 0 0 0 0 0 0 155
/**
 * Defines a pfm file, a 2-d table of floating-point numbers, either
 * 3-component or 1-component, or with a special extension, 2- or 4-component.
 */

3583 10 PNMImage * 0 8576 10 PNMImage * 10 PNMImage * 0 0 3579 0 0 0 0 0 0 0 0 0 0

3584 9 PfmFile * 0 8576 9 PfmFile * 9 PfmFile * 0 0 3582 0 0 0 0 0 0 0 0 0 0

3585 8 WrapMode 0 2367488 17 Texture::WrapMode 17 Texture::WrapMode 3276 0 3274 0 0 0 0 0 0 0 0 0 0

3586 10 FilterType 0 2367488 19 Texture::FilterType 19 Texture::FilterType 3276 0 3273 0 0 0 0 0 0 0 0 0 0

3587 12 CPTA_uchar * 0 8576 12 CPTA_uchar * 12 CPTA_uchar * 0 0 3287 0 0 0 0 0 0 0 0 0 0

3588 9 PTA_uchar 0 2105344 9 PTA_uchar 9 PTA_uchar 0 0 3589 0 0 0 0 0 0 0 0 0 0

3589 31 PointerToArray< unsigned char > 0 2048 31 PointerToArray< unsigned char > 31 PointerToArray< unsigned char > 0 0 0 0 0 0 0 0 0 0 0 0 0

3590 11 PTA_uchar * 0 8576 11 PTA_uchar * 11 PTA_uchar * 0 0 3588 0 0 0 0 0 0 0 0 0 0

3591 13 long long int 0 8226 13 long long int 13 long long int 0 8 0 0 0 0 0 0 0 0 0 0 0

3592 15 TexturePeeker * 0 8576 15 TexturePeeker * 15 TexturePeeker * 0 0 3339 0 0 0 0 0 0 0 0 0 0

3593 11 AsyncFuture 0 2048 11 AsyncFuture 11 AsyncFuture 0 0 0 0 0 0 0 0 0 0 0 0 1711
/**
 * This class represents a thread-safe handle to a promised future result of
 * an asynchronous operation, providing methods to query its status and result
 * as well as register callbacks for this future's completion.
 *
 * An AsyncFuture can be awaited from within a coroutine or task.  It keeps
 * track of tasks waiting for this future and automatically reactivates them
 * upon this future's completion.
 *
 * A task itself is also a subclass of AsyncFuture.  Other subclasses are
 * not generally necessary, except to override the function of `cancel()`.
 *
 * Until the future is done, it is "owned" by the resolver thread, though it's
 * still legal for other threads to query its state.  When the resolver thread
 * resolves this future using `set_result()`, or any thread calls `cancel()`,
 * it instantly enters the "done" state, after which the result becomes a
 * read-only field that all threads can access.
 *
 * When the future returns true for done(), a thread can use cancelled() to
 * determine whether the future was cancelled or get_result() to access the
 * result of the operation.  Not all operations define a meaningful result
 * value, so some will always return nullptr.
 *
 * In Python, the `cancelled()`, `wait()` and `get_result()` methods are
 * wrapped up into a single `result()` method which waits for the future to
 * complete before either returning the result or throwing an exception if the
 * future was cancelled.
 * However, it is preferable to use the `await` keyword when running from a
 * coroutine, which only suspends the current task and not the entire thread.
 *
 * This API aims to mirror and be compatible with Python's Future class.
 *
 * @since 1.10.0
 */

3594 13 AsyncFuture * 0 8576 13 AsyncFuture * 13 AsyncFuture * 0 0 3593 0 0 0 0 0 0 0 0 0 0

3595 11 LVecBase2 * 0 8576 11 LVecBase2 * 11 LVecBase2 * 0 0 3305 0 0 0 0 0 0 0 0 0 0

3596 16 TextureContext * 0 8576 16 TextureContext * 16 TextureContext * 0 0 3329 0 0 0 0 0 0 0 0 0 0

3597 14 Shader const * 0 8576 14 Shader const * 14 Shader const * 0 0 3598 0 0 0 0 0 0 0 0 0 0

3598 12 Shader const 0 8832 12 Shader const 12 Shader const 0 0 3292 0 0 0 0 0 0 0 0 0 0

3599 10 Filename * 0 8576 10 Filename * 10 Filename * 0 0 3285 0 0 0 0 0 0 0 0 0 0

3600 15 ShaderContext * 0 8576 15 ShaderContext * 15 ShaderContext * 0 0 3330 0 0 0 0 0 0 0 0 0 0

3601 20 ShaderBuffer const * 0 8576 20 ShaderBuffer const * 20 ShaderBuffer const * 0 0 3602 0 0 0 0 0 0 0 0 0 0

3602 18 ShaderBuffer const 0 8832 18 ShaderBuffer const 18 ShaderBuffer const 0 0 3297 0 0 0 0 0 0 0 0 0 0

3603 14 ShaderBuffer * 0 8576 14 ShaderBuffer * 14 ShaderBuffer * 0 0 3297 0 0 0 0 0 0 0 0 0 0

3604 31 PreparedGraphicsObjects const * 0 8576 31 PreparedGraphicsObjects const * 31 PreparedGraphicsObjects const * 0 0 3605 0 0 0 0 0 0 0 0 0 0

3605 29 PreparedGraphicsObjects const 0 8832 29 PreparedGraphicsObjects const 29 PreparedGraphicsObjects const 0 0 3299 0 0 0 0 0 0 0 0 0 0

3606 20 IndexBufferContext * 0 8576 20 IndexBufferContext * 20 IndexBufferContext * 0 0 3300 0 0 0 0 0 0 0 0 0 0

3607 26 IndexBufferContext const * 0 8576 26 IndexBufferContext const * 26 IndexBufferContext const * 0 0 3608 0 0 0 0 0 0 0 0 0 0

3608 24 IndexBufferContext const 0 8832 24 IndexBufferContext const 24 IndexBufferContext const 0 0 3300 0 0 0 0 0 0 0 0 0 0

3609 35 GeomPrimitivePipelineReader const * 0 8576 35 GeomPrimitivePipelineReader const * 35 GeomPrimitivePipelineReader const * 0 0 3610 0 0 0 0 0 0 0 0 0 0

3610 33 GeomPrimitivePipelineReader const 0 8832 33 GeomPrimitivePipelineReader const 33 GeomPrimitivePipelineReader const 0 0 3611 0 0 0 0 0 0 0 0 0 0

3611 27 GeomPrimitivePipelineReader 0 1050624 27 GeomPrimitivePipelineReader 27 GeomPrimitivePipelineReader 0 0 0 0 0 0 0 0 0 0 0 0 100
/**
 * Encapsulates the data from a GeomPrimitive, pre-fetched for one stage of
 * the pipeline.
 */

3612 12 Lens const * 0 8576 12 Lens const * 12 Lens const * 0 0 3613 0 0 0 0 0 0 0 0 0 0

3613 10 Lens const 0 8832 10 Lens const 10 Lens const 0 0 3301 0 0 0 0 0 0 0 0 0 0

3614 6 Lens * 0 8576 6 Lens * 6 Lens * 0 0 3301 0 0 0 0 0 0 0 0 0 0

3615 15 LPoint2 const * 0 8576 15 LPoint2 const * 15 LPoint2 const * 0 0 3616 0 0 0 0 0 0 0 0 0 0

3616 13 LPoint2 const 0 8832 13 LPoint2 const 13 LPoint2 const 0 0 3617 0 0 0 0 0 0 0 0 0 0

3617 7 LPoint2 0 2105344 7 LPoint2 7 LPoint2 0 0 3618 0 0 0 0 0 0 0 0 0 0

3618 8 LPoint2f 0 2048 8 LPoint2f 8 LPoint2f 0 0 0 0 0 0 0 0 0 0 0 0 50
/**
 * This is a two-component point in space.
 */

3619 9 LPoint3 * 0 8576 9 LPoint3 * 9 LPoint3 * 0 0 3313 0 0 0 0 0 0 0 0 0 0

3620 15 LPoint3 const * 0 8576 15 LPoint3 const * 15 LPoint3 const * 0 0 3621 0 0 0 0 0 0 0 0 0 0

3621 13 LPoint3 const 0 8832 13 LPoint3 const 13 LPoint3 const 0 0 3313 0 0 0 0 0 0 0 0 0 0

3622 10 LVector3 * 0 8576 10 LVector3 * 10 LVector3 * 0 0 3623 0 0 0 0 0 0 0 0 0 0

3623 8 LVector3 0 2105344 8 LVector3 8 LVector3 0 0 3432 0 0 0 0 0 0 0 0 0 0

3624 9 LPoint2 * 0 8576 9 LPoint2 * 9 LPoint2 * 0 0 3617 0 0 0 0 0 0 0 0 0 0

3625 16 LVector2 const * 0 8576 16 LVector2 const * 16 LVector2 const * 0 0 3307 0 0 0 0 0 0 0 0 0 0

3626 16 LVector3 const * 0 8576 16 LVector3 const * 16 LVector3 const * 0 0 3627 0 0 0 0 0 0 0 0 0 0

3627 14 LVector3 const 0 8832 14 LVector3 const 14 LVector3 const 0 0 3623 0 0 0 0 0 0 0 0 0 0

3628 16 BoundingVolume * 0 8576 16 BoundingVolume * 16 BoundingVolume * 0 0 3255 0 0 0 0 0 0 0 0 0 0

3629 16 Material const * 0 8576 16 Material const * 16 Material const * 0 0 3630 0 0 0 0 0 0 0 0 0 0

3630 14 Material const 0 8832 14 Material const 14 Material const 0 0 3319 0 0 0 0 0 0 0 0 0 0

3631 10 Material * 0 8576 10 Material * 10 Material * 0 0 3319 0 0 0 0 0 0 0 0 0 0

3632 12 MatrixLens * 0 8576 12 MatrixLens * 12 MatrixLens * 0 0 3321 0 0 0 0 0 0 0 0 0 0

3633 18 MatrixLens const * 0 8576 18 MatrixLens const * 18 MatrixLens const * 0 0 3634 0 0 0 0 0 0 0 0 0 0

3634 16 MatrixLens const 0 8832 16 MatrixLens const 16 MatrixLens const 0 0 3321 0 0 0 0 0 0 0 0 0 0

3635 18 OrthographicLens * 0 8576 18 OrthographicLens * 18 OrthographicLens * 0 0 3322 0 0 0 0 0 0 0 0 0 0

3636 21 ParamTextureSampler * 0 8576 21 ParamTextureSampler * 21 ParamTextureSampler * 0 0 3323 0 0 0 0 0 0 0 0 0 0

3637 27 ParamTextureSampler const * 0 8576 27 ParamTextureSampler const * 27 ParamTextureSampler const * 0 0 3638 0 0 0 0 0 0 0 0 0 0

3638 25 ParamTextureSampler const 0 8832 25 ParamTextureSampler const 25 ParamTextureSampler const 0 0 3323 0 0 0 0 0 0 0 0 0 0

3639 19 ParamTextureImage * 0 8576 19 ParamTextureImage * 19 ParamTextureImage * 0 0 3326 0 0 0 0 0 0 0 0 0 0

3640 25 ParamTextureImage const * 0 8576 25 ParamTextureImage const * 25 ParamTextureImage const * 0 0 3641 0 0 0 0 0 0 0 0 0 0

3641 23 ParamTextureImage const 0 8832 23 ParamTextureImage const 23 ParamTextureImage const 0 0 3326 0 0 0 0 0 0 0 0 0 0

3642 17 PerspectiveLens * 0 8576 17 PerspectiveLens * 17 PerspectiveLens * 0 0 3327 0 0 0 0 0 0 0 0 0 0

3643 28 TextureReloadRequest const * 0 8576 28 TextureReloadRequest const * 28 TextureReloadRequest const * 0 0 3644 0 0 0 0 0 0 0 0 0 0

3644 26 TextureReloadRequest const 0 8832 26 TextureReloadRequest const 26 TextureReloadRequest const 0 0 3328 0 0 0 0 0 0 0 0 0 0

3645 22 TextureReloadRequest * 0 8576 22 TextureReloadRequest * 22 TextureReloadRequest * 0 0 3328 0 0 0 0 0 0 0 0 0 0

3646 22 TextureContext const * 0 8576 22 TextureContext const * 22 TextureContext const * 0 0 3647 0 0 0 0 0 0 0 0 0 0

3647 20 TextureContext const 0 8832 20 TextureContext const 20 TextureContext const 0 0 3329 0 0 0 0 0 0 0 0 0 0

3648 21 ShaderContext const * 0 8576 21 ShaderContext const * 21 ShaderContext const * 0 0 3649 0 0 0 0 0 0 0 0 0 0

3649 19 ShaderContext const 0 8832 19 ShaderContext const 19 ShaderContext const 0 0 3330 0 0 0 0 0 0 0 0 0 0

3650 18 UserVertexSlider * 0 8576 18 UserVertexSlider * 18 UserVertexSlider * 0 0 3332 0 0 0 0 0 0 0 0 0 0

3651 21 UserVertexTransform * 0 8576 21 UserVertexTransform * 21 UserVertexTransform * 0 0 3333 0 0 0 0 0 0 0 0 0 0

3652 27 UserVertexTransform const * 0 8576 27 UserVertexTransform const * 27 UserVertexTransform const * 0 0 3653 0 0 0 0 0 0 0 0 0 0

3653 25 UserVertexTransform const 0 8832 25 UserVertexTransform const 25 UserVertexTransform const 0 0 3333 0 0 0 0 0 0 0 0 0 0

3654 20 VideoTexture const * 0 8576 20 VideoTexture const * 20 VideoTexture const * 0 0 3655 0 0 0 0 0 0 0 0 0 0

3655 18 VideoTexture const 0 8832 18 VideoTexture const 18 VideoTexture const 0 0 3334 0 0 0 0 0 0 0 0 0 0

3656 14 VideoTexture * 0 8576 14 VideoTexture * 14 VideoTexture * 0 0 3334 0 0 0 0 0 0 0 0 0 0

3657 15 AnimInterface * 0 8576 15 AnimInterface * 15 AnimInterface * 0 0 3335 0 0 0 0 0 0 0 0 0 0

3658 27 VertexBufferContext const * 0 8576 27 VertexBufferContext const * 27 VertexBufferContext const * 0 0 3659 0 0 0 0 0 0 0 0 0 0

3659 25 VertexBufferContext const 0 8832 25 VertexBufferContext const 25 VertexBufferContext const 0 0 3336 0 0 0 0 0 0 0 0 0 0

3660 19 TextureCollection * 0 8576 19 TextureCollection * 19 TextureCollection * 0 0 3337 0 0 0 0 0 0 0 0 0 0

3661 25 TextureCollection const * 0 8576 25 TextureCollection const * 25 TextureCollection const * 0 0 3662 0 0 0 0 0 0 0 0 0 0

3662 23 TextureCollection const 0 8832 23 TextureCollection const 23 TextureCollection const 0 0 3337 0 0 0 0 0 0 0 0 0 0

3663 21 TexturePeeker const * 0 8576 21 TexturePeeker const * 21 TexturePeeker const * 0 0 3664 0 0 0 0 0 0 0 0 0 0

3664 19 TexturePeeker const 0 8832 19 TexturePeeker const 19 TexturePeeker const 0 0 3339 0 0 0 0 0 0 0 0 0 0

0
205
3665 14 animation_type 0 2 3175 1639 0 0 0 0 0 0 0 39 GeomVertexAnimationSpec::animation_type 0

3666 14 num_transforms 0 2 3177 1640 0 0 0 0 0 0 0 39 GeomVertexAnimationSpec::num_transforms 0

3667 18 indexed_transforms 0 2 3178 1641 0 0 0 0 0 0 0 43 GeomVertexAnimationSpec::indexed_transforms 0

3668 6 parent 0 2 3181 1649 0 0 0 0 0 0 0 20 InternalName::parent 0

3669 4 name 0 2 3182 1650 0 0 0 0 0 0 0 18 InternalName::name 0

3670 8 basename 0 2 3184 1652 0 0 0 0 0 0 0 22 InternalName::basename 0

3671 10 registered 0 2 3178 1714 0 0 0 0 0 0 0 33 GeomVertexArrayFormat::registered 0

3672 6 stride 0 6 3177 1716 1717 0 0 0 0 0 0 29 GeomVertexArrayFormat::stride 0

3673 6 pad_to 0 6 3177 1718 1719 0 0 0 0 0 0 29 GeomVertexArrayFormat::pad_to 0

3674 7 divisor 0 6 3177 1720 1721 0 0 0 0 0 0 30 GeomVertexArrayFormat::divisor 0

3675 11 total_bytes 0 2 3177 1722 0 0 0 0 0 0 0 34 GeomVertexArrayFormat::total_bytes 0

3676 7 columns 0 66 3187 1729 0 0 0 0 1728 0 0 30 GeomVertexArrayFormat::columns 0

3677 10 registered 0 2 3178 1746 0 0 0 0 0 0 0 28 GeomVertexFormat::registered 0

3678 9 animation 0 6 3190 1748 1749 0 0 0 0 0 0 27 GeomVertexFormat::animation 0

3679 6 arrays 0 358 3191 1753 1755 0 0 1756 1752 1758 0 24 GeomVertexFormat::arrays 0

3680 6 points 0 66 3193 1771 0 0 0 0 1770 0 0 24 GeomVertexFormat::points 0

3681 7 vectors 0 66 3193 1773 0 0 0 0 1772 0 0 25 GeomVertexFormat::vectors 0

3682 7 columns 0 650 3187 1763 0 1764 0 0 1761 0 1765 25 GeomVertexFormat::columns 67
// We also define this as a mapping interface, for lookups by name.

3683 9 save_file 0 2 3203 1865 0 0 0 0 0 0 0 25 VertexDataPage::save_file 0

3684 12 array_format 0 2 3191 1902 0 0 0 0 0 0 0 33 GeomVertexArrayData::array_format 0

3685 10 usage_hint 0 6 3169 1903 1904 0 0 0 0 0 0 31 GeomVertexArrayData::usage_hint 0

3686 15 data_size_bytes 0 2 3209 1911 0 0 0 0 0 0 0 36 GeomVertexArrayData::data_size_bytes 0

3687 8 modified 0 2 3211 1912 0 0 0 0 0 0 0 29 GeomVertexArrayData::modified 0

3688 6 object 0 2 3213 1935 0 0 0 0 0 0 0 33 GeomVertexArrayDataHandle::object 0

3689 12 array_format 0 2 3191 1936 0 0 0 0 0 0 0 39 GeomVertexArrayDataHandle::array_format 0

3690 10 usage_hint 0 2 3169 1937 0 0 0 0 0 0 0 37 GeomVertexArrayDataHandle::usage_hint 0

3691 15 data_size_bytes 0 2 3209 1943 0 0 0 0 0 0 0 42 GeomVertexArrayDataHandle::data_size_bytes 0

3692 8 modified 0 2 3211 1944 0 0 0 0 0 0 0 35 GeomVertexArrayDataHandle::modified 0

3693 8 modified 0 2 3211 1963 0 0 0 0 0 0 0 25 VertexTransform::modified 0

3694 10 registered 0 2 3178 1971 0 0 0 0 0 0 0 26 TransformTable::registered 0

3695 8 modified 0 2 3211 1975 0 0 0 0 0 0 0 24 TransformTable::modified 0

3696 10 transforms 0 358 3217 1974 1976 0 0 1978 1973 1977 0 26 TransformTable::transforms 0

3697 10 transforms 0 102 3217 1996 1997 0 0 1990 1995 0 0 26 TransformBlend::transforms 0

3698 7 weights 0 650 3220 1994 0 1993 0 0 1995 0 1996 23 TransformBlend::weights 0

3699 8 modified 0 2 3211 2003 0 0 0 0 0 0 0 24 TransformBlend::modified 0

3700 6 blends 0 102 3223 2010 2012 0 0 2013 2009 0 0 27 TransformBlendTable::blends 0

3701 8 modified 0 2 3211 2011 0 0 0 0 0 0 0 29 TransformBlendTable::modified 0

3702 14 num_transforms 0 2 3177 2015 0 0 0 0 0 0 0 35 TransformBlendTable::num_transforms 0

3703 27 max_simultaneous_transforms 0 2 3177 2016 0 0 0 0 0 0 0 48 TransformBlendTable::max_simultaneous_transforms 0

3704 4 rows 0 6 3224 2018 2017 0 0 0 0 0 0 25 TransformBlendTable::rows 0

3705 4 name 0 2 3193 2022 0 0 0 0 0 0 0 18 VertexSlider::name 0

3706 6 slider 0 2 3220 2023 0 0 0 0 0 0 0 20 VertexSlider::slider 0

3707 8 modified 0 2 3211 2024 0 0 0 0 0 0 0 22 VertexSlider::modified 0

3708 8 modified 0 2 3211 2038 0 0 0 0 0 0 0 21 SliderTable::modified 0

3709 4 name 0 6 3184 2056 2057 0 0 0 0 0 0 20 GeomVertexData::name 0

3710 10 usage_hint 0 6 3169 2058 2059 0 0 0 0 0 0 26 GeomVertexData::usage_hint 0

3711 6 format 0 6 3229 2060 2061 0 0 0 0 0 0 22 GeomVertexData::format 0

3712 6 arrays 0 70 3231 2070 2074 0 0 0 2069 0 0 22 GeomVertexData::arrays 0

3713 15 transform_table 0 6 3232 2075 2076 0 0 0 0 0 0 31 GeomVertexData::transform_table 0

3714 12 slider_table 0 6 3234 2082 2083 0 0 0 0 0 0 28 GeomVertexData::slider_table 0

3715 9 num_bytes 0 2 3177 2085 0 0 0 0 0 0 0 25 GeomVertexData::num_bytes 0

3716 8 modified 0 2 3211 2086 0 0 0 0 0 0 0 24 GeomVertexData::modified 0

3717 6 object 0 2 3241 2117 0 0 0 0 0 0 0 21 BufferContext::object 0

3718 15 data_size_bytes 0 2 3209 2113 0 0 0 0 0 0 0 30 BufferContext::data_size_bytes 0

3719 8 modified 0 2 3211 2114 0 0 0 0 0 0 0 23 BufferContext::modified 0

3720 6 active 0 2 3178 2115 0 0 0 0 0 0 0 21 BufferContext::active 0

3721 8 resident 0 2 3178 2116 0 0 0 0 0 0 0 23 BufferContext::resident 0

3722 14 primitive_type 0 2 3172 2129 0 0 0 0 0 0 0 29 GeomPrimitive::primitive_type 0

3723 14 geom_rendering 0 2 3177 2130 0 0 0 0 0 0 0 29 GeomPrimitive::geom_rendering 0

3724 11 shade_model 0 2 3171 2131 0 0 0 0 0 0 0 26 GeomPrimitive::shade_model 0

3725 10 usage_hint 0 2 3169 2133 0 0 0 0 0 0 0 25 GeomPrimitive::usage_hint 0

3726 10 index_type 0 2 3173 2135 0 0 0 0 0 0 0 25 GeomPrimitive::index_type 0

3727 9 num_bytes 0 2 3177 2173 0 0 0 0 0 0 0 24 GeomPrimitive::num_bytes 0

3728 15 data_size_bytes 0 2 3177 2174 0 0 0 0 0 0 0 30 GeomPrimitive::data_size_bytes 0

3729 8 modified 0 2 3211 2175 0 0 0 0 0 0 0 23 GeomPrimitive::modified 0

3730 12 index_stride 0 2 3177 2186 0 0 0 0 0 0 0 27 GeomPrimitive::index_stride 0

3731 15 strip_cut_index 0 2 3177 2187 0 0 0 0 0 0 0 30 GeomPrimitive::strip_cut_index 0

3732 4 mins 0 2 3231 2191 0 0 0 0 0 0 0 19 GeomPrimitive::mins 0

3733 4 maxs 0 2 3231 2192 0 0 0 0 0 0 0 19 GeomPrimitive::maxs 0

3734 26 num_vertices_per_primitive 0 2 3177 2195 0 0 0 0 0 0 0 41 GeomPrimitive::num_vertices_per_primitive 0

3735 30 min_num_vertices_per_primitive 0 2 3177 2196 0 0 0 0 0 0 0 45 GeomPrimitive::min_num_vertices_per_primitive 0

3736 33 num_unused_vertices_per_primitive 0 2 3177 2197 0 0 0 0 0 0 0 48 GeomPrimitive::num_unused_vertices_per_primitive 0

3737 4 name 0 6 3184 2202 2201 0 0 0 0 0 0 18 TextureStage::name 0

3738 4 sort 0 6 3177 2204 2203 0 0 0 0 0 0 18 TextureStage::sort 0

3739 8 priority 0 6 3177 2206 2205 0 0 0 0 0 0 22 TextureStage::priority 0

3740 13 texcoord_name 0 6 3181 2208 2207 0 0 0 0 0 0 27 TextureStage::texcoord_name 0

3741 12 tangent_name 0 2 3181 2209 0 0 0 0 0 0 0 26 TextureStage::tangent_name 0

3742 13 binormal_name 0 2 3181 2210 0 0 0 0 0 0 0 27 TextureStage::binormal_name 0

3743 4 mode 0 6 3244 2212 2211 0 0 0 0 0 0 18 TextureStage::mode 0

3744 5 color 0 6 3248 2215 2214 0 0 0 0 0 0 19 TextureStage::color 0

3745 9 rgb_scale 0 6 3177 2217 2216 0 0 0 0 0 0 23 TextureStage::rgb_scale 0

3746 11 alpha_scale 0 6 3177 2219 2218 0 0 0 0 0 0 25 TextureStage::alpha_scale 0

3747 12 saved_result 0 6 3178 2221 2220 0 0 0 0 0 0 26 TextureStage::saved_result 0

3748 15 tex_view_offset 0 6 3177 2223 2222 0 0 0 0 0 0 29 TextureStage::tex_view_offset 0

3749 7 default 0 2 3251 2252 0 0 0 0 0 0 0 21 TextureStage::default 0

3750 14 primitive_type 0 2 3172 2265 0 0 0 0 0 0 0 20 Geom::primitive_type 0

3751 11 shade_model 0 2 3171 2266 0 0 0 0 0 0 0 17 Geom::shade_model 0

3752 14 geom_rendering 0 2 3177 2267 0 0 0 0 0 0 0 20 Geom::geom_rendering 0

3753 10 primitives 0 358 3253 2278 2280 0 0 2283 2277 2281 0 16 Geom::primitives 0

3754 9 num_bytes 0 2 3177 2304 0 0 0 0 0 0 0 15 Geom::num_bytes 0

3755 8 modified 0 2 3211 2305 0 0 0 0 0 0 0 14 Geom::modified 0

3756 11 bounds_type 0 6 3254 2313 2312 0 0 0 0 0 0 17 Geom::bounds_type 0

3757 4 geom 0 2 3257 2326 0 0 0 0 0 0 0 17 GeomContext::geom 0

3758 6 wrap_u 0 6 3274 2525 2515 0 0 0 0 0 0 20 SamplerState::wrap_u 0

3759 6 wrap_v 0 6 3274 2526 2516 0 0 0 0 0 0 20 SamplerState::wrap_v 0

3760 6 wrap_w 0 6 3274 2527 2517 0 0 0 0 0 0 20 SamplerState::wrap_w 0

3761 9 minfilter 0 6 3273 2528 2518 0 0 0 0 0 0 23 SamplerState::minfilter 0

3762 9 magfilter 0 6 3273 2529 2519 0 0 0 0 0 0 23 SamplerState::magfilter 0

3763 19 effective_minfilter 0 2 3273 2530 0 0 0 0 0 0 0 33 SamplerState::effective_minfilter 0

3764 19 effective_magfilter 0 2 3273 2531 0 0 0 0 0 0 0 33 SamplerState::effective_magfilter 0

3765 18 anisotropic_degree 0 6 3177 2532 2520 0 0 0 0 0 0 32 SamplerState::anisotropic_degree 0

3766 28 effective_anisotropic_degree 0 2 3177 2533 0 0 0 0 0 0 0 42 SamplerState::effective_anisotropic_degree 0

3767 12 border_color 0 6 3275 2534 2521 0 0 0 0 0 0 26 SamplerState::border_color 0

3768 7 min_lod 0 6 3220 2535 2522 0 0 0 0 0 0 21 SamplerState::min_lod 0

3769 7 max_lod 0 6 3220 2536 2523 0 0 0 0 0 0 21 SamplerState::max_lod 0

3770 8 lod_bias 0 6 3220 2537 2524 0 0 0 0 0 0 22 SamplerState::lod_bias 0

3771 11 clear_color 0 30 3248 2573 2574 2572 2575 0 0 0 0 20 Texture::clear_color 0

3772 8 filename 0 30 3284 2590 2591 2589 2592 0 0 0 0 17 Texture::filename 0

3773 14 alpha_filename 0 30 3284 2594 2595 2593 2596 0 0 0 0 23 Texture::alpha_filename 0

3774 8 fullpath 0 30 3284 2598 2599 2597 2600 0 0 0 0 17 Texture::fullpath 0

3775 14 alpha_fullpath 0 30 3284 2602 2603 2601 2604 0 0 0 0 23 Texture::alpha_fullpath 0

3776 6 x_size 0 6 3177 2605 2606 0 0 0 0 0 0 15 Texture::x_size 0

3777 6 y_size 0 6 3177 2607 2608 0 0 0 0 0 0 15 Texture::y_size 0

3778 6 z_size 0 6 3177 2609 2610 0 0 0 0 0 0 15 Texture::z_size 0

3779 9 num_views 0 6 3177 2611 2612 0 0 0 0 0 0 18 Texture::num_views 0

3780 9 num_pages 0 2 3177 2613 0 0 0 0 0 0 0 18 Texture::num_pages 0

3781 14 num_components 0 2 3177 2614 0 0 0 0 0 0 0 23 Texture::num_components 0

3782 15 component_width 0 2 3177 2615 0 0 0 0 0 0 0 24 Texture::component_width 0

3783 12 texture_type 0 2 3277 2616 0 0 0 0 0 0 0 21 Texture::texture_type 0

3784 10 usage_hint 0 2 3169 2617 0 0 0 0 0 0 0 19 Texture::usage_hint 0

3785 6 format 0 6 3279 2618 2619 0 0 0 0 0 0 15 Texture::format 0

3786 14 component_type 0 6 3278 2620 2621 0 0 0 0 0 0 23 Texture::component_type 0

3787 6 wrap_u 0 6 3274 2622 2623 0 0 0 0 0 0 15 Texture::wrap_u 0

3788 6 wrap_v 0 6 3274 2624 2625 0 0 0 0 0 0 15 Texture::wrap_v 0

3789 6 wrap_w 0 6 3274 2626 2627 0 0 0 0 0 0 15 Texture::wrap_w 0

3790 9 minfilter 0 6 3273 2628 2630 0 0 0 0 0 0 18 Texture::minfilter 0

3791 19 effective_minfilter 0 2 3273 2629 0 0 0 0 0 0 0 28 Texture::effective_minfilter 0

3792 9 magfilter 0 6 3273 2631 2633 0 0 0 0 0 0 18 Texture::magfilter 0

3793 19 effective_magfilter 0 2 3273 2632 0 0 0 0 0 0 0 28 Texture::effective_magfilter 0

3794 18 anisotropic_degree 0 6 3177 2634 2636 0 0 0 0 0 0 27 Texture::anisotropic_degree 0

3795 28 effective_anisotropic_degree 0 2 3177 2635 0 0 0 0 0 0 0 37 Texture::effective_anisotropic_degree 0

3796 12 border_color 0 6 3248 2637 2638 0 0 0 0 0 0 21 Texture::border_color 0

3797 11 compression 0 6 3282 2640 2641 0 0 0 0 0 0 20 Texture::compression 44
// Could maybe use has_compression here, too

3798 17 render_to_texture 0 6 3178 2642 2643 0 0 0 0 0 0 26 Texture::render_to_texture 0

3799 15 default_sampler 0 6 3286 2644 2645 0 0 0 0 0 0 24 Texture::default_sampler 0

3800 13 quality_level 0 6 3283 2647 2649 0 0 0 0 0 0 22 Texture::quality_level 0

3801 23 effective_quality_level 0 2 3283 2648 0 0 0 0 0 0 0 32 Texture::effective_quality_level 0

3802 26 expected_num_mipmap_levels 0 2 3177 2650 0 0 0 0 0 0 0 35 Texture::expected_num_mipmap_levels 0

3803 14 ram_image_size 0 2 3209 2658 0 0 0 0 0 0 0 23 Texture::ram_image_size 0

3804 13 ram_view_size 0 2 3209 2659 0 0 0 0 0 0 0 22 Texture::ram_view_size 0

3805 13 ram_page_size 0 2 3209 2660 0 0 0 0 0 0 0 22 Texture::ram_page_size 0

3806 23 expected_ram_image_size 0 2 3209 2661 0 0 0 0 0 0 0 32 Texture::expected_ram_image_size 0

3807 22 expected_ram_page_size 0 2 3209 2662 0 0 0 0 0 0 0 31 Texture::expected_ram_page_size 0

3808 21 ram_image_compression 0 2 3282 2664 0 0 0 0 0 0 0 30 Texture::ram_image_compression 0

3809 14 keep_ram_image 0 6 3178 2673 2672 0 0 0 0 0 0 23 Texture::keep_ram_image 0

3810 9 cacheable 0 2 3178 2674 0 0 0 0 0 0 0 18 Texture::cacheable 0

3811 21 num_ram_mipmap_images 0 2 3177 2678 0 0 0 0 0 0 0 30 Texture::num_ram_mipmap_images 0

3812 30 num_loadable_ram_mipmap_images 0 2 3177 2680 0 0 0 0 0 0 0 39 Texture::num_loadable_ram_mipmap_images 0

3813 13 simple_x_size 0 2 3177 2698 0 0 0 0 0 0 0 22 Texture::simple_x_size 0

3814 13 simple_y_size 0 2 3177 2699 0 0 0 0 0 0 0 22 Texture::simple_y_size 0

3815 16 simple_ram_image 0 10 3287 2702 0 2700 0 0 0 0 0 25 Texture::simple_ram_image 0

3816 19 properties_modified 0 2 3211 2709 0 0 0 0 0 0 0 28 Texture::properties_modified 0

3817 14 image_modified 0 2 3211 2710 0 0 0 0 0 0 0 23 Texture::image_modified 0

3818 21 simple_image_modified 0 2 3211 2711 0 0 0 0 0 0 0 30 Texture::simple_image_modified 0

3819 18 auto_texture_scale 0 6 3289 2713 2714 0 0 0 0 0 0 27 Texture::auto_texture_scale 0

3820 8 aux_data 0 174 3290 2726 2724 2726 0 2725 0 0 0 17 Texture::aux_data 0

3821 16 orig_file_x_size 0 2 3177 2736 0 0 0 0 0 0 0 25 Texture::orig_file_x_size 0

3822 16 orig_file_y_size 0 2 3177 2737 0 0 0 0 0 0 0 25 Texture::orig_file_y_size 0

3823 16 orig_file_z_size 0 2 3177 2738 0 0 0 0 0 0 0 25 Texture::orig_file_z_size 0

3824 17 loaded_from_image 0 6 3178 2741 2740 0 0 0 0 0 0 26 Texture::loaded_from_image 0

3825 15 loaded_from_txo 0 6 3178 2743 2742 0 0 0 0 0 0 24 Texture::loaded_from_txo 0

3826 24 match_framebuffer_format 0 6 3178 2744 2745 0 0 0 0 0 0 33 Texture::match_framebuffer_format 0

3827 21 post_load_store_cache 0 6 3178 2746 2747 0 0 0 0 0 0 30 Texture::post_load_store_cache 0

3828 15 data_size_bytes 0 2 3298 2792 0 0 0 0 0 0 0 29 ShaderBuffer::data_size_bytes 0

3829 10 usage_hint 0 2 3169 2793 0 0 0 0 0 0 0 24 ShaderBuffer::usage_hint 0

3830 12 change_event 0 6 3184 2887 2886 0 0 0 0 0 0 18 Lens::change_event 0

3831 17 coordinate_system 0 6 3303 2889 2888 0 0 0 0 0 0 23 Lens::coordinate_system 0

3832 9 film_size 0 6 3304 2892 2891 0 0 0 0 0 0 15 Lens::film_size 0

3833 11 film_offset 0 6 3307 2894 2893 0 0 0 0 0 0 17 Lens::film_offset 0

3834 12 focal_length 0 6 3220 2896 2895 0 0 0 0 0 0 18 Lens::focal_length 0

3835 3 fov 0 6 3304 2899 2898 0 0 0 0 0 0 9 Lens::fov 0

3836 7 min_fov 0 6 3220 2902 2897 0 0 0 0 0 0 13 Lens::min_fov 0

3837 12 aspect_ratio 0 6 3220 2904 2903 0 0 0 0 0 0 18 Lens::aspect_ratio 0

3838 4 near 0 6 3220 2906 2905 0 0 0 0 0 0 10 Lens::near 0

3839 3 far 0 6 3220 2908 2907 0 0 0 0 0 0 9 Lens::far 0

3840 8 view_hpr 0 6 3310 2913 2912 0 0 0 0 0 0 14 Lens::view_hpr 0

3841 11 nodal_point 0 2 3313 2917 0 0 0 0 0 0 0 17 Lens::nodal_point 0

3842 20 interocular_distance 0 6 3220 2919 2918 0 0 0 0 0 0 26 Lens::interocular_distance 0

3843 20 convergence_distance 0 6 3220 2921 2920 0 0 0 0 0 0 26 Lens::convergence_distance 0

3844 8 view_mat 0 6 3315 2923 2922 0 0 0 0 0 0 14 Lens::view_mat 0

3845 8 keystone 0 6 3304 2926 2925 0 0 0 0 0 0 14 Lens::keystone 0

3846 10 base_color 0 30 3275 2958 2959 2957 2960 0 0 0 0 20 Material::base_color 0

3847 7 ambient 0 30 3275 2962 2963 2961 2964 0 0 0 0 17 Material::ambient 0

3848 7 diffuse 0 30 3275 2966 2967 2965 2968 0 0 0 0 17 Material::diffuse 0

3849 8 specular 0 30 3275 2970 2971 2969 2972 0 0 0 0 18 Material::specular 0

3850 8 emission 0 30 3275 2974 2975 2973 2976 0 0 0 0 18 Material::emission 0

3851 9 shininess 0 6 3220 2977 2978 0 0 0 0 0 0 19 Material::shininess 0

3852 9 roughness 0 6 3220 2980 2981 0 0 0 0 0 0 19 Material::roughness 0

3853 8 metallic 0 6 3220 2983 2984 0 0 0 0 0 0 18 Material::metallic 0

3854 16 refractive_index 0 6 3220 2987 2988 0 0 0 0 0 0 26 Material::refractive_index 0

3855 5 local 0 6 3178 2989 2990 0 0 0 0 0 0 15 Material::local 0

3856 7 twoside 0 6 3178 2991 2992 0 0 0 0 0 0 17 Material::twoside 0

3857 8 user_mat 0 6 3315 3011 3010 0 0 0 0 0 0 20 MatrixLens::user_mat 0

3858 7 texture 0 2 3325 3026 0 0 0 0 0 0 0 28 ParamTextureSampler::texture 0

3859 7 sampler 0 2 3286 3027 0 0 0 0 0 0 0 28 ParamTextureSampler::sampler 0

3860 7 texture 0 2 3325 3031 0 0 0 0 0 0 0 26 ParamTextureImage::texture 0

3861 11 read_access 0 2 3178 3032 0 0 0 0 0 0 0 30 ParamTextureImage::read_access 0

3862 12 write_access 0 2 3178 3033 0 0 0 0 0 0 0 31 ParamTextureImage::write_access 0

3863 10 bind_level 0 2 3177 3035 0 0 0 0 0 0 0 29 ParamTextureImage::bind_level 0

3864 10 bind_layer 0 10 3177 3036 0 3034 0 0 0 0 0 29 ParamTextureImage::bind_layer 0

3865 7 texture 0 2 3325 3044 0 0 0 0 0 0 0 29 TextureReloadRequest::texture 0

3866 6 shader 0 2 3331 3066 0 0 0 0 0 0 0 21 ShaderContext::shader 0

3867 11 video_width 0 2 3177 3083 0 0 0 0 0 0 0 25 VideoTexture::video_width 0

3868 12 video_height 0 2 3177 3084 0 0 0 0 0 0 0 26 VideoTexture::video_height 0

3869 4 mode 0 6 3341 3158 3157 0 0 0 0 0 0 22 TextureStagePool::mode 0

17
3870 11 get_columns 0 1728 1729 34 GeomVertexArrayFormat::get_columns 0

3871 10 get_arrays 0 1752 1753 28 GeomVertexFormat::get_arrays 0

3872 11 get_columns 0 1761 1763 29 GeomVertexFormat::get_columns 0

3873 10 get_points 0 1770 1771 28 GeomVertexFormat::get_points 0

3874 11 get_vectors 0 1772 1773 29 GeomVertexFormat::get_vectors 0

3875 13 get_texcoords 0 1774 1775 31 GeomVertexFormat::get_texcoords 0

3876 17 get_morph_sliders 0 1776 1777 35 GeomVertexFormat::get_morph_sliders 0

3877 15 get_morph_bases 0 1776 1778 33 GeomVertexFormat::get_morph_bases 0

3878 16 get_morph_deltas 0 1776 1779 34 GeomVertexFormat::get_morph_deltas 0

3879 14 get_transforms 0 1973 1974 30 TransformTable::get_transforms 0

3880 14 get_transforms 0 1995 1996 30 TransformBlend::get_transforms 0

3881 10 get_blends 0 2009 2010 31 TransformBlendTable::get_blends 0

3882 11 get_sliders 0 2032 2033 24 SliderTable::get_sliders 0

3883 10 get_arrays 0 2069 2070 26 GeomVertexData::get_arrays 0

3884 15 get_vertex_list 0 2140 2141 30 GeomPrimitive::get_vertex_list 0

3885 14 get_primitives 0 2277 2278 20 Geom::get_primitives 0

3886 12 get_textures 0 3110 3111 31 TextureCollection::get_textures 0

