[PDF] Fix regression - correct for fInitialTrnasform in form xobjects.
Chrome bug http://crbug.com/83658 Review URL: http://codereview.appspot.com/4550072 git-svn-id: http://skia.googlecode.com/svn/trunk@1415 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
50108cdbfe
commit
61d267879b
@ -137,6 +137,8 @@ public:
|
||||
*/
|
||||
SkStream* content() const;
|
||||
|
||||
const SkMatrix& initialTransform() const { return fInitialTransform; }
|
||||
|
||||
protected:
|
||||
// override
|
||||
virtual SkDeviceFactory* onNewDeviceFactory();
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "SkMatrix.h"
|
||||
#include "SkPDFCatalog.h"
|
||||
#include "SkPDFDevice.h"
|
||||
#include "SkPDFUtils.h"
|
||||
#include "SkStream.h"
|
||||
#include "SkTypes.h"
|
||||
|
||||
@ -38,6 +39,16 @@ SkPDFFormXObject::SkPDFFormXObject(SkPDFDevice* device) {
|
||||
insert("BBox", device->getMediaBox().get());
|
||||
insert("Resources", device->getResourceDict().get());
|
||||
|
||||
// We invert the initial transform and apply that to the xobject so that
|
||||
// it doesn't get applied twice. We can't just undo it because it's
|
||||
// embedded in things like shaders and images.
|
||||
if (!device->initialTransform().isIdentity()) {
|
||||
SkMatrix inverse;
|
||||
inverse.reset();
|
||||
device->initialTransform().invert(&inverse);
|
||||
insert("Matrix", SkPDFUtils::MatrixToArray(inverse))->unref();
|
||||
}
|
||||
|
||||
// Right now SkPDFFormXObject is only used for saveLayer, which implies
|
||||
// isolated blending. Do this conditionally if that changes.
|
||||
SkRefPtr<SkPDFDict> group = new SkPDFDict("Group");
|
||||
|
Loading…
Reference in New Issue
Block a user