if (*aCurIndex >= MAXPOLYPATHSIZE) return;
GetPath(nsFloatPoint aPoints[],nsPoint aPolyPath[],PRInt32 *aCurIndex,ePathTypes  aPathType,PRInt32 &aC1Index,float aFrac){  QBCurve thecurve;  switch (aPathType) {    case eOutside:      thecurve.SetPoints(aPoints[0].x,aPoints[0].y,aPoints[1].x,aPoints[1].y,aPoints[2].x,aPoints[2].y);      thecurve.SubDivide(nsnull,aPolyPath,aCurIndex);      aC1Index = *aCurIndex;      aPolyPath[*aCurIndex].x = (nscoord)aPoints[3].x;      aPolyPath[*aCurIndex].y = (nscoord)aPoints[3].y;      (*aCurIndex)++;      thecurve.SetPoints(aPoints[3].x,aPoints[3].y,aPoints[4].x,aPoints[4].y,aPoints[5].x,aPoints[5].y);      thecurve.SubDivide(nsnull,aPolyPath,aCurIndex);      break;    case eInside:      thecurve.SetPoints(aPoints[6].x,aPoints[6].y,aPoints[7].x,aPoints[7].y,aPoints[8].x,aPoints[8].y);      thecurve.SubDivide(nsnull,aPolyPath,aCurIndex);      aPolyPath[*aCurIndex].x = (nscoord)aPoints[9].x;      aPolyPath[*aCurIndex].y = (nscoord)aPoints[9].y;      (*aCurIndex)++;      thecurve.SetPoints(aPoints[9].x,aPoints[9].y,aPoints[10].x,aPoints[10].y,aPoints[11].x,aPoints[11].y);      thecurve.SubDivide(nsnull,aPolyPath,aCurIndex);     break;    case eCalc:      thecurve.SetPoints( (aPoints[0].x+aPoints[11].x)/2.0f,(aPoints[0].y+aPoints[11].y)/2.0f,                          (aPoints[1].x+aPoints[10].x)/2.0f,(aPoints[1].y+aPoints[10].y)/2.0f,                          (aPoints[2].x+aPoints[9].x)/2.0f,(aPoints[2].y+aPoints[9].y)/2.0f);      thecurve.SubDivide(nsnull,aPolyPath,aCurIndex);      aPolyPath[*aCurIndex].x = (nscoord)((aPoints[3].x+aPoints[8].x)/2.0f);      aPolyPath[*aCurIndex].y = (nscoord)((aPoints[3].y+aPoints[8].y)/2.0f);      (*aCurIndex)++;      thecurve.SetPoints( (aPoints[3].x+aPoints[8].x)/2.0f,(aPoints[3].y+aPoints[8].y)/2.0f,                          (aPoints[4].x+aPoints[7].x)/2.0f,(aPoints[4].y+aPoints[7].y)/2.0f,                          (aPoints[5].x+aPoints[6].x)/2.0f,(aPoints[5].y+aPoints[6].y)/2.0f);      thecurve.SubDivide(nsnull,aPolyPath,aCurIndex);      break;    case eCalcRev:      thecurve.SetPoints( (aPoints[5].x+aPoints[6].x)/2.0f,(aPoints[5].y+aPoints[6].y)/2.0f,                          (aPoints[4].x+aPoints[7].x)/2.0f,(aPoints[4].y+aPoints[7].y)/2.0f,                          (aPoints[3].x+aPoints[8].x)/2.0f,(aPoints[3].y+aPoints[8].y)/2.0f);      thecurve.SubDivide(nsnull,aPolyPath,aCurIndex);      aPolyPath[*aCurIndex].x = (nscoord)((aPoints[2].x+aPoints[9].x)/2.0f);      aPolyPath[*aCurIndex].y = (nscoord)((aPoints[2].y+aPoints[9].y)/2.0f);      (*aCurIndex)++;      thecurve.SetPoints( (aPoints[2].x+aPoints[9].x)/2.0f,(aPoints[2].y+aPoints[9].y)/2.0f,                          (aPoints[1].x+aPoints[10].x)/2.0f,(aPoints[1].y+aPoints[10].y)/2.0f,                          (aPoints[0].x+aPoints[11].x)/2.0f,(aPoints[0].y+aPoints[11].y)/2.0f);      thecurve.SubDivide(nsnull,aPolyPath,aCurIndex);      break;  } }