use of org.jwildfire.create.tina.palette.RGBPalette in project JWildfire by thargor6.
the class Flam3GradientReader method readPalettesFromXML.
public List<RGBPalette> readPalettesFromXML(String pXML) {
List<RGBPalette> res = new ArrayList<RGBPalette>();
int pPalettes = 0;
while (true) {
String paletteXML;
{
int ps = pXML.indexOf("<palette ", pPalettes);
if (ps < 0)
break;
int pe = pXML.indexOf("/>", ps + 1);
if (pe < 0)
break;
pPalettes = pe + 2;
paletteXML = pXML.substring(ps, pPalettes);
}
RGBPalette palette = new RGBPalette();
res.add(palette);
{
int ps = paletteXML.indexOf("<flame ");
int pe = -1;
boolean qt = false;
for (int i = ps + 1; i < paletteXML.length(); i++) {
if (paletteXML.charAt(i) == '\"') {
qt = !qt;
} else if (!qt && paletteXML.charAt(i) == '>') {
pe = i;
break;
}
}
String hs = paletteXML.substring(ps + 7, pe);
parsePaletteAttributes(palette, hs);
}
}
return res;
}
use of org.jwildfire.create.tina.palette.RGBPalette in project JWildfire by thargor6.
the class MapGradientReader method readPaletteFromMapData.
public List<RGBPalette> readPaletteFromMapData(String pMapData, String pFilename) {
List<RGBPalette> res = new ArrayList<RGBPalette>();
RGBPalette gradient = new RGBPalette();
res.add(gradient);
gradient.setFlam3Name(new File(pFilename).getName());
StringTokenizer tokenizer = new StringTokenizer(pMapData, "\n\r");
int idx = 0;
Map<Integer, RGBColor> colors = new HashMap<Integer, RGBColor>();
while (tokenizer.hasMoreElements()) {
String line = tokenizer.nextToken();
StringTokenizer lineTokenizer = new StringTokenizer(line, "\t ");
int r, g, b;
try {
r = Integer.parseInt(((String) lineTokenizer.nextElement()).trim());
g = Integer.parseInt(((String) lineTokenizer.nextElement()).trim());
b = Integer.parseInt(((String) lineTokenizer.nextElement()).trim());
} catch (Exception ex) {
break;
}
if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) {
RGBColor color = new RGBColor(r, g, b);
colors.put(idx++, color);
} else {
break;
}
}
gradient.setColors(colors, false, false);
return res;
}
use of org.jwildfire.create.tina.palette.RGBPalette in project JWildfire by thargor6.
the class UgrGradientReader method readPalettesFromUgr.
public List<RGBPalette> readPalettesFromUgr(String pUgr) {
List<RGBPalette> res = new ArrayList<RGBPalette>();
int pPalettes = 0;
while (true) {
String paletteUgr;
{
int ps = pUgr.indexOf("{", pPalettes);
if (ps < 0)
break;
int pe = pUgr.indexOf("}", ps + 1);
if (pe < 0)
break;
pPalettes = pe + 1;
paletteUgr = pUgr.substring(ps, pPalettes);
}
if (paletteUgr.contains("title=\"") && paletteUgr.contains("color=") && paletteUgr.contains("index=")) {
RGBPalette palette = new RGBPalette();
res.add(palette);
parsePalette(palette, paletteUgr);
}
}
return res;
}
use of org.jwildfire.create.tina.palette.RGBPalette in project JWildfire by thargor6.
the class FACLFlameWriter method addGradient.
private void addGradient(SimpleXMLBuilder xb, Layer layer) {
RGBPalette palette = layer.getPalette();
for (int i = 0; i < 256; i++) {
List<SimpleXMLBuilder.Attribute<?>> attrList = new ArrayList<>();
attrList.add(new Attribute<Integer>("index", i));
String rgbStr = palette.getColor(i).getRed() + " " + palette.getColor(i).getGreen() + " " + palette.getColor(i).getBlue();
attrList.add(new Attribute<String>("rgb", rgbStr));
xb.simpleElement("color", null, attrList);
}
}
use of org.jwildfire.create.tina.palette.RGBPalette in project JWildfire by thargor6.
the class PolylogarithmTest method visual.
@Test
@Ignore
public void visual() throws Exception {
int side = 400;
ResolutionProfile respro = new ResolutionProfile(true, side, side);
int quality = 200;
Flame f = new Flame();
f.setWidth(side);
f.setHeight(side);
f.setGamma(4.0);
f.setBGTransparency(false);
f.setAntialiasAmount(.1);
f.setAntialiasRadius(.1);
Layer l = new Layer();
XForm xf = new XForm();
SquishFunc df = new SquishFunc();
df.setParameter("power", 10);
xf.addVariation(1, df);
PolylogarithmFunc bf = new PolylogarithmFunc();
bf.setParameter("n", 2);
bf.setParameter("zpow", 1);
xf.addVariation(.1, bf);
f.setCamZoom(6);
xf.setWeight(10);
l.getXForms().add(xf);
RGBPalette pal = new RGBPalette();
for (int i = 0; i < 256; i++) pal.addColor(0, i, 255);
pal.setFlam3Name("PolylogarithmFunc");
l.setPalette(pal);
f.setResolutionProfile(respro);
f.getLayers().clear();
f.getLayers().add(l);
f.setPixelsPerUnit(43.75);
new FlameWriter().writeFlame(f, "/dev/shm/PolylogarithmFunc.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/PolylogarithmFunc.flame");
joblist.add(j);
QualityProfile qualpro = new QualityProfile();
qualpro.setQuality(quality);
JobRenderThread job = new JobRenderThread(controller, joblist, respro, qualpro, true);
job.run();
}
Aggregations