gradient <- linearGradient(c("black", "white", "black"), 
                           x0=0, y0=.5, x1=1, y1=.5)


circlesOnBlack <- 
    gTree(children=gList(rectGrob(gp=gpar(fill="black")),
                         circleGrob(x=1:3/4, r=.3, 
                                    gp=gpar(col=NA,
                                            fill="white"))))
m <- mask(circlesOnBlack)


grid.rect(name="r2")
grid.gradientFill("r2", gradient)
grid.mask("r2", m)


pdf(NULL, width=12, height=3)
# grid.newpage()
pushViewport(viewport(x=1/4, width=.4, height=.8))
grid.rect(gp=gpar(col="grey"))
grid.draw(circlesOnBlack)
popViewport()
pushViewport(viewport(x=3/4, width=.4, height=.8))
grid.rect(gp=gpar(col="grey"))
grid.rect(name="r2")
grid.gradientFill("r2", gradient)
grid.mask("r2", m)
popViewport()
grid.export("Figures/export-mask1.svg")
dev.off()


