Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BMESH Class Reference

#include <bmesh.H>

Inheritance diagram for BMESH:

Inheritance graph
[legend]
Collaboration diagram for BMESH:

Collaboration graph
[legend]
List of all members.

Public Types

enum  mesh_type_t {
  EMPTY_MESH = 0, POINTS = 1, POLYLINES = 2, OPEN_SURFACE = 4,
  CLOSED_SURFACE = 8
}
 various types of meshes: More...
enum  change_t {
  TOPOLOGY_CHANGED = 0, PATCHES_CHANGED, TRIANGULATION_CHANGED, VERT_POSITIONS_CHANGED,
  VERT_COLORS_CHANGED, CREASES_CHANGED, RENDERING_CHANGED, NO_CHANGE
}
 various ways a mesh can change: More...
enum  ref_img_t {
  REF_IMG_NONE = 0, REF_IMG_ID = 1, REF_IMG_COLOR = 2, REF_IMG_COLOR_2 = 4,
  REF_IMG_ID_PRE1 = 8, REF_IMG_ID_PRE2 = 16, REF_IMG_ID_PRE3 = 32, REF_IMG_ID_PRE4 = 64,
  REF_IMG_TEX_MEM = 128
}

Public Member Functions

 BMESH (int num_v=0, int num_e=0, int num_f=0)
 BMESH (CBMESH &m)
virtual ~BMESH ()
 DEFINE_RTTI_METHODS3 ("BMESH", BMESH *, BODY, CDATA_ITEM *)
virtual BMESH & operator= (CBMESH &m)
virtual BMESH & operator= (BODY &b)
CBvert_list & verts () const
 Vertices of this mesh.
CBedge_list & edges () const
 Edges in this mesh.
CBface_list & faces () const
 Triangular faces in this mesh.
virtual CBvert_list & cur_verts () const
 Vertices ofthe current subdivision mesh, if any.
virtual CBedge_list & cur_edges () const
 Edges ofthe current subdivision mesh, if any.
virtual CBface_list & cur_faces () const
 Faces ofthe current subdivision mesh, if any.
void begin_index ()
 Turn on indexing in vert, edge and face lists.
void end_index ()
 Turn off indexing in vert, edge and face lists.
int nverts () const
 Number of vertices.
int nedges () const
 Number of edges.
int nfaces () const
 Number of faces.
int npatches () const
 Number of patches.
bool empty () const
 Is the vertex list empty?
Bvert * bv (int k) const
 Shorthand for accessing kth vertex.
Bedge * be (int k) const
 Shorthand for accessing kth edge.
Bface * bf (int k) const
 Shorthand for accessing kth face.
Patch * patch (int k) const
 Shorthand for accessing kth patch.
Bedge * lookup_edge (const Point2i &p)
Bface * lookup_face (const Point3i &p)
CPatch_list & patches () const
 List of patches.
BMESHdrawable_array & drawables ()
GEOM * geom () const
virtual void set_geom (GEOM *geom)
CWtransf & xform () const
 Transformation from object to world coordinates for this mesh.
CWtransf & inv_xform () const
 Transformation from world to object coordinates for this mesh.
CWtransf & obj_to_ndc () const
CWpt & eye_local () const
 Camera (eye) position in this object's coordinate system.
void enable_draw ()
void disable_draw ()
bool draw_enabled () const
virtual void changed (change_t)
virtual void changed ()
virtual void set_render_style (Cstr_ptr &s)
virtual void push_render_style (Cstr_ptr &s)
virtual void pop_render_style ()
virtual Cstr_ptr & render_style () const
void toggle_render_style (Cstr_ptr &s)
int tex_already_exists (Cstr_ptr &name) const
 Does a Patch with a current GTexture named name already exist in this mesh?
bool has_vert_colors () const
 Do the vertices have colors?
int get_sil_strips ()
 extracts silhouette edge strips
int build_sil_strips ()
 distributes them to patches
EdgeStrip sil_strip ()
 extract silhouette edge strip and return a copy of it:
int get_zcross_strips ()
int build_zcross_strips ()
int build_polyline_strips ()
int build_vert_strips ()
virtual void clear_creases ()
void compute_creases ()
EdgeStrip get_edge_strip (CSimplexFilter &edge_filter) const
EdgeStrip * new_edge_strip (CSimplexFilter &edge_filter)
EdgeStrip * get_crease_strip () const
EdgeStrip * get_border_strip () const
Bedge_list get_edges (CSimplexFilter &edge_filter) const
CBedge_list & get_creases () const
CBedge_list & get_borders () const
virtual Bvert * new_vert (CWpt &p=mlib::Wpt::Origin()) const
 Convert the given world-space point to a vertex.
virtual Bedge * new_edge (Bvert *u, Bvert *v) const
 NB: caller should first check u,v doesn't have an edge already.
virtual Bface * new_face (Bvert *u, Bvert *v, Bvert *w, Bedge *e, Bedge *f, Bedge *g) const
 NB: caller should first check requested face doesn't exist already.
virtual TriStrip * new_tri_strip () const
virtual EdgeStrip * new_edge_strip () const
virtual VertStrip * new_vert_strip () const
virtual Patch * new_patch ()
bool unlist (Patch *p)
 Remove the Patch from the patch list; returns 1 on success.
void make_patch_if_needed ()
virtual Bvert * add_vertex (Bvert *v)
 Include the given vertex in this mesh and set the vertex's mesh to this one.
virtual Bvert * add_vertex (CWpt &loc=mlib::Wpt::Origin())
 Include the given world-space point as a vertex in this mesh and set the vertex's mesh to this one.
virtual Bedge * add_edge (Bedge *e)
 Add the given edge to this mesh's edge-list, setting the edge's mesh to this one.
virtual Bedge * add_edge (Bvert *u, Bvert *v)
 Add the edge between the two given vertices to this mesh's list, checking error conditions and setting the edge's mesh to this one.
virtual Bedge * add_edge (int i, int j)
 Add edge between the ith and jth vertices, checking for error conditions, and set the edge's mesh to this one.
virtual Bface * add_face (Bface *f, Patch *p=0)
 Add the given face to the face-list in this mesh, and set the face's mesh to this one. Set the face to use the given patch (if any).
virtual Bface * add_face (Bvert *u, Bvert *v, Bvert *w, Patch *p=0)
virtual Bface * add_face (int i, int j, int k, Patch *p=0)
Bvert_list add_verts (CWpt_list &pts)
 Add the given list of world-space points, as vertices, to this mesh, set their mesh to this one. Return this list as a vertex-list.
Bface * add_face (Bvert *u, Bvert *v, Bvert *w, CUVpt &a, mlib::CUVpt &b, mlib::CUVpt &c, Patch *p=0)
Bface * add_face (int i, int j, int k, CUVpt &a, mlib::CUVpt &b, mlib::CUVpt &c, Patch *p=0)
Bface * add_quad (Bvert *u, Bvert *v, Bvert *w, Bvert *x, Patch *p=0)
 Creates the quad from the given vertices and patch, if possible, and returns the quad rep, or nil.
Bface * add_quad (Bvert *u, Bvert *v, Bvert *w, Bvert *x, CUVpt &a, mlib::CUVpt &b, mlib::CUVpt &c, mlib::CUVpt &d, Patch *p=0)
 Creates the quad if possible, and returns the quad rep, or nil:.
Bface * add_quad (int i, int j, int k, int l, Patch *p=0)
 Creates the quad from the ith, jth, kth and lth vertices in this mesh's vertex list, if possible, and returns the quad rep, or nil.
Bface * add_quad (int i, int j, int k, int l, CUVpt &a, mlib::CUVpt &b, mlib::CUVpt &c, mlib::CUVpt &d, Patch *p=0)
 Creates the quad if possible, and returns the quad rep, or nil:.
virtual void delete_vert (Bvert *v) const
 Simply releases memory allocated to the vertex by calling delete.
virtual void delete_edge (Bedge *e) const
 Simply releases memory allocated to the edge by calling delete.
virtual void delete_face (Bface *f) const
 Simply releases memory allocated to the face by calling delete.
virtual void delete_elements ()
virtual void delete_patches ()
virtual int remove_face (Bface *f)
 Removes the given face from this mesh's face-list, and releases memory allocated to it.
virtual int remove_edge (Bedge *e)
 Removes the given edge from this mesh's edge-list, and releases memory allocated to it.
virtual int remove_vertex (Bvert *v)
 Removes the given vertex from this mesh's vertex-list, and releases memory allocated to it.
virtual int remove_faces (CBface_list &faces)
 Remove each face in the list given and release memory allocated to it.
virtual int remove_edges (CBedge_list &edges)
 Remove each edge in the list given and release memory allocated to it.
virtual int remove_verts (CBvert_list &verts)
 Remove each vertex in the list given and release memory allocated to it.
virtual void Cube (CWpt &=mlib::Wpt(0, 0, 0), mlib::CWpt &=mlib::Wpt(1, 1, 1), Patch *p=0)
 Create a cube with the two given points as the body diagonal, and apply the patch if given (default if not).
virtual void Octahedron (CWpt &=mlib::Wpt(0,-M_SQRT2, 0), CWpt &=mlib::Wpt(1, 0, 1), CWpt &=mlib::Wpt(1, 0,-1), CWpt &=mlib::Wpt(-1, 0,-1), CWpt &=mlib::Wpt(-1, 0, 1), CWpt &=mlib::Wpt(0, M_SQRT2, 0), Patch *p=0)
 Create an octahedron with the given points, and apply the patch if given (default if not).
virtual void Icosahedron (Patch *p=0)
 Create a canonical icosahedron and apply the patch if given (default if not).
virtual void Sphere (Patch *p=0)
virtual double volume () const
 Sum up the volume using the divergence theorem.
virtual double area () const
 Sum of areas of all faces.
double pix_size () const
 Approximate pixel extent based on bounding box.
void compute_pix_size ()
void recenter ()
double avg_len () const
double z_span (double &zmin, double &zmax) const
double z_span () const
int type () const
bool is_points () const
bool is_polylines () const
bool is_open_surface () const
bool is_closed_surface () const
bool is_surface () const
bool fix_orientation ()
void reverse ()
 Reverse orientation of all the faces.
void get_enclosed_verts (CXYpt_list &boundary, Bface *startface, ARRAY< Bvert * > &ret)
void remove_duplicate_vertices (bool keep_vert=1)
ARRAY< Bface_list > get_components () const
 Returns separate Bface_lists, one for each connected component of the mesh:.
virtual ARRAY< BMESH * > split_components ()
 split mesh into connected components:
virtual void kill_component (Bvert *start_vert)
 wipe out a connected component containing the start vertex:
int try_swap_edge (Bedge *edge, bool favor_deg_6=0)
int try_collapse_edge (Bedge *e, Bvert *v)
void merge_vertex (Bvert *v, Bvert *u, bool keep_vert=0)
Bvert * split_edge (Bedge *edge, CWpt &new_pt)
Bvert * split_edge (Bedge *edge)
Bvert * split_face (Bface *face, CWpt &pt)
int split_faces (CXYpt_list &, ARRAY< Bvert * > &, Bface *=0)
void split_tris (Bface *start_face, Wplane plane, ARRAY< Bvert * > &nv)
virtual int subdiv_level () const
 The level of this mesh in the hierarchy (0 == control mesh, next level is 1, etc.):.
virtual int cur_level () const
 Level of "current" mesh in the hierarchy:.
virtual int edit_level () const
 Level of "active" mesh in the hierarchy:.
int rel_cur_level () const
 Same as above, but relative to the level of this mesh:.
int rel_edit_level () const
virtual void inc_edit_level ()
virtual void dec_edit_level ()
Bface * pick_face (CWline &world_ray, mlib::Wpt &world_hit) const
virtual int size () const
 Return the approximate memory used for this mesh.
virtual void print () const
int set_crease (int i, int j) const
int set_weak_edge (int i, int j) const
int set_patch_boundary (int i, int j) const
bool valid_vert_indices (int i, int j) const
bool valid_vert_indices (int i, int j, int k) const
bool valid_vert_indices (int i, int j, int k, int l) const
bool read_file (char *filename)
virtual int read_update_file (char *filename)
virtual int read_update_stream (istream &is)
virtual int read_stream (istream &is)
virtual int read_blocks (istream &is)
virtual int read_header (istream &is)
virtual int read_vertices (istream &is)
virtual int read_faces (istream &is)
virtual int read_creases (istream &is)
virtual int read_polylines (istream &is)
virtual int read_weak_edges (istream &is, str_list &leftover)
virtual int read_colors (istream &is, str_list &leftover)
virtual int read_texcoords2 (istream &is, str_list &leftover)
virtual int read_patch (istream &is, str_list &leftover)
virtual int read_include (istream &is, str_list &leftover)
virtual int write_file (char *filename)
virtual int write_stream (ostream &os)
virtual int write_vertices (ostream &os) const
virtual int write_faces (ostream &os) const
virtual int write_creases (ostream &os) const
virtual int write_weak_edges (ostream &os) const
virtual int write_polylines (ostream &os) const
virtual int write_colors (ostream &os) const
virtual int write_texcoords2 (ostream &os) const
virtual int write_patches (ostream &os) const
virtual ref_img_t use_ref_image ()
virtual int draw_vis_ref ()
virtual int draw_ref_img (ref_img_t)
virtual int draw_final (CVIEWptr &v)
virtual BODYptr copy (int make_new=1) const
virtual int intersect (RAYhit &, CWtransf &, mlib::Wpt &, mlib::Wvec &, double &d, double &, XYpt &) const
virtual int draw (CVIEWptr &)
virtual void transform (CWtransf &xform, CMOD &m=MOD())
virtual BODY * subtract (BODYptr &)
virtual BODY * combine (BODYptr &)
virtual BODY * intersect (BODYptr &)
virtual void set_vertices (CWpt_list &)
virtual CWpt_list & vertices ()
virtual CEDGElist & body_edges ()
virtual CBBOX & get_bb ()
virtual void triangulate (Wpt_list &verts, FACElist &faces)
virtual CTAGlist & tags () const
virtual void put_vertices (TAGformat &) const
virtual void put_faces (TAGformat &) const
virtual void put_uvfaces (TAGformat &) const
virtual void put_creases (TAGformat &) const
virtual void put_polylines (TAGformat &) const
virtual void put_weak_edges (TAGformat &) const
virtual void put_sec_faces (TAGformat &) const
virtual void put_colors (TAGformat &) const
virtual void put_texcoords2 (TAGformat &) const
virtual void put_render_style (TAGformat &) const
virtual void put_patches (TAGformat &) const
virtual void get_vertices (TAGformat &)
virtual void get_faces (TAGformat &)
virtual void get_uvfaces (TAGformat &)
virtual void get_creases (TAGformat &)
virtual void get_polylines (TAGformat &)
virtual void get_weak_edges (TAGformat &)
virtual void get_sec_faces (TAGformat &)
virtual void get_colors (TAGformat &)
virtual void get_texcoords2 (TAGformat &)
virtual void get_render_style (TAGformat &)
virtual void get_patches (TAGformat &)
virtual DATA_ITEM * dup () const
virtual STDdstream & format (STDdstream &d) const
virtual STDdstream & decode (STDdstream &d)
BMESHcurvature_data * curvature () const
uint version () const
Bedge * nearest_edge (CWpt &)
Bvert * nearest_vert (CWpt &)
virtual double nearest (mlib::CWtransf &, mlib::CWpt &, double)
virtual int intersect (RAYhit &r, mlib::CWtransf &xf, mlib::Wpt &near, mlib::Wvec &n, double &d, double &d2d, mlib::XYpt &uvc) const =0
int intersect (RAYhit &r, mlib::CWtransf &xf) const
int intersect (RAYhit &r) const
virtual void transform (mlib::CWtransf &xform, CMOD &)=0
virtual void set_vertices (mlib::CWpt_list &)=0
virtual int uv_able () const
 METHS: Texture stuff.
virtual int can_set_uv () const
virtual void set_texcoords (mlib::CXYpt_list &)
virtual mlib::CXYpt_list & get_texcoords ()
virtual BODYptr body_copy (int y=1)
bool bb_valid () const
 DEFINE_RTTI_METHODS2 ("BODY", DATA_ITEM, CDATA_ITEM *)
void Own () const
void Free () const
int Lock ()
void Unlock ()
int Unique () const
virtual void add_tags () const
virtual void recompute ()
virtual STAT_STR_RET class_name () const =0
virtual int is_of_type (Cstr_ptr &t) const
virtual int draw_id_ref ()
virtual int draw_id_ref_pre1 ()
virtual int draw_id_ref_pre2 ()
virtual int draw_id_ref_pre3 ()
virtual int draw_id_ref_pre4 ()
virtual int draw_color_ref ()
virtual int draw_color_ref_2 ()
virtual int draw_tex_mem_ref ()
virtual int draw_ref_img (ref_img_t t)

Static Public Member Functions

static BMESHptr merge (BMESHptr m1, BMESHptr m2)
static void toggle_freeze_sils ()
static void toggle_random_sils ()
static void set_center_of_interest (BMESH *m)
static BMESH * center_of_interest ()
static bool is_center_of_interest (BMESH *m)
static BMESHptr read_jot_stream (istream &is, BMESHptr ret=0)
static BMESHptr read_jot_file (char *filename, BMESHptr ret=0)
static void grow_oriented_face_lists (Bface *, ARRAY< Bface * > &, ARRAY< Bface * > &)
static bool show_secondary_faces ()
static void toggle_show_secondary_faces ()
static BODYptr cube ()
 METHS: Static factory methods.
static BODYptr cone ()
static BODYptr cylinder ()
static BODYptr sphere ()
static BODYptr torus (double radius)
static BODYptr trunc_cone (double radius)
static BODYptr revolve (mlib::CWpt_list &profile, BODYptr &ob)
static BODYptr extrusion (mlib::CWpt_list &profile, BODYptr &ob)
static BODYptr extrusion (mlib::CWpt_list &profile, mlib::CWpt_list &path, BODYptr &ob)
static BODYptr trunc_pyr (CMVEC2 &taper, CMVEC2 &shear)
static int set_factory (BODY *b)
static str_ptr base_name ()
static STAT_STR_RET static_name ()
static STAT_STR_RET static_name ()
static int add_decoder (Cstr_ptr &d, DATA_ITEM *di, int copy=-1)
static void set_default_decoder (DATA_ITEM *(*d)(STDdstream &, Cstr_ptr &, DATA_ITEM *))
static DATA_ITEM * Decode (STDdstream &d, int DelayDecoding=0)
static DATA_ITEM * lookup (Cstr_ptr &d)
static HASH * di_hash ()

Static Public Attributes

static bool _freeze_sils = false
static bool _random_sils = !Config::get_var_bool("NO_RANDOM_SILS",false)

Protected Member Functions

int check_type ()
 recalculate the mesh type
void clean_patches ()
bool remove_patch (int k)
virtual void _merge (BMESH *mesh)
 internal version of merge(), after error checking:
virtual void send_update_notification ()
void grow_mesh_equivalence_class (Bvert *, ARRAY< Bface * > &, ARRAY< Bedge * > &, ARRAY< Bvert * > &)
virtual BODYptr create_cube ()
virtual BODYptr create_cone ()
virtual BODYptr create_cylinder ()
virtual BODYptr create_sphere ()
virtual BODYptr create_torus (double)
virtual BODYptr create_trunc_cone (double)
virtual BODYptr create_revolve (mlib::CWpt_list &, BODYptr &)
virtual BODYptr create_extrusion (mlib::CWpt_list &, BODYptr &)
virtual BODYptr create_extrusion (mlib::CWpt_list &, mlib::CWpt_list &, BODYptr &)
virtual BODYptr create_trunc_pyr (CMVEC2 &, CMVEC2 &)

Protected Attributes

Bvert_list _verts
 list of vertices
Bedge_list _edges
 list of edges
Bface_list _faces
 list of faces
Patch_list _patches
 list of patches
uint _version
 increment to invalidate display lists
ThreadMutex _patch_mutex
ZcrossPath _zx_sils
 zero-cross sil-strip class
EdgeStrip _sils
 silhouette edge strips
EdgeStrip * _creases
 crease edge strips
EdgeStrip * _borders
 border edge strips
EdgeStrip * _polylines
 pointer to allow subclasses
VertStrip * _lone_verts
 pointer to allow subclasses
uint _sil_stamp
uint _zx_stamp
BMESHdrawable_array _drawables
 list of drawable things
LIST< str_ptr > _render_style
 name of render style to use (if any)
bool _draw_enabled
 flag to enable/disable drawing
double _pix_size
 approx pix size
uint _pix_size_stamp
 for caching per-frame
int _type
 type of surface from enum above
bool _type_valid
 true if _type has been set
Wpt_list _vert_locs
BODYptr _body
GEOM * _geom
Wtransf _pm
 object space to NDCZ space transform
uint _pm_stamp
 frame number last updated.
Wpt _eye_local
 camera location in local coordinates
uint _eye_local_stamp
 frame number last updated.
Wtransf _obj_to_world
Wtransf _world_to_obj
BMESHcurvature_data * _curv_data
double _avg_edge_len
bool _avg_edge_len_valid
int _edit_level
int _tris
BBOX _bb
int _copy
TAGlist _DEFINERtags

Static Protected Attributes

static TAGlist * _bmesh_tags = NULL
 Full set of tags.
static TAGlist * _bmesh_update_tags = NULL
 Partial set of tags used for loading frames of animation (e.g. just the vertices change position).
static BMESH * _center_of_interest = 0
static bool _show_secondary_faces = false
static BODY * _factory = 0
static str_ptr _base_name = BMESH::static_name()
static TAGlist _body_tags

Detailed Description

Definition at line 68 of file bmesh.H.


Member Enumeration Documentation

enum BMESH::change_t
 

various ways a mesh can change:

Enumerator:
TOPOLOGY_CHANGED 
PATCHES_CHANGED 
TRIANGULATION_CHANGED 
VERT_POSITIONS_CHANGED 
VERT_COLORS_CHANGED 
CREASES_CHANGED 
RENDERING_CHANGED 
NO_CHANGE 

Definition at line 83 of file bmesh.H.

enum BMESH::mesh_type_t
 

various types of meshes:

Enumerator:
EMPTY_MESH 
POINTS 
POLYLINES 
OPEN_SURFACE 
CLOSED_SURFACE 

Definition at line 74 of file bmesh.H.

enum RefImageClient::ref_img_t [inherited]
 

Enumerator:
REF_IMG_NONE 
REF_IMG_ID 
REF_IMG_COLOR 
REF_IMG_COLOR_2 
REF_IMG_ID_PRE1 
REF_IMG_ID_PRE2 
REF_IMG_ID_PRE3 
REF_IMG_ID_PRE4 
REF_IMG_TEX_MEM 

Definition at line 25 of file ref_img_client.H.


Constructor & Destructor Documentation

BMESH::BMESH (  int  num_v = 0,
int  num_e = 0,
int  num_f = 0
) 
 

Definition at line 61 of file bmesh.C.

References _drawables, begin_index(), and ARRAY< T >::set_unique().

Referenced by copy(), and dup().

BMESH::BMESH (  CBMESH &  m  ) 
 

Definition at line 89 of file bmesh.C.

References _drawables, begin_index(), and ARRAY< T >::set_unique().

BMESH::~BMESH (   )  [virtual]
 

Definition at line 114 of file bmesh.C.

References BMESHobs::broadcast_delete(), debug, delete_elements(), end_index(), err_msg(), Config::get_var_bool(), is_center_of_interest(), and set_center_of_interest().


Member Function Documentation

void BMESH::_merge (  BMESH *  mesh  )  [protected, virtual]
 

internal version of merge(), after error checking:

Reimplemented in LMESH.

Definition at line 4088 of file bmesh.C.

References BODY::_bb, _body, _drawables, BODY::_edges, _edges, _faces, _patches, _type, _type_valid, _version, _vert_locs, _verts, SimplexArray< L, T >::append(), BMESHobs::broadcast_merge(), changed(), mlib::Pointlist< L, P, V, S >::clear(), ARRAY< T >::clear(), CLOSED_SURFACE, ARRAY< T >::empty(), ARRAY< T >::last(), OPEN_SURFACE, ARRAY< T >::pop(), BBOX::reset(), mlib::EDGElist::reset(), Patch::set_mesh(), and TOPOLOGY_CHANGED.

Referenced by LMESH::_merge().

int DATA_ITEM::add_decoder (  Cstr_ptr &  d,
DATA_ITEM *  di,
int  copy = -1
)  [static, inherited]
 

Definition at line 41 of file data_item.C.

References DATA_ITEM::_hash, and HASH::add().

Referenced by JOTvar< OBJ, TYPE >::check_inst_name(), FUNC_ITEM::FUNC_ITEM(), hashdist::hashdist(), JOTvar< OBJ, TYPE >::JOTvar(), and DISTRIB::notify_exist().

Bedge * BMESH::add_edge (  int  i,
int  j
)  [virtual]
 

Add edge between the ith and jth vertices, checking for error conditions, and set the edge's mesh to this one.

Definition at line 204 of file bmesh.C.

References _verts, add_edge(), err_msg(), and valid_vert_indices().

Bedge * BMESH::add_edge (  Bvert *  u,
Bvert *  v
)  [virtual]
 

Add the edge between the two given vertices to this mesh's list, checking error conditions and setting the edge's mesh to this one.

Definition at line 188 of file bmesh.C.

References add_edge(), err_msg(), Bvert::lookup_edge(), Bsimplex::mesh(), and new_edge().

Bedge * BMESH::add_edge (  Bedge *  e  )  [virtual]
 

Add the given edge to this mesh's edge-list, setting the edge's mesh to this one.

Definition at line 177 of file bmesh.C.

References _edges, err_msg(), and Bsimplex::set_mesh().

Referenced by add_edge(), add_face(), Ledge::allocate_subdiv_elements(), get_polylines(), operator=(), read_polylines(), split_components(), split_edge(), and split_face().

Bface * BMESH::add_face (  int  i,
int  j,
int  k,
CUVpt &  a,
mlib::CUVpt &  b,
mlib::CUVpt &  c,
Patch *  p = 0
) 
 

Definition at line 306 of file bmesh.C.

References _verts, add_face(), and UVdata::set().

Bface * BMESH::add_face (  Bvert *  u,
Bvert *  v,
Bvert *  w,
CUVpt &  a,
mlib::CUVpt &  b,
mlib::CUVpt &  c,
Patch *  p = 0
) 
 

Definition at line 296 of file bmesh.C.

References add_face(), and UVdata::set().

Bface * BMESH::add_face (  int  i,
int  j,
int  k,
Patch *  p = 0
)  [virtual]
 

Add the triangular face defined by the ith, jth and kth vertices in this mesh's vertex-list, creating the necessary edges and checking for error conditions.

Definition at line 285 of file bmesh.C.

References _verts, add_face(), err_msg(), and valid_vert_indices().

Bface * BMESH::add_face (  Bvert *  u,
Bvert *  v,
Bvert *  w,
Patch *  p = 0
)  [virtual]
 

Add the triangular face defined by the given vertices and patch (if any), creating the necessary edges and checking for error conditions.

Definition at line 251 of file bmesh.C.

References add_edge(), add_face(), err_msg(), lookup_face(), Bsimplex::mesh(), and new_face().

Bface * BMESH::add_face (  Bface *  f,
Patch *  p = 0
)  [virtual]
 

Add the given face to the face-list in this mesh, and set the face's mesh to this one. Set the face to use the given patch (if any).

Definition at line 225 of file bmesh.C.

References _faces, Patch::add(), err_msg(), Patch::mesh(), and Bsimplex::set_mesh().

Referenced by add_face(), add_quad(), OBJReaderImpl::add_tri(), add_tri(), Lface::gen_child_face(), get_faces(), get_uvfaces(), Icosahedron(), Octahedron(), operator=(), read_faces(), Sphere(), split_components(), split_edge(), and split_face().

Bface * BMESH::add_quad (  int  i,
int  j,
int  k,
int  l,
CUVpt &  a,
mlib::CUVpt &  b,
mlib::CUVpt &  c,
mlib::CUVpt &  d,
Patch *  p = 0
) 
 

Creates the quad if possible, and returns the quad rep, or nil:.

Definition at line 374 of file bmesh.C.

References _verts, add_quad(), and valid_vert_indices().

Bface * BMESH::add_quad (  int  i,
int  j,
int  k,
int  l,
Patch *  p = 0
) 
 

Creates the quad from the ith, jth, kth and lth vertices in this mesh's vertex list, if possible, and returns the quad rep, or nil.

Definition at line 365 of file bmesh.C.

References _verts, add_quad(), and valid_vert_indices().

Bface * BMESH::add_quad (  Bvert *  u,
Bvert *  v,
Bvert *  w,
Bvert *  x,
CUVpt &  a,
mlib::CUVpt &  b,
mlib::CUVpt &  c,
mlib::CUVpt &  d,
Patch *  p = 0
) 
 

Creates the quad if possible, and returns the quad rep, or nil:.

Definition at line 351 of file bmesh.C.

References add_quad(), err_msg(), and UVdata::set().

Bface * BMESH::add_quad (  Bvert *  u,
Bvert *  v,
Bvert *  w,
Bvert *  x,
Patch *  p = 0
) 
 

Creates the quad from the given vertices and patch, if possible, and returns the quad rep, or nil.

Create the quad defined as follows:

x -------- w | / | | / | | / | | / | | / | u -------- v

u,v,w,x should form a cycle, i.e., (u,v), (v,w), (w,x) and (x,u) should the edges. {u,v,w} and {w,x,u} are the faces created and added.

Definition at line 331 of file bmesh.C.

References add_face(), err_msg(), Bface::is_quad(), Bvert::lookup_edge(), Bface::quad_rep(), Bsimplex::set_bit(), and Bedge::WEAK_BIT.

Referenced by add_quad(), get_faces(), get_uvfaces(), and Sphere().

virtual void DATA_ITEM::add_tags (   )  const [inline, virtual, inherited]
 

Definition at line 205 of file data_item.H.

Bvert * BMESH::add_vertex (  CWpt &  loc = mlib::Wpt::Origin()  )  [virtual]
 

Include the given world-space point as a vertex in this mesh and set the vertex's mesh to this one.

Reimplemented in LMESH.

Definition at line 162 of file bmesh.C.

References add_vertex(), and new_vert().

Bvert * BMESH::add_vertex (  Bvert *  v  )  [virtual]
 

Include the given vertex in this mesh and set the vertex's mesh to this one.

Reimplemented in LMESH.

Definition at line 151 of file bmesh.C.

References _verts, err_msg(), and Bsimplex::set_mesh().

Referenced by LMESH::add_vertex(), add_vertex(), OBJReaderImpl::add_vertices(), add_verts(), get_vertices(), Icosahedron(), Octahedron(), operator=(), read_vertices(), Sphere(), split_components(), split_edge(), and split_face().

Bvert_list BMESH::add_verts (  CWpt_list &  pts  ) 
 

Add the given list of world-space points, as vertices, to this mesh, set their mesh to this one. Return this list as a vertex-list.

Definition at line 168 of file bmesh.C.

References add_vertex().

double BMESH::area (   )  const [virtual]
 

Sum of areas of all faces.

Reimplemented in LMESH.

Definition at line 628 of file bmesh.C.

References _faces, and ARRAY< T >::num().

double BMESH::avg_len (   )  const
 

Definition at line 4016 of file bmesh.C.

References _avg_edge_len, _avg_edge_len_valid, _edges, ARRAY< T >::empty(), and ARRAY< T >::num().

Referenced by LineDrawingGLSLMode::setup_for_drawing_inside_dl(), LineDrawingVprogFprogNoSSDMode::setup_for_drawing_outside_dl(), and CurvatureARBvpARBfpMultiTextureMode::setup_for_drawing_outside_dl().

static str_ptr BODY::base_name (   )  [inline, static, inherited]
 

Definition at line 141 of file body.H.

References BODY::_base_name.

bool BODY::bb_valid (   )  const [inline, inherited]
 

Definition at line 137 of file body.H.

References BODY::_bb, and BBOX::valid().

Bedge* BMESH::be (  int  k  )  const [inline]
 

Shorthand for accessing kth edge.

Definition at line 150 of file bmesh.H.

References _edges.

Referenced by OBJReaderImpl::add_creases(), check_type(), clear_creases(), compute_creases(), get_sec_faces(), operator=(), put_creases(), put_polylines(), put_weak_edges(), recreate_creases(), write_creases(), write_polylines(), and write_weak_edges().

void BMESH::begin_index (   ) 
 

Turn on indexing in vert, edge and face lists.

Definition at line 134 of file bmesh.C.

References _edges, _faces, _verts, and ARRAY< T >::begin_index().

Referenced by BMESH().

Bface* BMESH::bf (  int  k  )  const [inline]
 

Shorthand for accessing kth face.

Definition at line 152 of file bmesh.H.

References _faces.

Referenced by avg_bface_pix_area(), BMESHcurvature_data::compute_corner_areas(), compute_edge_vectors(), BMESHcurvature_data::compute_face_curvatures(), BMESHcurvature_data::compute_face_dcurv(), compute_initial_vertex_coord_sys(), BMESHcurvature_data::compute_vertex_areas(), BMESHcurvature_data::compute_vertex_curvatures(), BMESHcurvature_data::compute_vertex_dcurv(), ZCrossExtractor< ScalarField, Confidence, FaceGenerator >::extract(), get_components(), Patch::get_faces(), get_texcoords2(), make_patch_if_needed(), operator=(), pick_face(), put_faces(), put_sec_faces(), put_texcoords2(), put_uvfaces(), Patch::read_stream(), read_texcoords2(), Patch::recompute(), reverse(), triangulate(), write_faces(), write_faces(), and write_texcoords2().

virtual BODYptr BODY::body_copy (  int  y = 1  )  [inline, virtual, inherited]
 

Definition at line 133 of file body.H.

References BODY::copy().

virtual CEDGElist& BMESH::body_edges (   )  [inline, virtual]
 

Implements BODY.

Definition at line 622 of file bmesh.H.

References BODY::_edges.

int BMESH::build_polyline_strips (   ) 
 

Definition at line 851 of file bmesh.C.

References _edges, _patches, _polylines, ARRAY< T >::add(), EdgeStrip::build(), EdgeStrip::edges(), err_msg(), Bvert::is_polyline_end(), make_patch_if_needed(), new_edge_strip(), EdgeStrip::num(), ARRAY< T >::num(), EdgeStrip::reset(), Bedge::v1(), and Bedge::v2().

Referenced by get_polylines(), and read_polylines().

int BMESH::build_sil_strips (   ) 
 

distributes them to patches

Definition at line 1120 of file bmesh.C.

References _freeze_sils, _patches, _sil_stamp, _sils, EdgeStrip::add(), EdgeStrip::edge(), Bedge::frontfacing_face(), Bedge::get_face(), get_sil_strips(), EdgeStrip::num(), ARRAY< T >::num(), Bface::patch(), Patch::sils(), VIEW::stamp(), and EdgeStrip::vert().

Referenced by Patch::build_sils(), and sil_strip().

int BMESH::build_vert_strips (   ) 
 

Definition at line 910 of file bmesh.C.

References _lone_verts, _patches, _verts, VertStrip::add(), ARRAY< T >::add(), bv(), ARRAY< T >::empty(), new_patch(), new_vert_strip(), VertStrip::num(), ARRAY< T >::num(), and VertStrip::reset().

Referenced by decode(), and read_stream().

int BMESH::build_zcross_strips (   ) 
 

Definition at line 939 of file bmesh.C.

References _freeze_sils, _patches, _zx_sils, _zx_stamp, ZcrossPath::add_seg(), ZXseg::bc(), debug, ZcrossPath::empty(), err_msg(), ZXseg::f(), ZXseg::g(), Config::get_var_bool(), get_zcross_strips(), nfaces(), ZcrossPath::num(), ARRAY< T >::num(), ZXseg::p(), Bface::patch(), ZcrossPath::seg(), ZcrossPath::segs(), VIEW::stamp(), ZXseg::v(), and Patch::zx_sils().

Referenced by Patch::build_zx_sils(), and ZcrossTexture::draw().

Bvert* BMESH::bv (  int  k  )  const [inline]
 

Shorthand for accessing kth vertex.

Definition at line 148 of file bmesh.H.

References _verts.

Referenced by OBJReaderImpl::add_face(), add_poly(), build_vert_strips(), check_type(), compute_initial_vertex_coord_sys(), BMESHcurvature_data::diagonalize_vertex_curvatures(), get_bb(), get_enclosed_verts(), has_vert_colors(), lookup_edge(), lookup_face(), operator=(), put_colors(), put_vertices(), read_colors(), set_crease(), set_patch_boundary(), OBJReaderImpl::set_vert_normals(), set_weak_edge(), split_face(), triangulate(), write_colors(), write_vertices(), and write_verts().

virtual int BODY::can_set_uv (   )  const [inline, virtual, inherited]
 

Definition at line 110 of file body.H.

static BMESH* BMESH::center_of_interest (   )  [inline, static]
 

Definition at line 528 of file bmesh.H.

References _center_of_interest.

Referenced by find_mesh().

virtual void BMESH::changed (   )  [inline, virtual]
 

Implements BODY.

Reimplemented in LMESH.

Definition at line 187 of file bmesh.H.

References TOPOLOGY_CHANGED.

Referenced by _merge(), LMESH::changed(), clear_creases(), compute_creases(), fix_orientation(), get_colors(), get_creases(), get_faces(), get_patches(), get_uvfaces(), get_vertices(), Icosahedron(), kill_component(), Octahedron(), operator=(), pop_render_style(), push_render_style(), read_stream(), read_update_stream(), recenter(), remove_duplicate_vertices(), set_render_style(), Sphere(), split_components(), split_faces(), and transform().

void BMESH::changed (  change_t   )  [virtual]
 

Definition at line 3091 of file bmesh.C.

References _avg_edge_len_valid, BODY::_bb, _body, _borders, _creases, _curv_data, BODY::_edges, _patches, _sil_stamp, _sils, _type_valid, _version, _vert_locs, _zx_sils, _zx_stamp, BMESHobs::broadcast_change(), mlib::Pointlist< L, P, V, S >::clear(), Patch_list::creases_changed(), CREASES_CHANGED, NO_CHANGE, PATCHES_CHANGED, BBOX::reset(), mlib::EDGElist::reset(), ZcrossPath::reset(), EdgeStrip::reset(), TOPOLOGY_CHANGED, Patch_list::triangulation_changed(), TRIANGULATION_CHANGED, and VERT_POSITIONS_CHANGED.

Referenced by _merge(), FlatShadeTexture::draw(), OBJReaderImpl::get_mesh(), Patch::Patch(), Bface_list::push_layer(), recreate_creases(), split_components(), toggle_crease(), and Bface_list::unpush_layer().

int BMESH::check_type (   )  [protected]
 

recalculate the mesh type

Definition at line 2270 of file bmesh.C.

References _edges, _faces, _type, _type_valid, _verts, be(), bv(), CLOSED_SURFACE, EMPTY_MESH, err_msg(), fix_orientation(), Config::get_var_bool(), nfaces(), ARRAY< T >::num(), OPEN_SURFACE, POINTS, and POLYLINES.

virtual STAT_STR_RET DATA_ITEM::class_name (   )  const [pure virtual, inherited]
 

Implemented in hashdist, JOTvar< OBJ, TYPE >, TDI< T >, and FUNC_ITEM.

Referenced by DATA_ITEM::decode(), DATA_ITEM::Decode(), GLSLShader::draw(), DATA_ITEM::format(), GLSLShader::get_uniform_loc(), GLSLShader::init(), DISTRIB::interpret(), BaseJOTappConfig::load(), next_texture(), GEOM::print(), DEFINER::print(), print(), print_gel(), Patch::put_textures(), read_jot_stream(), GTexture::type(), SolidColorTexture::write_stream(), and GTexture::write_stream().

void BMESH::clean_patches (   )  [protected]
 

Definition at line 1329 of file bmesh.C.

References _patches, debug, err_msg(), Config::get_var_bool(), ARRAY< T >::num(), and remove_patch().

Referenced by read_stream(), and split_components().

void BMESH::clear_creases (   )  [virtual]
 

Reimplemented in LMESH.

Definition at line 825 of file bmesh.C.

References _edges, be(), changed(), CREASES_CHANGED, ARRAY< T >::num(), and Bedge::set_crease().

Referenced by clear_creases(), and LMESH::clear_creases().

virtual BODY* BMESH::combine (  BODYptr &   )  [inline, virtual]
 

Implements BODY.

Reimplemented in LMESH.

Definition at line 617 of file bmesh.H.

void BMESH::compute_creases (   ) 
 

Definition at line 840 of file bmesh.C.

References _edges, be(), changed(), Bedge::compute_crease(), CREASES_CHANGED, Config::get_var_dbl(), and ARRAY< T >::num().

void BMESH::compute_pix_size (   ) 
 

Definition at line 4427 of file bmesh.C.

References _pix_size, _pix_size_stamp, BBOX::center(), BBOX::dim(), get_bb(), mlib::Vec3< V >::is_null(), mlib::Vec3< V >::length(), VIEW::peek_cam(), size(), VIEW::stamp(), and xform().

static BODYptr BODY::cone (   )  [inline, static, inherited]
 

Definition at line 116 of file body.H.

References BODY::_factory, and BODY::create_cone().

virtual BODYptr BMESH::copy (  int  make_new = 1  )  const [inline, virtual]
 

Implements BODY.

Definition at line 603 of file bmesh.H.

References BMESH().

virtual BODYptr BODY::create_cone (   )  [inline, protected, virtual, inherited]
 

Definition at line 41 of file body.H.

Referenced by BODY::cone().

virtual BODYptr BODY::create_cube (   )  [inline, protected, virtual, inherited]
 

Definition at line 40 of file body.H.

Referenced by BODY::cube().

virtual BODYptr BODY::create_cylinder (   )  [inline, protected, virtual, inherited]
 

Definition at line 42 of file body.H.

Referenced by BODY::cylinder().

virtual BODYptr BODY::create_extrusion (  mlib::CWpt_list &  ,
mlib::CWpt_list &  ,
BODYptr & 
)  [inline, protected, virtual, inherited]
 

Definition at line 53 of file body.H.

virtual BODYptr BODY::create_extrusion (  mlib::CWpt_list &  ,
BODYptr & 
)  [inline, protected, virtual, inherited]
 

Definition at line 50 of file body.H.

Referenced by BODY::extrusion().

virtual BODYptr BODY::create_revolve (  mlib::CWpt_list &  ,
BODYptr & 
)  [inline, protected, virtual, inherited]
 

Definition at line 47 of file body.H.

Referenced by BODY::revolve().

virtual BODYptr BODY::create_sphere (   )  [inline, protected, virtual, inherited]
 

Definition at line 43 of file body.H.

Referenced by BODY::sphere().

virtual BODYptr BODY::create_torus (  double   )  [inline, protected, virtual, inherited]
 

Definition at line 45 of file body.H.

Referenced by BODY::torus().

virtual BODYptr BODY::create_trunc_cone (  double   )  [inline, protected, virtual, inherited]
 

Definition at line 46 of file body.H.

Referenced by BODY::trunc_cone().

virtual BODYptr BODY::create_trunc_pyr (  CMVEC2 &  ,
CMVEC2 & 
)  [inline, protected, virtual, inherited]
 

Definition at line 57 of file body.H.

Referenced by BODY::trunc_pyr().

static BODYptr BODY::cube (   )  [inline, static, inherited]
 

METHS: Static factory methods.

Definition at line 115 of file body.H.

References BODY::_factory, and BODY::create_cube().

virtual void BMESH::Cube (  CWpt &  = mlib::Wpt(0, 0, 0),
mlib::CWpt &  = mlib::Wpt(1, 1, 1),
Patch *  p = 0
)  [virtual]
 

Create a cube with the two given points as the body diagonal, and apply the patch if given (default if not).

virtual CBedge_list& BMESH::cur_edges (   )  const [inline, virtual]
 

Edges ofthe current subdivision mesh, if any.

Reimplemented in LMESH.

Definition at line 124 of file bmesh.H.

References _edges.

virtual CBface_list& BMESH::cur_faces (   )  const [inline, virtual]
 

Faces ofthe current subdivision mesh, if any.

Reimplemented in LMESH.

Definition at line 126 of file bmesh.H.

References _faces.

virtual int BMESH::cur_level (   )  const [inline, virtual]
 

Level of "current" mesh in the hierarchy:.

Reimplemented in LMESH.

Definition at line 493 of file bmesh.H.

Referenced by rel_cur_level().

virtual CBvert_list& BMESH::cur_verts (   )  const [inline, virtual]
 

Vertices ofthe current subdivision mesh, if any.

Reimplemented in LMESH.

Definition at line 122 of file bmesh.H.

References _verts.

BMESHcurvature_data* BMESH::curvature (   )  const [inline]
 

Definition at line 659 of file bmesh.H.

References _curv_data.

Referenced by Bvert::curv_tensor(), Bvert::dcurv_tensor(), Bvert::diag_curv(), Bvert::k1(), Bvert::k2(), Bvert::pdir1(), Bvert::pdir2(), and XToonTexture::update_cam().

static BODYptr BODY::cylinder (   )  [inline, static, inherited]
 

Definition at line 117 of file body.H.

References BODY::_factory, and BODY::create_cylinder().

virtual void BMESH::dec_edit_level (   )  [inline, virtual]
 

Reimplemented in LMESH.

Definition at line 503 of file bmesh.H.

References _edit_level, and max().

DATA_ITEM * DATA_ITEM::Decode (  STDdstream &  d,
int  DelayDecoding = 0
)  [static, inherited]
 

Definition at line 57 of file data_item.C.

References DATA_ITEM::_copy, DATA_ITEM::_decode_unknown, DATA_ITEM::class_name(), DATA_ITEM::decode(), DATA_ITEM::dup(), Config::get_var_bool(), and DATA_ITEM::lookup().

Referenced by JOThash::get(), DISTRIB::interpret(), and operator>>().

STDdstream & BMESH::decode (  STDdstream &  d  )  [virtual]
 

Reimplemented from DATA_ITEM.

Definition at line 3966 of file bmesh.C.

References build_vert_strips(), DATA_ITEM::decode(), Config::get_var_bool(), is_points(), and make_patch_if_needed().

BODY::DEFINE_RTTI_METHODS2 (  "BODY"  ,
DATA_ITEM  ,
CDATA_ITEM * 
)  [inherited]
 

BMESH::DEFINE_RTTI_METHODS3 (  "BMESH"  ,
BMESH *  ,
BODY  ,
CDATA_ITEM * 
) 
 

virtual void BMESH::delete_edge (  Bedge *  e  )  const [inline, virtual]
 

Simply releases memory allocated to the edge by calling delete.

Definition at line 363 of file bmesh.H.

Referenced by kill_component(), and remove_edge().

void BMESH::delete_elements (   )  [virtual]
 

Reimplemented in LMESH.

Definition at line 2156 of file bmesh.C.

References _drawables, _edges, _faces, _patches, _type, _type_valid, _verts, ARRAY< T >::clear(), SimplexArray< L, T >::delete_all(), Patch_list::delete_all(), and EMPTY_MESH.

Referenced by LMESH::delete_elements(), OBJReaderImpl::get_mesh(), operator=(), read_stream(), and ~BMESH().

virtual void BMESH::delete_face (  Bface *  f  )  const [inline, virtual]
 

Simply releases memory allocated to the face by calling delete.

Definition at line 365 of file bmesh.H.

Referenced by kill_component(), and remove_face().

void BMESH::delete_patches (   )  [virtual]
 

Definition at line 2264 of file bmesh.C.

References _patches, and Patch_list::delete_all().

virtual void BMESH::delete_vert (  Bvert *  v  )  const [inline, virtual]
 

Simply releases memory allocated to the vertex by calling delete.

Definition at line 361 of file bmesh.H.

Referenced by kill_component(), and remove_vertex().

static HASH* DATA_ITEM::di_hash (   )  [inline, static, inherited]
 

Definition at line 225 of file data_item.H.

References DATA_ITEM::_hash.

void BMESH::disable_draw (   )  [inline]
 

Definition at line 183 of file bmesh.H.

References _draw_enabled.

int BMESH::draw (  CVIEWptr &   )  [virtual]
 

Implements RefImageClient.

Reimplemented in LMESH.

Definition at line 1383 of file bmesh.C.

References _drawables, BMD_array< T >::draw(), draw_enabled(), empty(), err_msg(), and send_update_notification().

Referenced by LMESH::draw().

virtual int RefImageClient::draw_color_ref (   )  [inline, virtual, inherited]
 

Reimplemented in GELset.

Definition at line 55 of file ref_img_client.H.

Referenced by RefImageClient::draw_ref_img(), and RefImageClient::draw_tex_mem_ref().

virtual int RefImageClient::draw_color_ref_2 (   )  [inline, virtual, inherited]
 

Reimplemented in GELset.

Definition at line 56 of file ref_img_client.H.

Referenced by RefImageClient::draw_ref_img().

bool BMESH::draw_enabled (   )  const [inline]
 

Definition at line 184 of file bmesh.H.

References _draw_enabled, and empty().

Referenced by draw(), draw_ref_img(), draw_vis_ref(), and use_ref_image().

virtual int BMESH::draw_final (  CVIEWptr &  v  )  [inline, virtual]
 

Reimplemented from RefImageClient.

Definition at line 600 of file bmesh.H.

References _drawables, and RIC_array< T >::draw_final().

virtual int RefImageClient::draw_id_ref (   )  [inline, virtual, inherited]
 

Reimplemented in GELset, and OGLTexture.

Definition at line 50 of file ref_img_client.H.

Referenced by RefImageClient::draw_ref_img().

virtual int RefImageClient::draw_id_ref_pre1 (   )  [inline, virtual, inherited]
 

Reimplemented in GELset.

Definition at line 51 of file ref_img_client.H.

Referenced by RefImageClient::draw_ref_img().

virtual int RefImageClient::draw_id_ref_pre2 (   )  [inline, virtual, inherited]
 

Reimplemented in GELset.

Definition at line 52 of file ref_img_client.H.

Referenced by RefImageClient::draw_ref_img().

virtual int RefImageClient::draw_id_ref_pre3 (   )  [inline, virtual, inherited]
 

Reimplemented in GELset.

Definition at line 53 of file ref_img_client.H.

Referenced by RefImageClient::draw_ref_img().

virtual int RefImageClient::draw_id_ref_pre4 (   )  [inline, virtual, inherited]
 

Reimplemented in GELset.

Definition at line 54 of file ref_img_client.H.

Referenced by RefImageClient::draw_ref_img().

virtual int RefImageClient::draw_ref_img (  ref_img_t  t  )  [inline, virtual, inherited]
 

Definition at line 82 of file ref_img_client.H.

References brcase, brdefault, RefImageClient::draw_color_ref(), RefImageClient::draw_color_ref_2(), RefImageClient::draw_id_ref(), RefImageClient::draw_id_ref_pre1(), RefImageClient::draw_id_ref_pre2(), RefImageClient::draw_id_ref_pre3(), RefImageClient::draw_id_ref_pre4(), RefImageClient::draw_tex_mem_ref(), RefImageClient::REF_IMG_COLOR, RefImageClient::REF_IMG_COLOR_2, RefImageClient::REF_IMG_ID, RefImageClient::REF_IMG_ID_PRE1, RefImageClient::REF_IMG_ID_PRE2, RefImageClient::REF_IMG_ID_PRE3, RefImageClient::REF_IMG_ID_PRE4, and RefImageClient::REF_IMG_TEX_MEM.

Referenced by Patch::draw_ref_img().

int BMESH::draw_ref_img (  ref_img_t   )  [virtual]
 

Definition at line 1372 of file bmesh.C.

References _drawables, draw_enabled(), RIC_array< T >::draw_ref_img(), and send_update_notification().

virtual int RefImageClient::draw_tex_mem_ref (   )  [inline, virtual, inherited]
 

Reimplemented in DotsShader, DotsShader_EX, GLSLHatching, HalftoneShader, HalftoneShaderEx, and MSLDShader.

Definition at line 57 of file ref_img_client.H.

References RefImageClient::draw_color_ref().

Referenced by RefImageClient::draw_ref_img().

int BMESH::draw_vis_ref (   )  [virtual]
 

Reimplemented from RefImageClient.

Definition at line 1361 of file bmesh.C.

References _drawables, draw_enabled(), RIC_array< T >::draw_vis_ref(), and send_update_notification().

BMESHdrawable_array& BMESH::drawables (   )  [inline]
 

Definition at line 165 of file bmesh.H.

References _drawables.

virtual DATA_ITEM* BMESH::dup (   )  const [inline, virtual]
 

Implements BODY.

Reimplemented in LMESH.

Definition at line 653 of file bmesh.H.

References BMESH().

Referenced by split_components().

CBedge_list& BMESH::edges (   )  const [inline]
 

Edges in this mesh.

Definition at line 116 of file bmesh.H.

References _edges.

Referenced by Lpatch::cur_edges(), LMESH::cur_edges(), Patch::edges(), get_border_strip(), get_crease_strip(), get_edge_strip(), get_edges(), Bedge::index(), kill_component(), and split_components().

virtual int BMESH::edit_level (   )  const [inline, virtual]
 

Level of "active" mesh in the hierarchy:.

Reimplemented in LMESH.

Definition at line 496 of file bmesh.H.

References _edit_level.

Referenced by Lface::bc_to_edit_level(), Patch::rel_edit_level(), and rel_edit_level().

bool BMESH::empty (   )  const [inline]
 

Is the vertex list empty?

Definition at line 144 of file bmesh.H.

References _verts, and ARRAY< T >::empty().

Referenced by BaseJOTapp::create_mesh(), draw(), and draw_enabled().

void BMESH::enable_draw (   )  [inline]
 

Definition at line 182 of file bmesh.H.

References _draw_enabled.

void BMESH::end_index (   ) 
 

Turn off indexing in vert, edge and face lists.

Definition at line 143 of file bmesh.C.

References _edges, _faces, _verts, and ARRAY< T >::end_index().

Referenced by ~BMESH().

static BODYptr BODY::extrusion (  mlib::CWpt_list &  profile,
mlib::CWpt_list &  path,
BODYptr &  ob
)  [inline, static, inherited]
 

Definition at line 128 of file body.H.

References BODY::_factory, and BODY::create_extrusion().

static BODYptr BODY::extrusion (  mlib::CWpt_list &  profile,
BODYptr &  ob
)  [inline, static, inherited]
 

Definition at line 126 of file body.H.

References BODY::_factory, and BODY::create_extrusion().

CWpt & BMESH::eye_local (   )  const
 

Camera (eye) position in this object's coordinate system.

Definition at line 1276 of file bmesh.C.

References _eye_local, _eye_local_stamp, inv_xform(), VIEW::peek_cam(), and VIEW::stamp().

Referenced by Patch::eye_local(), Bvert::eye_local(), Bface::front_facing(), and get_zcross_strips().

CBface_list& BMESH::faces (   )  const [inline]
 

Triangular faces in this mesh.

Definition at line 118 of file bmesh.H.

References _faces.

Referenced by UVMapping::compute_limits(), UVMapping::compute_mapping(), UVMapping::compute_wrapping(), LMESH::cur_faces(), get_faces(), LMESH::get_subdiv_inputs(), Bface::index(), kill_component(), put_faces(), Bface_list::reachable_faces(), split_components(), and split_tris().

bool BMESH::fix_orientation (   ) 
 

Definition at line 2344 of file bmesh.C.

References _edges, _faces, changed(), ARRAY< T >::clear(), SimplexArray< L, T >::clear_flags(), debug, err_msg(), Config::get_var_bool(), grow_oriented_face_lists(), j, ARRAY< T >::num(), reverse_faces(), and TRIANGULATION_CHANGED.

Referenced by check_type(), and remove_duplicate_vertices().

STDdstream & BMESH::format (  STDdstream &  d  )  const [virtual]
 

Reimplemented from DATA_ITEM.

Definition at line 3958 of file bmesh.C.

References DATA_ITEM::format().

Referenced by write_file(), and write_stream().

void REFcounter::Free (   )  const [inline, inherited]
 

Definition at line 76 of file ref.H.

References REFcounter::_mutex, REFcounter::_u, and REF_ME.

GEOM* BMESH::geom (   )  const [inline]
 

Definition at line 168 of file bmesh.H.

References _geom.

Referenced by bmesh_to_gel(), bmesh_to_geom(), get_name(), and get_zcross_strips().

const BBOX & BMESH::get_bb (   )  [virtual]
 

Implements BODY.

Reimplemented in LMESH.

Definition at line 3179 of file bmesh.C.

References BODY::_bb, bv(), nverts(), BBOX::update(), and BBOX::valid().

Referenced by compute_pix_size(), XToonTexture::draw(), ToonTexture_1D::draw(), ToonTexCB::faceCB(), XToonStripCB::faceCB(), recenter(), and z_span().

EdgeStrip* BMESH::get_border_strip (   )  const [inline]
 

Definition at line 261 of file bmesh.H.

References _borders, EdgeStrip::build_with_tips(), edges(), and new_edge_strip().

Referenced by get_borders().

CBedge_list& BMESH::get_borders (   )  const [inline]
 

Definition at line 285 of file bmesh.H.

References EdgeStrip::edges(), and get_border_strip().

Referenced by get_zcross_strips().

void BMESH::get_colors (  TAGformat &   )  [virtual]
 

Definition at line 3922 of file bmesh.C.

References _verts, changed(), err_msg(), nverts(), and VERT_COLORS_CHANGED.

Referenced by tags().

ARRAY< Bface_list > BMESH::get_components (   )  const
 

Returns separate Bface_lists, one for each connected component of the mesh:.

Definition at line 4263 of file bmesh.C.

References _faces, bf(), ARRAY< T >::empty(), Bsimplex::flag(), Bface_list::grow_connected(), ARRAY< T >::num(), and SimplexArray< L, T >::set_flags().

EdgeStrip* BMESH::get_crease_strip (   )  const [inline]
 

Specialzed for crease and border strips: these strips are cached, so it's a lightweight operation after the first time

Definition at line 254 of file bmesh.H.

References _creases, EdgeStrip::build_with_tips(), edges(), and new_edge_strip().

Referenced by get_creases().

void BMESH::get_creases (  TAGformat &   )  [virtual]
 

Definition at line 3792 of file bmesh.C.

References changed(), CREASES_CHANGED, and set_crease().

CBedge_list& BMESH::get_creases (   )  const [inline]
 

Definition at line 284 of file bmesh.H.

References EdgeStrip::edges(), and get_crease_strip().

Referenced by get_zcross_strips(), and tags().

EdgeStrip BMESH::get_edge_strip (  CSimplexFilter &  edge_filter  )  const [inline]
 

Given a filter that accepts a particular kind of edges (e.g. crease edges), returns an edge strip consisting of chains of edges of the given kind.

Definition at line 234 of file bmesh.H.

References EdgeStrip::build_with_tips(), and edges().

Referenced by new_edge_strip().

Bedge_list BMESH::get_edges (  CSimplexFilter &  edge_filter  )  const [inline]
 

Given a filter that accepts a particular kind of edges (e.g. crease edges), returns an edge list consisting of edges of the given kind.

For crease and border edges, see get_creases() and get_borders(), below.

Definition at line 276 of file bmesh.H.

References edges(), and SimplexArray< L, T >::filter().

void BMESH::get_enclosed_verts (  CXYpt_list &  boundary,
Bface *  startface,
ARRAY< Bvert * > &  ret
) 
 

Definition at line 2444 of file bmesh.C.

References bv(), ARRAY< T >::clear(), Bsimplex::clear_flag(), ARRAY< T >::empty(), err_msg(), Bsimplex::flag(), mlib::NDCZpt::in_frustum(), j, Bsimplex::mesh(), Bvert::nbr(), Bvert::ndc(), nverts(), ARRAY< T >::pop(), Bsimplex::set_flag(), Bface::v1(), Bface::v2(), and Bface::v3().

void BMESH::get_faces (  TAGformat &   )  [virtual]
 

Definition at line 3746 of file bmesh.C.

References _faces, add_face(), add_quad(), changed(), err_msg(), faces(), nfaces(), ARRAY< T >::realloc(), and TOPOLOGY_CHANGED.

Referenced by tags().

void BMESH::get_patches (  TAGformat &   )  [virtual]
 

Definition at line 3940 of file bmesh.C.

References changed(), DATA_ITEM::decode(), new_patch(), patch(), and PATCHES_CHANGED.

Referenced by tags().

void BMESH::get_polylines (  TAGformat &   )  [virtual]
 

Definition at line 3804 of file bmesh.C.

References add_edge(), build_polyline_strips(), and Config::get_var_bool().

Referenced by tags().

void BMESH::get_render_style (  TAGformat &   )  [virtual]
 

Definition at line 3907 of file bmesh.C.

Referenced by tags().

void BMESH::get_sec_faces (  TAGformat &   )  [virtual]
 

Definition at line 3835 of file bmesh.C.

References be(), ARRAY< T >::empty(), Bedge::fix_multi(), lookup_face(), nedges(), and Bface_list::push_layer().

Referenced by tags().

int BMESH::get_sil_strips (   ) 
 

extracts silhouette edge strips

Definition at line 1154 of file bmesh.C.

References _edges, _random_sils, _sil_stamp, _sils, all_edges, brute_secs, brute_sils, EdgeStrip::build(), EdgeStrip::edges(), stop_watch::elapsed_time(), ARRAY< T >::empty(), Config::get_var_int(), int(), j, min(), nedges(), EdgeStrip::num(), ARRAY< T >::num(), rand_secs, rand_sils, EdgeStrip::reset(), show_secondary_faces(), and VIEW::stamp().

Referenced by build_sil_strips().

virtual mlib::CXYpt_list& BODY::get_texcoords (   )  [inline, virtual, inherited]
 

Definition at line 112 of file body.H.

References BODY::_dummy.

void BMESH::get_texcoords2 (  TAGformat &   )  [virtual]
 

Definition at line 3865 of file bmesh.C.

References _faces, bf(), err_msg(), Config::get_var_dbl(), j, UVdata::set(), and ARRAY< T >::valid_index().

Referenced by tags().

void BMESH::get_uvfaces (  TAGformat &   )  [virtual]
 

Definition at line 3458 of file bmesh.C.

References UVforIO2::_face, UVforIO2::_uvs, add_face(), add_quad(), changed(), err_msg(), UVforIO2::is_good(), UVforIO2::num(), and TOPOLOGY_CHANGED.

Referenced by tags().

void BMESH::get_vertices (  TAGformat &   )  [virtual]
 

Definition at line 3706 of file bmesh.C.

References _edges, _verts, add_vertex(), changed(), err_msg(), new_vert(), nverts(), ARRAY< T >::realloc(), and VERT_POSITIONS_CHANGED.

Referenced by tags().

void BMESH::get_weak_edges (  TAGformat &   )  [virtual]
 

Definition at line 3818 of file bmesh.C.

References debug, err_adv(), Config::get_var_bool(), and set_weak_edge().

Referenced by tags().

int BMESH::get_zcross_strips (   ) 
 

finds "strips" for zero-set definition of silhouettes (as in WYSIWYG NPR, Siggraph 2002):

Definition at line 1022 of file bmesh.C.

References _faces, _random_sils, _zx_sils, _zx_stamp, stop_watch::elapsed_time(), ARRAY< T >::empty(), eye_local(), Bedge::f(), geom(), get_borders(), get_creases(), Config::get_var_bool(), Config::get_var_int(), inv_xform(), j, min(), ZcrossPath::num(), ARRAY< T >::num(), VIEW::peek(), ZcrossPath::reset(), ZcrossPath::segs(), ZcrossPath::set_eye(), VIEW::stamp(), ZcrossPath::start_sil(), zx_secs, and zx_sils.

Referenced by build_zcross_strips().

void BMESH::grow_mesh_equivalence_class (  Bvert *  ,
ARRAY< Bface * > &  ,
ARRAY< Bedge * > &  ,
ARRAY< Bvert * > & 
)  [protected]
 

Definition at line 4148 of file bmesh.C.

References Bvert::e(), Bedge::f(), Bsimplex::flag(), j, Bvert::nbr(), and Bsimplex::set_flag().

Referenced by kill_component(), and split_components().

void BMESH::grow_oriented_face_lists (  Bface *  ,
ARRAY< Bface * > &  ,
ARRAY< Bface * > & 
)  [static]
 

Definition at line 2384 of file bmesh.C.

References Bedge::consistent_orientation(), Bface::e(), Bsimplex::flag(), Bface::nbr(), and Bsimplex::set_flag().

Referenced by fix_orientation().

bool BMESH::has_vert_colors (   )  const [inline]
 

Do the vertices have colors?

Definition at line 208 of file bmesh.H.

References bv(), and nverts().

void BMESH::Icosahedron (  Patch *  p = 0  )  [virtual]
 

Create a canonical icosahedron and apply the patch if given (default if not).

Definition at line 575 of file bmesh.C.

References add_face(), add_vertex(), changed(), err_msg(), Patch::mesh(), new_patch(), and TOPOLOGY_CHANGED.

virtual void BMESH::inc_edit_level (   )  [inline, virtual]
 

Reimplemented in LMESH.

Definition at line 502 of file bmesh.H.

References _edit_level.

int BODY::intersect (  RAYhit &  r  )  const [inline, inherited]
 

Definition at line 84 of file body.H.

References BODY::intersect().

int BODY::intersect (  RAYhit &  r,
mlib::CWtransf &  xf
)  const [inline, inherited]
 

Definition at line 77 of file body.H.

References BODY::intersect().

virtual int BODY::intersect (  RAYhit &  r,
mlib::CWtransf &  xf,
mlib::Wpt &  near,
mlib::Wvec &  n,
double &  d,
double &  d2d,
mlib::XYpt &  uvc
)  const [pure virtual, inherited]
 

Referenced by BODY::intersect().

virtual BODY* BMESH::intersect (  BODYptr &   )  [inline, virtual]
 

Implements BODY.

Reimplemented in LMESH.

Definition at line 618 of file bmesh.H.

int BMESH::intersect (  RAYhit &  ,
CWtransf &  ,
mlib::Wpt &  ,
mlib::Wvec &  ,
double &  d,
double &  ,
XYpt & 
)  const [virtual]
 

Reimplemented in LMESH.

Definition at line 762 of file bmesh.C.

References _geom, RAYhit::check(), mlib::Point3< P, V >::dist(), RAYhit::from_camera(), get_ctrl_patch(), Config::get_var_bool(), inv_xform(), RAYhit::line(), BaseVisRefImage::lookup(), Bsimplex::mesh(), Bface::norm(), mlib::Vec3< V >::normalized(), Bface::patch(), VIEW::peek(), pick_face(), RAYhit::point(), RAYhit::screen_point(), BMESHray::set_simplex(), RAYhit::test(), Bsimplex::view_intersect(), BaseVisRefImage::vis_simplex(), and BaseVisRefImage::vis_update().

CWtransf & BMESH::inv_xform (   )  const
 

Transformation from world to object coordinates for this mesh.

Definition at line 1259 of file bmesh.C.

References _geom, _world_to_obj, mlib::Identity, and GEOM::world_to_obj().

Referenced by eye_local(), Bface::find_intersect_sim(), get_zcross_strips(), intersect(), Patch::inv_xform(), pick_face(), split_faces(), Bvert::view_intersect(), Bface::view_intersect(), Bedge::view_intersect(), Bvert::wnorm(), and write_xformed().

static bool BMESH::is_center_of_interest (  BMESH *  m  )  [inline, static]
 

Definition at line 529 of file bmesh.H.

References _center_of_interest.

Referenced by LMESH::set_cur_mesh(), and ~BMESH().

bool BMESH::is_closed_surface (   )  const [inline]
 

Definition at line 432 of file bmesh.H.

References CLOSED_SURFACE, and type().

Referenced by is_surface(), print(), and OGLTexture::set_face_culling().

virtual int DATA_ITEM::is_of_type (  Cstr_ptr &  t  )  const [inline, virtual, inherited]
 

Definition at line 214 of file data_item.H.

References IS.

Referenced by operator=().

bool BMESH::is_open_surface (   )  const [inline]
 

Definition at line 431 of file bmesh.H.

References OPEN_SURFACE, and type().

Referenced by is_surface(), and print().

bool BMESH::is_points (   )  const [inline]
 

Definition at line 429 of file bmesh.H.

References POINTS, and type().

Referenced by Lpatch::cur_verts(), decode(), print(), read_stream(), and Patch::verts().

bool BMESH::is_polylines (   )  const [inline]
 

Definition at line 430 of file bmesh.H.

References POLYLINES, and type().

Referenced by Lpatch::cur_edges(), Lpatch::cur_verts(), Patch::edges(), print(), and Patch::verts().

bool BMESH::is_surface (   )  const [inline]
 

Definition at line 433 of file bmesh.H.

References is_closed_surface(), and is_open_surface().

void BMESH::kill_component (  Bvert *  start_vert  )  [virtual]
 

wipe out a connected component containing the start vertex:

Definition at line 4341 of file bmesh.C.

References _edges, _faces, _verts, changed(), delete_edge(), delete_face(), delete_vert(), edges(), faces(), grow_mesh_equivalence_class(), nedges(), nfaces(), ARRAY< T >::num(), nverts(), Bsimplex::set_flag(), TOPOLOGY_CHANGED, and verts().

int REFcounter::Lock (   )  [inline, inherited]
 

Definition at line 105 of file ref.H.

References REFcounter::_mutex, and REFcounter::_u.

Referenced by REFlock::REFlock().

static DATA_ITEM* DATA_ITEM::lookup (  Cstr_ptr &  d  )  [inline, static, inherited]
 

Definition at line 222 of file data_item.H.

References DATA_ITEM::_hash, and HASH::find().

Referenced by DATA_ITEM::Decode(), FUNC_ITEM::FUNC_ITEM(), Patch::get_tex(), and read_jot_stream().

Bedge * BMESH::lookup_edge (  const Point2i &  p  ) 
 

Definition at line 215 of file bmesh.C.

References _verts, bv(), and ARRAY< T >::valid_index().

Referenced by set_crease(), set_patch_boundary(), and set_weak_edge().

Bface * BMESH::lookup_face (  const Point3i &  p  ) 
 

Definition at line 384 of file bmesh.C.

References _verts, bv(), and ARRAY< T >::valid_index().

Referenced by add_face(), and get_sec_faces().

void BMESH::make_patch_if_needed (   ) 
 

Definition at line 1297 of file bmesh.C.

References _faces, Patch::add(), bf(), new_patch(), ARRAY< T >::num(), and patch().

Referenced by build_polyline_strips(), decode(), and read_stream().

BMESHptr BMESH::merge (  BMESHptr  m1,
BMESHptr  m2
)  [static]
 

Merging two meshes: Merge the two meshes together if it's legal to do so. The result is that one mesh ends up an empty husk, with its elements and patches sucked into the other mesh. The smaller mesh is the one that gets sucked dry; the other one is returned. If the meshes are different types the operation fails and a null pointer is returned. (In that case the meshes are not changed).

Definition at line 4031 of file bmesh.C.

References err_msg().

Referenced by main(), and LMESH::merge().

void BMESH::merge_vertex (  Bvert *  v,
Bvert *  u,
bool  keep_vert = 0
) 
 

Definition at line 2574 of file bmesh.C.

References Bvert::get_adj(), Bvert::get_all_faces(), ARRAY< T >::num(), remove_edge(), remove_face(), and remove_vertex().

Referenced by remove_duplicate_vertices(), and try_collapse_edge().

virtual double BODY::nearest (  mlib::CWtransf &  ,
mlib::CWpt &  ,
double 
)  [inline, virtual, inherited]
 

Definition at line 70 of file body.H.

Bedge * BMESH::nearest_edge (  CWpt &   ) 
 

Definition at line 2405 of file bmesh.C.

References _edges, ARRAY< T >::empty(), and ARRAY< T >::num().

Bvert * BMESH::nearest_vert (  CWpt &   ) 
 

Definition at line 2425 of file bmesh.C.

References _verts, ARRAY< T >::empty(), and ARRAY< T >::num().

int BMESH::nedges (   )  const [inline]
 

Number of edges.

Definition at line 138 of file bmesh.H.

References _edges, and ARRAY< T >::num().

Referenced by OBJReaderImpl::add_creases(), LMESH::allocate_subdiv_mesh(), LMESH::delete_subdiv_mesh(), get_sec_faces(), get_sil_strips(), kill_component(), LMESH::mark_all_dirty(), operator=(), put_creases(), put_polylines(), put_weak_edges(), recreate_creases(), remove_duplicate_vertices(), LMESH::size(), size(), write_creases(), write_polylines(), and write_weak_edges().

virtual Bedge* BMESH::new_edge (  Bvert *  u,
Bvert *  v
)  const [inline, virtual]
 

NB: caller should first check u,v doesn't have an edge already.

Reimplemented in LMESH.

Definition at line 294 of file bmesh.H.

Referenced by add_edge().

virtual EdgeStrip* BMESH::new_edge_strip (   )  const [inline, virtual]
 

Reimplemented in LMESH.

Definition at line 309 of file bmesh.H.

Referenced by build_polyline_strips(), get_border_strip(), get_crease_strip(), and new_edge_strip().

EdgeStrip* BMESH::new_edge_strip (  CSimplexFilter &  edge_filter  )  [inline]
 

Like get_edge_strip(), but allocates the returned EdgeStrip. So for an LMESH this returns an LedgeStrip. (The caller is responsible to delete the strip).

Definition at line 243 of file bmesh.H.

References get_edge_strip(), and new_edge_strip().

Referenced by Patch::build_borders(), Patch::build_creases(), ControlFrameTexture::build_strip(), and ControlFrameTexture::draw().

virtual Bface* BMESH::new_face (  Bvert *  u,
Bvert *  v,
Bvert *  w,
Bedge *  e,
Bedge *  f,
Bedge *  g
)  const [inline, virtual]
 

NB: caller should first check requested face doesn't exist already.

Reimplemented in LMESH.

Definition at line 299 of file bmesh.H.

Referenced by add_face().

Patch * BMESH::new_patch (   )  [virtual]
 

Reimplemented in LMESH.

Definition at line 3071 of file bmesh.C.

References _drawables, _patches, ARRAY< T >::last(), and subdiv_level().

Referenced by OBJReaderImpl::add_patches(), build_vert_strips(), get_patches(), Icosahedron(), make_patch_if_needed(), Octahedron(), operator=(), read_patch(), Sphere(), and split_components().

virtual TriStrip* BMESH::new_tri_strip (   )  const [inline, virtual]
 

Reimplemented in LMESH.

Definition at line 308 of file bmesh.H.

Referenced by TriStrip::get_strips().

virtual Bvert* BMESH::new_vert (  CWpt &  p = mlib::Wpt::Origin()  )  const [inline, virtual]
 

Convert the given world-space point to a vertex.

Reimplemented in LMESH.

Definition at line 289 of file bmesh.H.

Referenced by add_vertex(), and get_vertices().

virtual VertStrip* BMESH::new_vert_strip (   )  const [inline, virtual]
 

Reimplemented in LMESH.

Definition at line 310 of file bmesh.H.

Referenced by build_vert_strips().

int BMESH::nfaces (   )  const [inline]
 

Number of faces.

Definition at line 140 of file bmesh.H.

References _faces, and ARRAY< T >::num().

Referenced by LMESH::allocate_subdiv_mesh(), build_zcross_strips(), check_type(), BMESHcurvature_data::compute_corner_areas(), BMESHcurvature_data::compute_face_curvatures(), BMESHcurvature_data::compute_face_dcurv(), compute_initial_vertex_coord_sys(), BMESHcurvature_data::compute_vertex_areas(), BMESHcurvature_data::compute_vertex_curvatures(), BMESHcurvature_data::compute_vertex_dcurv(), Lpatch::cur_edges(), Lpatch::cur_verts(), LMESH::delete_subdiv_mesh(), Patch::edges(), ZCrossExtractor< ScalarField, Confidence, FaceGenerator >::extract(), Patch::get_faces(), get_faces(), kill_component(), ZCrossRandFaceGenerator::operator()(), ZCrossAllFaceGenerator::operator()(), operator=(), pick_face(), put_faces(), put_sec_faces(), put_texcoords2(), put_uvfaces(), Patch::read_stream(), reverse(), LMESH::size(), size(), triangulate(), Patch::verts(), write_faces(), write_faces(), Patch::write_stream(), and write_texcoords2().

int BMESH::npatches (   )  const [inline]
 

Number of patches.

Definition at line 142 of file bmesh.H.

References _patches, and ARRAY< T >::num().

Referenced by Lpatch::put_parent_patch(), LMESH::size(), and size().

int BMESH::nverts (   )  const [inline]
 

Number of vertices.

Definition at line 136 of file bmesh.H.

References _verts, and ARRAY< T >::num().

Referenced by LMESH::allocate_subdiv_mesh(), LMESH::clear_creases(), BMESHcurvature_data::compute_feature_size(), compute_initial_vertex_coord_sys(), BMESHcurvature_data::compute_vertex_areas(), BMESHcurvature_data::compute_vertex_curvatures(), BMESHcurvature_data::compute_vertex_dcurv(), LMESH::delete_subdiv_mesh(), BMESHcurvature_data::diagonalize_vertex_curvatures(), get_bb(), get_colors(), get_enclosed_verts(), get_vertices(), has_vert_colors(), kill_component(), LMESH::mark_all_dirty(), LMESH::operator=(), operator=(), put_colors(), put_vertices(), read_colors(), recenter(), OBJReaderImpl::set_vert_normals(), LMESH::size(), size(), transform(), triangulate(), try_collapse_edge(), vertices(), write_colors(), write_vertices(), and write_verts().

CWtransf & BMESH::obj_to_ndc (   )  const
 

Definition at line 1266 of file bmesh.C.

References _pm, _pm_stamp, VIEW::peek_cam(), VIEW::stamp(), and xform().

Referenced by Bvert::ndc(), Patch::obj_to_ndc(), and z_span().

void BMESH::Octahedron (  CWpt &  = mlib::Wpt(0,-M_SQRT2, 0),
CWpt &  = mlib::Wpt(1, 0, 1),
CWpt &  = mlib::Wpt(1, 0,-1),
CWpt &  = mlib::Wpt(-1, 0,-1),
CWpt &  = mlib::Wpt(-1, 0, 1),
CWpt &  = mlib::Wpt(0, M_SQRT2, 0),
Patch *  p = 0
)  [virtual]
 

Create an octahedron with the given points, and apply the patch if given (default if not).

Definition at line 441 of file bmesh.C.

References add_face(), add_vertex(), changed(), err_msg(), Patch::mesh(), new_patch(), and TOPOLOGY_CHANGED.

BMESH & BMESH::operator= (  BODY &  b  )  [virtual]
 

Reimplemented in LMESH.

Definition at line 2228 of file bmesh.C.

References _edges, _faces, _verts, add_face(), add_vertex(), be(), changed(), Bedge::compute_crease(), delete_elements(), Config::get_var_bool(), DATA_ITEM::is_of_type(), nedges(), new_patch(), ARRAY< T >::num(), ARRAY< T >::realloc(), RefImageClient::static_name(), TOPOLOGY_CHANGED, BODY::triangulate(), and tris.

BMESH & BMESH::operator= (  CBMESH &  m  )  [virtual]
 

Reimplemented in LMESH.

Definition at line 2174 of file bmesh.C.

References _edges, _faces, _type, _type_valid, _verts, add_edge(), add_face(), add_vertex(), be(), bf(), bv(), changed(), Bvert::color(), Bedge::crease_val(), delete_elements(), Bvert::has_color(), Bvert::index(), Bedge::is_crease(), Bedge::is_patch_boundary(), Bface::is_secondary(), Bedge::is_weak(), Bvert::loc(), Bface::make_secondary(), nedges(), new_patch(), nfaces(), ARRAY< T >::num(), nverts(), ARRAY< T >::realloc(), Bsimplex::set_bit(), Bvert::set_color(), Bedge::set_crease(), Bedge::set_patch_boundary(), TRIANGULATION_CHANGED, Bface::v1(), Bedge::v1(), Bface::v2(), Bedge::v2(), Bface::v3(), and Bedge::WEAK_BIT.

Referenced by LMESH::operator=().

void REFcounter::Own (   )  const [inline, inherited]
 

Definition at line 59 of file ref.H.

References REFcounter::_mutex, REFcounter::_u, and REF_ME.

Patch* BMESH::patch (  int  k  )  const [inline]
 

Shorthand for accessing kth patch.

Definition at line 154 of file bmesh.H.

References _patches.

Referenced by get_patches(), and make_patch_if_needed().

CPatch_list& BMESH::patches (   )  const [inline]
 

List of patches.

Definition at line 160 of file bmesh.H.

References _patches.

Referenced by init_strips(), Patch::Patch(), tex_already_exists(), write_normals(), and write_strips().

Bface * BMESH::pick_face (  CWline &  world_ray,
mlib::Wpt &  world_hit
)  const
 

Brute force intersection: Given ray in world space, return intersected face (if any) and intersection point in world space:

Definition at line 732 of file bmesh.C.

References bf(), debug, err_msg(), Config::get_var_bool(), inv_xform(), nfaces(), and xform().

Referenced by intersect().

double BMESH::pix_size (   )  const [inline]
 

Approximate pixel extent based on bounding box.

Definition at line 410 of file bmesh.H.

References _pix_size, _pix_size_stamp, and VIEW::stamp().

Referenced by Patch::pix_size().

void BMESH::pop_render_style (   )  [virtual]
 

Reimplemented in LMESH.

Definition at line 4467 of file bmesh.C.

References _render_style, changed(), ARRAY< T >::empty(), ARRAY< T >::pop(), and RENDERING_CHANGED.

Referenced by toggle_render_style().

void BMESH::print (   )  const [virtual]
 

Print info about this mesh to the error text stream

Reimplemented in LMESH.

Definition at line 678 of file bmesh.C.

References _edges, _faces, _verts, DATA_ITEM::class_name(), err_msg(), Config::get_var_bool(), is_closed_surface(), is_open_surface(), is_points(), is_polylines(), ARRAY< T >::num(), and size().

Referenced by LMESH::print(), print_mesh(), and write().

void BMESH::push_render_style (  Cstr_ptr &  s  )  [virtual]
 

Reimplemented in LMESH.

Definition at line 4460 of file bmesh.C.

References _render_style, changed(), and RENDERING_CHANGED.

Referenced by set_render_style(), and toggle_render_style().

void BMESH::put_colors (  TAGformat &   )  const [virtual]
 

Definition at line 3669 of file bmesh.C.

References _verts, bv(), Bvert::color(), TAGformat::end_id(), TAGformat::id(), and nverts().

Referenced by tags().

void BMESH::put_creases (  TAGformat &   )  const [virtual]
 

Definition at line 3497 of file bmesh.C.

References be(), TAGformat::end_id(), TAGformat::id(), Bvert::index(), Bedge::is_crease(), nedges(), ARRAY< T >::num(), and Bedge::v().

Referenced by tags().

void BMESH::put_faces (  TAGformat &   )  const [virtual]
 

Definition at line 3289 of file bmesh.C.

References bf(), TAGformat::end_id(), faces(), UVdata::has_uv(), TAGformat::id(), Bvert::index(), nfaces(), ARRAY< T >::num(), use_new_bface_io, Bface::v1(), Bface::v2(), and Bface::v3().

Referenced by tags().

void BMESH::put_patches (  TAGformat &   )  const [virtual]
 

Definition at line 3689 of file bmesh.C.

References _patches, ARRAY< T >::empty(), TAGformat::end_id(), TAGformat::id(), and ARRAY< T >::num().

Referenced by tags().

void BMESH::put_polylines (  TAGformat &   )  const [virtual]
 

Definition at line 3519 of file bmesh.C.

References be(), TAGformat::end_id(), TAGformat::id(), Bvert::index(), Bedge::is_polyline(), nedges(), ARRAY< T >::num(), and Bedge::v().

Referenced by tags().

void BMESH::put_render_style (  TAGformat &   )  const [virtual]
 

Definition at line 3648 of file bmesh.C.

Referenced by tags().

void BMESH::put_sec_faces (  TAGformat &   )  const [virtual]
 

Definition at line 3562 of file bmesh.C.

References bf(), ARRAY< T >::empty(), TAGformat::end_id(), TAGformat::id(), Bvert::index(), Bface::is_secondary(), nfaces(), Bface::v1(), Bface::v2(), and Bface::v3().

Referenced by tags().

void BMESH::put_texcoords2 (  TAGformat &   )  const [virtual]
 

Definition at line 3622 of file bmesh.C.

References bf(), TAGformat::end_id(), TAGformat::id(), UVdata::lookup(), nfaces(), ARRAY< T >::num(), use_new_bface_io, and UVdata::uv().

Referenced by tags().

void BMESH::put_uvfaces (  TAGformat &   )  const [virtual]
 

Definition at line 3432 of file bmesh.C.

References bf(), ARRAY< T >::empty(), TAGformat::end_id(), TAGformat::id(), UVforIO2::is_good(), nfaces(), and use_new_bface_io.

Referenced by tags().

void BMESH::put_vertices (  TAGformat &   )  const [virtual]
 

Definition at line 3257 of file bmesh.C.

References bv(), TAGformat::end_id(), Config::get_var_bool(), TAGformat::id(), Bvert::loc(), ARRAY< T >::num(), nverts(), verts(), and Bvert::wloc().

Referenced by tags().

void BMESH::put_weak_edges (  TAGformat &   )  const [virtual]
 

Definition at line 3540 of file bmesh.C.

References be(), ARRAY< T >::empty(), TAGformat::end_id(), TAGformat::id(), Bvert::index(), Bedge::is_weak(), nedges(), use_new_bface_io, and Bedge::v().

Referenced by tags().

int BMESH::read_blocks (  istream &  is  )  [virtual]
 

Definition at line 1677 of file bmesh.C.

References IOBlock::consume(), Config::get_var_bool(), IOBlockList, str_ptr::len(), ARRAY< T >::num(), read_colors(), read_include(), read_patch(), read_texcoords2(), and read_weak_edges().

Referenced by read_include(), and read_stream().

int BMESH::read_colors (  istream &  is,
str_list &  leftover
)  [virtual]
 

Definition at line 1886 of file bmesh.C.

References bv(), ARRAY< T >::clear(), nverts(), and Bvert::set_color().

Referenced by read_blocks().

int BMESH::read_creases (  istream &  is  )  [virtual]
 

Definition at line 1812 of file bmesh.C.

References err_ret(), j, and set_crease().

Referenced by read_stream().

int BMESH::read_faces (  istream &  is  )  [virtual]
 

Definition at line 1786 of file bmesh.C.

References _faces, add_face(), j, and ARRAY< T >::realloc().

Referenced by read_stream().

bool BMESH::read_file (  char *  filename  ) 
 

Definition at line 1550 of file bmesh.C.

References read_jot_file().

int BMESH::read_header (  istream &  is  )  [virtual]
 

Definition at line 1731 of file bmesh.C.

References err_msg().

Referenced by read_stream(), and read_update_stream().

int BMESH::read_include (  istream &  is,
str_list &  leftover
)  [virtual]
 

Definition at line 1716 of file bmesh.C.

References err_ret(), and read_blocks().

Referenced by read_blocks().

BMESHptr BMESH::read_jot_file (  char *  filename,
BMESHptr  ret = 0
)  [static]
 

Definition at line 1447 of file bmesh.C.

References ERR_LEV_WARN, err_mesg(), err_msg(), and read_jot_stream().

Referenced by main(), read_file(), and LMESH::read_jot_file().

BMESHptr BMESH::read_jot_stream (  istream &  is,
BMESHptr  ret = 0
)  [static]
 

Definition at line 1473 of file bmesh.C.

References DATA_ITEM::class_name(), DATA_ITEM::dup(), ERR_LEV_INFO, err_mesg(), err_msg(), and DATA_ITEM::lookup().

Referenced by main(), read_jot_file(), and LMESH::read_jot_stream().

int BMESH::read_patch (  istream &  is,
str_list &  leftover
)  [virtual]
 

Definition at line 1936 of file bmesh.C.

References new_patch(), and Patch::read_stream().

Referenced by read_blocks().

int BMESH::read_polylines (  istream &  is  )  [virtual]
 

Definition at line 1858 of file bmesh.C.

References add_edge(), build_polyline_strips(), err_ret(), Config::get_var_bool(), and j.

Referenced by read_stream().

int BMESH::read_stream (  istream &  is  )  [virtual]
 

Definition at line 1617 of file bmesh.C.

References build_vert_strips(), changed(), clean_patches(), delete_elements(), Config::get_var_bool(), is_points(), make_patch_if_needed(), read_blocks(), read_creases(), read_faces(), read_header(), read_polylines(), read_vertices(), and TOPOLOGY_CHANGED.

int BMESH::read_texcoords2 (  istream &  is,
str_list &  leftover
)  [virtual]
 

Definition at line 1900 of file bmesh.C.

References _faces, bf(), ARRAY< T >::clear(), err_msg(), Config::get_var_dbl(), j, UVdata::set(), and ARRAY< T >::valid_index().

Referenced by read_blocks().

int BMESH::read_update_file (  char *  filename  )  [virtual]
 

Definition at line 1570 of file bmesh.C.

References err_msg(), err_ret(), and read_update_stream().

int BMESH::read_update_stream (  istream &  is  )  [virtual]
 

Definition at line 1596 of file bmesh.C.

References changed(), read_header(), read_vertices(), and VERT_POSITIONS_CHANGED.

Referenced by read_update_file().

int BMESH::read_vertices (  istream &  is  )  [virtual]
 

Definition at line 1761 of file bmesh.C.

References _edges, _verts, add_vertex(), ARRAY< T >::num(), and ARRAY< T >::realloc().

Referenced by read_stream(), and read_update_stream().

int BMESH::read_weak_edges (  istream &  is,
str_list &  leftover
)  [virtual]
 

Definition at line 1836 of file bmesh.C.

References ARRAY< T >::clear(), err_ret(), j, and set_weak_edge().

Referenced by read_blocks().

void BMESH::recenter (   ) 
 

Definition at line 3984 of file bmesh.C.

References center(), changed(), err_msg(), get_bb(), Config::get_var_dbl(), max(), nverts(), points, MOD::tick(), transform(), and VERT_POSITIONS_CHANGED.

Referenced by BaseJOTapp::create_mesh().

virtual void DATA_ITEM::recompute (   )  [inline, virtual, inherited]
 

Reimplemented in Patch.

Definition at line 208 of file data_item.H.

Referenced by DATA_ITEM::decode().

int BMESH::rel_cur_level (   )  const [inline]
 

Same as above, but relative to the level of this mesh:.

Definition at line 499 of file bmesh.H.

References cur_level(), and subdiv_level().

Referenced by LvertStrip::cur_level(), Lvert::cur_subdiv_vert(), get_cur_sub_edges(), get_cur_sub_faces(), get_cur_sub_vert(), and LedgeStrip::rel_cur_level().

int BMESH::rel_edit_level (   )  const [inline]
 

Definition at line 500 of file bmesh.H.

References edit_level(), and subdiv_level().

void BMESH::remove_duplicate_vertices (  bool  keep_vert = 1  ) 
 

Definition at line 2623 of file bmesh.C.

References _edges, _verts, changed(), compare_locs_lexicographically(), err_msg(), fix_orientation(), j, Bvert::loc(), merge_vertex(), nedges(), ARRAY< T >::num(), remove_edge(), ARRAY< T >::sort(), TRIANGULATION_CHANGED, and verts().

int BMESH::remove_edge (  Bedge *  e  )  [virtual]
 

Removes the given edge from this mesh's edge-list, and releases memory allocated to it.

Reimplemented in LMESH.

Definition at line 2508 of file bmesh.C.

References _edges, and delete_edge().

Referenced by merge_vertex(), remove_duplicate_vertices(), LMESH::remove_edge(), remove_edges(), Bvert::~Bvert(), and Lvert::~Lvert().

int BMESH::remove_edges (  CBedge_list &  edges  )  [virtual]
 

Remove each edge in the list given and release memory allocated to it.

Definition at line 2542 of file bmesh.C.

References ARRAY< T >::empty(), SimplexArray< L, T >::mesh(), ARRAY< T >::num(), and remove_edge().

int BMESH::remove_face (  Bface *  f  )  [virtual]
 

Removes the given face from this mesh's face-list, and releases memory allocated to it.

Reimplemented in LMESH.

Definition at line 2499 of file bmesh.C.

References _faces, and delete_face().

Referenced by merge_vertex(), LMESH::remove_face(), remove_faces(), Bedge::~Bedge(), and Ledge::~Ledge().

int BMESH::remove_faces (  CBface_list &  faces  )  [virtual]
 

Remove each face in the list given and release memory allocated to it.

Definition at line 2526 of file bmesh.C.

References ARRAY< T >::empty(), SimplexArray< L, T >::mesh(), ARRAY< T >::num(), and remove_face().

bool BMESH::remove_patch (  int  k  )  [protected]
 

Definition at line 1312 of file bmesh.C.

References _drawables, _patches, err_msg(), Patch::num_faces(), ARRAY< T >::remove(), and ARRAY< T >::valid_index().

Referenced by clean_patches().

int BMESH::remove_vertex (  Bvert *  v  )  [virtual]
 

Removes the given vertex from this mesh's vertex-list, and releases memory allocated to it.

Reimplemented in LMESH.

Definition at line 2517 of file bmesh.C.

References _verts, and delete_vert().

Referenced by Ledge::delete_subdiv_elements(), Lvert::delete_subdiv_vert(), merge_vertex(), LMESH::remove_vertex(), and remove_verts().

int BMESH::remove_verts (  CBvert_list &  verts  )  [virtual]
 

Remove each vertex in the list given and release memory allocated to it.

Definition at line 2558 of file bmesh.C.

References ARRAY< T >::empty(), SimplexArray< L, T >::mesh(), ARRAY< T >::num(), and remove_vertex().

Cstr_ptr & BMESH::render_style (   )  const [virtual]
 

Reimplemented in LMESH.

Definition at line 4475 of file bmesh.C.

References _render_style, ARRAY< T >::empty(), ARRAY< T >::last(), and str_ptr::null_str().

Referenced by Patch::cur_tex(), and toggle_render_style().

void BMESH::reverse (   )  [inline]
 

Reverse orientation of all the faces.

Definition at line 440 of file bmesh.H.

References bf(), nfaces(), and Bface::reverse().

static BODYptr BODY::revolve (  mlib::CWpt_list &  profile,
BODYptr &  ob
)  [inline, static, inherited]
 

Definition at line 124 of file body.H.

References BODY::_factory, and BODY::create_revolve().

void BMESH::send_update_notification (   )  [protected, virtual]
 

In BMESH, just calls BMESHobs::broadcast_update_request(this), but in LMESH also updates subdivision meshes:

Reimplemented in LMESH.

Definition at line 1345 of file bmesh.C.

References BMESHobs::broadcast_update_request().

Referenced by draw(), draw_ref_img(), draw_vis_ref(), and LMESH::send_update_notification().

static void BMESH::set_center_of_interest (  BMESH *  m  )  [inline, static]
 

Center of interest: Typically the mesh that the user has been lately interacting with in some way.

Definition at line 527 of file bmesh.H.

References _center_of_interest.

Referenced by BaseJOTapp::create_mesh(), MeshGlobal::select(), LMESH::set_cur_mesh(), Cam_int::up(), Cam_int_fp::up(), and ~BMESH().

int BMESH::set_crease (  int  i,
int  j
)  const
 

Definition at line 699 of file bmesh.C.

References bv(), err_msg(), lookup_edge(), Bedge::set_crease(), and valid_vert_indices().

Referenced by get_creases(), and read_creases().

static void DATA_ITEM::set_default_decoder (  DATA_ITEM *(*)(STDdstream &, Cstr_ptr &, DATA_ITEM *)  d  )  [inline, static, inherited]
 

Definition at line 218 of file data_item.H.

References DATA_ITEM::_decode_unknown.

static int BODY::set_factory (  BODY *  b  )  [inline, static, inherited]
 

Definition at line 134 of file body.H.

References BODY::_factory.

void BMESH::set_geom (  GEOM *  geom  )  [virtual]
 

Reimplemented from BODY.

Reimplemented in LMESH.

Definition at line 1242 of file bmesh.C.

References _geom, and err_msg().

Referenced by LMESH::set_geom().

int BMESH::set_patch_boundary (  int  i,
int  j
)  const
 

Definition at line 721 of file bmesh.C.

References bv(), err_msg(), lookup_edge(), Bedge::set_patch_boundary(), and valid_vert_indices().

void BMESH::set_render_style (  Cstr_ptr &  s  )  [virtual]
 

Reimplemented in LMESH.

Definition at line 4450 of file bmesh.C.

References _render_style, changed(), ARRAY< T >::empty(), ARRAY< T >::last(), push_render_style(), and RENDERING_CHANGED.

virtual void BODY::set_texcoords (  mlib::CXYpt_list &   )  [inline, virtual, inherited]
 

Definition at line 111 of file body.H.

virtual void BODY::set_vertices (  mlib::CWpt_list &   )  [pure virtual, inherited]
 

virtual void BMESH::set_vertices (  CWpt_list &   )  [inline, virtual]
 

Definition at line 620 of file bmesh.H.

int BMESH::set_weak_edge (  int  i,
int  j
)  const
 

Definition at line 710 of file bmesh.C.

References bv(), err_msg(), lookup_edge(), Bsimplex::set_bit(), valid_vert_indices(), and Bedge::WEAK_BIT.

Referenced by get_weak_edges(), and read_weak_edges().

static bool BMESH::show_secondary_faces (   )  [inline, static]
 

Definition at line 758 of file bmesh.H.

References _show_secondary_faces.

Referenced by EdgeStripFilter::accept(), ControlFrameTexture::build_strip(), Patch::build_tri_strips(), do_solid(), WireframeTexture::draw(), TriStrip::draw(), FlatShadeTexture::draw(), and get_sil_strips().

EdgeStrip BMESH::sil_strip (   ) 
 

extract silhouette edge strip and return a copy of it:

Definition at line 1234 of file bmesh.C.

References _sils, and build_sil_strips().

int BMESH::size (   )  const [virtual]
 

Return the approximate memory used for this mesh.

The extra 4 bytes per vertex, edge, etc. is for the pointer in the corresponding list (_verts, _edges, etc.). For each Bvert we also count the expected number of Bedge* pointers in the adjacency list.

Reimplemented in LMESH.

Definition at line 664 of file bmesh.C.

References nedges(), nfaces(), npatches(), and nverts().

Referenced by compute_pix_size(), and print().

static BODYptr BODY::sphere (   )  [inline, static, inherited]
 

Definition at line 118 of file body.H.

References BODY::_factory, and BODY::create_sphere().

void BMESH::Sphere (  Patch *  p = 0  )  [virtual]
 

Definition at line 480 of file bmesh.C.

References add_face(), add_quad(), add_vertex(), changed(), err_msg(), j, Patch::mesh(), new_patch(), TOPOLOGY_CHANGED, and TWO_PI.

ARRAY< BMESH * > BMESH::split_components (   )  [virtual]
 

split mesh into connected components:

Definition at line 4185 of file bmesh.C.

References _edges, _faces, _verts, add_edge(), add_face(), add_vertex(), BMESHobs::broadcast_split(), changed(), clean_patches(), SimplexArray< L, T >::clear_flags(), dup(), edges(), faces(), Bsimplex::flag(), grow_mesh_equivalence_class(), new_patch(), ARRAY< T >::num(), Bsimplex::set_flag(), TOPOLOGY_CHANGED, and verts().

Bvert* BMESH::split_edge (  Bedge *  edge  )  [inline]
 

Definition at line 477 of file bmesh.H.

References Bedge::mid_pt(), and split_edge().

Bvert * BMESH::split_edge (  Bedge *  edge,
CWpt &  new_pt
) 
 

Definition at line 2677 of file bmesh.C.

References add_edge(), add_face(), add_vertex(), ccw_face(), Bface::detach(), UVdata::lookup(), Bsimplex::notify_split(), Bedge::notify_split(), Bedge::other_face(), Bface::other_vertex(), Bface::patch(), Bface::redefine(), Bedge::redefine(), UVdata::set(), UVdata::uv(), Bedge::v1(), and Bedge::v2().

Referenced by split_edge(), split_faces(), and split_tris().

Bvert * BMESH::split_face (  Bface *  face,
CWpt &  pt
) 
 

Definition at line 2781 of file bmesh.C.

References add_edge(), add_face(), add_vertex(), UVdata::bc2uv(), bv(), Bface::detach(), UVdata::lookup(), Bsimplex::notify_split(), Bface::patch(), Bface::project_barycentric(), Bface::redefine(), UVdata::set(), UVdata::uv1(), UVdata::uv2(), UVdata::uv3(), Bface::v1(), Bface::v2(), and Bface::v3().

Referenced by split_faces().

int BMESH::split_faces (  CXYpt_list &  ,
ARRAY< Bvert * > &  ,
Bface *  = 0
) 
 

Definition at line 2844 of file bmesh.C.

References changed(), ARRAY< T >::clear(), Bvert::degree(), err_msg(), Bvert::get_faces(), inv_xform(), j, ARRAY< T >::last(), Bvert::loc(), BaseVisRefImage::lookup(), Bsimplex::mesh(), Bvert::nbr(), ARRAY< T >::num(), VIEW::peek(), Bface::plane_intersect(), split_edge(), split_face(), TRIANGULATION_CHANGED, BaseVisRefImage::vis_intersect(), BaseVisRefImage::vis_update(), and xform().

void BMESH::split_tris (  Bface *  start_face,
Wplane  plane,
ARRAY< Bvert * > &  nv
) 
 

Definition at line 4287 of file bmesh.C.

References Bface::e(), ARRAY< T >::empty(), faces(), Bvert::get_faces(), Bvert::loc(), Bvert::lookup_edge(), ARRAY< T >::num(), split_edge(), Bedge::v1(), Bedge::v2(), and Bedge::which_side().

static STAT_STR_RET RefImageClient::static_name (   )  [inline, static, inherited]
 

Definition at line 44 of file ref_img_client.H.

References RET_STAT_STR.

Referenced by operator=().

STAT_STR_RET DATA_ITEM::static_name (   )  [static, inherited]
 

Definition at line 31 of file data_item.C.

References RET_STAT_STR.

Referenced by BALLwidget_anchor::BALLwidget_anchor(), CAMwidget_anchor::CAMwidget_anchor(), Patch::cur_tex(), OGLTexture::draw_id_ref(), OGLTexture::draw_id_triangles(), OGLTexture::draw_vis_ref(), VIEW::get_view_animator(), GRIDwidget_anchor::GRIDwidget_anchor(), and toggle_sil_frame().

virtual int BMESH::subdiv_level (   )  const [inline, virtual]
 

The level of this mesh in the hierarchy (0 == control mesh, next level is 1, etc.):.

Reimplemented in LMESH.

Definition at line 490 of file bmesh.H.

Referenced by new_patch(), rel_cur_level(), rel_edit_level(), Ledge::rel_level(), Patch::subdiv_level(), and SimpleUVCalc::subdiv_val().

virtual BODY* BMESH::subtract (  BODYptr &   )  [inline, virtual]
 

Implements BODY.

Reimplemented in LMESH.

Definition at line 616 of file bmesh.H.

CTAGlist & BMESH::tags (   )  const [virtual]
 

Reimplemented from BODY.

Reimplemented in LMESH.

Definition at line 3191 of file bmesh.C.

References _bmesh_tags, _bmesh_update_tags, get_colors(), get_creases(), get_faces(), get_patches(), get_polylines(), get_render_style(), get_sec_faces(), get_texcoords2(), get_uvfaces(), get_vertices(), get_weak_edges(), put_colors(), put_creases(), put_faces(), put_patches(), put_polylines(), put_render_style(), put_sec_faces(), put_texcoords2(), put_uvfaces(), put_vertices(), put_weak_edges(), IOManager::state(), IOManager::STATE_PARTIAL_LOAD, IOManager::STATE_PARTIAL_SAVE, and BODY::tags().

Referenced by LMESH::tags().

int BMESH::tex_already_exists (  Cstr_ptr &  name  )  const
 

Does a Patch with a current GTexture named name already exist in this mesh?

Definition at line 4380 of file bmesh.C.

References patches().

static void BMESH::toggle_freeze_sils (   )  [inline, static]
 

Definition at line 519 of file bmesh.H.

References _freeze_sils.

static void BMESH::toggle_random_sils (   )  [inline, static]
 

Definition at line 520 of file bmesh.H.

References _random_sils.

Referenced by toggle_random_sils().

void BMESH::toggle_render_style (  Cstr_ptr &  s  )  [inline]
 

Definition at line 200 of file bmesh.H.

References pop_render_style(), push_render_style(), and render_style().

Referenced by toggle_sil_frame().

static void BMESH::toggle_show_secondary_faces (   )  [inline, static]
 

Definition at line 759 of file bmesh.H.

References _show_secondary_faces.

static BODYptr BODY::torus (  double  radius  )  [inline, static, inherited]
 

Definition at line 120 of file body.H.

References BODY::_factory, and BODY::create_torus().

virtual void BODY::transform (  mlib::CWtransf &  xform,
CMOD & 
)  [pure virtual, inherited]
 

void BMESH::transform (  CWtransf &  xform,
CMOD &  m = MOD()
)  [virtual]
 

Reimplemented in LMESH.

Definition at line 1403 of file bmesh.C.

References _verts, BMESHobs::broadcast_xform(), changed(), nverts(), Bvert_list::transform(), and VERT_POSITIONS_CHANGED.

Referenced by recenter(), LMESH::transform(), and write_xformed().

void BMESH::triangulate (  Wpt_list &  verts,
FACElist &  faces
)  [virtual]
 

Reimplemented from BODY.

Definition at line 1428 of file bmesh.C.

References _faces, _verts, bf(), bv(), ARRAY< T >::clear(), mlib::Pointlist< L, P, V, S >::clear(), Bvert::loc(), nfaces(), ARRAY< T >::num(), nverts(), and ARRAY< T >::realloc().

static BODYptr BODY::trunc_cone (  double  radius  )  [inline, static, inherited]
 

Definition at line 122 of file body.H.

References BODY::_factory, and BODY::create_trunc_cone().

static BODYptr BODY::trunc_pyr (  CMVEC2 &  taper,
CMVEC2 &  shear
)  [inline, static, inherited]
 

Definition at line 131 of file body.H.

References BODY::_factory, and BODY::create_trunc_pyr().

int BMESH::try_collapse_edge (  Bedge *  e,
Bvert *  v
) 
 

Definition at line 3015 of file bmesh.C.

References debug, Bvert::degree(), Bedge::f1(), Bedge::f2(), Config::get_var_bool(), Bvert::is_adjacent(), Bedge::is_border(), Bvert::is_border(), merge_vertex(), Bvert::nbr(), nverts(), Bedge::opposite_vert1(), Bedge::opposite_vert2(), Bedge::other_vertex(), and Bedge::v().

int BMESH::try_swap_edge (  Bedge *  edge,
bool  favor_deg_6 = 0
) 
 

Definition at line 2972 of file bmesh.C.

References Bface::detach(), Bface::redefine(), Bedge::set_new_vertices(), and Bedge::swapable().

int BMESH::type (   )  const [inline]
 

Definition at line 424 of file bmesh.H.

References _type, and _type_valid.

Referenced by is_closed_surface(), is_open_surface(), is_points(), and is_polylines().

int REFcounter::Unique (   )  const [inline, inherited]
 

Definition at line 115 of file ref.H.

References REFcounter::_mutex, and REFcounter::_u.

bool BMESH::unlist (  Patch *  p  ) 
 

Remove the Patch from the patch list; returns 1 on success.

Definition at line 3081 of file bmesh.C.

References _patches, and Patch::mesh().

Referenced by Patch::~Patch().

void REFcounter::Unlock (   )  [inline, inherited]
 

Definition at line 111 of file ref.H.

References REFcounter::_mutex, and REFcounter::_u.

Referenced by REFlock::~REFlock().

RefImageClient::ref_img_t BMESH::use_ref_image (   )  [virtual]
 

Reimplemented from RefImageClient.

Definition at line 1354 of file bmesh.C.

References _drawables, draw_enabled(), RefImageClient::REF_IMG_NONE, and RIC_array< T >::use_ref_image().

virtual int BODY::uv_able (   )  const [inline, virtual, inherited]
 

METHS: Texture stuff.

Definition at line 109 of file body.H.

bool BMESH::valid_vert_indices (  int  i,
int  j,
int  k,
int  l
)  const [inline]
 

Definition at line 543 of file bmesh.H.

References _verts, ARRAY< T >::valid_index(), and valid_vert_indices().

bool BMESH::valid_vert_indices (  int  i,
int  j,
int  k
)  const [inline]
 

Definition at line 540 of file bmesh.H.

References _verts, ARRAY< T >::valid_index(), and valid_vert_indices().

bool BMESH::valid_vert_indices (  int  i,
int  j
)  const [inline]
 

Definition at line 537 of file bmesh.H.

References _verts, and ARRAY< T >::valid_index().

Referenced by add_edge(), add_face(), add_quad(), set_crease(), set_patch_boundary(), set_weak_edge(), and valid_vert_indices().

uint BMESH::version (   )  const [inline]
 

Definition at line 667 of file bmesh.H.

References _version.

Referenced by Patch::stamp().

CWpt_list & BMESH::vertices (   )  [virtual]
 

Implements BODY.

Definition at line 1416 of file bmesh.C.

References _vert_locs, _verts, ARRAY< T >::empty(), nverts(), and ARRAY< T >::realloc().

CBvert_list& BMESH::verts (   )  const [inline]
 

Vertices of this mesh.

Definition at line 114 of file bmesh.H.

References _verts.

Referenced by add_tri(), Lpatch::cur_verts(), LMESH::cur_verts(), Bvert::index(), kill_component(), put_vertices(), remove_duplicate_vertices(), split_components(), and Patch::verts().

double BMESH::volume (   )  const [virtual]
 

Sum up the volume using the divergence theorem.

Reimplemented in LMESH.

Definition at line 643 of file bmesh.C.

References _faces, and ARRAY< T >::num().

int BMESH::write_colors (  ostream &  os  )  const [virtual]
 

Definition at line 1993 of file bmesh.C.

References _verts, bv(), Bvert::color(), ARRAY< T >::empty(), Bvert::has_color(), and nverts().

int BMESH::write_creases (  ostream &  os  )  const [virtual]
 

Definition at line 2065 of file bmesh.C.

References be(), ARRAY< T >::clear(), ARRAY< T >::empty(), nedges(), ARRAY< T >::num(), and ARRAY< T >::pop().

int BMESH::write_faces (  ostream &  os  )  const [virtual]
 

Definition at line 2052 of file bmesh.C.

References bf(), and nfaces().

int BMESH::write_file (  char *  filename  )  [virtual]
 

Definition at line 1942 of file bmesh.C.

References err_msg(), and format().

Referenced by write(), and write_xformed().

int BMESH::write_patches (  ostream &  os  )  const [virtual]
 

Reimplemented in LMESH.

Definition at line 2115 of file bmesh.C.

References _patches, ARRAY< T >::empty(), Config::get_var_bool(), and Patch_list::write_stream().

int BMESH::write_polylines (  ostream &  os  )  const [virtual]
 

Definition at line 2131 of file bmesh.C.

References be(), ARRAY< T >::clear(), ARRAY< T >::empty(), nedges(), ARRAY< T >::num(), and ARRAY< T >::pop().

int BMESH::write_stream (  ostream &  os  )  [virtual]
 

Definition at line 1960 of file bmesh.C.

References format().

int BMESH::write_texcoords2 (  ostream &  os  )  const [virtual]
 

Definition at line 2016 of file bmesh.C.

References bf(), UVdata::lookup(), nfaces(), and UVdata::uv().

int BMESH::write_vertices (  ostream &  os  )  const [virtual]
 

Definition at line 1972 of file bmesh.C.

References bv(), Config::get_var_bool(), Bvert::loc(), nverts(), and Bvert::wloc().

int BMESH::write_weak_edges (  ostream &  os  )  const [virtual]
 

Definition at line 2089 of file bmesh.C.

References be(), ARRAY< T >::empty(), nedges(), ARRAY< T >::num(), and ARRAY< T >::pop().

CWtransf & BMESH::xform (   )  const
 

Transformation from object to world coordinates for this mesh.

Definition at line 1252 of file bmesh.C.

References _geom, _obj_to_world, mlib::Identity, and GEOM::obj_to_world().

Referenced by compute_pix_size(), obj_to_ndc(), pick_face(), split_faces(), Bface::view_intersect(), Bvert::wloc(), write_xformed(), and Patch::xform().

double BMESH::z_span (   )  const
 

Definition at line 4392 of file bmesh.C.

double BMESH::z_span (  double &  zmin,
double &  zmax
)  const
 

Definition at line 4399 of file bmesh.C.

References get_bb(), max(), min(), ARRAY< T >::num(), obj_to_ndc(), points, and mlib::Point3list< L, M, P, V, S >::xform().


Member Data Documentation

double BMESH::_avg_edge_len [protected]
 

Definition at line 747 of file bmesh.H.

Referenced by avg_len().

bool BMESH::_avg_edge_len_valid [protected]
 

Definition at line 748 of file bmesh.H.

Referenced by avg_len(), and changed().

str_ptr BODY::_base_name = BMESH::static_name() [static, protected, inherited]
 

Definition at line 61 of file body.H.

Referenced by BODY::base_name().

BBOX BODY::_bb [protected, inherited]
 

Definition at line 37 of file body.H.

Referenced by _merge(), BODY::bb_valid(), changed(), and get_bb().

TAGlist * BMESH::_bmesh_tags = NULL [static, protected]
 

Full set of tags.

Definition at line 742 of file bmesh.H.

Referenced by tags().

TAGlist * BMESH::_bmesh_update_tags = NULL [static, protected]
 

Partial set of tags used for loading frames of animation (e.g. just the vertices change position).

Definition at line 744 of file bmesh.H.

Referenced by tags().

BODYptr BMESH::_body [protected]
 

Definition at line 723 of file bmesh.H.

Referenced by _merge(), and changed().

TAGlist BODY::_body_tags [static, protected, inherited]
 

Definition at line 62 of file body.H.

Referenced by BODY::tags().

EdgeStrip* BMESH::_borders [protected]
 

border edge strips

Definition at line 700 of file bmesh.H.

Referenced by changed(), and get_border_strip().

BMESH * BMESH::_center_of_interest = 0 [static, protected]
 

Definition at line 753 of file bmesh.H.

Referenced by center_of_interest(), is_center_of_interest(), and set_center_of_interest().

int DATA_ITEM::_copy [protected, inherited]
 

Definition at line 197 of file data_item.H.

Referenced by DATA_ITEM::Decode().

EdgeStrip* BMESH::_creases [protected]
 

crease edge strips

Definition at line 699 of file bmesh.H.

Referenced by changed(), and get_crease_strip().

BMESHcurvature_data* BMESH::_curv_data [mutable, protected]
 

Definition at line 738 of file bmesh.H.

Referenced by changed(), and curvature().

TAGlist DATA_ITEM::_DEFINERtags [protected, inherited]
 

Definition at line 198 of file data_item.H.

Referenced by DATA_ITEM::tags().

bool BMESH::_draw_enabled [protected]
 

flag to enable/disable drawing

Definition at line 713 of file bmesh.H.

Referenced by disable_draw(), draw_enabled(), and enable_draw().

BMESHdrawable_array BMESH::_drawables [protected]
 

list of drawable things

Definition at line 711 of file bmesh.H.

Referenced by _merge(), BMESH(), delete_elements(), draw(), draw_final(), draw_ref_img(), draw_vis_ref(), drawables(), LMESH::new_patch(), new_patch(), remove_patch(), and use_ref_image().

Bedge_list BMESH::_edges [protected]
 

list of edges

Reimplemented from BODY.

Definition at line 688 of file bmesh.H.

Referenced by _merge(), add_edge(), avg_len(), be(), begin_index(), build_polyline_strips(), check_type(), clear_creases(), compute_creases(), cur_edges(), delete_elements(), edges(), end_index(), fix_orientation(), get_sil_strips(), get_vertices(), kill_component(), LMESH::le(), nearest_edge(), nedges(), operator=(), print(), read_vertices(), remove_duplicate_vertices(), remove_edge(), and split_components().

int BMESH::_edit_level [protected]
 

Definition at line 751 of file bmesh.H.

Referenced by dec_edit_level(), edit_level(), and inc_edit_level().

Wpt BMESH::_eye_local [protected]
 

camera location in local coordinates

Definition at line 731 of file bmesh.H.

Referenced by eye_local().

uint BMESH::_eye_local_stamp [protected]
 

frame number last updated.

Todo:
XXX - fix

Definition at line 732 of file bmesh.H.

Referenced by eye_local().

Bface_list BMESH::_faces [protected]
 

list of faces

Definition at line 689 of file bmesh.H.

Referenced by _merge(), add_face(), area(), begin_index(), bf(), check_type(), cur_faces(), delete_elements(), end_index(), faces(), fix_orientation(), get_components(), get_faces(), get_texcoords2(), get_zcross_strips(), kill_component(), LMESH::lf(), make_patch_if_needed(), nfaces(), operator=(), print(), read_faces(), read_texcoords2(), remove_face(), split_components(), triangulate(), LMESH::update_subdivision(), and volume().

BODY * BODY::_factory = 0 [static, protected, inherited]
 

Definition at line 60 of file body.H.

Referenced by BODY::cone(), BODY::cube(), BODY::cylinder(), BODY::extrusion(), BODY::revolve(), BODY::set_factory(), BODY::sphere(), BODY::torus(), BODY::trunc_cone(), and BODY::trunc_pyr().

bool BMESH::_freeze_sils = false [static]
 

Definition at line 678 of file bmesh.H.

Referenced by build_sil_strips(), build_zcross_strips(), freeze_sils(), and toggle_freeze_sils().

GEOM* BMESH::_geom [protected]
 

Definition at line 726 of file bmesh.H.

Referenced by LMESH::allocate_subdiv_mesh(), geom(), intersect(), inv_xform(), set_geom(), and xform().

VertStrip* BMESH::_lone_verts [protected]
 

pointer to allow subclasses

Definition at line 703 of file bmesh.H.

Referenced by build_vert_strips().

Wtransf BMESH::_obj_to_world [protected]
 

Definition at line 734 of file bmesh.H.

Referenced by xform().

ThreadMutex BMESH::_patch_mutex [protected]
 

Definition at line 694 of file bmesh.H.

Patch_list BMESH::_patches [protected]
 

list of patches

Definition at line 692 of file bmesh.H.

Referenced by _merge(), build_polyline_strips(), build_sil_strips(), build_vert_strips(), build_zcross_strips(), changed(), clean_patches(), delete_elements(), delete_patches(), LMESH::delete_subdiv_mesh(), LMESH::new_patch(), new_patch(), npatches(), patch(), patches(), put_patches(), remove_patch(), unlist(), and write_patches().

double BMESH::_pix_size [protected]
 

approx pix size

Definition at line 714 of file bmesh.H.

Referenced by compute_pix_size(), and pix_size().

uint BMESH::_pix_size_stamp [protected]
 

for caching per-frame

Definition at line 715 of file bmesh.H.

Referenced by compute_pix_size(), and pix_size().

Wtransf BMESH::_pm [protected]
 

object space to NDCZ space transform

Definition at line 728 of file bmesh.H.

Referenced by obj_to_ndc().

uint BMESH::_pm_stamp [protected]
 

frame number last updated.

Todo:
XXX - fix

Definition at line 730 of file bmesh.H.

Referenced by obj_to_ndc().

EdgeStrip* BMESH::_polylines [protected]
 

pointer to allow subclasses

Definition at line 702 of file bmesh.H.

Referenced by build_polyline_strips().

bool BMESH::_random_sils = !Config::get_var_bool("NO_RANDOM_SILS",false) [static]
 

Definition at line 679 of file bmesh.H.

Referenced by get_sil_strips(), get_zcross_strips(), toggle_random_sils(), and toggle_random_sils().

LIST<str_ptr> BMESH::_render_style [protected]
 

name of render style to use (if any)

Definition at line 712 of file bmesh.H.

Referenced by pop_render_style(), push_render_style(), render_style(), and set_render_style().

bool BMESH::_show_secondary_faces = false [static, protected]
 

Definition at line 756 of file bmesh.H.

Referenced by show_secondary_faces(), and toggle_show_secondary_faces().

uint BMESH::_sil_stamp [protected]
 

Definition at line 707 of file bmesh.H.

Referenced by build_sil_strips(), changed(), and get_sil_strips().

EdgeStrip BMESH::_sils [protected]
 

silhouette edge strips

Definition at line 698 of file bmesh.H.

Referenced by build_sil_strips(), changed(), get_sil_strips(), and sil_strip().

int BODY::_tris [protected, inherited]
 

Definition at line 36 of file body.H.

int BMESH::_type [protected]
 

type of surface from enum above

Definition at line 718 of file bmesh.H.

Referenced by _merge(), LMESH::allocate_subdiv_mesh(), check_type(), delete_elements(), operator=(), and type().

bool BMESH::_type_valid [protected]
 

true if _type has been set

Definition at line 719 of file bmesh.H.

Referenced by _merge(), changed(), check_type(), delete_elements(), operator=(), and type().

uint BMESH::_version [protected]
 

increment to invalidate display lists

Definition at line 693 of file bmesh.H.

Referenced by _merge(), changed(), and version().

Wpt_list BMESH::_vert_locs [protected]
 

Definition at line 722 of file bmesh.H.

Referenced by _merge(), changed(), and vertices().

Bvert_list BMESH::_verts [protected]
 

list of vertices

Definition at line 687 of file bmesh.H.

Referenced by _merge(), add_edge(), add_face(), add_quad(), add_vertex(), begin_index(), build_vert_strips(), bv(), check_type(), cur_verts(), delete_elements(), empty(), end_index(), get_colors(), get_vertices(), kill_component(), lookup_edge(), lookup_face(), LMESH::lv(), nearest_vert(), nverts(), operator=(), print(), put_colors(), read_vertices(), remove_duplicate_vertices(), remove_vertex(), split_components(), transform(), triangulate(), LMESH::update_subdivision(), valid_vert_indices(), vertices(), verts(), and write_colors().

Wtransf BMESH::_world_to_obj [protected]
 

Definition at line 735 of file bmesh.H.

Referenced by inv_xform().

ZcrossPath BMESH::_zx_sils [protected]
 

zero-cross sil-strip class

Definition at line 697 of file bmesh.H.

Referenced by build_zcross_strips(), changed(), and get_zcross_strips().

uint BMESH::_zx_stamp [protected]
 

Definition at line 708 of file bmesh.H.

Referenced by build_zcross_strips(), changed(), and get_zcross_strips().


The documentation for this class was generated from the following files:
Generated on Mon Sep 18 11:44:32 2006 for jot by  doxygen 1.4.4