fabric.js/test/node/server.js
2012-08-10 17:20:04 +02:00

56 lines
No EOL
1.5 KiB
JavaScript

var f = require('fabric'),
__fabric = global.fabric = f.fabric,
// Cufon = global.Cufon = modFabric.Cufon,
http = require('http'),
url = require('url'),
PORT = 8124;
// Fetch font definitions
// var fileNames = fs.readdirSync(RAILS_ROOT + '/public/javascripts/fonts');
// fileNames.forEach(function(fileName) {
// if (fileName.charAt(0) === '.') return;
// require(RAILS_ROOT + '/public/javascripts/fonts/' + fileName);
// });
// require('font_definitions.js');
// if (typeof __fontDefinitions !== 'undefined') {
// for (var fontName in __fontDefinitions) {
// if (Cufon.fonts[fontName.toLowerCase()]) {
// Cufon.fonts[fontName.toLowerCase()].offsetLeft = __fontDefinitions[fontName];
// }
// }
// }
// else {
// console.log('Failed to include font definitions file');
// }
var server = http.createServer(function (request, response) {
var params = url.parse(request.url, true);
serveImage(response, params.query.code, params.query.async);
});
server.listen(PORT);
console.log('Server listening on http://localhost:' + PORT);
function serveImage(__response, __code, __async) {
var canvas = __fabric.createCanvasForNode(200, 200);
eval(__code);
__response.writeHead(200, { 'Content-Type': 'image/png' });
if (__async !== 'true') {
proceed();
}
function proceed() {
canvas.renderAll();
var __stream = canvas.createPNGStream();
__stream.on('data', function(chunk) {
__response.write(chunk);
});
__stream.on('end', function() {
__response.end();
});
}
}