[Pkg-javascript-commits] [pdf.js] 84/161: Introduce paintSolidColorImageMask command to handle 1x1 solid image masks
David Prévot
taffit at moszumanska.debian.org
Sat Apr 19 14:16:31 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository pdf.js.
commit fc9edfcf76d0efe0cd5630c93dcd4021c1cefa2e
Author: Christian Krebs <chrisk at opera.com>
Date: Sun Mar 16 16:17:13 2014 +0100
Introduce paintSolidColorImageMask command to handle 1x1 solid image masks
See https://github.com/mozilla/pdf.js/issues/4436 for details
---
src/core/evaluator.js | 20 ++++++++++++++++++++
src/display/canvas.js | 5 +++++
src/shared/util.js | 3 ++-
3 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/src/core/evaluator.js b/src/core/evaluator.js
index 2265321..23baf0b 100644
--- a/src/core/evaluator.js
+++ b/src/core/evaluator.js
@@ -1699,6 +1699,25 @@ var QueueOptimizer = (function QueueOptimizerClosure() {
state[pattern[pattern.length - 1]] = fn;
}
+ function handlePaintSolidColorImageMask(index, count, fnArray, argsArray) {
+ // Handles special case of mainly latex documents which
+ // use image masks to draw lines with the current fill style.
+ // 'count' groups of (save, transform, paintImageMaskXObject, restore)+
+ // have been found at index.
+ for (var i = 0; i < count; i++) {
+ var arg = argsArray[index + 4 * i + 2];
+ var imageMask = arg.length == 1 && arg[0];
+ if (imageMask && imageMask.width == 1 && imageMask.height == 1 &&
+ (!imageMask.data.length || (imageMask.data.length == 1 &&
+ imageMask.data[0] === 0))) {
+ fnArray[index + 4 * i + 2] = OPS.paintSolidColorImageMask;
+ continue;
+ }
+ break;
+ }
+ return count - i;
+ }
+
var InitialState = [];
addState(InitialState,
@@ -1802,6 +1821,7 @@ var QueueOptimizer = (function QueueOptimizerClosure() {
for (; i < ii && fnArray[i - 4] === fnArray[i]; i++) {
}
var count = (i - j) >> 2;
+ count = handlePaintSolidColorImageMask(j, count, fnArray, argsArray);
if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
context.currentOperation = i - 1;
return;
diff --git a/src/display/canvas.js b/src/display/canvas.js
index ddcf3da..6d60a7d 100644
--- a/src/display/canvas.js
+++ b/src/display/canvas.js
@@ -2128,6 +2128,11 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
}
},
+ paintSolidColorImageMask:
+ function CanvasGraphics_paintSolidColorImageMask() {
+ this.ctx.fillRect(0, 0, 1, 1);
+ },
+
// Marked content
markPoint: function CanvasGraphics_markPoint(tag) {
diff --git a/src/shared/util.js b/src/shared/util.js
index 4803e6d..c645d58 100644
--- a/src/shared/util.js
+++ b/src/shared/util.js
@@ -151,7 +151,8 @@ var OPS = PDFJS.OPS = {
paintInlineImageXObject: 86,
paintInlineImageXObjectGroup: 87,
paintImageXObjectRepeat: 88,
- paintImageMaskXObjectRepeat: 89
+ paintImageMaskXObjectRepeat: 89,
+ paintSolidColorImageMask: 90,
};
// A notice for devs. These are good for things that are helpful to devs, such
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git
More information about the Pkg-javascript-commits
mailing list