mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
Merge pull request #12016 from Snuffleupagus/issue-8078
Tweak the `QueueOptimizer` to recognize `OPS.paintImageMaskXObject` operators as *repeated* when the "skew" transformation matrix elements are non-zero (issue 8078)
This commit is contained in:
commit
c1cb9ee9fc
4 changed files with 30 additions and 10 deletions
|
@ -229,13 +229,13 @@ var QueueOptimizer = (function QueueOptimizerClosure() {
|
|||
var isSameImage = false;
|
||||
var iTransform, transformArgs;
|
||||
var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
|
||||
if (
|
||||
argsArray[iFirstTransform][1] === 0 &&
|
||||
argsArray[iFirstTransform][2] === 0
|
||||
) {
|
||||
const firstTransformArg0 = argsArray[iFirstTransform][0],
|
||||
firstTransformArg1 = argsArray[iFirstTransform][1],
|
||||
firstTransformArg2 = argsArray[iFirstTransform][2],
|
||||
firstTransformArg3 = argsArray[iFirstTransform][3];
|
||||
|
||||
if (firstTransformArg1 === firstTransformArg2) {
|
||||
isSameImage = true;
|
||||
var firstTransformArg0 = argsArray[iFirstTransform][0];
|
||||
var firstTransformArg3 = argsArray[iFirstTransform][3];
|
||||
iTransform = iFirstTransform + 4;
|
||||
var iPIMXO = iFirstPIMXO + 4;
|
||||
for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
|
||||
|
@ -243,8 +243,8 @@ var QueueOptimizer = (function QueueOptimizerClosure() {
|
|||
if (
|
||||
argsArray[iPIMXO][0] !== firstPIMXOArg0 ||
|
||||
transformArgs[0] !== firstTransformArg0 ||
|
||||
transformArgs[1] !== 0 ||
|
||||
transformArgs[2] !== 0 ||
|
||||
transformArgs[1] !== firstTransformArg1 ||
|
||||
transformArgs[2] !== firstTransformArg2 ||
|
||||
transformArgs[3] !== firstTransformArg3
|
||||
) {
|
||||
if (q < MIN_IMAGES_IN_MASKS_BLOCK) {
|
||||
|
@ -272,6 +272,8 @@ var QueueOptimizer = (function QueueOptimizerClosure() {
|
|||
argsArray.splice(iFirstSave, count * 4, [
|
||||
firstPIMXOArg0,
|
||||
firstTransformArg0,
|
||||
firstTransformArg1,
|
||||
firstTransformArg2,
|
||||
firstTransformArg3,
|
||||
positions,
|
||||
]);
|
||||
|
|
|
@ -2157,9 +2157,11 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
|
|||
this.paintInlineImageXObject(maskCanvas.canvas);
|
||||
},
|
||||
|
||||
paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(
|
||||
paintImageMaskXObjectRepeat(
|
||||
imgData,
|
||||
scaleX,
|
||||
skewX = 0,
|
||||
skewY = 0,
|
||||
scaleY,
|
||||
positions
|
||||
) {
|
||||
|
@ -2190,7 +2192,14 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
|
|||
var ctx = this.ctx;
|
||||
for (var i = 0, ii = positions.length; i < ii; i += 2) {
|
||||
ctx.save();
|
||||
ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);
|
||||
ctx.transform(
|
||||
scaleX,
|
||||
skewX,
|
||||
skewY,
|
||||
scaleY,
|
||||
positions[i],
|
||||
positions[i + 1]
|
||||
);
|
||||
ctx.scale(1, -1);
|
||||
ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
|
||||
ctx.restore();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue