Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
| 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
| 6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> | 6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> |
| 7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. | 7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. |
| 8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. | 8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. |
| 9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
| 10 * | 10 * |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 427 return; | 427 return; |
| 428 m_path.transform(state().m_transform); | 428 m_path.transform(state().m_transform); |
| 429 m_stateStack.removeLast(); | 429 m_stateStack.removeLast(); |
| 430 m_path.transform(state().m_transform.inverse()); | 430 m_path.transform(state().m_transform.inverse()); |
| 431 GraphicsContext* c = drawingContext(); | 431 GraphicsContext* c = drawingContext(); |
| 432 if (c) | 432 if (c) |
| 433 c->restore(); | 433 c->restore(); |
| 434 validateStateStack(); | 434 validateStateStack(); |
| 435 } | 435 } |
| 436 | 436 |
| 437 CanvasStyle* CanvasRenderingContext2D::strokeStyle() const | 437 static inline void convertCanvasStyleToUnionType(CanvasStyle* style, StringOrCan vasGradientOrCanvasPattern& returnValue) |
| 438 { | 438 { |
| 439 return state().m_strokeStyle.get(); | 439 if (CanvasGradient* gradient = style->canvasGradient()) { |
| 440 returnValue.setCanvasGradient(gradient); | |
| 441 return; | |
| 442 } | |
| 443 if (CanvasPattern* pattern = style->canvasPattern()) { | |
| 444 returnValue.setCanvasPattern(pattern); | |
| 445 return; | |
| 446 } | |
| 447 returnValue.setString(style->color()); | |
| 440 } | 448 } |
| 441 | 449 |
| 442 void CanvasRenderingContext2D::setStrokeStyle(PassRefPtrWillBeRawPtr<CanvasStyle > prpStyle) | 450 void CanvasRenderingContext2D::strokeStyle(StringOrCanvasGradientOrCanvasPattern & returnValue) const |
| 443 { | 451 { |
| 444 RefPtrWillBeRawPtr<CanvasStyle> style = prpStyle; | 452 convertCanvasStyleToUnionType(state().m_strokeStyle.get(), returnValue); |
| 453 } | |
| 445 | 454 |
| 446 if (!style) | 455 void CanvasRenderingContext2D::setStrokeStyle(const StringOrCanvasGradientOrCanv asPattern& style) |
| 447 return; | 456 { |
| 457 ASSERT(!style.isNull()); | |
| 448 | 458 |
| 449 if (state().m_strokeStyle && state().m_strokeStyle->isEquivalentColor(*style )) | 459 String colorString; |
| 450 return; | 460 RefPtrWillBeRawPtr<CanvasStyle> canvasStyle; |
| 461 if (style.isString()) { | |
| 462 colorString = style.getAsString(); | |
| 463 if (colorString == state().m_unparsedStrokeColor) | |
|
fs
2014/11/24 13:20:24
The removal of the legacy APIs seems to have dropp
Justin Novosad
2014/11/24 15:41:02
Thanks for catching that. the removal was unintent
| |
| 464 return; | |
| 465 RGBA32 parsedColor = 0; | |
| 466 if (!parseColorOrCurrentColor(parsedColor, colorString, canvas())) | |
| 467 return; | |
| 468 if (state().m_strokeStyle->isEquivalentRGBA(parsedColor)) { | |
| 469 realizeSaves(nullptr); | |
| 470 modifiableState().m_unparsedStrokeColor = colorString; | |
| 471 return; | |
| 472 } | |
| 473 canvasStyle = CanvasStyle::createFromRGBA(parsedColor); | |
| 474 } else if (style.isCanvasGradient()) { | |
| 475 canvasStyle = CanvasStyle::createFromGradient(style.getAsCanvasGradient( )); | |
| 476 } else if (style.isCanvasPattern()) { | |
| 477 RefPtrWillBeRawPtr<CanvasPattern> canvasPattern = style.getAsCanvasPatte rn(); | |
| 451 | 478 |
| 452 if (style->isCurrentColor()) { | 479 if (canvas()->originClean() && !canvasPattern->originClean()) |
| 453 if (style->hasOverrideAlpha()) | 480 canvas()->setOriginTainted(); |
| 454 style = CanvasStyle::createFromRGBA(colorWithOverrideAlpha(currentCo lor(canvas()), style->overrideAlpha())); | 481 |
| 455 else | 482 canvasStyle = CanvasStyle::createFromPattern(canvasPattern); |
| 456 style = CanvasStyle::createFromRGBA(currentColor(canvas())); | |
| 457 } else if (canvas()->originClean() && style->canvasPattern() && !style->canv asPattern()->originClean()) { | |
| 458 canvas()->setOriginTainted(); | |
| 459 } | 483 } |
| 460 | 484 |
| 485 ASSERT(canvasStyle); | |
| 486 | |
| 461 GraphicsContext* c = drawingContext(); | 487 GraphicsContext* c = drawingContext(); |
| 462 realizeSaves(c); | 488 realizeSaves(c); |
| 463 modifiableState().m_strokeStyle = style.release(); | 489 modifiableState().m_strokeStyle = canvasStyle.release(); |
| 464 if (!c) | 490 if (!c) |
| 465 return; | 491 return; |
| 466 state().m_strokeStyle->applyStrokeColor(c); | 492 state().m_strokeStyle->applyStrokeColor(c); |
| 467 modifiableState().m_unparsedStrokeColor = String(); | 493 modifiableState().m_unparsedStrokeColor = colorString; |
| 468 } | 494 } |
| 469 | 495 |
| 470 CanvasStyle* CanvasRenderingContext2D::fillStyle() const | 496 void CanvasRenderingContext2D::fillStyle(StringOrCanvasGradientOrCanvasPattern& returnValue) const |
| 471 { | 497 { |
| 472 return state().m_fillStyle.get(); | 498 convertCanvasStyleToUnionType(state().m_fillStyle.get(), returnValue); |
| 473 } | 499 } |
| 474 | 500 |
| 475 void CanvasRenderingContext2D::setFillStyle(PassRefPtrWillBeRawPtr<CanvasStyle> prpStyle) | 501 void CanvasRenderingContext2D::setFillStyle(const StringOrCanvasGradientOrCanvas Pattern& style) |
| 476 { | 502 { |
| 477 RefPtrWillBeRawPtr<CanvasStyle> style = prpStyle; | 503 ASSERT(!style.isNull()); |
| 478 | 504 |
| 479 if (!style) | 505 String colorString; |
| 480 return; | 506 RefPtrWillBeRawPtr<CanvasStyle> canvasStyle; |
| 507 if (style.isString()) { | |
| 508 colorString = style.getAsString(); | |
| 509 if (colorString == state().m_unparsedFillColor) | |
| 510 return; | |
| 511 RGBA32 parsedColor = 0; | |
| 512 if (!parseColorOrCurrentColor(parsedColor, colorString, canvas())) | |
| 513 return; | |
| 514 if (state().m_fillStyle->isEquivalentRGBA(parsedColor)) { | |
| 515 realizeSaves(nullptr); | |
| 516 modifiableState().m_unparsedFillColor = colorString; | |
| 517 return; | |
| 518 } | |
| 519 canvasStyle = CanvasStyle::createFromRGBA(parsedColor); | |
| 520 } else if (style.isCanvasGradient()) { | |
| 521 canvasStyle = CanvasStyle::createFromGradient(style.getAsCanvasGradient( )); | |
| 522 } else if (style.isCanvasPattern()) { | |
| 523 RefPtrWillBeRawPtr<CanvasPattern> canvasPattern = style.getAsCanvasPatte rn(); | |
| 481 | 524 |
| 482 if (state().m_fillStyle && state().m_fillStyle->isEquivalentColor(*style)) | 525 if (canvas()->originClean() && !canvasPattern->originClean()) |
| 483 return; | 526 canvas()->setOriginTainted(); |
| 484 | 527 |
| 485 if (style->isCurrentColor()) { | 528 canvasStyle = CanvasStyle::createFromPattern(canvasPattern); |
| 486 if (style->hasOverrideAlpha()) | |
| 487 style = CanvasStyle::createFromRGBA(colorWithOverrideAlpha(currentCo lor(canvas()), style->overrideAlpha())); | |
| 488 else | |
| 489 style = CanvasStyle::createFromRGBA(currentColor(canvas())); | |
| 490 } else if (canvas()->originClean() && style->canvasPattern() && !style->canv asPattern()->originClean()) { | |
| 491 canvas()->setOriginTainted(); | |
| 492 } | 529 } |
| 493 | 530 |
| 531 ASSERT(canvasStyle); | |
| 532 | |
| 494 GraphicsContext* c = drawingContext(); | 533 GraphicsContext* c = drawingContext(); |
| 495 realizeSaves(c); | 534 realizeSaves(c); |
| 496 modifiableState().m_fillStyle = style.release(); | 535 modifiableState().m_fillStyle = canvasStyle.release(); |
| 497 if (!c) | 536 if (!c) |
| 498 return; | 537 return; |
| 499 state().m_fillStyle->applyFillColor(c); | 538 state().m_fillStyle->applyFillColor(c); |
| 500 modifiableState().m_unparsedFillColor = String(); | 539 modifiableState().m_unparsedFillColor = colorString; |
| 501 } | 540 } |
| 502 | 541 |
| 503 float CanvasRenderingContext2D::lineWidth() const | 542 float CanvasRenderingContext2D::lineWidth() const |
| 504 { | 543 { |
| 505 return state().m_lineWidth; | 544 return state().m_lineWidth; |
| 506 } | 545 } |
| 507 | 546 |
| 508 void CanvasRenderingContext2D::setLineWidth(float width) | 547 void CanvasRenderingContext2D::setLineWidth(float width) |
| 509 { | 548 { |
| 510 if (!std::isfinite(width) || width <= 0) | 549 if (!std::isfinite(width) || width <= 0) |
| (...skipping 1816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2327 | 2366 |
| 2328 unsigned CanvasRenderingContext2D::hitRegionsCount() const | 2367 unsigned CanvasRenderingContext2D::hitRegionsCount() const |
| 2329 { | 2368 { |
| 2330 if (m_hitRegionManager) | 2369 if (m_hitRegionManager) |
| 2331 return m_hitRegionManager->getHitRegionsCount(); | 2370 return m_hitRegionManager->getHitRegionsCount(); |
| 2332 | 2371 |
| 2333 return 0; | 2372 return 0; |
| 2334 } | 2373 } |
| 2335 | 2374 |
| 2336 } // namespace blink | 2375 } // namespace blink |
| OLD | NEW |