aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererFactory.java
blob: d9d2e2d9521eeb1b7fcb5f87447695956e222782 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package dev.isxander.yacl3.gui.image;

public interface ImageRendererFactory {
    /**
     * Prepares the image. This can be run off-thread,
     * and should NOT contain any GL calls whatsoever.
     */
    ImageSupplier prepareImage() throws Exception;

    default boolean requiresOffThreadPreparation() {
        return true;
    }

    interface ImageSupplier {
        ImageRenderer completeImage() throws Exception;
    }

    interface OnThread extends ImageRendererFactory {
        @Override
        default boolean requiresOffThreadPreparation() {
            return false;
        }
    }
}