Pixelitor just updated and its awesome. Pixelitor's dev added a tool where users can add their own GMIC filters to Pixelitor by copying and pasting a GMIC command like
fx_random3d 3,50,3,100,45,0,0,-100,0.5,0.7,3,1 into a mini app inside Pixelitor's help menu, it will then spit out a file with all info about the GMIC filter (EXCEPT ITS PARAMETERS) users can get the paramters by manually opening this file,
https://raw.githubusercontent.com/Greyc ... tdlib.gmic and finding the parameters for their filter, and pasting them in the top box inside the app in Pixelitor. Though they must manually exclude parameters like GMIC Separators that Pixelitor doesn't use.
Then the user will make a new java file in the source code within this directory.
/Pixelitor-master/src/main/java/pixelitor/filters/gmicAttachment:
pixelitor_gmic_fun.png [ 62.13 KiB | Viewed 1291 times ]
And paste the content of the parameters into the
gmicwhatername.java/*
* Copyright 2023 Laszlo Balazs-Csiki and Contributors
*
* This file is part of Pixelitor. Pixelitor is free software: you
* can redistribute it and/or modify it under the terms of the GNU
* General Public License, version 3 as published by the Free
* Software Foundation.
*
* Pixelitor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pixelitor. If not, see <http://www.gnu.org/licenses/>.
*/
package pixelitor.filters.gmic;
import pixelitor.filters.gui.IntChoiceParam;
import pixelitor.filters.gui.IntChoiceParam.Item;
import pixelitor.filters.gui.RangeParam;
import java.io.Serial;
import java.util.List;
public class Rodilius extends GMICFilter {
@Serial
private static final long serialVersionUID = 1L;
public static final String NAME = "Rodilius";
private final RangeParam amplitude = new RangeParam("Amplitude", 0, 10, 30);
private final RangeParam thickness = new RangeParam("Thickness", 0, 10, 100);
private final RangeParam sharpness = new RangeParam("Sharpness", 0, 300, 1000);
private final RangeParam orientations = new RangeParam("Orientations", 2, 5, 36);
private final RangeParam offset = new RangeParam("Offset", 0, 30, 180);
private final RangeParam smoothness = new RangeParam("Smoothness", 0, 0, 5);
private final IntChoiceParam colormode = new IntChoiceParam("Color Mode", new Item[]{
new Item("Lighter", 1),
new Item("Darker", 0)
});
private final IntChoiceParam channel = GMICFilter.createChannelChoice();
private final IntChoiceParam valueAction = GMICFilter.createValueAction();
public Rodilius() {
setParams(amplitude, thickness, sharpness, orientations, offset, smoothness, colormode, channel, valueAction);
}
@Override
public List<String> getArgs() {
return List.of("fx_rodilius",
amplitude.getValue() + "," +
thickness.getValue() + "," +
sharpness.getValue() + "," +
orientations.getValue() + "," +
offset.getValue() + "," +
smoothness.getValue() + "," +
colormode.getValue() + "," +
channel.getValue() + "," +
valueAction.getValue());
}
}
Then we edit another file
menubar.java and list our GMIC filter in the menu under GMIC>Artistic (or where ever)
private static JMenu createGMICArtistictSubmenu() {
PMenu sub = new PMenu("Artistic");
sub.addFilter(Bokeh.NAME, Bokeh::new);
sub.addFilter(BoxFitting.NAME, BoxFitting::new);
sub.addFilter(Brushify.NAME, Brushify::new);
sub.addFilter(Cubism.NAME, Cubism::new);
sub.addFilter(HuffmanGlitches.NAME, HuffmanGlitches::new);
sub.addFilter(Rodilius.NAME, Rodilius::new);
sub.addFilter(GMICVoronoi.NAME, GMICVoronoi::new);
sub.addFilter(GMICRandomObjects.NAME, GMICRandomObjects::new);
Now we recompile Pixelitor with
mvn clean packageand here is our new Pixelitor GMIC filter (3d random objects) 100% non-destructive!
Attachment:
pixelitor_gmic_and_gegl_all_non_destructive.png [ 681.57 KiB | Viewed 1291 times ]