home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1992 The Geometry Center; University of Minnesota
- 1300 South Second Street; Minneapolis, MN 55454, USA;
-
- This file is part of geomview/OOGL. geomview/OOGL is free software;
- you can redistribute it and/or modify it only under the terms given in
- the file COPYING, which you should have received along with this file.
- This and other related software may be obtained via anonymous ftp from
- geom.umn.edu; email: software@geom.umn.edu. */
-
- /* Authors: Charlie Gunn, Stuart Levy, Tamara Munzner, Mark Phillips */
-
- #include "quadP.h"
-
- Quad *
- QuadCopy(oq)
- register Quad *oq;
- {
- register Quad *q;
-
- if (!oq) return NULL;
- if ((q=GeomNew(Quad)) == NULL ||
- (q->p = GeomNewN(QuadP, oq->maxquad)) == NULL){
- GeomError(0,"Can't allocate space for Quad");
- return NULL;
- }
-
- q->flag = oq->flag;
- q->maxquad = oq->maxquad;
- bcopy(oq->p, q->p, oq->maxquad * sizeof(QuadP));
-
- if(oq->flag & QUAD_N) {
- if((q->n = GeomNewN(QuadN, oq->maxquad)) == NULL){
- GeomError(0,"Can't allocate space for quad normals");
- return(NULL);
- }
- bcopy(oq->n, q->n, oq->maxquad * sizeof(QuadN));
- } else
- q->n = NULL;
-
- if(oq->flag & QUAD_C) {
- if((q->c = GeomNewN(QuadC, oq->maxquad)) == NULL){
- GeomError(0,"Can't allocate space for quad colors");
- return(NULL);
- }
- bcopy(oq->c, q->c, oq->maxquad * sizeof(QuadC));
- } else
- q->c = NULL;
-
- return q;
- }
-