OLD | NEW |
1 /* | 1 /* |
2 * (C) 1999 Lars Knoll (knoll@kde.org) | 2 * (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 2000 Dirk Mueller (mueller@kde.org) | 3 * (C) 2000 Dirk Mueller (mueller@kde.org) |
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 | 698 |
699 if (!emphasisMark.isEmpty()) { | 699 if (!emphasisMark.isEmpty()) { |
700 updateGraphicsContext(context, emphasisMarkColor, textStrokeColor, t
extStrokeWidth); | 700 updateGraphicsContext(context, emphasisMarkColor, textStrokeColor, t
extStrokeWidth); |
701 | 701 |
702 DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (&ob
jectReplacementCharacter, 1)); | 702 DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (&ob
jectReplacementCharacter, 1)); |
703 TextRun& emphasisMarkTextRun = combinedText ? objectReplacementChara
cterTextRun : textRun; | 703 TextRun& emphasisMarkTextRun = combinedText ? objectReplacementChara
cterTextRun : textRun; |
704 FloatPoint emphasisMarkTextOrigin = combinedText ? FloatPoint(boxOri
gin.x() + boxRect.width() / 2, boxOrigin.y() + font.fontMetrics().ascent()) : te
xtOrigin; | 704 FloatPoint emphasisMarkTextOrigin = combinedText ? FloatPoint(boxOri
gin.x() + boxRect.width() / 2, boxOrigin.y() + font.fontMetrics().ascent()) : te
xtOrigin; |
705 if (combinedText) | 705 if (combinedText) |
706 context->concatCTM(rotation(boxRect, Clockwise)); | 706 context->concatCTM(rotation(boxRect, Clockwise)); |
707 | 707 |
708 if (!paintSelectedTextSeparately || ePos <= sPos) { | 708 int startOffset = 0; |
709 // FIXME: Truncate right-to-left text correctly. | 709 int endOffset = length; |
710 paintTextWithShadows(context, rendererToUse, combinedText ? comb
inedText->originalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMark
Offset, 0, length, length, emphasisMarkTextOrigin, boxRect, textShadow, textStro
keWidth > 0, isHorizontal()); | 710 int paintRunLength = length; |
711 } else { | 711 if (combinedText) { |
712 paintTextWithShadows(context, rendererToUse, combinedText ? comb
inedText->originalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMark
Offset, ePos, sPos, length, emphasisMarkTextOrigin, boxRect, textShadow, textStr
okeWidth > 0, isHorizontal()); | 712 startOffset = 0; |
| 713 endOffset = objectReplacementCharacterTextRun.length(); |
| 714 paintRunLength = endOffset; |
| 715 } else if (paintSelectedTextSeparately && ePos > sPos) { |
| 716 startOffset = ePos; |
| 717 endOffset = sPos; |
713 } | 718 } |
| 719 // FIXME: Truncate right-to-left text correctly. |
| 720 paintTextWithShadows(context, rendererToUse, combinedText ? combined
Text->originalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMarkOffs
et, startOffset, endOffset, paintRunLength, emphasisMarkTextOrigin, boxRect, tex
tShadow, textStrokeWidth > 0, isHorizontal()); |
714 | 721 |
715 if (combinedText) | 722 if (combinedText) |
716 context->concatCTM(rotation(boxRect, Counterclockwise)); | 723 context->concatCTM(rotation(boxRect, Counterclockwise)); |
717 } | 724 } |
718 } | 725 } |
719 | 726 |
720 if ((paintSelectedTextOnly || paintSelectedTextSeparately) && sPos < ePos) { | 727 if ((paintSelectedTextOnly || paintSelectedTextSeparately) && sPos < ePos) { |
721 // paint only the text that is selected | 728 // paint only the text that is selected |
722 GraphicsContextStateSaver stateSaver(*context, selectionStrokeWidth > 0)
; | 729 GraphicsContextStateSaver stateSaver(*context, selectionStrokeWidth > 0)
; |
723 | 730 |
724 updateGraphicsContext(context, selectionFillColor, selectionStrokeColor,
selectionStrokeWidth); | 731 updateGraphicsContext(context, selectionFillColor, selectionStrokeColor,
selectionStrokeWidth); |
725 paintTextWithShadows(context, rendererToUse, font, textRun, nullAtom, 0,
sPos, ePos, length, textOrigin, boxRect, selectionShadow, selectionStrokeWidth
> 0, isHorizontal()); | 732 paintTextWithShadows(context, rendererToUse, font, textRun, nullAtom, 0,
sPos, ePos, length, textOrigin, boxRect, selectionShadow, selectionStrokeWidth
> 0, isHorizontal()); |
726 if (!emphasisMark.isEmpty()) { | 733 if (!emphasisMark.isEmpty()) { |
727 updateGraphicsContext(context, selectionEmphasisMarkColor, textStrok
eColor, textStrokeWidth); | 734 updateGraphicsContext(context, selectionEmphasisMarkColor, textStrok
eColor, textStrokeWidth); |
728 | 735 |
729 DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (&ob
jectReplacementCharacter, 1)); | 736 DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (&ob
jectReplacementCharacter, 1)); |
730 TextRun& emphasisMarkTextRun = combinedText ? objectReplacementChara
cterTextRun : textRun; | 737 TextRun& emphasisMarkTextRun = combinedText ? objectReplacementChara
cterTextRun : textRun; |
731 FloatPoint emphasisMarkTextOrigin = combinedText ? FloatPoint(boxOri
gin.x() + boxRect.width() / 2, boxOrigin.y() + font.fontMetrics().ascent()) : te
xtOrigin; | 738 FloatPoint emphasisMarkTextOrigin = combinedText ? FloatPoint(boxOri
gin.x() + boxRect.width() / 2, boxOrigin.y() + font.fontMetrics().ascent()) : te
xtOrigin; |
732 if (combinedText) | 739 if (combinedText) |
733 context->concatCTM(rotation(boxRect, Clockwise)); | 740 context->concatCTM(rotation(boxRect, Clockwise)); |
734 | 741 |
735 paintTextWithShadows(context, rendererToUse, combinedText ? combined
Text->originalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMarkOffs
et, sPos, ePos, length, emphasisMarkTextOrigin, boxRect, selectionShadow, select
ionStrokeWidth > 0, isHorizontal()); | 742 int startOffset = combinedText ? 0 : sPos; |
| 743 int endOffset = combinedText ? objectReplacementCharacterTextRun.len
gth() : ePos; |
| 744 int paintRunLength = combinedText ? endOffset : length; |
| 745 paintTextWithShadows(context, rendererToUse, combinedText ? combined
Text->originalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMarkOffs
et, startOffset, endOffset, paintRunLength, emphasisMarkTextOrigin, boxRect, sel
ectionShadow, selectionStrokeWidth > 0, isHorizontal()); |
736 | 746 |
737 if (combinedText) | 747 if (combinedText) |
738 context->concatCTM(rotation(boxRect, Counterclockwise)); | 748 context->concatCTM(rotation(boxRect, Counterclockwise)); |
739 } | 749 } |
740 } | 750 } |
741 | 751 |
742 // Paint decorations | 752 // Paint decorations |
743 TextDecoration textDecorations = styleToUse->textDecorationsInEffect(); | 753 TextDecoration textDecorations = styleToUse->textDecorationsInEffect(); |
744 if (textDecorations != TextDecorationNone && paintInfo.phase != PaintPhaseSe
lection) { | 754 if (textDecorations != TextDecorationNone && paintInfo.phase != PaintPhaseSe
lection) { |
745 updateGraphicsContext(context, textFillColor, textStrokeColor, textStrok
eWidth); | 755 updateGraphicsContext(context, textFillColor, textStrokeColor, textStrok
eWidth); |
(...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1554 printedCharacters = fprintf(stderr, "\t%s %p", obj.renderName(), &obj); | 1564 printedCharacters = fprintf(stderr, "\t%s %p", obj.renderName(), &obj); |
1555 const int rendererCharacterOffset = 24; | 1565 const int rendererCharacterOffset = 24; |
1556 for (; printedCharacters < rendererCharacterOffset; printedCharacters++) | 1566 for (; printedCharacters < rendererCharacterOffset; printedCharacters++) |
1557 fputc(' ', stderr); | 1567 fputc(' ', stderr); |
1558 fprintf(stderr, "(%d,%d) \"%s\"\n", start(), start() + len(), value.utf8().d
ata()); | 1568 fprintf(stderr, "(%d,%d) \"%s\"\n", start(), start() + len(), value.utf8().d
ata()); |
1559 } | 1569 } |
1560 | 1570 |
1561 #endif | 1571 #endif |
1562 | 1572 |
1563 } // namespace WebCore | 1573 } // namespace WebCore |
OLD | NEW |