}
DrawSelectionIterator::FillCurrentData(){  if (mDone)    return;  if (!mTypes)  {    mCurrentIdx+=mCurrentLength;    if (mCurrentIdx >= mLength)    {      mDone = PR_TRUE;      return;    }    if (mCurrentIdx < (PRUint32)mDetails->mStart)    {      mCurrentLength = mDetails->mStart;    }    else if (mCurrentIdx == (PRUint32)mDetails->mStart)    {//start        mCurrentLength = mDetails->mEnd-mCurrentIdx;    }    else if (mCurrentIdx > (PRUint32)mDetails->mStart)//last unselected part    {      mCurrentLength = mLength - mDetails->mEnd;    }  }  else  {    mCurrentIdx+=mCurrentLength;//advance to this chunk    if (mCurrentIdx >= mLength)      return;    uint8 typevalue = mTypes[mCurrentIdx];    while (typevalue == mTypes[mCurrentIdx+mCurrentLength] && (mCurrentIdx+mCurrentLength) <mLength)    {      mCurrentLength++;    }  }}