Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Side by Side Diff: third_party/WebKit/Source/platform/graphics/GraphicsContext.cpp

Issue 2845883002: [LayoutNG] Add NG-specific DrawText support to GraphicsContext (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Google Inc. All rights reserved. 3 * Copyright (C) 2013 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 PaintFlags flags(ImmutableState()->FillFlags()); 732 PaintFlags flags(ImmutableState()->FillFlags());
733 flags.setColor(StrokeColor().Rgb()); 733 flags.setColor(StrokeColor().Rgb());
734 flags.setStyle(PaintFlags::kStroke_Style); 734 flags.setStyle(PaintFlags::kStroke_Style);
735 flags.setStrokeWidth(1); 735 flags.setStrokeWidth(1);
736 736
737 sk_rect.inset(0.5f, 0.5f); 737 sk_rect.inset(0.5f, 0.5f);
738 DrawRect(sk_rect, flags); 738 DrawRect(sk_rect, flags);
739 } 739 }
740 } 740 }
741 741
742 void GraphicsContext::DrawText(const Font& font, 742 template <typename TextPaintInfo>
743 const TextRunPaintInfo& run_info, 743 void GraphicsContext::DrawTextInternal(const Font& font,
744 const FloatPoint& point, 744 const TextPaintInfo& text_info,
745 const PaintFlags& flags) { 745 const FloatPoint& point,
746 const PaintFlags& flags) {
746 if (ContextDisabled()) 747 if (ContextDisabled())
747 return; 748 return;
748 749
749 if (font.DrawText(canvas_, run_info, point, device_scale_factor_, flags)) 750 if (font.DrawText(canvas_, text_info, point, device_scale_factor_, flags))
750 paint_controller_.SetTextPainted(); 751 paint_controller_.SetTextPainted();
751 } 752 }
752 753
754 void GraphicsContext::DrawText(const Font& font,
755 const TextRunPaintInfo& text_info,
756 const FloatPoint& point,
757 const PaintFlags& flags) {
758 DrawTextInternal(font, text_info, point, flags);
759 }
760
761 void GraphicsContext::DrawText(const Font& font,
762 const TextFragmentPaintInfo& text_info,
763 const FloatPoint& point,
764 const PaintFlags& flags) {
765 DrawTextInternal(font, text_info, point, flags);
766 }
767
753 template <typename DrawTextFunc> 768 template <typename DrawTextFunc>
754 void GraphicsContext::DrawTextPasses(const DrawTextFunc& draw_text) { 769 void GraphicsContext::DrawTextPasses(const DrawTextFunc& draw_text) {
755 TextDrawingModeFlags mode_flags = TextDrawingMode(); 770 TextDrawingModeFlags mode_flags = TextDrawingMode();
756 771
757 if (mode_flags & kTextModeFill) { 772 if (mode_flags & kTextModeFill) {
758 draw_text(ImmutableState()->FillFlags()); 773 draw_text(ImmutableState()->FillFlags());
759 } 774 }
760 775
761 if ((mode_flags & kTextModeStroke) && GetStrokeStyle() != kNoStroke && 776 if ((mode_flags & kTextModeStroke) && GetStrokeStyle() != kNoStroke &&
762 StrokeThickness() > 0) { 777 StrokeThickness() > 0) {
763 PaintFlags stroke_flags(ImmutableState()->StrokeFlags()); 778 PaintFlags stroke_flags(ImmutableState()->StrokeFlags());
764 if (mode_flags & kTextModeFill) { 779 if (mode_flags & kTextModeFill) {
765 // shadow was already applied during fill pass 780 // shadow was already applied during fill pass
766 stroke_flags.setLooper(0); 781 stroke_flags.setLooper(0);
767 } 782 }
768 draw_text(stroke_flags); 783 draw_text(stroke_flags);
769 } 784 }
770 } 785 }
771 786
772 void GraphicsContext::DrawText(const Font& font, 787 template <typename TextPaintInfo>
773 const TextRunPaintInfo& run_info, 788 void GraphicsContext::DrawTextInternal(const Font& font,
774 const FloatPoint& point) { 789 const TextPaintInfo& text_info,
790 const FloatPoint& point) {
775 if (ContextDisabled()) 791 if (ContextDisabled())
776 return; 792 return;
777 793
778 DrawTextPasses([&font, &run_info, &point, this](const PaintFlags& flags) { 794 DrawTextPasses([&font, &text_info, &point, this](const PaintFlags& flags) {
779 if (font.DrawText(canvas_, run_info, point, device_scale_factor_, flags)) 795 if (font.DrawText(canvas_, text_info, point, device_scale_factor_, flags))
780 paint_controller_.SetTextPainted(); 796 paint_controller_.SetTextPainted();
781 }); 797 });
782 } 798 }
783 799
784 void GraphicsContext::DrawEmphasisMarks(const Font& font, 800 void GraphicsContext::DrawText(const Font& font,
785 const TextRunPaintInfo& run_info, 801 const TextRunPaintInfo& text_info,
786 const AtomicString& mark, 802 const FloatPoint& point) {
787 const FloatPoint& point) { 803 DrawTextInternal(font, text_info, point);
804 }
805
806 void GraphicsContext::DrawText(const Font& font,
807 const TextFragmentPaintInfo& text_info,
808 const FloatPoint& point) {
809 DrawTextInternal(font, text_info, point);
810 }
811
812 template <typename TextPaintInfo>
813 void GraphicsContext::DrawEmphasisMarksInternal(const Font& font,
814 const TextPaintInfo& text_info,
815 const AtomicString& mark,
816 const FloatPoint& point) {
788 if (ContextDisabled()) 817 if (ContextDisabled())
789 return; 818 return;
790 819
791 DrawTextPasses( 820 DrawTextPasses(
792 [&font, &run_info, &mark, &point, this](const PaintFlags& flags) { 821 [&font, &text_info, &mark, &point, this](const PaintFlags& flags) {
793 font.DrawEmphasisMarks(canvas_, run_info, mark, point, 822 font.DrawEmphasisMarks(canvas_, text_info, mark, point,
794 device_scale_factor_, flags); 823 device_scale_factor_, flags);
795 }); 824 });
796 } 825 }
797 826
827 void GraphicsContext::DrawEmphasisMarks(const Font& font,
828 const TextRunPaintInfo& text_info,
829 const AtomicString& mark,
830 const FloatPoint& point) {
831 DrawEmphasisMarksInternal(font, text_info, mark, point);
832 }
833
834 void GraphicsContext::DrawEmphasisMarks(const Font& font,
835 const TextFragmentPaintInfo& text_info,
836 const AtomicString& mark,
837 const FloatPoint& point) {
838 DrawEmphasisMarksInternal(font, text_info, mark, point);
839 }
840
798 void GraphicsContext::DrawBidiText( 841 void GraphicsContext::DrawBidiText(
799 const Font& font, 842 const Font& font,
800 const TextRunPaintInfo& run_info, 843 const TextRunPaintInfo& run_info,
801 const FloatPoint& point, 844 const FloatPoint& point,
802 Font::CustomFontNotReadyAction custom_font_not_ready_action) { 845 Font::CustomFontNotReadyAction custom_font_not_ready_action) {
803 if (ContextDisabled()) 846 if (ContextDisabled())
804 return; 847 return;
805 848
806 DrawTextPasses([&font, &run_info, &point, custom_font_not_ready_action, 849 DrawTextPasses([&font, &run_info, &point, custom_font_not_ready_action,
807 this](const PaintFlags& flags) { 850 this](const PaintFlags& flags) {
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
1361 break; 1404 break;
1362 default: 1405 default:
1363 NOTREACHED(); 1406 NOTREACHED();
1364 break; 1407 break;
1365 } 1408 }
1366 1409
1367 return nullptr; 1410 return nullptr;
1368 } 1411 }
1369 1412
1370 } // namespace blink 1413 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698