package com.scrivenvar.preview;
import com.scrivenvar.adapters.ReplacedElementAdapter;
import org.w3c.dom.Element;
import org.xhtmlrenderer.extend.ReplacedElement;
import org.xhtmlrenderer.extend.ReplacedElementFactory;
import org.xhtmlrenderer.extend.UserAgentCallback;
import org.xhtmlrenderer.layout.LayoutContext;
import org.xhtmlrenderer.render.BlockBox;
import java.util.HashSet;
import java.util.Set;
public class ChainedReplacedElementFactory extends ReplacedElementAdapter {
private final Set<ReplacedElementFactory> mFactoryList = new HashSet<>();
@Override
public ReplacedElement createReplacedElement(
final LayoutContext c,
final BlockBox box,
final UserAgentCallback uac,
final int cssWidth,
final int cssHeight ) {
for( final var f : mFactoryList ) {
final var r = f.createReplacedElement(
c, box, uac, cssWidth, cssHeight );
if( r != null ) {
return r;
}
}
return null;
}
@Override
public void reset() {
for( final var factory : mFactoryList ) {
factory.reset();
}
}
@Override
public void remove( final Element element ) {
for( final var factory : mFactoryList ) {
factory.remove( element );
}
}
public void addFactory( final ReplacedElementFactory factory ) {
mFactoryList.add( factory );
}
}