< prev index next >

modules/graphics/src/main/java/javafx/scene/text/HitInfo.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 21,58 **** * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ ! package com.sun.javafx.scene.text; /** * Represents the hit information in a Text node. */ public class HitInfo { /** * The index of the character which this hit information refers to. */ - private int charIndex; public int getCharIndex() { return charIndex; } - public void setCharIndex(int charIndex) { this.charIndex = charIndex; } /** * Indicates whether the hit is on the leading edge of the character. * If it is false, it represents the trailing edge. */ - private boolean leading; public boolean isLeading() { return leading; } - public void setLeading(boolean leading) { this.leading = leading; } /** * Returns the index of the insertion position. */ public int getInsertionIndex() { ! return leading ? charIndex : charIndex + 1; } @Override public String toString() { ! return "charIndex: " + charIndex + ", isLeading: " + leading; } } --- 21,99 ---- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ ! package javafx.scene.text; ! ! import java.text.BreakIterator; ! ! import com.sun.javafx.scene.text.TextLayout; /** * Represents the hit information in a Text node. + * + * @since 9 */ public class HitInfo { + private int charIndex; + private boolean leading; + private int insertionIndex; + private String text; + + /** + * Create a HitInfo object representing a text index and forward bias. + * + * @param charIndex the character index. + * @param leading whether the hit is on the leading edge of the character. If it is false, it represents the trailing edge. + */ + HitInfo(int charIndex, int insertionIndex, boolean leading, String text) { + this.charIndex = charIndex; + this.leading = leading; + this.insertionIndex = insertionIndex; + this.text = text; + } + /** * The index of the character which this hit information refers to. */ public int getCharIndex() { return charIndex; } /** * Indicates whether the hit is on the leading edge of the character. * If it is false, it represents the trailing edge. */ public boolean isLeading() { return leading; } + private static BreakIterator charIterator = null; /** * Returns the index of the insertion position. */ public int getInsertionIndex() { ! if (insertionIndex == -1) { ! insertionIndex = charIndex; ! if (!leading) { ! if (text != null) { ! // Skip complex character clusters / ligatures. ! if (charIterator == null) { ! charIterator = BreakIterator.getCharacterInstance(); ! } ! charIterator.setText(text); ! int next = charIterator.following(insertionIndex); ! if (next == BreakIterator.DONE) { ! insertionIndex += 1; ! } else { ! insertionIndex = next; ! } ! } else { ! insertionIndex += 1; ! } ! } ! } ! return insertionIndex; } @Override public String toString() { ! return "charIndex: " + charIndex + ", isLeading: " + leading + ", insertionIndex: " + getInsertionIndex(); } }
< prev index next >