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

Side by Side Diff: third_party/WebKit/Source/core/paint/SVGInlineTextBoxPainter.cpp

Issue 2640983002: Rename paint data structures (Closed)
Patch Set: Clean up comments, fix mac build Created 3 years, 11 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/paint/SVGInlineTextBoxPainter.h" 5 #include "core/paint/SVGInlineTextBoxPainter.h"
6 6
7 #include "core/editing/Editor.h" 7 #include "core/editing/Editor.h"
8 #include "core/editing/markers/DocumentMarkerController.h" 8 #include "core/editing/markers/DocumentMarkerController.h"
9 #include "core/editing/markers/RenderedDocumentMarker.h" 9 #include "core/editing/markers/RenderedDocumentMarker.h"
10 #include "core/frame/LocalFrame.h" 10 #include "core/frame/LocalFrame.h"
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 Path path; 343 Path path;
344 path.addRect(FloatRect(decorationOrigin, 344 path.addRect(FloatRect(decorationOrigin,
345 FloatSize(fragment.width, thickness / scalingFactor))); 345 FloatSize(fragment.width, thickness / scalingFactor)));
346 346
347 const SVGComputedStyle& svgDecorationStyle = decorationStyle.svgStyle(); 347 const SVGComputedStyle& svgDecorationStyle = decorationStyle.svgStyle();
348 348
349 for (int i = 0; i < 3; i++) { 349 for (int i = 0; i < 3; i++) {
350 switch (svgDecorationStyle.paintOrderType(i)) { 350 switch (svgDecorationStyle.paintOrderType(i)) {
351 case PT_FILL: 351 case PT_FILL:
352 if (svgDecorationStyle.hasFill()) { 352 if (svgDecorationStyle.hasFill()) {
353 SkPaint fillPaint; 353 PaintFlags fillPaint;
354 if (!SVGPaintContext::paintForLayoutObject( 354 if (!SVGPaintContext::paintForLayoutObject(
355 paintInfo, decorationStyle, *decorationLayoutObject, 355 paintInfo, decorationStyle, *decorationLayoutObject,
356 ApplyToFillMode, fillPaint)) 356 ApplyToFillMode, fillPaint))
357 break; 357 break;
358 fillPaint.setAntiAlias(true); 358 fillPaint.setAntiAlias(true);
359 paintInfo.context.drawPath(path.getSkPath(), fillPaint); 359 paintInfo.context.drawPath(path.getSkPath(), fillPaint);
360 } 360 }
361 break; 361 break;
362 case PT_STROKE: 362 case PT_STROKE:
363 if (svgDecorationStyle.hasVisibleStroke()) { 363 if (svgDecorationStyle.hasVisibleStroke()) {
364 SkPaint strokePaint; 364 PaintFlags strokePaint;
365 if (!SVGPaintContext::paintForLayoutObject( 365 if (!SVGPaintContext::paintForLayoutObject(
366 paintInfo, decorationStyle, *decorationLayoutObject, 366 paintInfo, decorationStyle, *decorationLayoutObject,
367 ApplyToStrokeMode, strokePaint)) 367 ApplyToStrokeMode, strokePaint))
368 break; 368 break;
369 strokePaint.setAntiAlias(true); 369 strokePaint.setAntiAlias(true);
370 float strokeScaleFactor = 370 float strokeScaleFactor =
371 svgDecorationStyle.vectorEffect() == VE_NON_SCALING_STROKE 371 svgDecorationStyle.vectorEffect() == VE_NON_SCALING_STROKE
372 ? 1 / scalingFactor 372 ? 1 / scalingFactor
373 : 1; 373 : 1;
374 StrokeData strokeData; 374 StrokeData strokeData;
(...skipping 10 matching lines...) Expand all
385 break; 385 break;
386 default: 386 default:
387 ASSERT_NOT_REACHED(); 387 ASSERT_NOT_REACHED();
388 } 388 }
389 } 389 }
390 } 390 }
391 391
392 bool SVGInlineTextBoxPainter::setupTextPaint(const PaintInfo& paintInfo, 392 bool SVGInlineTextBoxPainter::setupTextPaint(const PaintInfo& paintInfo,
393 const ComputedStyle& style, 393 const ComputedStyle& style,
394 LayoutSVGResourceMode resourceMode, 394 LayoutSVGResourceMode resourceMode,
395 SkPaint& paint) { 395 PaintFlags& paint) {
396 LayoutSVGInlineText& textLayoutObject = inlineText(); 396 LayoutSVGInlineText& textLayoutObject = inlineText();
397 397
398 float scalingFactor = textLayoutObject.scalingFactor(); 398 float scalingFactor = textLayoutObject.scalingFactor();
399 DCHECK(scalingFactor); 399 DCHECK(scalingFactor);
400 400
401 AffineTransform paintServerTransform; 401 AffineTransform paintServerTransform;
402 const AffineTransform* additionalPaintServerTransform = nullptr; 402 const AffineTransform* additionalPaintServerTransform = nullptr;
403 403
404 if (scalingFactor != 1) { 404 if (scalingFactor != 1) {
405 // Adjust the paint-server coordinate space. 405 // Adjust the paint-server coordinate space.
(...skipping 26 matching lines...) Expand all
432 strokeData.setupPaint(&paint); 432 strokeData.setupPaint(&paint);
433 } 433 }
434 return true; 434 return true;
435 } 435 }
436 436
437 void SVGInlineTextBoxPainter::paintText(const PaintInfo& paintInfo, 437 void SVGInlineTextBoxPainter::paintText(const PaintInfo& paintInfo,
438 TextRun& textRun, 438 TextRun& textRun,
439 const SVGTextFragment& fragment, 439 const SVGTextFragment& fragment,
440 int startPosition, 440 int startPosition,
441 int endPosition, 441 int endPosition,
442 const SkPaint& paint) { 442 const PaintFlags& paint) {
443 LayoutSVGInlineText& textLayoutObject = inlineText(); 443 LayoutSVGInlineText& textLayoutObject = inlineText();
444 const Font& scaledFont = textLayoutObject.scaledFont(); 444 const Font& scaledFont = textLayoutObject.scaledFont();
445 445
446 float scalingFactor = textLayoutObject.scalingFactor(); 446 float scalingFactor = textLayoutObject.scalingFactor();
447 DCHECK(scalingFactor); 447 DCHECK(scalingFactor);
448 448
449 FloatPoint textOrigin(fragment.x, fragment.y); 449 FloatPoint textOrigin(fragment.x, fragment.y);
450 FloatSize textSize(fragment.width, fragment.height); 450 FloatSize textSize(fragment.width, fragment.height);
451 451
452 GraphicsContext& context = paintInfo.context; 452 GraphicsContext& context = paintInfo.context;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 m_svgInlineTextBox.selectionStartEnd(startPosition, endPosition); 485 m_svgInlineTextBox.selectionStartEnd(startPosition, endPosition);
486 shouldPaintSelection = 486 shouldPaintSelection =
487 m_svgInlineTextBox.mapStartEndPositionsIntoFragmentCoordinates( 487 m_svgInlineTextBox.mapStartEndPositionsIntoFragmentCoordinates(
488 fragment, startPosition, endPosition); 488 fragment, startPosition, endPosition);
489 } 489 }
490 490
491 // Fast path if there is no selection, just draw the whole chunk part using 491 // Fast path if there is no selection, just draw the whole chunk part using
492 // the regular style. 492 // the regular style.
493 TextRun textRun = m_svgInlineTextBox.constructTextRun(style, fragment); 493 TextRun textRun = m_svgInlineTextBox.constructTextRun(style, fragment);
494 if (!shouldPaintSelection || startPosition >= endPosition) { 494 if (!shouldPaintSelection || startPosition >= endPosition) {
495 SkPaint paint; 495 PaintFlags paint;
496 if (setupTextPaint(paintInfo, style, resourceMode, paint)) 496 if (setupTextPaint(paintInfo, style, resourceMode, paint))
497 paintText(paintInfo, textRun, fragment, 0, fragment.length, paint); 497 paintText(paintInfo, textRun, fragment, 0, fragment.length, paint);
498 return; 498 return;
499 } 499 }
500 500
501 // Eventually draw text using regular style until the start position of the 501 // Eventually draw text using regular style until the start position of the
502 // selection. 502 // selection.
503 bool paintSelectedTextOnly = paintInfo.phase == PaintPhaseSelection; 503 bool paintSelectedTextOnly = paintInfo.phase == PaintPhaseSelection;
504 if (startPosition > 0 && !paintSelectedTextOnly) { 504 if (startPosition > 0 && !paintSelectedTextOnly) {
505 SkPaint paint; 505 PaintFlags paint;
506 if (setupTextPaint(paintInfo, style, resourceMode, paint)) 506 if (setupTextPaint(paintInfo, style, resourceMode, paint))
507 paintText(paintInfo, textRun, fragment, 0, startPosition, paint); 507 paintText(paintInfo, textRun, fragment, 0, startPosition, paint);
508 } 508 }
509 509
510 // Draw text using selection style from the start to the end position of the 510 // Draw text using selection style from the start to the end position of the
511 // selection. 511 // selection.
512 if (style != selectionStyle) { 512 if (style != selectionStyle) {
513 StyleDifference diff; 513 StyleDifference diff;
514 diff.setNeedsPaintInvalidationObject(); 514 diff.setNeedsPaintInvalidationObject();
515 SVGResourcesCache::clientStyleChanged(&parentInlineLayoutObject(), diff, 515 SVGResourcesCache::clientStyleChanged(&parentInlineLayoutObject(), diff,
516 selectionStyle); 516 selectionStyle);
517 } 517 }
518 518
519 SkPaint paint; 519 PaintFlags paint;
520 if (setupTextPaint(paintInfo, selectionStyle, resourceMode, paint)) 520 if (setupTextPaint(paintInfo, selectionStyle, resourceMode, paint))
521 paintText(paintInfo, textRun, fragment, startPosition, endPosition, paint); 521 paintText(paintInfo, textRun, fragment, startPosition, endPosition, paint);
522 522
523 if (style != selectionStyle) { 523 if (style != selectionStyle) {
524 StyleDifference diff; 524 StyleDifference diff;
525 diff.setNeedsPaintInvalidationObject(); 525 diff.setNeedsPaintInvalidationObject();
526 SVGResourcesCache::clientStyleChanged(&parentInlineLayoutObject(), diff, 526 SVGResourcesCache::clientStyleChanged(&parentInlineLayoutObject(), diff,
527 style); 527 style);
528 } 528 }
529 529
530 // Eventually draw text using regular style from the end position of the 530 // Eventually draw text using regular style from the end position of the
531 // selection to the end of the current chunk part. 531 // selection to the end of the current chunk part.
532 if (endPosition < static_cast<int>(fragment.length) && 532 if (endPosition < static_cast<int>(fragment.length) &&
533 !paintSelectedTextOnly) { 533 !paintSelectedTextOnly) {
534 SkPaint paint; 534 PaintFlags paint;
535 if (setupTextPaint(paintInfo, style, resourceMode, paint)) 535 if (setupTextPaint(paintInfo, style, resourceMode, paint))
536 paintText(paintInfo, textRun, fragment, endPosition, fragment.length, 536 paintText(paintInfo, textRun, fragment, endPosition, fragment.length,
537 paint); 537 paint);
538 } 538 }
539 } 539 }
540 540
541 Vector<SVGTextFragmentWithRange> SVGInlineTextBoxPainter::collectTextMatches( 541 Vector<SVGTextFragmentWithRange> SVGInlineTextBoxPainter::collectTextMatches(
542 const DocumentMarker& marker) const { 542 const DocumentMarker& marker) const {
543 const Vector<SVGTextFragmentWithRange> emptyTextMatchList; 543 const Vector<SVGTextFragmentWithRange> emptyTextMatchList;
544 544
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 const ComputedStyle& style, 588 const ComputedStyle& style,
589 const Font& font) { 589 const Font& font) {
590 const Vector<SVGTextFragmentWithRange> textMatchInfoList = 590 const Vector<SVGTextFragmentWithRange> textMatchInfoList =
591 collectTextMatches(marker); 591 collectTextMatches(marker);
592 if (textMatchInfoList.isEmpty()) 592 if (textMatchInfoList.isEmpty())
593 return; 593 return;
594 594
595 Color textColor = 595 Color textColor =
596 LayoutTheme::theme().platformTextSearchColor(marker.activeMatch()); 596 LayoutTheme::theme().platformTextSearchColor(marker.activeMatch());
597 597
598 SkPaint fillPaint; 598 PaintFlags fillPaint;
599 fillPaint.setColor(textColor.rgb()); 599 fillPaint.setColor(textColor.rgb());
600 fillPaint.setAntiAlias(true); 600 fillPaint.setAntiAlias(true);
601 601
602 SkPaint strokePaint; 602 PaintFlags strokePaint;
603 bool shouldPaintStroke = false; 603 bool shouldPaintStroke = false;
604 if (setupTextPaint(paintInfo, style, ApplyToStrokeMode, strokePaint)) { 604 if (setupTextPaint(paintInfo, style, ApplyToStrokeMode, strokePaint)) {
605 shouldPaintStroke = true; 605 shouldPaintStroke = true;
606 strokePaint.setLooper(nullptr); 606 strokePaint.setLooper(nullptr);
607 strokePaint.setColor(textColor.rgb()); 607 strokePaint.setColor(textColor.rgb());
608 } 608 }
609 609
610 for (const SVGTextFragmentWithRange& textMatchInfo : textMatchInfoList) { 610 for (const SVGTextFragmentWithRange& textMatchInfo : textMatchInfoList) {
611 const SVGTextFragment& fragment = textMatchInfo.fragment; 611 const SVGTextFragment& fragment = textMatchInfo.fragment;
612 GraphicsContextStateSaver stateSaver(paintInfo.context); 612 GraphicsContextStateSaver stateSaver(paintInfo.context);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 } 645 }
646 FloatRect fragmentRect = m_svgInlineTextBox.selectionRectForTextFragment( 646 FloatRect fragmentRect = m_svgInlineTextBox.selectionRectForTextFragment(
647 fragment, textMatchInfo.startPosition, textMatchInfo.endPosition, 647 fragment, textMatchInfo.startPosition, textMatchInfo.endPosition,
648 style); 648 style);
649 paintInfo.context.setFillColor(color); 649 paintInfo.context.setFillColor(color);
650 paintInfo.context.fillRect(fragmentRect); 650 paintInfo.context.fillRect(fragmentRect);
651 } 651 }
652 } 652 }
653 653
654 } // namespace blink 654 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698