13 #ifndef OGLPLUS_SHAPES_ANALYZER_GRAPH_1308151449_HPP 
   14 #define OGLPLUS_SHAPES_ANALYZER_GRAPH_1308151449_HPP 
   16 #include <oglplus/config/basic.hpp> 
   24 class ShapeAnalyzerGraphData
 
   27     template <
typename Index>
 
   28     static std::vector<GLuint> _adapt(
const Index& index)
 
   30         return std::vector<GLuint>(
 
   36     static std::vector<GLuint>&& _adapt(std::vector<GLuint>&& index)
 
   38         return static_cast<std::vector<GLuint>&&
>(index);
 
   41     GLuint _guess_face_count(
void);
 
   42     GLuint _guess_vertex_count(GLuint);
 
   44     void _initialize(
void);
 
   46     void _init_draw_arrays(
const DrawOperation& draw_op);
 
   48     void _init_dr_ar_triangles(
const DrawOperation& draw_op);
 
   49     void _init_dr_ar_triangle_strip(
const DrawOperation& draw_op);
 
   50     void _init_dr_ar_triangle_fan(
const DrawOperation& draw_op);
 
   52     void _init_draw_elements(
const DrawOperation& draw_op);
 
   54     void _init_dr_el_triangles(
const DrawOperation& draw_op);
 
   55     void _init_dr_el_triangle_strip(
const DrawOperation& draw_op);
 
   56     void _init_dr_el_triangle_fan(
const DrawOperation& draw_op);
 
   58     void _detect_adjacent(
void);
 
   65         const std::vector<GLdouble>& vert_attr
 
   67     bool _adjacent_faces(GLuint fa, GLuint ea, GLuint fb, GLuint eb);
 
   68     bool _smooth_faces(GLuint fa, GLuint ea, GLuint fb, GLuint eb);
 
   69     bool _contin_faces(GLuint fa, GLuint ea, GLuint fb, GLuint eb);
 
   71     DrawingInstructions _instr;
 
   72     std::vector<GLuint> _index;
 
   75     std::vector<GLdouble> _main_va;
 
   80     std::vector<GLdouble> _smooth_va;
 
   85     std::vector<std::vector<GLdouble> > _other_vas;
 
   87     std::vector<GLuint> _other_vpvs;
 
   93     std::vector<GLuint> _face_index;
 
   94     std::vector<GLuint> _face_phase;
 
   96     std::vector<GLuint> _face_verts;
 
   97     std::vector<GLuint> _face_adj_f;
 
   98     std::vector<GLuint> _face_adj_e;
 
   99     std::vector<GLuint> _face_edge_flags;
 
  101     static const GLuint _flg_contin_edge = 0x0001;
 
  102     static const GLuint _flg_smooth_edge = 0x0002;
 
  103     static const GLuint _flg_strip_edge =
 
  107     static const GLuint _flg_fan_edge =
 
  112     static GLuint _face_arity(GLuint )
 
  121     template <
typename ShapeBuilder>
 
  122     ShapeAnalyzerGraphData(
const ShapeBuilder& builder)
 
  123      : _instr(builder.Instructions())
 
  124      , _index(_adapt(builder.Indices()))
 
  126      , _main_vpv(builder.Positions(_main_va))
 
  128      , _smooth_vpv(builder.Normals(_smooth_va))
 
  134     static  GLuint _nil_face(
void) { 
return ~GLuint(0); }
 
  140 #if !OGLPLUS_LINK_LIBRARY || defined(OGLPLUS_IMPLEMENTING_LIBRARY) 
  141 #include <oglplus/shapes/analyzer_data.ipp> 
  144 #endif // include guard 
Implementation of shape draw instructions. 
 
PrimitiveType
Primitive type enumeration. 
Definition: primitive_type.hpp:29
 
ShapeDrawOperationMethod
Enumeration of drawing methods. 
Definition: draw.hpp:86