function cstripImages(svg, images, options) {
const getimageid = i => `panel_${options.id}_csimage_${i}`;
svg.selectAll(".csimage")
.data(images)
.join("image")
.attr("xlink:href", cobj => cobj.url)
.attr("id", (cobj, i) => getimageid(i))
.attr("class", "csimage")
.attr("aratio", function(cobj) {
const inibbox = this.getBoundingClientRect();
const w = inibbox.width || 200;
const h = inibbox.height || 200;
return String(w / h);
})
.attr("width", function(cobj) {
const bbox = getImageBbox(this, cobj);
d3.select(this)
.attr("x", bbox.x)
.attr("y", bbox.y)
.attr("width", bbox.width)
.attr("height", bbox.height)
.attr('transform', `rotate(${bbox.angle}, ${cobj.center.x}, ${cobj.center.y})`);
return bbox.width;
})
svg.selectAll(".imagemove")
.data(images)
.join("rect")
.attr("class", "imagemove")
.attr("id", (cobj, i) => `${getimageid(i)}_imagemove`)
.attr("imageid", (cobj, i) => getimageid(i))
.attr("x", d => d.center.x - 5)
.attr("y", d => d.center.y - 5)
.attr("width", 10)
.attr("height", 10)
.attr("fill", "yellow")
.attr("stroke", "black")
.attr("stroke-width", 2)
.call(dragImageMove())
svg.selectAll(".imageresrot")
.data(images)
.join("circle")
.attr("class", "imageresrot")
.attr("id", (cobj, i) => `${getimageid(i)}_imageresrot`)
.attr("imageid", (cobj, i) => getimageid(i))
.attr("cx", d => d.circle.x)
.attr("cy", d => d.circle.y)
.attr("r", 10)
.attr("fill", "blue")
.attr("stroke", "black")
.attr("stroke-width", 2)
.call(dragImageResRot())
}