public virtual java.lang.CharSequence filter(java.lang.CharSequence source, int start , int end, android.text.Spanned dest, int dstart, int dend) { { for (int i = start; i < end; i++) { if (System.Char.IsLower(source[i])) { char[] v = new char[end - start]; android.text.TextUtils.getChars(source, start, end, v, 0); string s = new string(v).ToUpper(); if (source is android.text.Spanned) { android.text.SpannableString sp = new android.text.SpannableString(java.lang.CharSequenceProxy.Wrap (s)); android.text.TextUtils.copySpansFrom((android.text.Spanned)source, start, end, null , sp, 0); return(sp); } else { return(java.lang.CharSequenceProxy.Wrap(s)); } } } } return(null); }
private static int getActive(java.lang.CharSequence text, object meta, int on, int @lock) { if (!(text is android.text.Spanned)) { return(0); } android.text.Spanned sp = (android.text.Spanned)text; int flag = sp.getSpanFlags(meta); if (flag == LOCKED) { return(@lock); } else { if (flag != 0) { return(on); } else { return(0); } } }
public virtual java.lang.CharSequence filter(java.lang.CharSequence source, int start , int end, android.text.Spanned dest, int dstart, int dend) { int keep = mMax - (dest.Length - (dend - dstart)); if (keep <= 0) { return(java.lang.CharSequenceProxy.Wrap(string.Empty)); } else { if (keep >= end - start) { return(null); } else { keep += start; if (System.Char.IsHighSurrogate(source[keep - 1])) { --keep; if (keep == start) { return(java.lang.CharSequenceProxy.Wrap(string.Empty)); } } return(source.SubSequence(start, keep)); } } }
internal SpanSet(android.text.Spanned spanned, int start, int limit) { E[] allSpans = spanned.getSpans <E>(start, limit); int length = allSpans.Length; // These arrays may end up being too large because of empty spans spans = new E[length]; spanStarts = new int[length]; spanEnds = new int[length]; spanFlags = new int[length]; int count = 0; { for (int i = 0; i < length; i++) { E span = allSpans[i]; int spanStart = spanned.getSpanStart(span); int spanEnd = spanned.getSpanEnd(span); if (spanStart == spanEnd) { continue; } int spanFlag = spanned.getSpanFlags(span); int priority = spanFlag & android.text.SpannedClass.SPAN_PRIORITY; if (priority != 0 && count != 0) { int j; for (j = 0; j < count; j++) { int otherPriority = spanFlags[j] & android.text.SpannedClass.SPAN_PRIORITY; if (priority > otherPriority) { break; } } System.Array.Copy(spans, j, spans, j + 1, count - j); System.Array.Copy(spanStarts, j, spanStarts, j + 1, count - j); System.Array.Copy(spanEnds, j, spanEnds, j + 1, count - j); System.Array.Copy(spanFlags, j, spanFlags, j + 1, count - j); spans[j] = span; spanStarts[j] = spanStart; spanEnds[j] = spanEnd; spanFlags[j] = spanFlag; } else { spans[i] = span; spanStarts[i] = spanStart; spanEnds[i] = spanEnd; spanFlags[i] = spanFlag; } count++; } } numberOfSpans = count; }
public override bool commitText(java.lang.CharSequence text, int newCursorPosition ) { if (mTextView == null) { return(base.commitText(text, newCursorPosition)); } if (text is android.text.Spanned) { android.text.Spanned spanned = ((android.text.Spanned)text); android.text.style.SuggestionSpan[] spans = spanned.getSpans <android.text.style.SuggestionSpan >(0, text.Length); mIMM.registerSuggestionSpansForNotification(spans); } mTextView.resetErrorChangedFlag(); bool success = base.commitText(text, newCursorPosition); mTextView.hideErrorIfUnchanged(); return(success); }
internal SpannableStringInternal(java.lang.CharSequence source, int start, int end ) { if (start == 0 && end == source.Length) { mText = source.ToString(); } else { mText = Sharpen.StringHelper.Substring(source.ToString(), start, end); } int initial = [email protected](0); mSpans = new object[initial]; mSpanData = new int[initial * 3]; if (source is android.text.Spanned) { android.text.Spanned sp = (android.text.Spanned)source; object[] spans = sp.getSpans <object>(start, end); { for (int i = 0; i < spans.Length; i++) { int st = sp.getSpanStart(spans[i]); int en = sp.getSpanEnd(spans[i]); int fl = sp.getSpanFlags(spans[i]); if (st < start) { st = start; } if (en > end) { en = end; } setSpan(spans[i], st - start, en - start, fl); } } } }
/// <summary>Analyzes text for bidirectional runs.</summary> /// <remarks>Analyzes text for bidirectional runs. Allocates working buffers.</remarks> internal virtual void setPara(java.lang.CharSequence text, int start, int end, android.text.TextDirectionHeuristic textDir) { mText = text; mTextStart = start; int len = end - start; mLen = len; mPos = 0; if (mWidths == null || mWidths.Length < len) { mWidths = new float[[email protected](len)]; } if (mChars == null || mChars.Length < len) { mChars = new char[[email protected](len)]; } android.text.TextUtils.getChars(text, start, end, mChars, 0); if (text is android.text.Spanned) { android.text.Spanned spanned = (android.text.Spanned)text; android.text.style.ReplacementSpan[] spans = spanned.getSpans <android.text.style.ReplacementSpan >(start, end); { for (int i = 0; i < spans.Length; i++) { int startInPara = spanned.getSpanStart(spans[i]) - start; int endInPara = spanned.getSpanEnd(spans[i]) - start; { for (int j = startInPara; j < endInPara; j++) { mChars[j] = '\uFFFC'; } } } } } if ((textDir == android.text.TextDirectionHeuristics.LTR || textDir == android.text.TextDirectionHeuristics .FIRSTSTRONG_LTR || textDir == android.text.TextDirectionHeuristics.ANYRTL_LTR) && android.text.TextUtils.doesNotNeedBidi(mChars, 0, len)) { mDir = android.text.Layout.DIR_LEFT_TO_RIGHT; mEasy = true; } else { if (mLevels == null || mLevels.Length < len) { mLevels = new byte[[email protected](len)]; } int bidiRequest; if (textDir == android.text.TextDirectionHeuristics.LTR) { bidiRequest = android.text.Layout.DIR_REQUEST_LTR; } else { if (textDir == android.text.TextDirectionHeuristics.RTL) { bidiRequest = android.text.Layout.DIR_REQUEST_RTL; } else { if (textDir == android.text.TextDirectionHeuristics.FIRSTSTRONG_LTR) { bidiRequest = android.text.Layout.DIR_REQUEST_DEFAULT_LTR; } else { if (textDir == android.text.TextDirectionHeuristics.FIRSTSTRONG_RTL) { bidiRequest = android.text.Layout.DIR_REQUEST_DEFAULT_RTL; } else { bool isRtl = textDir.isRtl(mChars, 0, len); bidiRequest = isRtl ? android.text.Layout.DIR_REQUEST_RTL : android.text.Layout.DIR_REQUEST_LTR; } } } } mDir = android.text.AndroidBidi.bidi(bidiRequest, mChars, mLevels, len, false); mEasy = false; } }
public static void copySpansFrom(android.text.Spanned arg0, int arg1, int arg2, java.lang.Class arg3, android.text.Spannable arg4, int arg5) { global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv; @__env.CallStaticVoidMethod(android.text.TextUtils.staticClass, global::android.text.TextUtils._copySpansFrom7944, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg2), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg3), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg4), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg5)); }
private static object getLast(android.text.Spanned text, System.Type kind) { throw new System.NotImplementedException(); }
private void reflow(java.lang.CharSequence s, int where, int before, int after) { if (s != mBase) { return; } java.lang.CharSequence text = mDisplay; int len = text.Length; // seek back to the start of the paragraph int find = android.text.TextUtils.lastIndexOf(text, '\n', where - 1); if (find < 0) { find = 0; } else { find = find + 1; } { int diff = where - find; before += diff; after += diff; where -= diff; } // seek forward to the end of the paragraph int look = android.text.TextUtils.indexOf(text, '\n', where + after); if (look < 0) { look = len; } else { look++; } // we want the index after the \n int change = look - (where + after); before += change; after += change; // seek further out to cover anything that is forced to wrap together if (text is android.text.Spanned) { android.text.Spanned sp = (android.text.Spanned)text; bool again; do { again = false; object[] force = sp.getSpans <android.text.style.WrapTogetherSpan>(where, where + after); { for (int i = 0; i < force.Length; i++) { int st = sp.getSpanStart(force[i]); int en = sp.getSpanEnd(force[i]); if (st < where) { again = true; int diff = where - st; before += diff; after += diff; where -= diff; } if (en > where + after) { again = true; int diff = en - (where + after); before += diff; after += diff; } } } }while (again); } // find affected region of old layout int startline = getLineForOffset(where); int startv = getLineTop(startline); int endline = getLineForOffset(where + before); if (where + after == len) { endline = getLineCount(); } int endv = getLineTop(endline); bool islast = (endline == getLineCount()); // generate new layout for affected text android.text.StaticLayout reflowed; lock (sLock) { reflowed = sStaticLayout; sStaticLayout = null; } if (reflowed == null) { reflowed = new android.text.StaticLayout(null); } else { reflowed.prepare(); } reflowed.generate(text, where, where + after, getPaint(), getWidth(), getAlignment (), getTextDirectionHeuristic(), getSpacingMultiplier(), getSpacingAdd(), false, true, mEllipsizedWidth, mEllipsizeAt); int n = reflowed.getLineCount(); // If the new layout has a blank line at the end, but it is not // the very end of the buffer, then we already have a line that // starts there, so disregard the blank line. if (where + after != len && reflowed.getLineStart(n - 1) == where + after) { n--; } // remove affected lines from old layout mInts.deleteAt(startline, endline - startline); mObjects.deleteAt(startline, endline - startline); // adjust offsets in layout for new height and offsets int ht = reflowed.getLineTop(n); int toppad = 0; int botpad = 0; if (mIncludePad && startline == 0) { toppad = reflowed.getTopPadding(); mTopPadding = toppad; ht -= toppad; } if (mIncludePad && islast) { botpad = reflowed.getBottomPadding(); mBottomPadding = botpad; ht += botpad; } mInts.adjustValuesBelow(startline, START, after - before); mInts.adjustValuesBelow(startline, TOP, startv - endv + ht); // insert new layout int[] ints; if (mEllipsize) { ints = new int[COLUMNS_ELLIPSIZE]; ints[ELLIPSIS_START] = ELLIPSIS_UNDEFINED; } else { ints = new int[COLUMNS_NORMAL]; } android.text.Layout.Directions[] objects = new android.text.Layout.Directions[1]; { for (int i_1 = 0; i_1 < n; i_1++) { ints[START] = reflowed.getLineStart(i_1) | (reflowed.getParagraphDirection(i_1) << DIR_SHIFT) | (reflowed.getLineContainsTab(i_1) ? TAB_MASK : 0); int top = reflowed.getLineTop(i_1) + startv; if (i_1 > 0) { top -= toppad; } ints[TOP] = top; int desc = reflowed.getLineDescent(i_1); if (i_1 == n - 1) { desc += botpad; } ints[DESCENT] = desc; objects[0] = reflowed.getLineDirections(i_1); if (mEllipsize) { ints[ELLIPSIS_START] = reflowed.getEllipsisStart(i_1); ints[ELLIPSIS_COUNT] = reflowed.getEllipsisCount(i_1); } mInts.insertAt(startline + i_1, ints); mObjects.insertAt(startline + i_1, objects); } } lock (sLock) { sStaticLayout = reflowed; reflowed.finish(); } }
/// <summary> /// Returns null if not boring; the width, ascent, and descent in the /// provided Metrics object (or a new one if the provided one was null) /// if boring. /// </summary> /// <remarks> /// Returns null if not boring; the width, ascent, and descent in the /// provided Metrics object (or a new one if the provided one was null) /// if boring. /// </remarks> /// <hide></hide> public static android.text.BoringLayout.Metrics isBoring(java.lang.CharSequence text , android.text.TextPaint paint, android.text.TextDirectionHeuristic textDir, android.text.BoringLayout .Metrics metrics) { char[] temp = android.text.TextUtils.obtain(500); int length = text.Length; bool boring = true; { for (int i = 0; i < length; i += 500) { int j = i + 500; if (j > length) { j = length; } android.text.TextUtils.getChars(text, i, j, temp, 0); int n = j - i; { for (int a = 0; a < n; a++) { char c = temp[a]; if (c == '\n' || c == '\t' || c >= FIRST_RIGHT_TO_LEFT) { boring = false; goto outer_break; } } } if (textDir != null && textDir.isRtl(temp, 0, n)) { boring = false; goto outer_break; } } outer_continue :; } outer_break :; android.text.TextUtils.recycle(temp); if (boring && text is android.text.Spanned) { android.text.Spanned sp = (android.text.Spanned)text; object[] styles = sp.getSpans <android.text.style.ParagraphStyle>(0, length); if (styles.Length > 0) { boring = false; } } if (boring) { android.text.BoringLayout.Metrics fm = metrics; if (fm == null) { fm = new android.text.BoringLayout.Metrics(); } android.text.TextLine line = android.text.TextLine.obtain(); line.set(paint, text, 0, length, android.text.Layout.DIR_LEFT_TO_RIGHT, android.text.Layout .DIRS_ALL_LEFT_TO_RIGHT, false, null); fm.width = (int)android.util.FloatMath.ceil(line.metrics(fm)); android.text.TextLine.recycle(line); return(fm); } else { return(null); } }
private static void withinStyle(java.lang.StringBuilder @out, android.text.Spanned text, int start, int end) { throw new System.NotImplementedException(); }
private static void withinParagraph(java.lang.StringBuilder @out, android.text.Spanned text, int start, int end, int nl, bool last) { throw new System.NotImplementedException(); }
private static void withinHtml(java.lang.StringBuilder @out, android.text.Spanned text) { throw new System.NotImplementedException(); }
public static string toHtml(android.text.Spanned text) { throw new System.NotImplementedException(); }
public virtual java.lang.CharSequence filter(java.lang.CharSequence source, int start , int end, android.text.Spanned dest, int dstart, int dend) { throw new System.NotImplementedException(); }
public java.lang.CharSequence filter(string arg0, int arg1, int arg2, android.text.Spanned arg3, int arg4, int arg5) { return(filter((global::java.lang.CharSequence)(global::java.lang.String) arg0, arg1, arg2, arg3, arg4, arg5)); }
public virtual java.lang.CharSequence filter(java.lang.CharSequence source, int start , int end, android.text.Spanned dest, int dstart, int dend) { onStart(); { // Scan through beginning characters in dest, calling onInvalidCharacter() // for each invalid character. for (int i = 0; i < dstart; i++) { char c = dest[i]; if (!isAllowed(c)) { onInvalidCharacter(c); } } } // Scan through changed characters rejecting disallowed chars android.text.SpannableStringBuilder modification = null; int modoff = 0; { for (int i_1 = start; i_1 < end; i_1++) { char c = source[i_1]; if (isAllowed(c)) { // Character allowed. modoff++; } else { if (mAppendInvalid) { modoff++; } else { if (modification == null) { modification = new android.text.SpannableStringBuilder(source, start, end); modoff = i_1 - start; } modification.delete(modoff, modoff + 1); } onInvalidCharacter(c); } } } { // Scan through remaining characters in dest, calling onInvalidCharacter() // for each invalid character. for (int i_2 = dend; i_2 < dest.Length; i_2++) { char c = dest[i_2]; if (!isAllowed(c)) { onInvalidCharacter(c); } } } onStop(); // Either returns null if we made no changes, // or what we wanted to change it to if there were changes. return(modification); }
public SpannedReplacementCharSequence(android.text.Spanned source, char[] original , char[] replacement) : base(source, original, replacement) { mSpanned = source; }
global::java.lang.CharSequence android.text.InputFilter.filter(java.lang.CharSequence arg0, int arg1, int arg2, android.text.Spanned arg3, int arg4, int arg5) { global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv; if (!IsClrObject) { return(global::MonoJavaBridge.JavaBridge.WrapIJavaObject <global::java.lang.CharSequence>(@__env.CallObjectMethod(this.JvmHandle, global::android.text.InputFilter_._filter7695, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg2), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg3), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg4), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg5))) as java.lang.CharSequence); } else { return(global::MonoJavaBridge.JavaBridge.WrapIJavaObject <global::java.lang.CharSequence>(@__env.CallNonVirtualObjectMethod(this.JvmHandle, global::android.text.InputFilter_.staticClass, global::android.text.InputFilter_._filter7695, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg2), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg3), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg4), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg5))) as java.lang.CharSequence); } }
public static global::java.lang.String toHtml(android.text.Spanned arg0) { global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv; return(global::MonoJavaBridge.JavaBridge.WrapJavaObject(@__env.CallStaticObjectMethod(android.text.Html.staticClass, global::android.text.Html._toHtml7690, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0))) as java.lang.String); }