Get working for not real images
This commit is contained in:
parent
b151516416
commit
d99dc718c5
@ -1,3 +1,24 @@
|
|||||||
|
var ImageCanvasProxyCounter = 0;
|
||||||
|
function ImageCanvasProxy(width, height) {
|
||||||
|
this.id = ImageCanvasProxyCounter++;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
|
||||||
|
// Using `Uint8ClampedArray` seems to be the type of ImageData - at least
|
||||||
|
// Firebug tells me so.
|
||||||
|
this.imgData = {
|
||||||
|
data: Uint8ClampedArray(width * height * 4)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
ImageCanvasProxy.prototype.putImageData = function(imgData) {
|
||||||
|
// this.ctx.putImageData(imgData, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImageCanvasProxy.prototype.getCanvas = function() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
function CanvasProxy(width, height) {
|
function CanvasProxy(width, height) {
|
||||||
var stack = this.$stack = [];
|
var stack = this.$stack = [];
|
||||||
|
|
||||||
@ -51,6 +72,14 @@ function CanvasProxy(width, height) {
|
|||||||
"$showText"
|
"$showText"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
this.drawImage = function(canvas, x, y) {
|
||||||
|
if (canvas instanceof ImageCanvasProxy) {
|
||||||
|
stack.push(["$drawCanvas", [canvas.imgData, x, y, canvas.width, canvas.height]]);
|
||||||
|
} else {
|
||||||
|
throw "unkown type to drawImage";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function buildFuncCall(name) {
|
function buildFuncCall(name) {
|
||||||
return function() {
|
return function() {
|
||||||
// console.log("funcCall", name)
|
// console.log("funcCall", name)
|
||||||
|
@ -4,11 +4,6 @@
|
|||||||
<script>
|
<script>
|
||||||
var myWorker = new Worker('worker.js');
|
var myWorker = new Worker('worker.js');
|
||||||
|
|
||||||
// var array = new Uint8Array(2);
|
|
||||||
// array[0] = 1;
|
|
||||||
// array[1] = 300;
|
|
||||||
//
|
|
||||||
|
|
||||||
var currentX = 0;
|
var currentX = 0;
|
||||||
var currentXStack = [];
|
var currentXStack = [];
|
||||||
var special = {
|
var special = {
|
||||||
@ -34,6 +29,16 @@ var special = {
|
|||||||
this.translate(currentX, -1 * y);
|
this.translate(currentX, -1 * y);
|
||||||
this.fillText(text, 0, 0);
|
this.fillText(text, 0, 0);
|
||||||
currentX += this.measureText(text).width;
|
currentX += this.measureText(text).width;
|
||||||
|
},
|
||||||
|
|
||||||
|
"$drawCanvas": function(data, x, y, width, height) {
|
||||||
|
// Ugly: getImageData is called here only to get an object of the right
|
||||||
|
// shape - we are not interessted in the data, as we set it the line
|
||||||
|
// afterwards to something custome.
|
||||||
|
// Can we do better here?
|
||||||
|
var imgData = ctx.getImageData(0, 0, width, height);
|
||||||
|
imgData.data = data;
|
||||||
|
ctx.putImageData(imgData, x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
37
worker.js
37
worker.js
@ -41,6 +41,7 @@ var canvas = new CanvasProxy(1224, 1584);
|
|||||||
log("test");
|
log("test");
|
||||||
|
|
||||||
var pageInterval;
|
var pageInterval;
|
||||||
|
|
||||||
onmessage = function(event) {
|
onmessage = function(event) {
|
||||||
var data = event.data;
|
var data = event.data;
|
||||||
var pdfDocument = new PDFDoc(new Stream(data));
|
var pdfDocument = new PDFDoc(new Stream(data));
|
||||||
@ -48,48 +49,16 @@ onmessage = function(event) {
|
|||||||
|
|
||||||
tic();
|
tic();
|
||||||
// Let's try to render the first page...
|
// Let's try to render the first page...
|
||||||
var page = pdfDocument.getPage(8);
|
var page = pdfDocument.getPage(2);
|
||||||
|
|
||||||
// page.compile will collect all fonts for us, once we have loaded them
|
// page.compile will collect all fonts for us, once we have loaded them
|
||||||
// we can trigger the actual page rendering with page.display
|
// we can trigger the actual page rendering with page.display
|
||||||
var fonts = [];
|
var fonts = [];
|
||||||
|
|
||||||
var gfx = new CanvasGraphics(canvas);
|
var gfx = new CanvasGraphics(canvas, ImageCanvasProxy);
|
||||||
page.compile(gfx, fonts);
|
page.compile(gfx, fonts);
|
||||||
toc("compiled page");
|
toc("compiled page");
|
||||||
|
|
||||||
//
|
|
||||||
var fontsReady = true;
|
|
||||||
// Inspect fonts and translate the missing one
|
|
||||||
var count = fonts.length;
|
|
||||||
for (var i = 0; i < count; i++) {
|
|
||||||
var font = fonts[i];
|
|
||||||
if (Fonts[font.name]) {
|
|
||||||
fontsReady = fontsReady && !Fonts[font.name].loading;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
new Font(font.name, font.file, font.properties);
|
|
||||||
fontsReady = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// function delayLoadFont() {
|
|
||||||
// for (var i = 0; i < count; i++) {
|
|
||||||
// if (Fonts[font.name].loading)
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// clearInterval(pageInterval);
|
|
||||||
// page.display(gfx);
|
|
||||||
//
|
|
||||||
// log("flush");
|
|
||||||
// canvas.flush();
|
|
||||||
// };
|
|
||||||
|
|
||||||
// if (fontsReady) {
|
|
||||||
// delayLoadFont();
|
|
||||||
// } else {
|
|
||||||
// pageInterval = setInterval(delayLoadFont, 10);
|
|
||||||
// }
|
|
||||||
|
|
||||||
page.display(gfx);
|
page.display(gfx);
|
||||||
canvas.flush();
|
canvas.flush();
|
||||||
|
Loading…
Reference in New Issue
Block a user