// Path: src/main/java/eu/rekawek/coffeegb/gpu/Display.java
// public interface Display {
// 
//     void putDmgPixel(int color);
// 
//     void putColorPixel(int gbcRgb);
// 
//     void requestRefresh();
// 
//     void waitForRefresh();
// 
//     void enableLcd();
// 
//     void disableLcd();
// 
//     Display NULL_DISPLAY = new Display() {
// 
//         @Override
//         public void putDmgPixel(int color) {
//         }
// 
//         @Override
//         public void putColorPixel(int gbcRgb) {
//         }
// 
//         @Override
//         public void requestRefresh() {
//         }
// 
//         @Override
//         public void waitForRefresh() {
//         }
// 
//         @Override
//         public void enableLcd() {
//         }
// 
//         @Override
//         public void disableLcd() {
//         }
//     };
// 
// }


import eu.rekawek.coffeegb.gpu.Display;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.concurrent.atomic.AtomicBoolean;
package eu.rekawek.coffeegb.gui;



public class SwingDisplay extends JPanel implements Display, Runnable {

    public static final int DISPLAY_WIDTH = 160;

    public static final int DISPLAY_HEIGHT = 144;

    private final BufferedImage img;

    public static final int[] COLORS = new int[]{0xe6f8da, 0x99c886, 0x437969, 0x051f2a};

    private final int[] rgb;

    private boolean enabled;

    private int scale;

// Path: src/main/java/eu/rekawek/coffeegb/gpu/Display.java
// public interface Display {
// 
//     void putDmgPixel(int color);
// 
//     void putColorPixel(int gbcRgb);
// 
//     void requestRefresh();
// 
//     void waitForRefresh();
// 
//     void enableLcd();
// 
//     void disableLcd();
// 
//     Display NULL_DISPLAY = new Display() {
// 
//         @Override
//         public void putDmgPixel(int color) {
//         }
// 
//         @Override
//         public void putColorPixel(int gbcRgb) {
//         }
// 
//         @Override
//         public void requestRefresh() {
//         }
// 
//         @Override
//         public void waitForRefresh() {
//         }
// 
//         @Override
//         public void enableLcd() {
//         }
// 
//         @Override
//         public void disableLcd() {
//         }
//     };
// 
// }


// Path: src/main/java/eu/rekawek/coffeegb/gui/SwingDisplay.java
import eu.rekawek.coffeegb.gpu.Display;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.concurrent.atomic.AtomicBoolean;

package eu.rekawek.coffeegb.gui;



public class SwingDisplay extends JPanel implements Display, Runnable {

    public static final int DISPLAY_WIDTH = 160;

    public static final int DISPLAY_HEIGHT = 144;

    private final BufferedImage img;

    public static final int[] COLORS = new int[]{0xe6f8da, 0x99c886, 0x437969, 0x051f2a};

    private final int[] rgb;

    private boolean enabled;

    private int scale;

    private boolean doStop;