OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef UNICODE | 8 #ifndef UNICODE |
9 #define UNICODE | 9 #define UNICODE |
10 #endif | 10 #endif |
(...skipping 1931 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1942 | 1942 |
1943 HRM(clipGeometry->SetFillRule(fillRule), | 1943 HRM(clipGeometry->SetFillRule(fillRule), |
1944 "Could not set fill rule."); | 1944 "Could not set fill rule."); |
1945 HRM(xpsVisual->SetClipGeometryLocal(clipGeometry.get()), | 1945 HRM(xpsVisual->SetClipGeometryLocal(clipGeometry.get()), |
1946 "Could not set clip geometry."); | 1946 "Could not set clip geometry."); |
1947 | 1947 |
1948 return S_OK; | 1948 return S_OK; |
1949 } | 1949 } |
1950 | 1950 |
1951 void SkXPSDevice::drawBitmap(const SkDraw& d, const SkBitmap& bitmap, | 1951 void SkXPSDevice::drawBitmap(const SkDraw& d, const SkBitmap& bitmap, |
1952 const SkIRect* srcRectOrNull, | |
1953 const SkMatrix& matrix, const SkPaint& paint) { | 1952 const SkMatrix& matrix, const SkPaint& paint) { |
1954 if (d.fClip->isEmpty()) { | 1953 if (d.fClip->isEmpty()) { |
1955 return; | 1954 return; |
1956 } | 1955 } |
1957 | 1956 |
1958 SkIRect srcRect; | 1957 SkIRect srcRect; |
1959 SkBitmap tmp; | 1958 srcRect.set(0, 0, bitmap.width(), bitmap.height()); |
1960 const SkBitmap* bitmapPtr = &bitmap; | |
1961 if (NULL == srcRectOrNull) { | |
1962 srcRect.set(0, 0, bitmap.width(), bitmap.height()); | |
1963 bitmapPtr = &bitmap; | |
1964 } else { | |
1965 srcRect = *srcRectOrNull; | |
1966 if (!bitmap.extractSubset(&tmp, srcRect)) { | |
1967 return; // extraction failed | |
1968 } | |
1969 bitmapPtr = &tmp; | |
1970 } | |
1971 | 1959 |
1972 //Create the new shaded path. | 1960 //Create the new shaded path. |
1973 SkTScopedComPtr<IXpsOMPath> shadedPath; | 1961 SkTScopedComPtr<IXpsOMPath> shadedPath; |
1974 HRVM(this->fXpsFactory->CreatePath(&shadedPath), | 1962 HRVM(this->fXpsFactory->CreatePath(&shadedPath), |
1975 "Could not create path for bitmap."); | 1963 "Could not create path for bitmap."); |
1976 | 1964 |
1977 //Create the shaded geometry. | 1965 //Create the shaded geometry. |
1978 SkTScopedComPtr<IXpsOMGeometry> shadedGeometry; | 1966 SkTScopedComPtr<IXpsOMGeometry> shadedGeometry; |
1979 HRVM(this->fXpsFactory->CreateGeometry(&shadedGeometry), | 1967 HRVM(this->fXpsFactory->CreateGeometry(&shadedGeometry), |
1980 "Could not create geometry for bitmap."); | 1968 "Could not create geometry for bitmap."); |
(...skipping 19 matching lines...) Expand all Loading... |
2000 //TODO: perspective that bitmap! | 1988 //TODO: perspective that bitmap! |
2001 } | 1989 } |
2002 | 1990 |
2003 SkTScopedComPtr<IXpsOMGeometryFigure> rectFigure; | 1991 SkTScopedComPtr<IXpsOMGeometryFigure> rectFigure; |
2004 if (NULL != xpsTransform.get()) { | 1992 if (NULL != xpsTransform.get()) { |
2005 const SkShader::TileMode xy[2] = { | 1993 const SkShader::TileMode xy[2] = { |
2006 SkShader::kClamp_TileMode, | 1994 SkShader::kClamp_TileMode, |
2007 SkShader::kClamp_TileMode, | 1995 SkShader::kClamp_TileMode, |
2008 }; | 1996 }; |
2009 SkTScopedComPtr<IXpsOMTileBrush> xpsImageBrush; | 1997 SkTScopedComPtr<IXpsOMTileBrush> xpsImageBrush; |
2010 HRV(this->createXpsImageBrush(*bitmapPtr, | 1998 HRV(this->createXpsImageBrush(bitmap, |
2011 transform, | 1999 transform, |
2012 xy, | 2000 xy, |
2013 paint.getAlpha(), | 2001 paint.getAlpha(), |
2014 &xpsImageBrush)); | 2002 &xpsImageBrush)); |
2015 HRVM(shadedPath->SetFillBrushLocal(xpsImageBrush.get()), | 2003 HRVM(shadedPath->SetFillBrushLocal(xpsImageBrush.get()), |
2016 "Could not set bitmap brush."); | 2004 "Could not set bitmap brush."); |
2017 | 2005 |
2018 const SkRect bitmapRect = SkRect::MakeLTRB(0, 0, | 2006 const SkRect bitmapRect = SkRect::MakeLTRB(0, 0, |
2019 SkIntToScalar(srcRect.width()), SkIntToScalar(srcRect.height())); | 2007 SkIntToScalar(srcRect.width()), SkIntToScalar(srcRect.height())); |
2020 HRV(this->createXpsRect(bitmapRect, FALSE, TRUE, &rectFigure)); | 2008 HRV(this->createXpsRect(bitmapRect, FALSE, TRUE, &rectFigure)); |
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2447 IID_PPV_ARGS(&this->fXpsFactory)), | 2435 IID_PPV_ARGS(&this->fXpsFactory)), |
2448 "Could not create factory for layer."); | 2436 "Could not create factory for layer."); |
2449 | 2437 |
2450 HRVM(this->fXpsFactory->CreateCanvas(&this->fCurrentXpsCanvas), | 2438 HRVM(this->fXpsFactory->CreateCanvas(&this->fCurrentXpsCanvas), |
2451 "Could not create canvas for layer."); | 2439 "Could not create canvas for layer."); |
2452 } | 2440 } |
2453 | 2441 |
2454 bool SkXPSDevice::allowImageFilter(SkImageFilter*) { | 2442 bool SkXPSDevice::allowImageFilter(SkImageFilter*) { |
2455 return false; | 2443 return false; |
2456 } | 2444 } |
OLD | NEW |