编辑: f19970615123fa | 2013-02-22 |
pprprev = pprNew;
// or insert the record to the next node // 6. return return(pprNew);
} PATH ppachain pprfirst pprlast ……… pprnext pprprev flags count ……… PATHRECORD pprnext pprprev PD_BEZIERS count ……… PATHRECORD pprnext pprprev flags count ……… PATHRECORD ppr next 指针真的未得到初始化吗? PPATHREC EPATHOBJ::pprFlattenRec(PATHRECORD *ppr) { // 1. create a new record if (newpathrec(&
pprNew,&
maxadd,MAXLONG) != TRUE) return (PPATHREC) NULL;
// 2. init some fields (count/flags ...) pprNew->
count = 0;
pprNew->
flags = (ppr->
flags &
~PD_BEZIERS);
// 3. init the prev-link of the new record pprNew->
pprprev = ppr->
pprprev;
if (pprNew->
pprprev == (PPATHREC) NULL) ppath->
pprfirst = pprNew;
// either insert the record to the head (pprfirst) else pprNew->
pprprev->
pprnext = pprNew;
// or insert the record to the prev node // 4. flattening ...... // 5. init the next-link of the new record pprNew->
pprnext = ppr->
pprnext;
if (pprNew->
pprnext == (PPATHREC) NULL) ppath->
pprlast = pprNew;
// either insert the record to the tail (pprlast) else pprNew->
pprnext->
pprprev = pprNew;
// or insert the record to the next node // 6. return return(pprNew);
} PATH ppachain pprfirst pprlast ……… pprnext pprprev flags count ……… PATHRECORD pprnext pprprev PD_BEZIERS count ……… PATHRECORD pprnext pprprev flags count ……… PATHRECORD ppr pprnext pprprev flags count ……… PATHRECORD next 指针真的未得到初始化吗? PPATHREC EPATHOBJ::pprFlattenRec(PATHRECORD *ppr) { // 1. create a new record if (newpathrec(&
pprNew,&
maxadd,MAXLONG) != TRUE) return (PPATHREC) NULL;
// 2. init some fields (count/flags ...) pprNew->
count = 0;
pprNew->
flags = (ppr->
flags &
~PD_BEZIERS);
// 3. init the prev-link of the new record pprNew->
pprprev = ppr->
pprprev;
if (pprNew->
pprprev == (PPATHREC) NULL) ppath->
pprfirst = pprNew;
// either insert the record to the head (pprfirst) else pprNew->
pprprev->
pprnext = pprNew;
// or insert the record to the prev node // 4. flattening ...... // 5. init the next-link of the new record pprNew->
pprnext = ppr->
pprnext;
if (pprNew->
pprnext == (PPATHREC) NULL) ppath->
pprlast = pprNew;
// either insert the record to the tail (pprlast) else pprNew->
pprnext->
pprprev = pprNew;
// or insert the record to the next node // 6. return return(pprNew);
} PATH ppachain pprfirst pprlast ……… pprnext pprprev flags count ……… PATHRECORD pprnext pprprev PD_BEZIERS count ……… PATHRECORD pprnext pprprev flags count ……… PATHRECORD ppr pprnext pprprev flags count ……… PATHRECORD next 指针真的未得到初始化吗? PPATHREC EPATHOBJ::pprFlattenRec(PATHRECORD *ppr) { // 1. create a new record if (newpathrec(&
pprNew,&
maxadd,MAXLONG) != TRUE) return (PPATHREC) NULL;
// 2. init some fields (count/flags ...) pprNew->
count = 0;
pprNew->
flags = (ppr->
flags &
~PD_BEZIERS);
// 3. init the prev-link of the new record pprNew->
pprprev = ppr->
pprprev;
if (pprNew->
pprprev == (PPATHREC) NULL) ppath->
pprfirst = pprNew;
// either insert the record to the head (pprfirst) else pprNew->
pprprev->
pprnext = pprNew;
// or insert the record to the prev node // 4. flattening ...... // 5. init the next-link of the new record pprNew->
pprnext = ppr->