Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
2.3 KiB

  1. #ifndef __tessmono_h_
  2. #define __tessmono_h_
  3. /*
  4. ** Copyright 1994, Silicon Graphics, Inc.
  5. ** All Rights Reserved.
  6. **
  7. ** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  8. ** the contents of this file may not be disclosed to third parties, copied or
  9. ** duplicated in any form, in whole or in part, without the prior written
  10. ** permission of Silicon Graphics, Inc.
  11. **
  12. ** RESTRICTED RIGHTS LEGEND:
  13. ** Use, duplication or disclosure by the Government is subject to restrictions
  14. ** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  15. ** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  16. ** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  17. ** rights reserved under the Copyright Laws of the United States.
  18. **
  19. ** Author: Eric Veach, July 1994.
  20. */
  21. /* __gl_meshTesselateMonoRegion( face ) tesselates a monotone region
  22. * (what else would it do??) The region must consist of a single
  23. * loop of half-edges (see mesh.h) oriented CCW. "Monotone" in this
  24. * case means that any vertical line intersects the interior of the
  25. * region in a single interval.
  26. *
  27. * Tesselation consists of adding interior edges (actually pairs of
  28. * half-edges), to split the region into non-overlapping triangles.
  29. *
  30. * __gl_meshTesselateInterior( mesh ) tesselates each region of
  31. * the mesh which is marked "inside" the polygon. Each such region
  32. * must be monotone.
  33. *
  34. * __gl_meshDiscardExterior( mesh ) zaps (ie. sets to NULL) all faces
  35. * which are not marked "inside" the polygon. Since further mesh operations
  36. * on NULL faces are not allowed, the main purpose is to clean up the
  37. * mesh so that exterior loops are not represented in the data structure.
  38. *
  39. * __gl_meshSetWindingNumber( mesh, value, keepOnlyBoundary ) resets the
  40. * winding numbers on all edges so that regions marked "inside" the
  41. * polygon have a winding number of "value", and regions outside
  42. * have a winding number of 0.
  43. *
  44. * If keepOnlyBoundary is TRUE, it also deletes all edges which do not
  45. * separate an interior region from an exterior one.
  46. */
  47. void __gl_meshTesselateMonoRegion( GLUface *face );
  48. void __gl_meshTesselateInterior( GLUmesh *mesh );
  49. void __gl_meshDiscardExterior( GLUmesh *mesh );
  50. void __gl_meshSetWindingNumber( GLUmesh *mesh, int value,
  51. GLboolean keepOnlyBoundary );
  52. #endif