| 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 #include "SkPDFDevice.h" | 8 #include "SkPDFDevice.h" |
| 9 #include "SkAnnotationKeys.h" | 9 #include "SkAnnotationKeys.h" |
| 10 #include "SkBitmapDevice.h" | 10 #include "SkBitmapDevice.h" |
| (...skipping 1570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1581 SkPoint p = fInitialTransform.mapXY(dest.point.x(), dest.point.y()); | 1581 SkPoint p = fInitialTransform.mapXY(dest.point.x(), dest.point.y()); |
| 1582 pdfDest->appendScalar(p.x()); | 1582 pdfDest->appendScalar(p.x()); |
| 1583 pdfDest->appendScalar(p.y()); | 1583 pdfDest->appendScalar(p.y()); |
| 1584 pdfDest->appendInt(0); // Leave zoom unchanged | 1584 pdfDest->appendInt(0); // Leave zoom unchanged |
| 1585 SkString name(static_cast<const char*>(dest.nameData->data())); | 1585 SkString name(static_cast<const char*>(dest.nameData->data())); |
| 1586 dict->insertObject(name, std::move(pdfDest)); | 1586 dict->insertObject(name, std::move(pdfDest)); |
| 1587 } | 1587 } |
| 1588 } | 1588 } |
| 1589 | 1589 |
| 1590 sk_sp<SkPDFObject> SkPDFDevice::makeFormXObjectFromDevice() { | 1590 sk_sp<SkPDFObject> SkPDFDevice::makeFormXObjectFromDevice() { |
| 1591 SkMatrix inverseTransform = SkMatrix::I(); |
| 1592 if (!this->initialTransform().isIdentity()) { |
| 1593 if (!this->initialTransform().invert(&inverseTransform)) { |
| 1594 SkDEBUGFAIL("Layer initial transform should be invertible."); |
| 1595 inverseTransform.reset(); |
| 1596 } |
| 1597 } |
| 1591 sk_sp<SkPDFObject> xobject = | 1598 sk_sp<SkPDFObject> xobject = |
| 1592 SkPDFMakeFormXObject(this->content(), this->copyMediaBox(), | 1599 SkPDFMakeFormXObject(this->content(), this->copyMediaBox(), |
| 1593 this->makeResourceDict(), nullptr); | 1600 this->makeResourceDict(), inverseTransform, nullptr
); |
| 1594 // We always draw the form xobjects that we create back into the device, so | 1601 // We always draw the form xobjects that we create back into the device, so |
| 1595 // we simply preserve the font usage instead of pulling it out and merging | 1602 // we simply preserve the font usage instead of pulling it out and merging |
| 1596 // it back in later. | 1603 // it back in later. |
| 1597 this->cleanUp(); // Reset this device to have no content. | 1604 this->cleanUp(); // Reset this device to have no content. |
| 1598 this->init(); | 1605 this->init(); |
| 1599 return xobject; | 1606 return xobject; |
| 1600 } | 1607 } |
| 1601 | 1608 |
| 1602 void SkPDFDevice::drawFormXObjectWithMask(int xObjectIndex, | 1609 void SkPDFDevice::drawFormXObjectWithMask(int xObjectIndex, |
| 1603 SkPDFObject* mask, | 1610 SkPDFObject* mask, |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2221 } | 2228 } |
| 2222 | 2229 |
| 2223 sk_sp<SkSpecialImage> SkPDFDevice::makeSpecial(const SkImage* image) { | 2230 sk_sp<SkSpecialImage> SkPDFDevice::makeSpecial(const SkImage* image) { |
| 2224 return SkSpecialImage::MakeFromImage(SkIRect::MakeWH(image->width(), image->
height()), | 2231 return SkSpecialImage::MakeFromImage(SkIRect::MakeWH(image->width(), image->
height()), |
| 2225 image->makeNonTextureImage()); | 2232 image->makeNonTextureImage()); |
| 2226 } | 2233 } |
| 2227 | 2234 |
| 2228 sk_sp<SkSpecialImage> SkPDFDevice::snapSpecial() { | 2235 sk_sp<SkSpecialImage> SkPDFDevice::snapSpecial() { |
| 2229 return nullptr; | 2236 return nullptr; |
| 2230 } | 2237 } |
| OLD | NEW |