• Home
  • Raw
  • Download

Lines Matching full:runs

48  * The implementation of the access to same-level-runs and of the reordering
54 * same-level-runs is created. Reordering then is done on this vector.
59 * This is inefficient if there are many very short runs. If the average run
155 pLineBiDi->runs=nullptr; in ubidi_setLine()
317 /* this is done based on runs rather than on levels since levels have in ubidi_getLogicalRun()
321 iRun=pBiDi->runs[0]; in ubidi_getLogicalRun()
324 iRun = pBiDi->runs[i]; in ubidi_getLogicalRun()
348 /* runs API functions ------------------------------------------------------- */
374 start=pBiDi->runs[runIndex].logicalStart; in ubidi_getVisualRun()
380 *pLength=pBiDi->runs[runIndex].visualLimit- in ubidi_getVisualRun()
381 pBiDi->runs[runIndex-1].visualLimit; in ubidi_getVisualRun()
383 *pLength=pBiDi->runs[0].visualLimit; in ubidi_getVisualRun()
393 pBiDi->runs=pBiDi->simpleRuns; in getSingleRun()
397 pBiDi->runs[0].logicalStart=MAKE_INDEX_ODD_PAIR(0, level); in getSingleRun()
398 pBiDi->runs[0].visualLimit=pBiDi->length; in getSingleRun()
399 pBiDi->runs[0].insertRemove=0; in getSingleRun()
402 /* reorder the runs array (L2) ---------------------------------------------- */
405 * Reorder the same-level runs in the runs array.
413 * each sequence of same-level runs consists of only one run each, we
419 * in the last reordering the sequence of the runs at this level or higher
420 * will be all runs, and we don't need the elaborate loop to search for them.
432 * this run and can --runCount. If it is later part of the all-runs
437 Run *runs, tempRun; in reorderLine() local
453 runs=pBiDi->runs; in reorderLine()
465 /* loop for all sequences of runs */ in reorderLine()
467 /* look for a sequence of runs that are all at >=maxLevel */ in reorderLine()
469 while(firstRun<runCount && levels[runs[firstRun].logicalStart]<maxLevel) { in reorderLine()
473 break; /* no more such runs */ in reorderLine()
477 … for(limitRun=firstRun; ++limitRun<runCount && levels[runs[limitRun].logicalStart]>=maxLevel;) {} in reorderLine()
479 /* Swap the entire sequence of runs from firstRun to limitRun-1. */ in reorderLine()
482 tempRun = runs[firstRun]; in reorderLine()
483 runs[firstRun]=runs[endRun]; in reorderLine()
484 runs[endRun]=tempRun; in reorderLine()
490 break; /* no more such runs */ in reorderLine()
506 /* Swap the entire sequence of all runs. (endRun==runCount) */ in reorderLine()
508 tempRun=runs[firstRun]; in reorderLine()
509 runs[firstRun]=runs[runCount]; in reorderLine()
510 runs[runCount]=tempRun; in reorderLine()
517 /* compute the runs array --------------------------------------------------- */
520 Run *runs=pBiDi->runs; in getRunFromLogicalIndex() local
524 length=runs[i].visualLimit-visualStart; in getRunFromLogicalIndex()
525 logicalStart=GET_INDEX(runs[i].logicalStart); in getRunFromLogicalIndex()
536 * Compute the runs array from the levels array.
538 * and the runs are reordered.
539 * Odd-level runs have visualStart on their visual right edge and
549 * This method returns immediately if the runs are already set. This in ubidi_getRuns()
578 /* count the runs, there is at least one non-WS run, and limit>0 */ in ubidi_getRuns()
596 /* allocate and set the runs */ in ubidi_getRuns()
597 Run *runs; in ubidi_getRuns() local
608 runs=pBiDi->runsMemory; in ubidi_getRuns()
613 /* set the runs */ in ubidi_getRuns()
638 runs[runIndex].logicalStart=start; in ubidi_getRuns()
639 runs[runIndex].visualLimit=i-start; in ubidi_getRuns()
640 runs[runIndex].insertRemove=0; in ubidi_getRuns()
646 runs[runIndex].logicalStart=limit; in ubidi_getRuns()
647 runs[runIndex].visualLimit=length-limit; in ubidi_getRuns()
656 pBiDi->runs=runs; in ubidi_getRuns()
665 ADD_ODD_BIT_FROM_LEVEL(runs[i].logicalStart, levels[runs[i].logicalStart]); in ubidi_getRuns()
666 limit+=runs[i].visualLimit; in ubidi_getRuns()
667 runs[i].visualLimit=limit; in ubidi_getRuns()
677 ADD_ODD_BIT_FROM_LEVEL(runs[trailingRun].logicalStart, pBiDi->paraLevel); in ubidi_getRuns()
689 pBiDi->runs[runIndex].insertRemove|=point->flag; in ubidi_getRuns()
700 pBiDi->runs[runIndex].insertRemove--; in ubidi_getRuns()
840 break; /* no more such runs */ in ubidi_reorderVisual()
880 /* we can do the trivial cases without the runs array */ in ubidi_getVisualIndex()
893 Run *runs=pBiDi->runs; in ubidi_getVisualIndex() local
896 /* linear search for the run, search on the visual runs */ in ubidi_getVisualIndex()
898 length=runs[i].visualLimit-visualStart; in ubidi_getVisualIndex()
899 offset=logicalIndex-GET_INDEX(runs[i].logicalStart); in ubidi_getVisualIndex()
901 if(IS_EVEN_RUN(runs[i].logicalStart)) { in ubidi_getVisualIndex()
920 Run *runs=pBiDi->runs; in ubidi_getVisualIndex() local
924 length=runs[i].visualLimit-visualStart; in ubidi_getVisualIndex()
925 insertRemove=runs[i].insertRemove; in ubidi_getVisualIndex()
930 if(visualIndex<runs[i].visualLimit) { in ubidi_getVisualIndex()
940 Run *runs=pBiDi->runs; in ubidi_getVisualIndex() local
948 /* loop on runs */ in ubidi_getVisualIndex()
950 length=runs[i].visualLimit-visualStart; in ubidi_getVisualIndex()
951 insertRemove=runs[i].insertRemove; in ubidi_getVisualIndex()
953 if(visualIndex>=runs[i].visualLimit) { in ubidi_getVisualIndex()
961 if(IS_EVEN_RUN(runs[i].logicalStart)) { in ubidi_getVisualIndex()
963 start=runs[i].logicalStart; in ubidi_getVisualIndex()
968 limit=GET_INDEX(runs[i].logicalStart)+length; in ubidi_getVisualIndex()
985 Run *runs; in ubidi_getLogicalIndex() local
990 /* we can do the trivial cases without the runs array */ in ubidi_getLogicalIndex()
1004 runs=pBiDi->runs; in ubidi_getLogicalIndex()
1010 runs=pBiDi->runs; in ubidi_getLogicalIndex()
1013 length=runs[i].visualLimit-visualStart; in ubidi_getLogicalIndex()
1014 insertRemove=runs[i].insertRemove; in ubidi_getLogicalIndex()
1022 if(visualIndex<(runs[i].visualLimit+markFound)) { in ubidi_getLogicalIndex()
1042 length=runs[i].visualLimit-visualStart; in ubidi_getLogicalIndex()
1043 insertRemove=runs[i].insertRemove; in ubidi_getLogicalIndex()
1045 if(visualIndex>=(runs[i].visualLimit-controlFound+insertRemove)) { in ubidi_getLogicalIndex()
1055 logicalStart=runs[i].logicalStart; in ubidi_getLogicalIndex()
1076 for(i=0; visualIndex>=runs[i].visualLimit; ++i) {} in ubidi_getLogicalIndex()
1084 if(visualIndex>=runs[i].visualLimit) { in ubidi_getLogicalIndex()
1086 } else if(i==0 || visualIndex>=runs[i-1].visualLimit) { in ubidi_getLogicalIndex()
1094 start=runs[i].logicalStart; in ubidi_getLogicalIndex()
1097 /* the offset in runs[i] is visualIndex-runs[i-1].visualLimit */ in ubidi_getLogicalIndex()
1099 visualIndex-=runs[i-1].visualLimit; in ubidi_getLogicalIndex()
1104 return GET_INDEX(start)+runs[i].visualLimit-visualIndex-1; in ubidi_getLogicalIndex()
1118 /* fill a logical-to-visual index map using the runs[] */ in ubidi_getLogicalMap()
1121 Run *runs=pBiDi->runs; in ubidi_getLogicalMap() local
1131 logicalStart=GET_INDEX(runs[j].logicalStart); in ubidi_getLogicalMap()
1132 visualLimit=runs[j].visualLimit; in ubidi_getLogicalMap()
1133 if(IS_EVEN_RUN(runs[j].logicalStart)) { in ubidi_getLogicalMap()
1152 length=runs[i].visualLimit-visualStart; in ubidi_getLogicalMap()
1153 insertRemove=runs[i].insertRemove; in ubidi_getLogicalMap()
1158 logicalStart=GET_INDEX(runs[i].logicalStart); in ubidi_getLogicalMap()
1177 length=runs[i].visualLimit-visualStart; in ubidi_getLogicalMap()
1178 insertRemove=runs[i].insertRemove; in ubidi_getLogicalMap()
1179 /* no control found within previous runs nor within this run */ in ubidi_getLogicalMap()
1183 logicalStart=runs[i].logicalStart; in ubidi_getLogicalMap()
1219 /* fill a visual-to-logical index map using the runs[] */ in ubidi_getVisualMap()
1220 Run *runs=pBiDi->runs, *runsLimit=runs+pBiDi->runCount; in ubidi_getVisualMap() local
1227 for(; runs<runsLimit; ++runs) { in ubidi_getVisualMap()
1228 logicalStart=runs->logicalStart; in ubidi_getVisualMap()
1229 visualLimit=runs->visualLimit; in ubidi_getVisualMap()
1247 runs=pBiDi->runs; in ubidi_getVisualMap()
1250 insertRemove=runs[i].insertRemove; in ubidi_getVisualMap()
1261 insertRemove=runs[i].insertRemove; in ubidi_getVisualMap()
1266 visualStart= i>0 ? runs[i-1].visualLimit : 0; in ubidi_getVisualMap()
1267 for(j=runs[i].visualLimit-1; j>=visualStart && markFound>0; j--) { in ubidi_getVisualMap()
1281 runs=pBiDi->runs; in ubidi_getVisualMap()
1286 length=runs[i].visualLimit-visualStart; in ubidi_getVisualMap()
1287 insertRemove=runs[i].insertRemove; in ubidi_getVisualMap()
1295 visualLimit=runs[i].visualLimit; in ubidi_getVisualMap()
1301 logicalStart=runs[i].logicalStart; in ubidi_getVisualMap()