Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
it('should render semi transparent green image', function(done) {
var mask = new mapnik.Image(256,256);
var semi_green = new mapnik.Color('rgba(0,255,0,.5)');
mask.background = semi_green;
mask.premultiply();
var sources = [ {'name':'hello','image':mask } ]
var map = new mapnik.Map(256,256);
map.add_layer(new mapnik.Layer('hello'));
mapnik.render(0,0,0,map,new mapnik.Image(256,256),sources,{},function(err,im) {
if (err) throw err;
assert.ok(im instanceof mapnik.Image);
assert.equal(im.width(),256);
assert.equal(im.height(),256);
assert.equal(im.painted(),false); // true?
var view = im.view(0,0,256,256);
assert.equal(view.isSolid(),true);
assert.equal(view.getPixel(0,0).toString(),semi_green);
done();
}, function (err, map) {
console.log(map.toXML());
// Debug settings
if (err)
throw err;
map.add_layer(layer);
map.extent = bboxArray;
var im = new mapnik.Image(map.width, map.height);
map.render(im, callback);
});
} catch (err) {
mapnik.pools[ mapKey ].acquire(function(err, map) {
// pooled map extents
//map = new mapnik.Map(256, 256);
//map.loadSync( stylesheet );
map.extent = mercator.bbox(params.x, params.y, params.z, false, '900913');
if ( params.format == 'png' ){
var image = new mapnik.Image(size, size);
map.render( image, {}, function( err, im ) {
if (err) {
callback( err, null );
mapnik.pools[ mapKey ].release( map );
} else {
im.encode( 'png', function( err, buffer ) {
fs.writeFile( file, buffer, function( err ) {
mapnik.pools[ mapKey ].release( map );
callback( null, file );
});
});
}
});
} else if ( params.format == 'pbf' ){
// Used to composite tiles of a static API image as individual tiles
// before the entire canvas is composited. This compensates for the lack
// of offset handling in mapnik.VectorTile.render().
if (layer.group) {
var group = [layer];
while (layers.length && layer.group === layers[0].group) {
group.push(layers.shift());
}
// Clear out values which are now applied at the group level.
for (var i = 0; i < group.length; i++) {
delete group[i].group;
delete group[i].x;
delete group[i].y;
}
compose(new mapnik.Image(256, 256), group, function(err, grouped) {
if (err) return callback(err);
canvas.composite(grouped, opts, function(err, canvas) {
if (err) return callback(err);
compose(canvas, layers, callback);
});
});
} else if (layer.buffer instanceof mapnik.VectorTile) {
var vtile = layer.buffer;
vtile.render(vtile.map, canvas, vtile.opts, function(err, composed) {
if (err) return callback(err);
composed.premultiply(function(err) {
if (err) return callback(err);
compose(canvas, layers, callback);
});
});
} else {
}
}
// make shallow copy
layers = layers.slice(0);
// node-blend internally creates first canvas based on
// first image's size if width/height are not supplied
// this is a suboptimal way of emulating that for now
if (!options.width || !options.height) {
if (layers[0] instanceof Buffer && !layers[0].buffer) {
layers[0].buffer = layers[0];
}
var im = new mapnik.Image.fromBytesSync(layers[0].buffer);
options.width = im.width();
options.height = im.height();
}
var canvas = new mapnik.Image(options.width, options.height);
compose(canvas, layers, function(err, canvas) {
if (err) return callback(err);
canvas.demultiply(function(err) {
if (err) return callback(err);
var format = '';
if (!options.format) {
options.format = 'png';
}
switch (options.format) {
case 'jpg':
format = 'jpeg' + (options.quality || '80');
break;
case 'jpeg':
format = 'jpeg' + (options.quality || '80');
break;
case 'png':
if ( format == 'png' ){
map = new mapnik.Map(256, 256);
map.loadSync(__dirname + '/../templates/renderers/style.xml');
layer = new mapnik.Layer('tile');
layer.srs = '+init=epsg:4326';
layer.datasource = new mapnik.Datasource( { type: 'geojson', file: jsonFile } );
// add styles
if (geojson && geojson.features && geojson.features.length){
layer.styles = [geojson.features[0].geometry.type.toLowerCase()];
}
map.add_layer(layer);
var image = new mapnik.Image(256, 256);
map.extent = mercator.bbox(x, y, z, false, '900913');
map.render( image, {}, function( err, im ) {
if (err) {
callback( err, null );
} else {
im.encode( 'png', function( err, buffer ) {
fs.writeFile( file, buffer, function( err ) {
callback( null, file );
});
});
}
});
} else if (format == 'vector.pbf' || format == 'pbf') {
fields.push( "cellCount" );
}
fields = fields.concat( ["latitude", "longitude"] );
const options = { };
options.layer = "tile";
options.fields = fields;
options.headers = { "Content-Type": "application/json" };
const im = new mapnik.Grid( tileSize / 2, tileSize / 2, { key: "id" } );
map.render( im, options, ( err, img ) => {
if ( err ) { return callback( err, req, res ); }
req.tileData = img.encodeSync( );
return callback( null, req, res );
} );
} else {
const im = new mapnik.Image( tileSize, tileSize );
map.render( im, { scale: 2 }, ( err, img ) => {
if ( err ) { return callback( err, req, res ); }
req.tileData = img.encodeSync( );
return callback( null, req, res );
} );
}
};
/* eslint-enable no-param-reassign */
return error(res,err.message)
}
fs.writeFile(filepath,output,function(err) {
if (err) {
console.log(err);
return error(res,err.message)
}
return res.end(output);
});
});
} else {
return res.end(output);
}
});
} else {
var im = new mapnik.Image(map.width,map.height);
map.render(im,function(err,im) {
process.nextTick(function() {
map_pool.release(map);
});
if (err) {
console.log(err);
return error(res,err.message)
}
im.encode(params.format,function(err,buffer) {
if (err) {
console.log(err);
return error(res,err.message)
}
res.writeHead(200, {'Content-Type': 'image/png'});
if (!chunked) {
res.writeHead(200,{'Content-length': buffer.length});
var mapnik = require('mapnik');
var assert = require('assert');
var xtend = require('xtend');
var ShelfPack = require('@mapbox/shelf-pack');
var queue = require('queue-async');
var emptyPNG = new mapnik.Image(1, 1).encodeSync('png');
module.exports.generateLayout = generateLayout;
module.exports.generateLayoutUnique = generateLayoutUnique;
module.exports.generateImage = generateImage;
function heightAscThanNameComparator(a, b) {
return (b.height - a.height) || ((a.id === b.id) ? 0 : (a.id < b.id ? -1 : 1));
}
/**
* Pack a list of images with width and height into a sprite layout.
* options object with the following keys:
*
* @param {Object} [options]