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();
});
});
it('should render blank transparent image', function(done) {
var sources = [ {'name':'hello','image':new mapnik.Image(256,256) } ]
mapnik.render(0,0,0,new mapnik.Map(256,256),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(),new mapnik.Color(0,0,0,0).toString());
done();
});
});
assert.throws(function() { mapnik.render('a'); });
// almost correct but image is invalid
assert.throws(function() { mapnik.render(0,0,0,new mapnik.Map(256,256),{},[],{},function() {}); });
// almost correct but sources array is empty
// image has alpha so it needs to be premultiplied before passing into renderer
raster.premultiply();
// okay, sweet, now render these various sources into a new image
// NOTE: order of sources does not matter, what matters is the order
// of the layers in the mapnik.Map (which must match sources by name)
// EXCEPT if multiple sources provide data for the same layer name - in this
// case they are currently both rendered in the order of the sources array
var sources = [vtile_global,{'name':'raster','image':raster},japan_vtile];
var opts = {scale:1.0,buffer_size:256};
var map_composite = new mapnik.Map(256,256);
map_composite.loadSync('./test/data/render-composite/composite.xml');
var z = 0;
var x = 0;
var y = 0;
mapnik.render(z,x,y,map_composite,new mapnik.Image(256,256),sources,opts,function(err,im) {
if (err) throw err;
var actual = './test/data/render-composite/composite-actual.png';
var expected = actual.replace('actual','expected');
im.save(actual);
assert.equal(fs.readFileSync(actual).length,
fs.readFileSync(expected).length);
done();
});
});
});
// 128 is used here just for testing purposed - you will want to stick to 256 px images
var raster = new mapnik.Image(128,128);
// semi transparent blue
raster.background = new mapnik.Color('rgba(0,0,255,.5)');
// image has alpha so it needs to be premultiplied before passing into renderer
raster.premultiply();
// okay, sweet, now render these various sources into a new vector tile
var sources = [vtile_global,{'name':'raster','image':raster},japan_vtile];
var opts = {scale:1.0,buffer_size:256};
var map_composite = new mapnik.Map(256,256);
map_composite.loadSync('./test/data/render-composite/composite.xml');
var z = 5;
var x = 28;
var y = 12;
mapnik.render(z,x,y,map_composite,new mapnik.VectorTile(z,x,y),sources,opts,function(err,v) {
if (err) throw err;
var actual = './test/data/render-composite/composite-actual.json';
var expected = actual.replace('actual','expected');
fs.writeFileSync(actual,JSON.stringify(v.toJSON(),null,1));
assert.equal(fs.readFileSync(actual).length,
fs.readFileSync(expected).length);
done();
});
});
});
assert.throws(function() { mapnik.render(0,0,0,new mapnik.Map(256,256),new mapnik.Image(256,256),['foo'],{},function() {}); });
});