OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 void TransparencyWin::computeLayerSize() | 203 void TransparencyWin::computeLayerSize() |
204 { | 204 { |
205 if (m_transformMode == Untransform) { | 205 if (m_transformMode == Untransform) { |
206 // The meaning of the "transformed" source rect is a little ambigous | 206 // The meaning of the "transformed" source rect is a little ambigous |
207 // here. The rest of the code doesn't care about it in the Untransform | 207 // here. The rest of the code doesn't care about it in the Untransform |
208 // case since we're using our own happy coordinate system. So we set it | 208 // case since we're using our own happy coordinate system. So we set it |
209 // to be the source rect since that matches how the code below actually | 209 // to be the source rect since that matches how the code below actually |
210 // uses the variable: to determine how to translate things to account | 210 // uses the variable: to determine how to translate things to account |
211 // for the offset of the layer. | 211 // for the offset of the layer. |
212 m_transformedSourceRect = m_sourceRect; | 212 m_transformedSourceRect = m_sourceRect; |
213 m_layerSize = IntSize(m_sourceRect.width(), m_sourceRect.height()); | 213 } else if (m_transformMode == KeepTransform && m_layerMode != TextComposite)
{ |
214 } else { | 214 // FIXME: support clipping for other modes |
| 215 IntRect clippedSourceRect = m_sourceRect; |
| 216 SkRect clipBounds; |
| 217 if (m_destContext->platformContext()->canvas()->getClipBounds(&clipBound
s)) { |
| 218 FloatRect clipRect(clipBounds.left(), clipBounds.top(), clipBounds.w
idth(), clipBounds.height()); |
| 219 clippedSourceRect.intersect(enclosingIntRect(clipRect)); |
| 220 } |
| 221 m_transformedSourceRect = m_orgTransform.mapRect(clippedSourceRect); |
| 222 } else |
215 m_transformedSourceRect = m_orgTransform.mapRect(m_sourceRect); | 223 m_transformedSourceRect = m_orgTransform.mapRect(m_sourceRect); |
216 m_layerSize = IntSize(m_transformedSourceRect.width(), m_transformedSour
ceRect.height()); | 224 |
217 } | 225 m_layerSize = IntSize(m_transformedSourceRect.width(), m_transformedSourceRe
ct.height()); |
218 } | 226 } |
219 | 227 |
220 void TransparencyWin::setupLayer() | 228 void TransparencyWin::setupLayer() |
221 { | 229 { |
222 switch (m_layerMode) { | 230 switch (m_layerMode) { |
223 case NoLayer: | 231 case NoLayer: |
224 setupLayerForNoLayer(); | 232 setupLayerForNoLayer(); |
225 break; | 233 break; |
226 case OpaqueCompositeLayer: | 234 case OpaqueCompositeLayer: |
227 setupLayerForOpaqueCompositeLayer(); | 235 setupLayerForOpaqueCompositeLayer(); |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 SkBitmap& bitmap = const_cast<SkBitmap&>(m_drawContext->platformContext()-> | 512 SkBitmap& bitmap = const_cast<SkBitmap&>(m_drawContext->platformContext()-> |
505 canvas()->getTopDevice()->accessBitmap(true)); | 513 canvas()->getTopDevice()->accessBitmap(true)); |
506 for (int y = 0; y < m_layerSize.height(); y++) { | 514 for (int y = 0; y < m_layerSize.height(); y++) { |
507 uint32_t* row = bitmap.getAddr32(0, y); | 515 uint32_t* row = bitmap.getAddr32(0, y); |
508 for (int x = 0; x < m_layerSize.width(); x++) | 516 for (int x = 0; x < m_layerSize.width(); x++) |
509 row[x] |= 0xFF000000; | 517 row[x] |= 0xFF000000; |
510 } | 518 } |
511 } | 519 } |
512 | 520 |
513 } // namespace WebCore | 521 } // namespace WebCore |
OLD | NEW |