mapdesc.h

来自「mesa-6.5-minigui源码」· C头文件 代码 · 共 278 行

H
278
字号
/*** License Applicability. Except to the extent portions of this file are** made subject to an alternative license as permitted in the SGI Free** Software License B, Version 1.1 (the "License"), the contents of this** file are subject only to the provisions of the License. You may not use** this file except in compliance with the License. You may obtain a copy** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:**** http://oss.sgi.com/projects/FreeB**** Note that, as provided in the License, the Software is distributed on an** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.**** Original Code. The Original Code is: OpenGL Sample Implementation,** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.** Copyright in any portions created by third parties is as indicated** elsewhere herein. All Rights Reserved.**** Additional Notice Provisions: The application programming interfaces** established by SGI in conjunction with the Original Code are The** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X** Window System(R) (Version 1.3), released October 19, 1998. This software** was created using the OpenGL(R) version 1.2.1 Sample Implementation** published by SGI, but has not been independently verified as being** compliant with the OpenGL(R) version 1.2.1 Specification.*//* * mapdesc.h * * $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ * $Header: /cvs/mesa/Mesa/src/glu/sgi/libnurbs/internals/mapdesc.h,v 1.1 2001/03/17 00:25:41 brianp Exp $ */#ifndef __glumapdesc_h_#define __glumapdesc_h_#include "mystdio.h"#include "types.h"#include "defines.h"#include "bufpool.h"#include "nurbsconsts.h"typedef REAL Maxmatrix[MAXCOORDS][MAXCOORDS];class Backend;class Mapdesc : public PooledObj {    friend class Maplist;			public:    			Mapdesc( long, int, int, Backend & );    int			isProperty( long );    REAL		getProperty( long );    void		setProperty( long, REAL );    int			isConstantSampling( void );    int			isDomainSampling( void );    int			isRangeSampling( void );    int			isSampling( void );    int			isParametricDistanceSampling( void );    int			isObjectSpaceParaSampling( void );    int			isObjectSpacePathSampling( void );    int			isSurfaceAreaSampling( void );    int			isPathLengthSampling( void );    int			isCulling( void );    int			isBboxSubdividing( void );    long		getType( void );    /* curve routines */    void		subdivide( REAL *, REAL *, REAL, int, int );    int 		cullCheck( REAL *, int, int );    void		xformBounding( REAL *, int, int, REAL *, int );    void		xformCulling( REAL *, int, int, REAL *, int );    void		xformSampling( REAL *, int, int, REAL *, int );    void		xformMat( Maxmatrix, REAL *, int, int, REAL *, int );    REAL		calcPartialVelocity ( REAL *, int, int, int, REAL );    int			project( REAL *, int, REAL *, int, int );    REAL		calcVelocityRational( REAL *, int, int );    REAL		calcVelocityNonrational( REAL *, int, int );    /* surface routines */    void		subdivide( REAL *, REAL *, REAL, int, int, int, int );    int 		cullCheck( REAL *, int, int, int, int );    void		xformBounding( REAL *, int, int, int, int, REAL *, int, int );    void		xformCulling( REAL *, int, int, int, int, REAL *, int, int );    void		xformSampling( REAL *, int, int, int, int, REAL *, int, int );    void		xformMat( Maxmatrix, REAL *, int, int, int, int, REAL *, int, int );    REAL		calcPartialVelocity ( REAL *, REAL *, int, int, int, int, int, int, REAL, REAL, int );    int 		project( REAL *, int, int, REAL *, int, int, int, int);    void		surfbbox( REAL bb[2][MAXCOORDS] );    int			bboxTooBig( REAL *, int, int, int, int, REAL [2][MAXCOORDS] );    int 		xformAndCullCheck( REAL *, int, int, int, int );    void		identify( REAL[MAXCOORDS][MAXCOORDS] );    void		setBboxsize( INREAL *);    inline void 	setBmat( INREAL*, long, long );    inline void 	setCmat( INREAL*, long, long );    inline void 	setSmat( INREAL*, long, long );    inline int		isRational( void );    inline int		getNcoords( void );    REAL 		pixel_tolerance;    /* pathlength sampling tolerance */    REAL		error_tolerance;    /* parametric error sampling tolerance*/    REAL		object_space_error_tolerance;    /* object space tess*/    REAL 		clampfactor;    REAL 		minsavings;    REAL		maxrate;    REAL		maxsrate;    REAL		maxtrate;    REAL		bboxsize[MAXCOORDS];private:    long 		type;    int 		isrational;    int 		ncoords;    int 		hcoords;    int 		inhcoords;    int			mask;    Maxmatrix 		bmat;    Maxmatrix 		cmat;    Maxmatrix 		smat;    REAL 		s_steps;		/* max samples in s direction */    REAL 		t_steps;		/* max samples in t direction */    REAL 		sampling_method;	    REAL 		culling_method;		/* check for culling */    REAL		bbox_subdividing;    Mapdesc *		next;    Backend &		backend;    void		bbox( REAL [2][MAXCOORDS], REAL *, int, int, int, int );    REAL		maxDifference( int, REAL *, int );    static void 	copy( Maxmatrix, long, INREAL *, long, long );    /* individual control point routines */    static void		transform4d( float[4], float[4], float[4][4] );    static void		multmatrix4d ( float[4][4], const float[4][4],					 const float[4][4] );    void		copyPt( REAL *, REAL * );    void		sumPt( REAL *, REAL *, REAL *, REAL, REAL );    void		xformSampling( REAL *, REAL * );    void		xformCulling( REAL *, REAL * );    void		xformRational( Maxmatrix, REAL *, REAL * );    void		xformNonrational( Maxmatrix, REAL *, REAL * );    unsigned int	clipbits( REAL * );};inline voidMapdesc::setBmat( INREAL *mat, long rstride, long cstride ){    copy( bmat, hcoords, mat, rstride, cstride );}inline voidMapdesc::setCmat( INREAL *mat, long rstride, long cstride ){    copy( cmat, hcoords, mat, rstride, cstride );}inline voidMapdesc::setSmat( INREAL *mat, long rstride, long cstride ){    copy( smat, hcoords, mat, rstride, cstride );}inline longMapdesc::getType( void ){    return type;}inline voidMapdesc::xformCulling( REAL *d, REAL *s ){    if( isrational )        xformRational( cmat, d, s );    else	xformNonrational( cmat, d, s );}inline voidMapdesc::xformSampling( REAL *d, REAL *s ){    if( isrational )        xformRational( smat, d, s );    else	xformNonrational( smat, d, s );}inline int Mapdesc::isRational( void ){    return isrational ? 1 : 0;}inline int		Mapdesc::getNcoords( void ) {    return ncoords; }inline int			Mapdesc::isConstantSampling( void ) {    return ((sampling_method == N_FIXEDRATE) ? 1 : 0); }inline int			Mapdesc::isDomainSampling( void ) {     return ((sampling_method == N_DOMAINDISTANCE) ? 1 : 0); }inline int			Mapdesc::isParametricDistanceSampling( void ) {    return ((sampling_method == N_PARAMETRICDISTANCE) ? 1 : 0);}inline int			Mapdesc::isObjectSpaceParaSampling( void ) {    return ((sampling_method == N_OBJECTSPACE_PARA) ? 1 : 0);}inline int			Mapdesc::isObjectSpacePathSampling( void ) {    return ((sampling_method == N_OBJECTSPACE_PATH) ? 1 : 0);}inline int			Mapdesc::isSurfaceAreaSampling( void ) {    return ((sampling_method == N_SURFACEAREA) ? 1 : 0);}inline int			Mapdesc::isPathLengthSampling( void ) {    return ((sampling_method == N_PATHLENGTH) ? 1 : 0);}inline int			Mapdesc::isRangeSampling( void ) {    return ( isParametricDistanceSampling() || isPathLengthSampling() ||	    isSurfaceAreaSampling() ||	    isObjectSpaceParaSampling() ||	    isObjectSpacePathSampling());}inline intMapdesc::isSampling( void ){    return isRangeSampling() || isConstantSampling() || isDomainSampling();}inline int			Mapdesc::isCulling( void ) {    return ((culling_method != N_NOCULLING) ? 1 : 0);}inline int			Mapdesc::isBboxSubdividing( void ) {    return ((bbox_subdividing != N_NOBBOXSUBDIVISION) ? 1 : 0);}#endif /* __glumapdesc_h_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?