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 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 boxOrigin.moveBy(accumulatedOffset); | 385 boxOrigin.moveBy(accumulatedOffset); |
386 FloatRect rect(boxOrigin, size()); | 386 FloatRect rect(boxOrigin, size()); |
387 if (m_truncation != cFullTruncation && visibleToHitTestRequest(request) && l
ocationInContainer.intersects(rect)) { | 387 if (m_truncation != cFullTruncation && visibleToHitTestRequest(request) && l
ocationInContainer.intersects(rect)) { |
388 renderer()->updateHitTestResult(result, flipForWritingMode(locationInCon
tainer.point() - toLayoutSize(accumulatedOffset))); | 388 renderer()->updateHitTestResult(result, flipForWritingMode(locationInCon
tainer.point() - toLayoutSize(accumulatedOffset))); |
389 if (!result.addNodeToRectBasedTestResult(renderer()->node(), request, lo
cationInContainer, rect)) | 389 if (!result.addNodeToRectBasedTestResult(renderer()->node(), request, lo
cationInContainer, rect)) |
390 return true; | 390 return true; |
391 } | 391 } |
392 return false; | 392 return false; |
393 } | 393 } |
394 | 394 |
395 static void paintTextWithShadows(GraphicsContext* context, const Font& font, con
st TextRun& textRun, | 395 static void paintTextWithShadows(GraphicsContext* context, |
396 const AtomicString& emphasisMark, int emphasisM
arkOffset, | 396 const RenderObject* renderer, const Font& font, const TextRun& textRun, |
397 int startOffset, int endOffset, int truncationP
oint, | 397 const AtomicString& emphasisMark, int emphasisMarkOffset, |
398 const FloatPoint& textOrigin, const FloatRect&
boxRect, | 398 int startOffset, int endOffset, int truncationPoint, |
399 const ShadowData* shadow, bool stroked, bool ho
rizontal) | 399 const FloatPoint& textOrigin, const FloatRect& boxRect, |
| 400 const ShadowData* shadow, bool stroked, bool horizontal) |
400 { | 401 { |
401 // Text shadows are disabled when printing. http://crbug.com/258321 | 402 // Text shadows are disabled when printing. http://crbug.com/258321 |
402 bool hasShadow = shadow && !context->printing(); | 403 bool hasShadow = shadow && !context->printing(); |
403 Color fillColor = context->fillColor(); | 404 Color fillColor = context->fillColor(); |
404 | 405 |
405 if (hasShadow) { | 406 if (hasShadow) { |
406 DrawLooper drawLooper; | 407 DrawLooper drawLooper; |
407 do { | 408 do { |
408 int shadowX = horizontal ? shadow->x() : shadow->y(); | 409 int shadowX = horizontal ? shadow->x() : shadow->y(); |
409 int shadowY = horizontal ? shadow->y() : -shadow->x(); | 410 int shadowY = horizontal ? shadow->y() : -shadow->x(); |
410 FloatSize offset(shadowX, shadowY); | 411 FloatSize offset(shadowX, shadowY); |
411 drawLooper.addShadow(offset, shadow->blur(), shadow->color(), | 412 drawLooper.addShadow(offset, shadow->blur(), renderer->resolveColor(
shadow->color()), |
412 DrawLooper::ShadowRespectsTransforms, DrawLooper::ShadowIgnoresA
lpha); | 413 DrawLooper::ShadowRespectsTransforms, DrawLooper::ShadowIgnoresA
lpha); |
413 } while ((shadow = shadow->next())); | 414 } while ((shadow = shadow->next())); |
414 drawLooper.addUnmodifiedContent(); | 415 drawLooper.addUnmodifiedContent(); |
415 context->setDrawLooper(drawLooper); | 416 context->setDrawLooper(drawLooper); |
416 } | 417 } |
417 | 418 |
418 TextRunPaintInfo textRunPaintInfo(textRun); | 419 TextRunPaintInfo textRunPaintInfo(textRun); |
419 textRunPaintInfo.bounds = boxRect; | 420 textRunPaintInfo.bounds = boxRect; |
420 if (startOffset <= endOffset) { | 421 if (startOffset <= endOffset) { |
421 textRunPaintInfo.from = startOffset; | 422 textRunPaintInfo.from = startOffset; |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 LayoutUnit widthOfVisibleText = toRenderText(renderer())->width(m_st
art, m_truncation, textPos(), isFirstLineStyle()); | 521 LayoutUnit widthOfVisibleText = toRenderText(renderer())->width(m_st
art, m_truncation, textPos(), isFirstLineStyle()); |
521 LayoutUnit widthOfHiddenText = m_logicalWidth - widthOfVisibleText; | 522 LayoutUnit widthOfHiddenText = m_logicalWidth - widthOfVisibleText; |
522 // FIXME: The hit testing logic also needs to take this translation
into account. | 523 // FIXME: The hit testing logic also needs to take this translation
into account. |
523 LayoutSize truncationOffset(isLeftToRightDirection() ? widthOfHidden
Text : -widthOfHiddenText, 0); | 524 LayoutSize truncationOffset(isLeftToRightDirection() ? widthOfHidden
Text : -widthOfHiddenText, 0); |
524 adjustedPaintOffset.move(isHorizontal() ? truncationOffset : truncat
ionOffset.transposedSize()); | 525 adjustedPaintOffset.move(isHorizontal() ? truncationOffset : truncat
ionOffset.transposedSize()); |
525 } | 526 } |
526 } | 527 } |
527 | 528 |
528 GraphicsContext* context = paintInfo.context; | 529 GraphicsContext* context = paintInfo.context; |
529 | 530 |
530 RenderStyle* styleToUse = renderer()->style(isFirstLineStyle()); | 531 RenderObject* rendererToUse = renderer(); |
| 532 RenderStyle* styleToUse = rendererToUse->style(isFirstLineStyle()); |
531 | 533 |
532 adjustedPaintOffset.move(0, styleToUse->isHorizontalWritingMode() ? 0 : -log
icalHeight()); | 534 adjustedPaintOffset.move(0, styleToUse->isHorizontalWritingMode() ? 0 : -log
icalHeight()); |
533 | 535 |
534 FloatPoint boxOrigin = locationIncludingFlipping(); | 536 FloatPoint boxOrigin = locationIncludingFlipping(); |
535 boxOrigin.move(adjustedPaintOffset.x(), adjustedPaintOffset.y()); | 537 boxOrigin.move(adjustedPaintOffset.x(), adjustedPaintOffset.y()); |
536 FloatRect boxRect(boxOrigin, LayoutSize(logicalWidth(), logicalHeight())); | 538 FloatRect boxRect(boxOrigin, LayoutSize(logicalWidth(), logicalHeight())); |
537 | 539 |
538 RenderCombineText* combinedText = styleToUse->hasTextCombine() && textRender
er()->isCombineText() && toRenderCombineText(textRenderer())->isCombined() ? toR
enderCombineText(textRenderer()) : 0; | 540 RenderCombineText* combinedText = styleToUse->hasTextCombine() && textRender
er()->isCombineText() && toRenderCombineText(textRenderer())->isCombined() ? toR
enderCombineText(textRenderer()) : 0; |
539 | 541 |
540 bool shouldRotate = !isHorizontal() && !combinedText; | 542 bool shouldRotate = !isHorizontal() && !combinedText; |
(...skipping 11 matching lines...) Expand all Loading... |
552 float textStrokeWidth = styleToUse->textStrokeWidth(); | 554 float textStrokeWidth = styleToUse->textStrokeWidth(); |
553 | 555 |
554 // Text shadows are disabled when printing. http://crbug.com/258321 | 556 // Text shadows are disabled when printing. http://crbug.com/258321 |
555 const ShadowData* textShadow = (context->printing() || paintInfo.forceBlackT
ext()) ? 0 : styleToUse->textShadow(); | 557 const ShadowData* textShadow = (context->printing() || paintInfo.forceBlackT
ext()) ? 0 : styleToUse->textShadow(); |
556 | 558 |
557 if (paintInfo.forceBlackText()) { | 559 if (paintInfo.forceBlackText()) { |
558 textFillColor = Color::black; | 560 textFillColor = Color::black; |
559 textStrokeColor = Color::black; | 561 textStrokeColor = Color::black; |
560 emphasisMarkColor = Color::black; | 562 emphasisMarkColor = Color::black; |
561 } else { | 563 } else { |
562 textFillColor = styleToUse->visitedDependentColor(CSSPropertyWebkitTextF
illColor); | 564 textFillColor = rendererToUse->resolveColor(styleToUse, CSSPropertyWebki
tTextFillColor); |
563 | 565 |
564 bool forceBackgroundToWhite = false; | 566 bool forceBackgroundToWhite = false; |
565 if (isPrinting) { | 567 if (isPrinting) { |
566 if (styleToUse->printColorAdjust() == PrintColorAdjustEconomy) | 568 if (styleToUse->printColorAdjust() == PrintColorAdjustEconomy) |
567 forceBackgroundToWhite = true; | 569 forceBackgroundToWhite = true; |
568 if (textRenderer()->document()->settings() && textRenderer()->docume
nt()->settings()->shouldPrintBackgrounds()) | 570 if (textRenderer()->document()->settings() && textRenderer()->docume
nt()->settings()->shouldPrintBackgrounds()) |
569 forceBackgroundToWhite = false; | 571 forceBackgroundToWhite = false; |
570 } | 572 } |
571 | 573 |
572 // Make the text fill color legible against a white background | 574 // Make the text fill color legible against a white background |
573 if (forceBackgroundToWhite) | 575 if (forceBackgroundToWhite) |
574 textFillColor = correctedTextColor(textFillColor, Color::white); | 576 textFillColor = correctedTextColor(textFillColor, Color::white); |
575 | 577 |
576 textStrokeColor = styleToUse->visitedDependentColor(CSSPropertyWebkitTex
tStrokeColor); | 578 textStrokeColor = rendererToUse->resolveColor(styleToUse, CSSPropertyWeb
kitTextStrokeColor); |
577 | 579 |
578 // Make the text stroke color legible against a white background | 580 // Make the text stroke color legible against a white background |
579 if (forceBackgroundToWhite) | 581 if (forceBackgroundToWhite) |
580 textStrokeColor = correctedTextColor(textStrokeColor, Color::white); | 582 textStrokeColor = correctedTextColor(textStrokeColor, Color::white); |
581 | 583 |
582 emphasisMarkColor = styleToUse->visitedDependentColor(CSSPropertyWebkitT
extEmphasisColor); | 584 emphasisMarkColor = rendererToUse->resolveColor(styleToUse, CSSPropertyW
ebkitTextEmphasisColor); |
583 | 585 |
584 // Make the text stroke color legible against a white background | 586 // Make the text stroke color legible against a white background |
585 if (forceBackgroundToWhite) | 587 if (forceBackgroundToWhite) |
586 emphasisMarkColor = correctedTextColor(emphasisMarkColor, Color::whi
te); | 588 emphasisMarkColor = correctedTextColor(emphasisMarkColor, Color::whi
te); |
587 } | 589 } |
588 | 590 |
589 bool paintSelectedTextOnly = (paintInfo.phase == PaintPhaseSelection); | 591 bool paintSelectedTextOnly = (paintInfo.phase == PaintPhaseSelection); |
590 bool paintSelectedTextSeparately = false; | 592 bool paintSelectedTextSeparately = false; |
591 | 593 |
592 Color selectionFillColor = textFillColor; | 594 Color selectionFillColor = textFillColor; |
(...skipping 26 matching lines...) Expand all Loading... |
619 selectionShadow = shadow; | 621 selectionShadow = shadow; |
620 } | 622 } |
621 | 623 |
622 float strokeWidth = pseudoStyle->textStrokeWidth(); | 624 float strokeWidth = pseudoStyle->textStrokeWidth(); |
623 if (strokeWidth != selectionStrokeWidth) { | 625 if (strokeWidth != selectionStrokeWidth) { |
624 if (!paintSelectedTextOnly) | 626 if (!paintSelectedTextOnly) |
625 paintSelectedTextSeparately = true; | 627 paintSelectedTextSeparately = true; |
626 selectionStrokeWidth = strokeWidth; | 628 selectionStrokeWidth = strokeWidth; |
627 } | 629 } |
628 | 630 |
629 Color stroke = paintInfo.forceBlackText() ? Color::black : pseudoSty
le->visitedDependentColor(CSSPropertyWebkitTextStrokeColor); | 631 Color stroke = paintInfo.forceBlackText() ? Color::black : rendererT
oUse->resolveColor(pseudoStyle, CSSPropertyWebkitTextStrokeColor); |
630 if (stroke != selectionStrokeColor) { | 632 if (stroke != selectionStrokeColor) { |
631 if (!paintSelectedTextOnly) | 633 if (!paintSelectedTextOnly) |
632 paintSelectedTextSeparately = true; | 634 paintSelectedTextSeparately = true; |
633 selectionStrokeColor = stroke; | 635 selectionStrokeColor = stroke; |
634 } | 636 } |
635 } | 637 } |
636 } | 638 } |
637 | 639 |
638 // Set our font. | 640 // Set our font. |
639 const Font& font = styleToUse->font(); | 641 const Font& font = styleToUse->font(); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
709 emphasisMarkOffset = emphasisMarkPosition == TextEmphasisPositionOver ?
-font.fontMetrics().ascent() - font.emphasisMarkDescent(emphasisMark) : font.fon
tMetrics().descent() + font.emphasisMarkAscent(emphasisMark); | 711 emphasisMarkOffset = emphasisMarkPosition == TextEmphasisPositionOver ?
-font.fontMetrics().ascent() - font.emphasisMarkDescent(emphasisMark) : font.fon
tMetrics().descent() + font.emphasisMarkAscent(emphasisMark); |
710 | 712 |
711 if (!paintSelectedTextOnly) { | 713 if (!paintSelectedTextOnly) { |
712 // For stroked painting, we have to change the text drawing mode. It's
probably dangerous to leave that mutated as a side | 714 // For stroked painting, we have to change the text drawing mode. It's
probably dangerous to leave that mutated as a side |
713 // effect, so only when we know we're stroking, do a save/restore. | 715 // effect, so only when we know we're stroking, do a save/restore. |
714 GraphicsContextStateSaver stateSaver(*context, textStrokeWidth > 0); | 716 GraphicsContextStateSaver stateSaver(*context, textStrokeWidth > 0); |
715 | 717 |
716 updateGraphicsContext(context, textFillColor, textStrokeColor, textStrok
eWidth); | 718 updateGraphicsContext(context, textFillColor, textStrokeColor, textStrok
eWidth); |
717 if (!paintSelectedTextSeparately || ePos <= sPos) { | 719 if (!paintSelectedTextSeparately || ePos <= sPos) { |
718 // FIXME: Truncate right-to-left text correctly. | 720 // FIXME: Truncate right-to-left text correctly. |
719 paintTextWithShadows(context, font, textRun, nullAtom, 0, 0, length,
length, textOrigin, boxRect, textShadow, textStrokeWidth > 0, isHorizontal()); | 721 paintTextWithShadows(context, rendererToUse, font, textRun, nullAtom
, 0, 0, length, length, textOrigin, boxRect, textShadow, textStrokeWidth > 0, is
Horizontal()); |
720 } else | 722 } else { |
721 paintTextWithShadows(context, font, textRun, nullAtom, 0, ePos, sPos
, length, textOrigin, boxRect, textShadow, textStrokeWidth > 0, isHorizontal()); | 723 paintTextWithShadows(context, rendererToUse, font, textRun, nullAtom
, 0, ePos, sPos, length, textOrigin, boxRect, textShadow, textStrokeWidth > 0, i
sHorizontal()); |
| 724 } |
722 | 725 |
723 if (!emphasisMark.isEmpty()) { | 726 if (!emphasisMark.isEmpty()) { |
724 updateGraphicsContext(context, emphasisMarkColor, textStrokeColor, t
extStrokeWidth); | 727 updateGraphicsContext(context, emphasisMarkColor, textStrokeColor, t
extStrokeWidth); |
725 | 728 |
726 DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (&ob
jectReplacementCharacter, 1)); | 729 DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (&ob
jectReplacementCharacter, 1)); |
727 TextRun& emphasisMarkTextRun = combinedText ? objectReplacementChara
cterTextRun : textRun; | 730 TextRun& emphasisMarkTextRun = combinedText ? objectReplacementChara
cterTextRun : textRun; |
728 FloatPoint emphasisMarkTextOrigin = combinedText ? FloatPoint(boxOri
gin.x() + boxRect.width() / 2, boxOrigin.y() + font.fontMetrics().ascent()) : te
xtOrigin; | 731 FloatPoint emphasisMarkTextOrigin = combinedText ? FloatPoint(boxOri
gin.x() + boxRect.width() / 2, boxOrigin.y() + font.fontMetrics().ascent()) : te
xtOrigin; |
729 if (combinedText) | 732 if (combinedText) |
730 context->concatCTM(rotation(boxRect, Clockwise)); | 733 context->concatCTM(rotation(boxRect, Clockwise)); |
731 | 734 |
732 if (!paintSelectedTextSeparately || ePos <= sPos) { | 735 if (!paintSelectedTextSeparately || ePos <= sPos) { |
733 // FIXME: Truncate right-to-left text correctly. | 736 // FIXME: Truncate right-to-left text correctly. |
734 paintTextWithShadows(context, combinedText ? combinedText->origi
nalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMarkOffset, 0, leng
th, length, emphasisMarkTextOrigin, boxRect, textShadow, textStrokeWidth > 0, is
Horizontal()); | 737 paintTextWithShadows(context, rendererToUse, combinedText ? comb
inedText->originalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMark
Offset, 0, length, length, emphasisMarkTextOrigin, boxRect, textShadow, textStro
keWidth > 0, isHorizontal()); |
735 } else | 738 } else { |
736 paintTextWithShadows(context, combinedText ? combinedText->origi
nalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMarkOffset, ePos, s
Pos, length, emphasisMarkTextOrigin, boxRect, textShadow, textStrokeWidth > 0, i
sHorizontal()); | 739 paintTextWithShadows(context, rendererToUse, combinedText ? comb
inedText->originalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMark
Offset, ePos, sPos, length, emphasisMarkTextOrigin, boxRect, textShadow, textStr
okeWidth > 0, isHorizontal()); |
| 740 } |
737 | 741 |
738 if (combinedText) | 742 if (combinedText) |
739 context->concatCTM(rotation(boxRect, Counterclockwise)); | 743 context->concatCTM(rotation(boxRect, Counterclockwise)); |
740 } | 744 } |
741 } | 745 } |
742 | 746 |
743 if ((paintSelectedTextOnly || paintSelectedTextSeparately) && sPos < ePos) { | 747 if ((paintSelectedTextOnly || paintSelectedTextSeparately) && sPos < ePos) { |
744 // paint only the text that is selected | 748 // paint only the text that is selected |
745 GraphicsContextStateSaver stateSaver(*context, selectionStrokeWidth > 0)
; | 749 GraphicsContextStateSaver stateSaver(*context, selectionStrokeWidth > 0)
; |
746 | 750 |
747 updateGraphicsContext(context, selectionFillColor, selectionStrokeColor,
selectionStrokeWidth); | 751 updateGraphicsContext(context, selectionFillColor, selectionStrokeColor,
selectionStrokeWidth); |
748 paintTextWithShadows(context, font, textRun, nullAtom, 0, sPos, ePos, le
ngth, textOrigin, boxRect, selectionShadow, selectionStrokeWidth > 0, isHorizont
al()); | 752 paintTextWithShadows(context, rendererToUse, font, textRun, nullAtom, 0,
sPos, ePos, length, textOrigin, boxRect, selectionShadow, selectionStrokeWidth
> 0, isHorizontal()); |
749 if (!emphasisMark.isEmpty()) { | 753 if (!emphasisMark.isEmpty()) { |
750 updateGraphicsContext(context, selectionEmphasisMarkColor, textStrok
eColor, textStrokeWidth); | 754 updateGraphicsContext(context, selectionEmphasisMarkColor, textStrok
eColor, textStrokeWidth); |
751 | 755 |
752 DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (&ob
jectReplacementCharacter, 1)); | 756 DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (&ob
jectReplacementCharacter, 1)); |
753 TextRun& emphasisMarkTextRun = combinedText ? objectReplacementChara
cterTextRun : textRun; | 757 TextRun& emphasisMarkTextRun = combinedText ? objectReplacementChara
cterTextRun : textRun; |
754 FloatPoint emphasisMarkTextOrigin = combinedText ? FloatPoint(boxOri
gin.x() + boxRect.width() / 2, boxOrigin.y() + font.fontMetrics().ascent()) : te
xtOrigin; | 758 FloatPoint emphasisMarkTextOrigin = combinedText ? FloatPoint(boxOri
gin.x() + boxRect.width() / 2, boxOrigin.y() + font.fontMetrics().ascent()) : te
xtOrigin; |
755 if (combinedText) | 759 if (combinedText) |
756 context->concatCTM(rotation(boxRect, Clockwise)); | 760 context->concatCTM(rotation(boxRect, Clockwise)); |
757 | 761 |
758 paintTextWithShadows(context, combinedText ? combinedText->originalF
ont() : font, emphasisMarkTextRun, emphasisMark, emphasisMarkOffset, sPos, ePos,
length, emphasisMarkTextOrigin, boxRect, selectionShadow, selectionStrokeWidth
> 0, isHorizontal()); | 762 paintTextWithShadows(context, rendererToUse, combinedText ? combined
Text->originalFont() : font, emphasisMarkTextRun, emphasisMark, emphasisMarkOffs
et, sPos, ePos, length, emphasisMarkTextOrigin, boxRect, selectionShadow, select
ionStrokeWidth > 0, isHorizontal()); |
759 | 763 |
760 if (combinedText) | 764 if (combinedText) |
761 context->concatCTM(rotation(boxRect, Counterclockwise)); | 765 context->concatCTM(rotation(boxRect, Counterclockwise)); |
762 } | 766 } |
763 } | 767 } |
764 | 768 |
765 // Paint decorations | 769 // Paint decorations |
766 TextDecoration textDecorations = styleToUse->textDecorationsInEffect(); | 770 TextDecoration textDecorations = styleToUse->textDecorationsInEffect(); |
767 if (textDecorations != TextDecorationNone && paintInfo.phase != PaintPhaseSe
lection) { | 771 if (textDecorations != TextDecorationNone && paintInfo.phase != PaintPhaseSe
lection) { |
768 updateGraphicsContext(context, textFillColor, textStrokeColor, textStrok
eWidth); | 772 updateGraphicsContext(context, textFillColor, textStrokeColor, textStrok
eWidth); |
(...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1557 printedCharacters = fprintf(stderr, "\t%s %p", obj->renderName(), obj); | 1561 printedCharacters = fprintf(stderr, "\t%s %p", obj->renderName(), obj); |
1558 const int rendererCharacterOffset = 24; | 1562 const int rendererCharacterOffset = 24; |
1559 for (; printedCharacters < rendererCharacterOffset; printedCharacters++) | 1563 for (; printedCharacters < rendererCharacterOffset; printedCharacters++) |
1560 fputc(' ', stderr); | 1564 fputc(' ', stderr); |
1561 fprintf(stderr, "(%d,%d) \"%s\"\n", start(), start() + len(), value.utf8().d
ata()); | 1565 fprintf(stderr, "(%d,%d) \"%s\"\n", start(), start() + len(), value.utf8().d
ata()); |
1562 } | 1566 } |
1563 | 1567 |
1564 #endif | 1568 #endif |
1565 | 1569 |
1566 } // namespace WebCore | 1570 } // namespace WebCore |
OLD | NEW |