package org.jwildfire.create.tina.variation;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.jwildfire.base.Prefs;
import org.jwildfire.base.QualityProfile;
import org.jwildfire.base.ResolutionProfile;
import org.jwildfire.create.tina.base.Flame;
import org.jwildfire.create.tina.base.Layer;
import org.jwildfire.create.tina.base.XForm;
import org.jwildfire.create.tina.base.XYZPoint;
import org.jwildfire.create.tina.batch.HeadlessBatchRendererController;
import org.jwildfire.create.tina.batch.Job;
import org.jwildfire.create.tina.batch.JobRenderThread;
import org.jwildfire.create.tina.batch.JobRenderThreadController;
import org.jwildfire.create.tina.io.FlameWriter;
import org.jwildfire.create.tina.palette.RGBPalette;
import org.jwildfire.create.tina.random.RandomGeneratorType;
import org.jwildfire.create.tina.random.ZigguratRandomGenerator;
import org.jwildfire.create.tina.render.FlameRenderer;
public class Boarders2Test
{
@Test
public void testBean()
{
Boarders2Func bf = new Boarders2Func();
bf.setParameter("c", 0);
bf.setParameter("left", 0);
bf.setParameter("right", 0);
bf.init(null, null, new XForm(), 10);
Assert.assertNotNull(bf.getName());
bf.setParameter("c", 5);
bf.setParameter("left", 6);
bf.setParameter("right", 7);
try {
bf.setParameter("doesn't exist", 5);
Assert.fail("Expected exception");
} catch (Exception e) {
}
Assert.assertEquals(3,bf.getParameterValues().length);
Assert.assertEquals(5.0,bf.getParameter("c"));
Assert.assertEquals(6.0,bf.getParameter("left"));
Assert.assertEquals(7.0,bf.getParameter("right"));
}
@Test
public void testTransformXbigXPos()
{
XYZPoint pt = new XYZPoint();
pt.y=.4;
pt.x=.5;
pt.z=1;
XYZPoint pt2 = new XYZPoint();
pt2.y=.4;
pt2.x=.5;
pt2.z=1;
Boarders2Func bf = new Boarders2Func();
bf.init(null, null, new XForm(), 10);
Flame f = new Flame();
f.setHeight(500);
f.setWidth(500);
f.setName("test1");
bf.transform(new FlameTransformationContext(
new FlameRenderer(f, Prefs.getPrefs(), true, false), new ZigguratRandomGenerator(), 1),
new XForm(), pt, pt2, 10);
}
@Test
public void testTransformYbigYPos()
{
XYZPoint pt = new XYZPoint();
pt.y=.4;
pt.x=.2;
pt.z=1;
XYZPoint pt2 = new XYZPoint();
pt2.y=.4;
pt2.x=.2;
pt2.z=1;
Boarders2Func bf = new Boarders2Func();
bf.init(null, null, new XForm(), 10);
Flame f = new Flame();
f.setHeight(500);
f.setWidth(500);
f.setName("test1");
bf.transform(new FlameTransformationContext(
new FlameRenderer(f, Prefs.getPrefs(), true, false), new ZigguratRandomGenerator(), 1),
new XForm(), pt, pt2, 10);
}
@Test
public void testTransformYbigYNeg()
{
XYZPoint pt = new XYZPoint();
pt.y=-.4;
pt.x=.2;
pt.z=1;
XYZPoint pt2 = new XYZPoint();
pt2.y=-.4;
pt2.x=.2;
pt2.z=1;
Boarders2Func bf = new Boarders2Func();
bf.init(null, null, new XForm(), 10);
Flame f = new Flame();
f.setHeight(500);
f.setWidth(500);
f.setName("test1");
bf.transform(new FlameTransformationContext(
new FlameRenderer(f, Prefs.getPrefs(), true, false), new ZigguratRandomGenerator(), 1),
new XForm(), pt, pt2, 10);
}
@Test
public void testTransformXbigXNeg()
{
XYZPoint pt = new XYZPoint();
pt.y=.4;
pt.x=-.5;
pt.z=1;
XYZPoint pt2 = new XYZPoint();
pt2.y=.4;
pt2.x=-.5;
pt2.z=1;
Boarders2Func bf = new Boarders2Func();
bf.setParameter("right", 0);
bf.init(null, null, new XForm(), 10);
Flame f = new Flame();
f.setHeight(500);
f.setWidth(500);
f.setName("test1");
bf.transform(new FlameTransformationContext(
new FlameRenderer(f, Prefs.getPrefs(), true, false), new ZigguratRandomGenerator(), 1),
new XForm(), pt, pt2, 10);
}
@Test// @Ignore
public void visual() throws Exception
{
Prefs.getPrefs().setTinaRandomNumberGenerator(RandomGeneratorType.JAVA_INTERNAL);
System.out.println(Prefs.getPrefs().getTinaRandomNumberGenerator().name());
int side = 600;
ResolutionProfile respro = new ResolutionProfile(true, side, side);
int quality=80;
Flame f = new Flame();
f.setWidth(side);
f.setHeight(side);
f.setGamma(4.0);
f.setBGTransparency(false);
f.setAntialiasAmount(1.0);
f.setAntialiasRadius(.1);
Layer l = new Layer();
XForm xf = new XForm();
Boarders2Func bf = new Boarders2Func();
bf.setParameter("c", .6);
bf.setParameter("left", .65);
bf.setParameter("right", .35);
xf.addVariation(1.0, bf);
f.setCamZoom(6.461);
xf.setWeight(5.5);
l.getXForms().add(xf);
RGBPalette pal = new RGBPalette();
for(int i=0;i<256;i++)
pal.addColor(0, i, 255);
pal.setFlam3Name("test");
l.setPalette(pal);
f.setResolutionProfile(respro);
f.getLayers().clear();
f.getLayers().add(l);
f.setPixelsPerUnit(43.75);//this is "scale"
new FlameWriter().writeFlame(f, "/dev/shm/test.flame");
JobRenderThreadController controller = new HeadlessBatchRendererController();
List<Job> joblist = new ArrayList<>();
Job j = new Job();
j.setCustomHeight(side);
j.setCustomWidth(side);
j.setCustomQuality(quality);
j.setFlameFilename("/dev/shm/test.flame");
joblist.add(j);
QualityProfile qualpro = new QualityProfile();
qualpro.setQuality(quality);
JobRenderThread job = new JobRenderThread(controller, joblist, respro, qualpro, true);
job.run();
}
}