12ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* GENERATED SOURCE. DO NOT MODIFY. */ 2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others. 3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 42ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* 52ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller******************************************************************************* 6bfab1e7fec36dff93fb980c546ad64a565faf9fcPaul Duffin* Copyright (C) 2001-2016, International Business Machines 72ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller* Corporation and others. All Rights Reserved. 82ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller******************************************************************************* 92ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller*/ 102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* Written by Simon Montagu, Matitiahu Allouche 112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * (ported from C code written by Markus W. Scherer) 122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpackage android.icu.text; 152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/** 172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * A BidiRun represents a sequence of characters at the same embedding level. 182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * The Bidi algorithm decomposes a piece of text into sequences of characters 19bfab1e7fec36dff93fb980c546ad64a565faf9fcPaul Duffin * at the same embedding level, each such sequence is called a "run". 202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>A BidiRun represents such a run by storing its essential properties, 222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * but does not duplicate the characters which form the run. 232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>The "limit" of the run is the position just after the 252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * last character, i.e., one more than that position. 262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>This class has no public constructor, and its members cannot be 282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * modified by users. 292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @see android.icu.text.Bidi 31836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller * @hide Only a subset of ICU is exposed in Android 322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpublic class BidiRun { 342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller int start; /* first logical position of the run */ 362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller int limit; /* last visual position of the run +1 */ 372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller int insertRemove; /* if >0, flags for inserting LRM/RLM before/after run, 382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if <0, count of bidi controls within run */ 392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller byte level; 402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /* 422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Default constructor 432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Note that members start and limit of a run instance have different 452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * meanings depending whether the run is part of the runs array of a Bidi 462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * object, or if it is a reference returned by getVisualRun() or 472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * getLogicalRun(). 482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * For a member of the runs array of a Bidi object, 492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - start is the first logical position of the run in the source text. 502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - limit is one after the last visual position of the run. 512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * For a reference returned by getLogicalRun() or getVisualRun(), 522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - start is the first logical position of the run in the source text. 532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - limit is one after the last logical position of the run. 542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller BidiRun() 562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this(0, 0, (byte)0); 582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /* 612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Constructor 622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller BidiRun(int start, int limit, byte embeddingLevel) 642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.start = start; 662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.limit = limit; 672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.level = embeddingLevel; 682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /* 712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Copy the content of a BidiRun instance 722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller void copyFrom(BidiRun run) 742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.start = run.start; 762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.limit = run.limit; 772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.level = run.level; 782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.insertRemove = run.insertRemove; 792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Get the first logical position of the run in the source text 832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public int getStart() 852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return start; 872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Get position of one character after the end of the run in the source text 912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public int getLimit() 932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return limit; 952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Get length of run 992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public int getLength() 1012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 1022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return limit - start; 1032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Get level of run 1072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public byte getEmbeddingLevel() 1092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 1102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return level; 1112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Check if run level is odd 1152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return true if the embedding level of this run is odd, i.e. it is a 1162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * right-to-left run. 1172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public boolean isOddRun() 1192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 1202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return (level & 1) == 1; 1212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Check if run level is even 1252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return true if the embedding level of this run is even, i.e. it is a 1262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * left-to-right run. 1272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public boolean isEvenRun() 1292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 1302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return (level & 1) == 0; 1312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Get direction of run 1352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public byte getDirection() 1372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 1382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return (byte)(level & 1); 1392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * String to display run 1432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 144f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Override 1452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public String toString() 1462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller { 1472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return "BidiRun " + start + " - " + limit + " @ " + level; 1482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller} 150