Skip to content

Instantly share code, notes, and snippets.

View grkvlt's full-sized avatar
💭
🐧

Andrew Donald Kennedy grkvlt

💭
🐧
View GitHub Profile
@grkvlt
grkvlt / comparator.java
Created October 15, 2017 20:06
Exploring Iterated Function Systems
public static final Comparator<Function> IDENTITY = (left, right) ->
Integer.compare(left.getId(), right.getId());
public static final Comparator<Transform> Z_ORDER = (left, right) ->
ComparisonChain.start()
.compare(left.getZIndex(), right.getZIndex())
.compare(left, right, IDENTITY)
.result();
@grkvlt
grkvlt / save.java
Created October 15, 2017 20:04
Exploring Iterated Function Systems
public static void save(IFS ifs, File file) {
try (FileWriter writer = new FileWriter(file)) {
JAXBContext context = JAXBContext.newInstance(IFS.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(ifs, writer);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@grkvlt
grkvlt / jaxb.java
Created October 15, 2017 20:02
Exploring Iterated Function Systems
@XmlAttribute
private String name;
@XmlElementWrapper(name = "Transforms")
@XmlElement(name = "Transform")
private List<Transform> transforms = Lists.newLinkedList();
@XmlElementWrapper(name = "Reflections")
@XmlElement(name = "Reflection")
private List<Reflection> reflections = Lists.newLinkedList();
@grkvlt
grkvlt / gesture.java
Created October 13, 2017 15:41
Exploring Iterated Function Systems
GestureUtilities.addGestureListenerTo(controller.getEditor(), new RotationListener() {
@Override
public void rotate(RotationEvent re) {
if (controller.getEditor().isVisible()) {
Transform selected = controller.getEditor().getSelected();
if (selected != null && !selected.isMatrix()) {
selected.r -= Math.toRadians(re.getRotation());
}
}
}
@grkvlt
grkvlt / print.java
Created October 13, 2017 15:40
Exploring Iterated Function Systems
pauseViewer(() -> {
PrinterJob job = PrinterJob.getPrinterJob();
job.setJobName(Optional.fromNullable(ifs.getName()).or(IFS.UNTITLED));
PageFormat pf = job.defaultPage();
if (getWidth() > getHeight()) {
pf.setOrientation(PageFormat.LANDSCAPE);
} else {
pf.setOrientation(PageFormat.PORTRAIT);
}
switch (current) {
@grkvlt
grkvlt / htmleditorkit.java
Created October 13, 2017 15:37
Exploring Iterated Function Systems
setEditable(false);
setContentType(HTML_MIME_TYPE);
setText(INITIAL_CONTENT_HTML);
HTMLEditorKit kit = (HTMLEditorKit) getEditorKitForContentType(HTML_MIME_TYPE);
StyleSheet css = kit.getStyleSheet();
for (String rule : Iterables.concat(CSS_RULES, CSS_BRACKET_RULES)) {
css.addRule(rule);
}
@grkvlt
grkvlt / splashscreen.java
Last active October 13, 2017 15:37
Exploring Iterated Function Systems
// Print splash screen text
SplashScreen splash = SplashScreen.getSplashScreen();
if (splash != null && splash.isVisible()) {
context(printError(), splash.createGraphics(), g -> {
About.paintSplashText(g, splash.getSize().width, splash.getSize().height);
splash.update();
});
}
@grkvlt
grkvlt / fill.java
Created October 13, 2017 15:28
Exploring Iterated Function Systems
context(exceptionHandler, image.getGraphics(), g -> {
g.setColor(config.getRender().getBackground());
g.fillRect(0, 0, size.width, size.height);
});
@grkvlt
grkvlt / resize.java
Created October 12, 2017 17:02
Exploring Iterated Function Systems
switch (corner) {
case NW:
x += (inverseX.x + inverseY.x);
y += (inverseX.y + inverseY.y);
w -= delta.x;
h -= delta.y;
break;
case NE:
x += inverseY.x;
y += inverseY.y;
@grkvlt
grkvlt / getcorner.java
Created October 12, 2017 17:01
Exploring Iterated Function Systems
public Corner getCorner(Transform t, Point point) {
for (Corner corner : Corner.values()) {
Point center = corner.getPoint(unit());
t.getTransform().transform(center, center);
Rectangle handle = new Rectangle(center.x — 5, center.y — 5, 10, 10);
if (handle.contains(point)) {
return corner;
}
}
return null;