| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2003, 2006, 2010, 2011 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003, 2006, 2010, 2011 Apple Inc. All rights reserved. |
| 6 * Copyright (c) 2007, 2008, 2010 Google Inc. All rights reserved. | 6 * Copyright (c) 2007, 2008, 2010 Google Inc. All rights reserved. |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 742 return 0; | 742 return 0; |
| 743 | 743 |
| 744 const SimpleFontData* markFontData = markGlyphData.fontData; | 744 const SimpleFontData* markFontData = markGlyphData.fontData; |
| 745 ASSERT(markFontData); | 745 ASSERT(markFontData); |
| 746 if (!markFontData) | 746 if (!markFontData) |
| 747 return 0; | 747 return 0; |
| 748 | 748 |
| 749 return markFontData->fontMetrics().height(); | 749 return markFontData->fontMetrics().height(); |
| 750 } | 750 } |
| 751 | 751 |
| 752 static SkPaint textFillPaint(GraphicsContext* gc, const SimpleFontData* font) | 752 SkPaint Font::textFillPaint(GraphicsContext* gc, const SimpleFontData* font) con
st |
| 753 { | 753 { |
| 754 SkPaint paint = gc->fillPaint(); | 754 SkPaint paint = gc->fillPaint(); |
| 755 font->platformData().setupPaint(&paint, gc); | 755 font->platformData().setupPaint(&paint, gc, this); |
| 756 gc->adjustTextRenderMode(&paint); | 756 gc->adjustTextRenderMode(&paint); |
| 757 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); | 757 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); |
| 758 return paint; | 758 return paint; |
| 759 } | 759 } |
| 760 | 760 |
| 761 static SkPaint textStrokePaint(GraphicsContext* gc, const SimpleFontData* font,
bool isFilling) | 761 SkPaint Font::textStrokePaint(GraphicsContext* gc, const SimpleFontData* font, b
ool isFilling) const |
| 762 { | 762 { |
| 763 SkPaint paint = gc->strokePaint(); | 763 SkPaint paint = gc->strokePaint(); |
| 764 font->platformData().setupPaint(&paint, gc); | 764 font->platformData().setupPaint(&paint, gc, this); |
| 765 gc->adjustTextRenderMode(&paint); | 765 gc->adjustTextRenderMode(&paint); |
| 766 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); | 766 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); |
| 767 if (isFilling) { | 767 if (isFilling) { |
| 768 // If there is a shadow and we filled above, there will already be | 768 // If there is a shadow and we filled above, there will already be |
| 769 // a shadow. We don't want to draw it again or it will be too dark | 769 // a shadow. We don't want to draw it again or it will be too dark |
| 770 // and it will go on top of the fill. | 770 // and it will go on top of the fill. |
| 771 // | 771 // |
| 772 // Note that this isn't strictly correct, since the stroke could be | 772 // Note that this isn't strictly correct, since the stroke could be |
| 773 // very thick and the shadow wouldn't account for this. The "right" | 773 // very thick and the shadow wouldn't account for this. The "right" |
| 774 // thing would be to draw to a new layer and then draw that layer | 774 // thing would be to draw to a new layer and then draw that layer |
| 775 // with a shadow. But this is a lot of extra work for something | 775 // with a shadow. But this is a lot of extra work for something |
| 776 // that isn't normally an issue. | 776 // that isn't normally an issue. |
| 777 paint.setLooper(0); | 777 paint.setLooper(0); |
| 778 } | 778 } |
| 779 return paint; | 779 return paint; |
| 780 } | 780 } |
| 781 | 781 |
| 782 static void paintGlyphs(GraphicsContext* gc, const SimpleFontData* font, | 782 void Font::paintGlyphs(GraphicsContext* gc, const SimpleFontData* font, |
| 783 const Glyph glyphs[], unsigned numGlyphs, | 783 const Glyph glyphs[], unsigned numGlyphs, |
| 784 const SkPoint pos[], const FloatRect& textRect) | 784 const SkPoint pos[], const FloatRect& textRect) const |
| 785 { | 785 { |
| 786 TextDrawingModeFlags textMode = gc->textDrawingMode(); | 786 TextDrawingModeFlags textMode = gc->textDrawingMode(); |
| 787 | 787 |
| 788 // We draw text up to two times (once for fill, once for stroke). | 788 // We draw text up to two times (once for fill, once for stroke). |
| 789 if (textMode & TextModeFill) { | 789 if (textMode & TextModeFill) { |
| 790 SkPaint paint = textFillPaint(gc, font); | 790 SkPaint paint = textFillPaint(gc, font); |
| 791 gc->drawPosText(glyphs, numGlyphs * sizeof(Glyph), pos, textRect, paint)
; | 791 gc->drawPosText(glyphs, numGlyphs * sizeof(Glyph), pos, textRect, paint)
; |
| 792 } | 792 } |
| 793 | 793 |
| 794 if ((textMode & TextModeStroke) && gc->hasStroke()) { | 794 if ((textMode & TextModeStroke) && gc->hasStroke()) { |
| 795 SkPaint paint = textStrokePaint(gc, font, textMode & TextModeFill); | 795 SkPaint paint = textStrokePaint(gc, font, textMode & TextModeFill); |
| 796 gc->drawPosText(glyphs, numGlyphs * sizeof(Glyph), pos, textRect, paint)
; | 796 gc->drawPosText(glyphs, numGlyphs * sizeof(Glyph), pos, textRect, paint)
; |
| 797 } | 797 } |
| 798 } | 798 } |
| 799 | 799 |
| 800 static void paintGlyphsHorizontal(GraphicsContext* gc, const SimpleFontData* fon
t, | 800 void Font::paintGlyphsHorizontal(GraphicsContext* gc, const SimpleFontData* font
, |
| 801 const Glyph glyphs[], unsigned numGlyphs, | 801 const Glyph glyphs[], unsigned numGlyphs, |
| 802 const SkScalar xpos[], SkScalar constY, const FloatRect& textRect) | 802 const SkScalar xpos[], SkScalar constY, const FloatRect& textRect) const |
| 803 { | 803 { |
| 804 TextDrawingModeFlags textMode = gc->textDrawingMode(); | 804 TextDrawingModeFlags textMode = gc->textDrawingMode(); |
| 805 | 805 |
| 806 if (textMode & TextModeFill) { | 806 if (textMode & TextModeFill) { |
| 807 SkPaint paint = textFillPaint(gc, font); | 807 SkPaint paint = textFillPaint(gc, font); |
| 808 gc->drawPosTextH(glyphs, numGlyphs * sizeof(Glyph), xpos, constY, textRe
ct, paint); | 808 gc->drawPosTextH(glyphs, numGlyphs * sizeof(Glyph), xpos, constY, textRe
ct, paint); |
| 809 } | 809 } |
| 810 | 810 |
| 811 if ((textMode & TextModeStroke) && gc->hasStroke()) { | 811 if ((textMode & TextModeStroke) && gc->hasStroke()) { |
| 812 SkPaint paint = textStrokePaint(gc, font, textMode & TextModeFill); | 812 SkPaint paint = textStrokePaint(gc, font, textMode & TextModeFill); |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1096 if (delta <= 0) | 1096 if (delta <= 0) |
| 1097 break; | 1097 break; |
| 1098 } | 1098 } |
| 1099 } | 1099 } |
| 1100 } | 1100 } |
| 1101 | 1101 |
| 1102 return offset; | 1102 return offset; |
| 1103 } | 1103 } |
| 1104 | 1104 |
| 1105 } // namespace blink | 1105 } // namespace blink |
| OLD | NEW |