| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. | 2 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above | 8 * 1. Redistributions of source code must retain the above |
| 9 * copyright notice, this list of conditions and the following | 9 * copyright notice, this list of conditions and the following |
| 10 * disclaimer. | 10 * disclaimer. |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 { | 51 { |
| 52 if (renderBox->isRenderImage()) | 52 if (renderBox->isRenderImage()) |
| 53 return toRenderImage(renderBox)->replacedContentRect(); | 53 return toRenderImage(renderBox)->replacedContentRect(); |
| 54 | 54 |
| 55 ASSERT(styleImage.cachedImage()); | 55 ASSERT(styleImage.cachedImage()); |
| 56 ASSERT(styleImage.cachedImage()->hasImage()); | 56 ASSERT(styleImage.cachedImage()->hasImage()); |
| 57 return LayoutRect(LayoutPoint(), styleImage.cachedImage()->image()->size()); | 57 return LayoutRect(LayoutPoint(), styleImage.cachedImage()->image()->size()); |
| 58 } | 58 } |
| 59 | 59 |
| 60 template<class RenderType> | 60 template<class RenderType> |
| 61 const Shape* ShapeInfo<RenderType>::computedShape() const | 61 const Shape& ShapeInfo<RenderType>::computedShape() const |
| 62 { | 62 { |
| 63 if (Shape* shape = m_shape.get()) | 63 if (Shape* shape = m_shape.get()) |
| 64 return shape; | 64 return *shape; |
| 65 | 65 |
| 66 WritingMode writingMode = m_renderer->style()->writingMode(); | 66 WritingMode writingMode = m_renderer.style()->writingMode(); |
| 67 Length margin = m_renderer->style()->shapeMargin(); | 67 Length margin = m_renderer.style()->shapeMargin(); |
| 68 Length padding = m_renderer->style()->shapePadding(); | 68 Length padding = m_renderer.style()->shapePadding(); |
| 69 float shapeImageThreshold = m_renderer->style()->shapeImageThreshold(); | 69 float shapeImageThreshold = m_renderer.style()->shapeImageThreshold(); |
| 70 const ShapeValue* shapeValue = this->shapeValue(); | 70 const ShapeValue* shapeValue = this->shapeValue(); |
| 71 ASSERT(shapeValue); | 71 ASSERT(shapeValue); |
| 72 | 72 |
| 73 switch (shapeValue->type()) { | 73 switch (shapeValue->type()) { |
| 74 case ShapeValue::Shape: | 74 case ShapeValue::Shape: |
| 75 ASSERT(shapeValue->shape()); | 75 ASSERT(shapeValue->shape()); |
| 76 m_shape = Shape::createShape(shapeValue->shape(), m_shapeLogicalSize, wr
itingMode, margin, padding); | 76 m_shape = Shape::createShape(shapeValue->shape(), m_shapeLogicalSize, wr
itingMode, margin, padding); |
| 77 break; | 77 break; |
| 78 case ShapeValue::Image: { | 78 case ShapeValue::Image: { |
| 79 ASSERT(shapeValue->image()); | 79 ASSERT(shapeValue->image()); |
| 80 const StyleImage& styleImage = *(shapeValue->image()); | 80 const StyleImage& styleImage = *(shapeValue->image()); |
| 81 m_shape = Shape::createRasterShape(styleImage, shapeImageThreshold, getS
hapeImageRect(styleImage, m_renderer), m_shapeLogicalSize, writingMode, margin,
padding); | 81 m_shape = Shape::createRasterShape(styleImage, shapeImageThreshold, getS
hapeImageRect(styleImage, &m_renderer), m_shapeLogicalSize, writingMode, margin,
padding); |
| 82 break; | 82 break; |
| 83 } | 83 } |
| 84 case ShapeValue::Box: { | 84 case ShapeValue::Box: { |
| 85 const RoundedRect& shapeRect = m_renderer->style()->getRoundedBorderFor(
LayoutRect(LayoutPoint(), m_shapeLogicalSize), m_renderer->view()); | 85 const RoundedRect& shapeRect = m_renderer.style()->getRoundedBorderFor(L
ayoutRect(LayoutPoint(), m_shapeLogicalSize), m_renderer.view()); |
| 86 m_shape = Shape::createLayoutBoxShape(shapeRect, writingMode, margin, pa
dding); | 86 m_shape = Shape::createLayoutBoxShape(shapeRect, writingMode, margin, pa
dding); |
| 87 break; | 87 break; |
| 88 } | 88 } |
| 89 case ShapeValue::Outside: | 89 case ShapeValue::Outside: |
| 90 // Outside should have already resolved to a different shape value. | 90 // Outside should have already resolved to a different shape value. |
| 91 ASSERT_NOT_REACHED(); | 91 ASSERT_NOT_REACHED(); |
| 92 } | 92 } |
| 93 | 93 |
| 94 ASSERT(m_shape); | 94 ASSERT(m_shape); |
| 95 return m_shape.get(); | 95 return *m_shape; |
| 96 } | 96 } |
| 97 | 97 |
| 98 template<class RenderType> | 98 template<class RenderType> |
| 99 SegmentList ShapeInfo<RenderType>::computeSegmentsForLine(LayoutUnit lineTop, La
youtUnit lineHeight) const | 99 SegmentList ShapeInfo<RenderType>::computeSegmentsForLine(LayoutUnit lineTop, La
youtUnit lineHeight) const |
| 100 { | 100 { |
| 101 ASSERT(lineHeight >= 0); | 101 ASSERT(lineHeight >= 0); |
| 102 SegmentList segments; | 102 SegmentList segments; |
| 103 | 103 |
| 104 getIntervals((lineTop - logicalTopOffset()), std::min(lineHeight, shapeLogic
alBottom() - lineTop), segments); | 104 getIntervals((lineTop - logicalTopOffset()), std::min(lineHeight, shapeLogic
alBottom() - lineTop), segments); |
| 105 | 105 |
| 106 for (size_t i = 0; i < segments.size(); i++) { | 106 for (size_t i = 0; i < segments.size(); i++) { |
| 107 segments[i].logicalLeft += logicalLeftOffset(); | 107 segments[i].logicalLeft += logicalLeftOffset(); |
| 108 segments[i].logicalRight += logicalLeftOffset(); | 108 segments[i].logicalRight += logicalLeftOffset(); |
| 109 } | 109 } |
| 110 | 110 |
| 111 return segments; | 111 return segments; |
| 112 } | 112 } |
| 113 | 113 |
| 114 template class ShapeInfo<RenderBlock>; | 114 template class ShapeInfo<RenderBlock>; |
| 115 template class ShapeInfo<RenderBox>; | 115 template class ShapeInfo<RenderBox>; |
| 116 } | 116 } |
| OLD | NEW |