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 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 int maxBufferY = std::min(imageRect.height(), marginRect.maxY() - imageR
ect.y()); | 195 int maxBufferY = std::min(imageRect.height(), marginRect.maxY() - imageR
ect.y()); |
196 | 196 |
197 for (int y = minBufferY; y < maxBufferY; ++y) { | 197 for (int y = minBufferY; y < maxBufferY; ++y) { |
198 int startX = -1; | 198 int startX = -1; |
199 for (int x = 0; x < imageRect.width(); ++x, pixelArrayOffset += 4) { | 199 for (int x = 0; x < imageRect.width(); ++x, pixelArrayOffset += 4) { |
200 uint8_t alpha = pixelArray->item(pixelArrayOffset); | 200 uint8_t alpha = pixelArray->item(pixelArrayOffset); |
201 bool alphaAboveThreshold = alpha > alphaPixelThreshold; | 201 bool alphaAboveThreshold = alpha > alphaPixelThreshold; |
202 if (startX == -1 && alphaAboveThreshold) { | 202 if (startX == -1 && alphaAboveThreshold) { |
203 startX = x; | 203 startX = x; |
204 } else if (startX != -1 && (!alphaAboveThreshold || x == imageRe
ct.width() - 1)) { | 204 } else if (startX != -1 && (!alphaAboveThreshold || x == imageRe
ct.width() - 1)) { |
205 intervals->appendInterval(y + imageRect.y(), startX + imageR
ect.x(), x + imageRect.x()); | 205 intervals->intervalAt(y + imageRect.y()).unite(IntShapeInter
val(startX + imageRect.x(), x + imageRect.x())); |
206 startX = -1; | 206 startX = -1; |
207 } | 207 } |
208 } | 208 } |
209 } | 209 } |
210 } | 210 } |
211 | 211 |
212 OwnPtr<RasterShape> rasterShape = adoptPtr(new RasterShape(intervals.release
(), marginRect.size())); | 212 OwnPtr<RasterShape> rasterShape = adoptPtr(new RasterShape(intervals.release
(), marginRect.size())); |
213 rasterShape->m_writingMode = writingMode; | 213 rasterShape->m_writingMode = writingMode; |
214 rasterShape->m_margin = floatValueForLength(margin, 0); | 214 rasterShape->m_margin = floatValueForLength(margin, 0); |
215 return rasterShape.release(); | 215 return rasterShape.release(); |
216 } | 216 } |
217 | 217 |
218 PassOwnPtr<Shape> Shape::createLayoutBoxShape(const RoundedRect& roundedRect, Wr
itingMode writingMode, const Length& margin) | 218 PassOwnPtr<Shape> Shape::createLayoutBoxShape(const RoundedRect& roundedRect, Wr
itingMode writingMode, const Length& margin) |
219 { | 219 { |
220 FloatRect rect(0, 0, roundedRect.rect().width(), roundedRect.rect().height()
); | 220 FloatRect rect(0, 0, roundedRect.rect().width(), roundedRect.rect().height()
); |
221 FloatRoundedRect bounds(rect, roundedRect.radii()); | 221 FloatRoundedRect bounds(rect, roundedRect.radii()); |
222 OwnPtr<Shape> shape = createInsetShape(bounds); | 222 OwnPtr<Shape> shape = createInsetShape(bounds); |
223 shape->m_writingMode = writingMode; | 223 shape->m_writingMode = writingMode; |
224 shape->m_margin = floatValueForLength(margin, 0); | 224 shape->m_margin = floatValueForLength(margin, 0); |
225 | 225 |
226 return shape.release(); | 226 return shape.release(); |
227 } | 227 } |
228 | 228 |
229 } // namespace WebCore | 229 } // namespace WebCore |
OLD | NEW |