1package de.ur.mi.oop.app;
3import de.ur.mi.oop.colors.Color;
4import de.ur.mi.oop.colors.Colors;
5import de.ur.mi.oop.events.*;
9import java.awt.event.*;
10import java.awt.image.BufferedImage;
27 private JFrame appFrame;
28 private Timer loopTimer;
30 private Cursor originalCursor;
31 private Cursor blankCursor;
33 private long lastFrameTime = 0;
34 private int lastFPS = 0;
54 private void initFrame() {
56 appFrame =
new JFrame();
57 appFrame.setTitle(config.
getTitle());
59 appFrame.setLocationRelativeTo(
null);
60 appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
61 appFrame.setResizable(
false);
63 canvas.addMouseListener(
this);
64 canvas.addMouseMotionListener(
this);
65 appFrame.addKeyListener(
this);
66 appFrame.setVisible(
true);
67 originalCursor = appFrame.getContentPane().getCursor();
68 blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(
69 new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB),
new Point(0, 0),
"blank cursor");
72 private void startLoop() {
73 loopTimer =
new Timer(1000 / config.
getFrameRate(),
this);
77 private void showFPS(
int fps) {
79 appFrame.setTitle(
"Current FPS: ~ " + fps);
83 private void hideCursor() {
84 appFrame.getContentPane().setCursor(blankCursor);
87 private void showCursor() {
88 appFrame.getContentPane().setCursor(originalCursor);
92 return (Graphics2D) canvas.getGraphics();
97 long currentTime = System.currentTimeMillis();
98 long delta = currentTime - lastFrameTime;
99 if (delta != currentTime && delta != 0) {
100 int currentFPS = 1000 / (int) delta;
101 if (Math.abs(currentFPS - lastFPS) > 5) {
104 lastFPS = currentFPS;
107 lastFrameTime = System.currentTimeMillis();
112 appFrame.getContentPane().setPreferredSize(
new Dimension(newWidth, newHeight));
118 if (loopTimer !=
null) {
119 loopTimer.setDelay(1000 / newFramerate);
125 if(cursorVisibility) {
139 if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
140 appFrame.dispatchEvent(
new WindowEvent(appFrame, WindowEvent.WINDOW_CLOSING));
Graphics2D getGraphicsContext()
AppManager(GraphicsApp app, Config config)
void onSizeChanged(int newWidth, int newHeight)
void mousePressed(MouseEvent e)
void onFrameRateChanged(int newFramerate)
void keyReleased(KeyEvent e)
void actionPerformed(ActionEvent e)
void keyPressed(KeyEvent e)
void mouseDragged(MouseEvent e)
void mouseEntered(MouseEvent e)
void onCursorVisibilityChanged(boolean cursorVisibility)
void mouseReleased(MouseEvent e)
void mouseClicked(MouseEvent e)
void mouseExited(MouseEvent e)
void keyTyped(KeyEvent e)
void mouseMoved(MouseEvent e)
void setComponents(GraphicsObject[] components)
boolean shouldShowFrameRate()
void setAppManager(AppManager manager)
GraphicsObject[] getDrawBuffer()
static GraphicsAppKeyEvent createKeyEventFromAWT(KeyEvent event, KeyEventType type)
static GraphicsAppMouseEvent createMouseEventFromAWT(MouseEvent event, MouseEventType type)