X-Git-Url: https://git.webkit.org/?p=WebKit-https.git;a=blobdiff_plain;f=Source%2FWebCore%2Frendering%2FTextPainter.h;h=3b81473cc8292937fdccb0f08f9b4449f5ae1306;hp=abd8b476ec05e5ea22f66c5ddf72f608cad13487;hb=d41a50a133ba99d6236cd44d1c33407ed14b5ca5;hpb=d2b446aa74a756bbf405b8a073350d603052a786 diff --git a/Source/WebCore/rendering/TextPainter.h b/Source/WebCore/rendering/TextPainter.h index abd8b476ec05..3b81473cc829 100644 --- a/Source/WebCore/rendering/TextPainter.h +++ b/Source/WebCore/rendering/TextPainter.h @@ -1,7 +1,7 @@ /* * (C) 1999 Lars Knoll (knoll@kde.org) * (C) 2000 Dirk Mueller (mueller@kde.org) - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. + * Copyright (C) 2004-2017 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -24,7 +24,6 @@ #include "AffineTransform.h" #include "FloatRect.h" -#include "ShadowData.h" #include "TextFlags.h" #include "TextPaintStyle.h" #include @@ -33,6 +32,7 @@ namespace WebCore { class FontCascade; class RenderCombineText; +class ShadowData; class TextRun; struct TextPaintStyle; @@ -49,19 +49,24 @@ class TextPainter { public: TextPainter(GraphicsContext&); - void setTextPaintStyle(const TextPaintStyle& textPaintStyle) { m_textPaintStyle = textPaintStyle; } - void setSelectionPaintStyle(const TextPaintStyle& selectionPaintStyle) { m_selectionPaintStyle = selectionPaintStyle; } - void setIsHorizontal(bool isHorizontal) { m_textBoxIsHorizontal = isHorizontal; } + void setStyle(const TextPaintStyle& textPaintStyle) { m_style = textPaintStyle; } + void setSelectionStyle(const TextPaintStyle& selectionPaintStyle) { m_selectionStyle = selectionPaintStyle; } + + void setShadow(const ShadowData* shadow) { m_shadow = shadow; } + void setSelectionShadow(const ShadowData* selectionShadow) { m_selectionShadow = selectionShadow; } + void setFont(const FontCascade& font) { m_font = &font; } - void addEmphasis(const AtomicString& emphasisMark, float emphasisMarkOffset, RenderCombineText*); - void addTextShadow(const ShadowData* textShadow, const ShadowData* selectionShadow); - void paintTextInRange(const TextRun&, const FloatRect& boxRect, const FloatPoint& textOrigin, unsigned start, unsigned end); - void paintText(const TextRun&, unsigned length, const FloatRect& boxRect, const FloatPoint& textOrigin, + void setIsHorizontal(bool isHorizontal) { m_textBoxIsHorizontal = isHorizontal; } + + void setEmphasisMark(const AtomicString& mark, float offset, RenderCombineText*); + + void paintRange(const TextRun&, const FloatRect& boxRect, const FloatPoint& textOrigin, unsigned start, unsigned end); + void paint(const TextRun&, unsigned length, const FloatRect& boxRect, const FloatPoint& textOrigin, unsigned selectionStart = 0, unsigned selectionEnd = 0, bool paintSelectedTextOnly = false, bool paintSelectedTextSeparately = false, bool paintNonSelectedTextOnly = false); private: - void drawTextOrEmphasisMarks(const FontCascade&, const TextRun&, const AtomicString& emphasisMark, float emphasisMarkOffset, + void paintTextOrEmphasisMarks(const FontCascade&, const TextRun&, const AtomicString& emphasisMark, float emphasisMarkOffset, const FloatPoint& textOrigin, unsigned startOffset, unsigned endOffset); void paintTextWithShadows(const ShadowData*, const FontCascade&, const TextRun&, const FloatRect& boxRect, const FloatPoint& textOrigin, unsigned startOffset, unsigned endOffset, const AtomicString& emphasisMark, float emphasisMarkOffset, bool stroked); @@ -70,9 +75,9 @@ private: GraphicsContext& m_context; const FontCascade* m_font { nullptr }; - TextPaintStyle m_textPaintStyle; - TextPaintStyle m_selectionPaintStyle; - const ShadowData* m_textShadow { nullptr }; + TextPaintStyle m_style; + TextPaintStyle m_selectionStyle; + const ShadowData* m_shadow { nullptr }; const ShadowData* m_selectionShadow { nullptr }; AtomicString m_emphasisMark; RenderCombineText* m_combinedText { nullptr }; @@ -80,19 +85,13 @@ private: bool m_textBoxIsHorizontal { true }; }; -inline void TextPainter::addEmphasis(const AtomicString& emphasisMark, float emphasisMarkOffset, RenderCombineText* combinedText) +inline void TextPainter::setEmphasisMark(const AtomicString& mark, float offset, RenderCombineText* combinedText) { - m_emphasisMark = emphasisMark; - m_emphasisMarkOffset = emphasisMarkOffset; + m_emphasisMark = mark; + m_emphasisMarkOffset = offset; m_combinedText = combinedText; } -inline void TextPainter::addTextShadow(const ShadowData* textShadow, const ShadowData* selectionShadow) -{ - m_textShadow = textShadow; - m_selectionShadow = selectionShadow; -} - class ShadowApplier { public: ShadowApplier(GraphicsContext&, const ShadowData*, const FloatRect& textRect, bool lastShadowIterationShouldDrawText = true, bool opaque = false, FontOrientation = Horizontal); @@ -114,14 +113,4 @@ private: bool m_didSaveContext : 1; }; -inline bool ShadowApplier::isLastShadowIteration() -{ - return m_shadow && !m_shadow->next(); -} - -inline bool ShadowApplier::shadowIsCompletelyCoveredByText(bool textIsOpaque) -{ - return textIsOpaque && m_shadow && m_shadow->location() == IntPoint() && !m_shadow->radius(); -} - } // namespace WebCore