java.awt.font.TextHitInfo Java Examples
The following examples show how to use
java.awt.font.TextHitInfo.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: TextLayoutUtils.java From netbeans with Apache License 2.0 | 6 votes |
/** * Get real allocation (possibly not rectangular) of a part of layout. * <br> * It's used when rendering the text layout for filling background highlights of the view. * * @param length Total number of characters for which the allocation is computed. * @param alloc Allocation given by a parent view. * @return */ public static Shape getRealAlloc(TextLayout textLayout, Rectangle2D textLayoutRect, TextHitInfo startHit, TextHitInfo endHit) { // Quick-fix to eliminate missing line in rendering italic "d" - more elaborate fix is needed textLayoutRect = new Rectangle2D.Double(textLayoutRect.getX(), textLayoutRect.getY(), textLayoutRect.getWidth() + 2, textLayoutRect.getHeight()); Rectangle2D.Double zeroBasedRect = ViewUtils.shape2Bounds(textLayoutRect); zeroBasedRect.x = 0; zeroBasedRect.y = 0; Shape ret = textLayout.getVisualHighlightShape(startHit, endHit, zeroBasedRect); AffineTransform transform = AffineTransform.getTranslateInstance( textLayoutRect.getX(), textLayoutRect.getY() ); ret = transform.createTransformedShape(ret); // The following gives bad result for some reason (works for layout but not for caret modelToView()) // Shape ret2 = textLayout.getVisualHighlightShape(startHit.getCharIndex(), endHit.getCharIndex(), textLayoutRect); return ret; }
Example #2
Source File: JTextComponent.java From Java8CN with Apache License 2.0 | 6 votes |
public Rectangle getTextLocation(TextHitInfo offset) { Rectangle r; try { r = modelToView(getCaretPosition()); if (r != null) { Point p = getLocationOnScreen(); r.translate(p.x, p.y); } } catch (BadLocationException ble) { r = null; } if (r == null) r = new Rectangle(); return r; }
Example #3
Source File: CodePointInputMethod.java From openjdk-8-source with GNU General Public License v2.0 | 6 votes |
/** * Move the insertion point one position to the left in the composed text. * Do not let the caret move to the left of the "\\u" or "\\U". */ private void moveCaretLeft() { int len = buffer.length(); if (--insertionPoint < 2) { insertionPoint++; beep(); } else if (format == SURROGATE_PAIR && insertionPoint == 7) { insertionPoint = 8; beep(); } context.dispatchInputMethodEvent( InputMethodEvent.CARET_POSITION_CHANGED, null, 0, TextHitInfo.leading(insertionPoint), null); }
Example #4
Source File: CompositionArea.java From dragonwell8_jdk with GNU General Public License v2.0 | 6 votes |
private Rectangle getCaretRectangle(TextHitInfo caret) { int caretLocation = 0; TextLayout layout = composedTextLayout; if (layout != null) { caretLocation = Math.round(layout.getCaretInfo(caret)[0]); } Graphics g = getGraphics(); FontMetrics metrics = null; try { metrics = g.getFontMetrics(); } finally { g.dispose(); } return new Rectangle(TEXT_ORIGIN_X + caretLocation, TEXT_ORIGIN_Y - metrics.getAscent(), 0, metrics.getAscent() + metrics.getDescent()); }
Example #5
Source File: JTextComponent.java From jdk8u-jdk with GNU General Public License v2.0 | 6 votes |
public Rectangle getTextLocation(TextHitInfo offset) { Rectangle r; try { r = modelToView(getCaretPosition()); if (r != null) { Point p = getLocationOnScreen(); r.translate(p.x, p.y); } } catch (BadLocationException ble) { r = null; } if (r == null) r = new Rectangle(); return r; }
Example #6
Source File: CompositionArea.java From openjdk-jdk9 with GNU General Public License v2.0 | 6 votes |
private Rectangle getCaretRectangle(TextHitInfo caret) { int caretLocation = 0; TextLayout layout = composedTextLayout; if (layout != null) { caretLocation = Math.round(layout.getCaretInfo(caret)[0]); } Graphics g = getGraphics(); FontMetrics metrics = null; try { metrics = g.getFontMetrics(); } finally { g.dispose(); } return new Rectangle(TEXT_ORIGIN_X + caretLocation, TEXT_ORIGIN_Y - metrics.getAscent(), 0, metrics.getAscent() + metrics.getDescent()); }
Example #7
Source File: JTextComponent.java From hottub with GNU General Public License v2.0 | 6 votes |
public Rectangle getTextLocation(TextHitInfo offset) { Rectangle r; try { r = modelToView(getCaretPosition()); if (r != null) { Point p = getLocationOnScreen(); r.translate(p.x, p.y); } } catch (BadLocationException ble) { r = null; } if (r == null) r = new Rectangle(); return r; }
Example #8
Source File: CodePointInputMethod.java From jdk8u60 with GNU General Public License v2.0 | 6 votes |
/** * Move the insertion point one position to the left in the composed text. * Do not let the caret move to the left of the "\\u" or "\\U". */ private void moveCaretLeft() { int len = buffer.length(); if (--insertionPoint < 2) { insertionPoint++; beep(); } else if (format == SURROGATE_PAIR && insertionPoint == 7) { insertionPoint = 8; beep(); } context.dispatchInputMethodEvent( InputMethodEvent.CARET_POSITION_CHANGED, null, 0, TextHitInfo.leading(insertionPoint), null); }
Example #9
Source File: CompositionAreaHandler.java From jdk8u-jdk with GNU General Public License v2.0 | 6 votes |
public Rectangle getTextLocation(TextHitInfo offset) { synchronized (compositionAreaLock) { if (compositionAreaOwner == this && isCompositionAreaVisible()) { return compositionArea.getTextLocation(offset); } else if (composedText != null) { // there's composed text, but it's not displayed, so fake a rectangle return new Rectangle(0, 0, 0, 10); } else { InputMethodRequests requests = getClientInputMethodRequests(); if (requests != null) { return requests.getTextLocation(offset); } else { // passive client, no composed text, so fake a rectangle return new Rectangle(0, 0, 0, 10); } } } }
Example #10
Source File: CompositionAreaHandler.java From dragonwell8_jdk with GNU General Public License v2.0 | 6 votes |
public Rectangle getTextLocation(TextHitInfo offset) { synchronized (compositionAreaLock) { if (compositionAreaOwner == this && isCompositionAreaVisible()) { return compositionArea.getTextLocation(offset); } else if (composedText != null) { // there's composed text, but it's not displayed, so fake a rectangle return new Rectangle(0, 0, 0, 10); } else { InputMethodRequests requests = getClientInputMethodRequests(); if (requests != null) { return requests.getTextLocation(offset); } else { // passive client, no composed text, so fake a rectangle return new Rectangle(0, 0, 0, 10); } } } }
Example #11
Source File: CompositionAreaHandler.java From TencentKona-8 with GNU General Public License v2.0 | 6 votes |
public Rectangle getTextLocation(TextHitInfo offset) { synchronized (compositionAreaLock) { if (compositionAreaOwner == this && isCompositionAreaVisible()) { return compositionArea.getTextLocation(offset); } else if (composedText != null) { // there's composed text, but it's not displayed, so fake a rectangle return new Rectangle(0, 0, 0, 10); } else { InputMethodRequests requests = getClientInputMethodRequests(); if (requests != null) { return requests.getTextLocation(offset); } else { // passive client, no composed text, so fake a rectangle return new Rectangle(0, 0, 0, 10); } } } }
Example #12
Source File: InputMethodContext.java From TencentKona-8 with GNU General Public License v2.0 | 6 votes |
public void dispatchInputMethodEvent(int id, AttributedCharacterIterator text, int committedCharacterCount, TextHitInfo caret, TextHitInfo visiblePosition) { // We need to record the client component as the source so // that we have correct information if we later have to break up this // event into key events. Component source; source = getClientComponent(); if (source != null) { InputMethodEvent event = new InputMethodEvent(source, id, text, committedCharacterCount, caret, visiblePosition); if (haveActiveClient() && !useBelowTheSpotInput()) { source.dispatchEvent(event); } else { getCompositionAreaHandler(true).processInputMethodEvent(event); } } }
Example #13
Source File: InputMethodContext.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 6 votes |
public void dispatchInputMethodEvent(int id, AttributedCharacterIterator text, int committedCharacterCount, TextHitInfo caret, TextHitInfo visiblePosition) { // We need to record the client component as the source so // that we have correct information if we later have to break up this // event into key events. Component source; source = getClientComponent(); if (source != null) { InputMethodEvent event = new InputMethodEvent(source, id, text, committedCharacterCount, caret, visiblePosition); if (haveActiveClient() && !useBelowTheSpotInput()) { source.dispatchEvent(event); } else { getCompositionAreaHandler(true).processInputMethodEvent(event); } } }
Example #14
Source File: JTextComponent.java From jdk1.8-source-analysis with Apache License 2.0 | 6 votes |
public Rectangle getTextLocation(TextHitInfo offset) { Rectangle r; try { r = modelToView(getCaretPosition()); if (r != null) { Point p = getLocationOnScreen(); r.translate(p.x, p.y); } } catch (BadLocationException ble) { r = null; } if (r == null) r = new Rectangle(); return r; }
Example #15
Source File: JTextComponent.java From openjdk-jdk9 with GNU General Public License v2.0 | 6 votes |
public TextHitInfo getLocationOffset(int x, int y) { if (composedTextAttribute == null) { return null; } else { Point p = getLocationOnScreen(); p.x = x - p.x; p.y = y - p.y; int pos = viewToModel(p); if ((pos >= composedTextStart.getOffset()) && (pos <= composedTextEnd.getOffset())) { return TextHitInfo.leading(pos - composedTextStart.getOffset()); } else { return null; } } }
Example #16
Source File: CodePointInputMethod.java From jdk8u_jdk with GNU General Public License v2.0 | 6 votes |
/** * Move the insertion point one position to the left in the composed text. * Do not let the caret move to the left of the "\\u" or "\\U". */ private void moveCaretLeft() { int len = buffer.length(); if (--insertionPoint < 2) { insertionPoint++; beep(); } else if (format == SURROGATE_PAIR && insertionPoint == 7) { insertionPoint = 8; beep(); } context.dispatchInputMethodEvent( InputMethodEvent.CARET_POSITION_CHANGED, null, 0, TextHitInfo.leading(insertionPoint), null); }
Example #17
Source File: InputMethodContext.java From dragonwell8_jdk with GNU General Public License v2.0 | 6 votes |
public void dispatchInputMethodEvent(int id, AttributedCharacterIterator text, int committedCharacterCount, TextHitInfo caret, TextHitInfo visiblePosition) { // We need to record the client component as the source so // that we have correct information if we later have to break up this // event into key events. Component source; source = getClientComponent(); if (source != null) { InputMethodEvent event = new InputMethodEvent(source, id, text, committedCharacterCount, caret, visiblePosition); if (haveActiveClient() && !useBelowTheSpotInput()) { source.dispatchEvent(event); } else { getCompositionAreaHandler(true).processInputMethodEvent(event); } } }
Example #18
Source File: JTextComponent.java From hottub with GNU General Public License v2.0 | 6 votes |
public TextHitInfo getLocationOffset(int x, int y) { if (composedTextAttribute == null) { return null; } else { Point p = getLocationOnScreen(); p.x = x - p.x; p.y = y - p.y; int pos = viewToModel(p); if ((pos >= composedTextStart.getOffset()) && (pos <= composedTextEnd.getOffset())) { return TextHitInfo.leading(pos - composedTextStart.getOffset()); } else { return null; } } }
Example #19
Source File: InputMethodContext.java From openjdk-8-source with GNU General Public License v2.0 | 6 votes |
public void dispatchInputMethodEvent(int id, AttributedCharacterIterator text, int committedCharacterCount, TextHitInfo caret, TextHitInfo visiblePosition) { // We need to record the client component as the source so // that we have correct information if we later have to break up this // event into key events. Component source; source = getClientComponent(); if (source != null) { InputMethodEvent event = new InputMethodEvent(source, id, text, committedCharacterCount, caret, visiblePosition); if (haveActiveClient() && !useBelowTheSpotInput()) { source.dispatchEvent(event); } else { getCompositionAreaHandler(true).processInputMethodEvent(event); } } }
Example #20
Source File: JTextComponent.java From openjdk-8-source with GNU General Public License v2.0 | 6 votes |
public TextHitInfo getLocationOffset(int x, int y) { if (composedTextAttribute == null) { return null; } else { Point p = getLocationOnScreen(); p.x = x - p.x; p.y = y - p.y; int pos = viewToModel(p); if ((pos >= composedTextStart.getOffset()) && (pos <= composedTextEnd.getOffset())) { return TextHitInfo.leading(pos - composedTextStart.getOffset()); } else { return null; } } }
Example #21
Source File: CompositionArea.java From TencentKona-8 with GNU General Public License v2.0 | 5 votes |
TextHitInfo getLocationOffset(int x, int y) { TextLayout layout = composedTextLayout; if (layout == null) { return null; } else { Point location = getLocationOnScreen(); x -= location.x + TEXT_ORIGIN_X; y -= location.y + TEXT_ORIGIN_Y; if (layout.getBounds().contains(x, y)) { return layout.hitTestChar(x, y); } else { return null; } } }
Example #22
Source File: CodePointInputMethod.java From openjdk-jdk9 with GNU General Public License v2.0 | 5 votes |
/** * Send the committed text to the client. */ private void sendCommittedText() { AttributedString as = new AttributedString(buffer.toString()); context.dispatchInputMethodEvent( InputMethodEvent.INPUT_METHOD_TEXT_CHANGED, as.getIterator(), buffer.length(), TextHitInfo.leading(insertionPoint), null); buffer.setLength(0); insertionPoint = 0; format = UNSET; }
Example #23
Source File: X11InputMethod.java From jdk8u-dev-jdk with GNU General Public License v2.0 | 5 votes |
/** * Creates an input method event from the arguments given * and posts it on the AWT event queue. For arguments, * see InputMethodEvent. Called by input method. * * @see java.awt.event.InputMethodEvent#InputMethodEvent */ private void postInputMethodEvent(int id, AttributedCharacterIterator text, int committedCharacterCount, TextHitInfo caret, TextHitInfo visiblePosition, long when) { Component source = getClientComponent(); if (source != null) { InputMethodEvent event = new InputMethodEvent(source, id, when, text, committedCharacterCount, caret, visiblePosition); SunToolkit.postEvent(SunToolkit.targetToAppContext(source), (AWTEvent)event); } }
Example #24
Source File: CodePointInputMethod.java From jdk8u_jdk with GNU General Public License v2.0 | 5 votes |
/** * Send the composed text to the client. */ private void sendComposedText() { AttributedString as = new AttributedString(buffer.toString()); as.addAttribute(TextAttribute.INPUT_METHOD_HIGHLIGHT, InputMethodHighlight.SELECTED_RAW_TEXT_HIGHLIGHT); context.dispatchInputMethodEvent( InputMethodEvent.INPUT_METHOD_TEXT_CHANGED, as.getIterator(), 0, TextHitInfo.leading(insertionPoint), null); }
Example #25
Source File: TextMeasureTests.java From TencentKona-8 with GNU General Public License v2.0 | 5 votes |
public void runTest(Object ctx, int numReps) { TLExContext tlctx = (TLExContext)ctx; TextLayout tl = tlctx.tl; TextHitInfo[] hits = tlctx.hits; TextHitInfo hit; do { for (int i = 0; i < hits.length; ++i) { hit = tl.getNextLeftHit(hits[i]); } } while (--numReps >= 0); }
Example #26
Source File: CompositionArea.java From jdk8u60 with GNU General Public License v2.0 | 5 votes |
TextHitInfo getLocationOffset(int x, int y) { TextLayout layout = composedTextLayout; if (layout == null) { return null; } else { Point location = getLocationOnScreen(); x -= location.x + TEXT_ORIGIN_X; y -= location.y + TEXT_ORIGIN_Y; if (layout.getBounds().contains(x, y)) { return layout.hitTestChar(x, y); } else { return null; } } }
Example #27
Source File: TextMeasureTests.java From openjdk-8-source with GNU General Public License v2.0 | 5 votes |
public void runTest(Object ctx, int numReps) { TLExContext tlctx = (TLExContext)ctx; TextLayout tl = tlctx.tl; int numhits = tlctx.hits.length; Rectangle2D lb = tlctx.lb; TextHitInfo hit; for (int i = 0; i <= numhits; ++i) { float x = (float)(lb.getMinX() + lb.getWidth() * i / numhits); float y = (float)(lb.getMinY() + lb.getHeight() * i / numhits); hit = tl.hitTestChar(x, y, lb); } }
Example #28
Source File: JTextComponent.java From openjdk-jdk9 with GNU General Public License v2.0 | 5 votes |
private void setInputMethodCaretPosition(InputMethodEvent e) { int dot; if (composedTextExists()) { dot = composedTextStart.getOffset(); if (!(caret instanceof ComposedTextCaret)) { if (composedTextCaret == null) { composedTextCaret = new ComposedTextCaret(); } originalCaret = caret; // Sets composed text caret exchangeCaret(originalCaret, composedTextCaret); } TextHitInfo caretPos = e.getCaret(); if (caretPos != null) { int index = caretPos.getInsertionIndex(); dot += index; if (index == 0) { // Scroll the component if needed so that the composed text // becomes visible. try { Rectangle d = modelToView(dot); Rectangle end = modelToView(composedTextEnd.getOffset()); Rectangle b = getBounds(); d.x += Math.min(end.x - d.x, b.width); scrollRectToVisible(d); } catch (BadLocationException ble) {} } } caret.setDot(dot); } else if (caret instanceof ComposedTextCaret) { dot = caret.getDot(); // Restores original caret exchangeCaret(caret, originalCaret); caret.setDot(dot); } }
Example #29
Source File: ZyCaret.java From binnavi with Apache License 2.0 | 5 votes |
private int calcHitPosition(final int caretPosition, final double x, final double y, final double zoomFactor) { boolean switched = false; int lp = m_mouse_pressed_y; int lr = m_mouse_released_y; if (lp > lr) { lp = m_mouse_released_y; lr = m_mouse_pressed_y; switched = true; } final int linecount = m_content.getLineCount(); final double height = (float) m_content.getLineHeight(); int maxIndex = caretPosition; for (int line = lp; line <= lr; line++) { double deltaY = 0; if (switched) { deltaY = height * zoomFactor * line; } else { deltaY = -(height * zoomFactor * (linecount - line)); } final TextLayout textLayout = m_content.getLineContent(line).getTextLayout(); final TextHitInfo hitInfo = textLayout.hitTestChar((float) x, (float) (y + deltaY), textLayout.getBounds()); final int insertionIndex = hitInfo.getInsertionIndex(); if ((caretPosition < insertionIndex) && (insertionIndex > maxIndex)) { maxIndex = insertionIndex; } } return maxIndex; }
Example #30
Source File: CompositionArea.java From jdk8u-jdk with GNU General Public License v2.0 | 5 votes |
/** * Sets the caret to be displayed in this composition area. * The text is not changed. */ void setCaret(TextHitInfo caret) { this.caret = caret; if (compositionWindow.isVisible()) { Graphics g = getGraphics(); try { paint(g); } finally { g.dispose(); } } }