ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

monoChain.h
Go to the documentation of this file.
00001 /*
00002 ** License Applicability. Except to the extent portions of this file are
00003 ** made subject to an alternative license as permitted in the SGI Free
00004 ** Software License B, Version 1.1 (the "License"), the contents of this
00005 ** file are subject only to the provisions of the License. You may not use
00006 ** this file except in compliance with the License. You may obtain a copy
00007 ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
00008 ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
00009 **
00010 ** http://oss.sgi.com/projects/FreeB
00011 **
00012 ** Note that, as provided in the License, the Software is distributed on an
00013 ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
00014 ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
00015 ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
00016 ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
00017 **
00018 ** Original Code. The Original Code is: OpenGL Sample Implementation,
00019 ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
00020 ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
00021 ** Copyright in any portions created by third parties is as indicated
00022 ** elsewhere herein. All Rights Reserved.
00023 **
00024 ** Additional Notice Provisions: The application programming interfaces
00025 ** established by SGI in conjunction with the Original Code are The
00026 ** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
00027 ** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
00028 ** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
00029 ** Window System(R) (Version 1.3), released October 19, 1998. This software
00030 ** was created using the OpenGL(R) version 1.2.1 Sample Implementation
00031 ** published by SGI, but has not been independently verified as being
00032 ** compliant with the OpenGL(R) version 1.2.1 Specification.
00033 **
00034 ** $Date: 2007-10-19 23:21:45 +0000 (Fri, 19 Oct 2007) $ $Revision: 1.1 $
00035 */
00036 /*
00037 ** $Header: /cygdrive/c/RCVS/CVS/ReactOS/reactos/lib/glu32/libnurbs/nurbtess/monoChain.h,v 1.1 2004/02/02 16:39:13 navaraf Exp $
00038 */
00039 
00040 #ifndef _MONO_CHAIN_H
00041 #define _MONO_CHAIN_H
00042 
00043 #include "directedLine.h"
00044 #include "partitionY.h"
00045 
00046 class monoChain;
00047 
00048 class monoChain{
00049   directedLine* chainHead;
00050   directedLine* chainTail;
00051   monoChain* next;
00052   monoChain* prev;
00053   monoChain* nextPolygon; //a list of polygons
00054 
00055   //cached informatin
00056   //bounding box
00057   Real minX, maxX, minY, maxY;
00058   Int isIncrease;
00059 
00060   //for efficiently comparing two chains
00061 
00062   directedLine* current;
00063 
00064 public:
00065   monoChain(directedLine* cHead, directedLine* cTail);
00066   ~monoChain() {}
00067 
00068   inline  void setNext(monoChain* n) {next = n;}
00069   inline void setPrev(monoChain* p) {prev = p;}
00070   inline void setNextPolygon(monoChain* np) {nextPolygon = np;}
00071   inline monoChain* getNext() {return next;}
00072   inline monoChain* getPrev() {return prev;}
00073   inline directedLine* getHead() {return chainHead;}
00074   inline directedLine* getTail() {return chainTail;}
00075 
00076   inline void resetCurrent() { current = ((isIncrease==1)? chainHead:chainTail);}
00077 
00078   void deleteLoop();
00079   void deleteLoopList();
00080 
00081   //insert a new chain between prev and this
00082   void insert(monoChain* nc);
00083 
00084   Int numChainsSingleLoop();
00085   Int numChainsAllLoops();
00086   monoChain** toArrayAllLoops(Int& num_chains);
00087   Int toArraySingleLoop(monoChain** array, Int index);
00088 
00089   Int isKey;
00090   Real keyY; //the current horizotal line
00091   Real chainIntersectHoriz(Real y); //updates current incrementally for efficiency
00092   directedLine* find(Real y);//find dline so that y intersects dline.
00093 
00094   void printOneChain();
00095   void printChainLoop();
00096   void printAllLoops();
00097 
00098 };
00099 
00100 monoChain* directedLineLoopToMonoChainLoop(directedLine* loop);
00101 monoChain* directedLineLoopListToMonoChainLoopList(directedLine* list);
00102 Int MC_sweepY(Int nVertices, monoChain** sortedVertices, sweepRange** ret_ranges);
00103 
00104 void MC_findDiagonals(Int total_num_edges, monoChain** sortedVertices,
00105            sweepRange** ranges, Int& num_diagonals,
00106            directedLine** diagonal_vertices);
00107 
00108 directedLine* MC_partitionY(directedLine *polygons, sampledLine **retSampledLines);
00109 
00110 #endif

Generated on Sat May 26 2012 04:22:19 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.