Skip to content

Commit

Permalink
colors works
Browse files Browse the repository at this point in the history
  • Loading branch information
alex committed Mar 6, 2022
1 parent c847576 commit 911a4f1
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 0 deletions.
42 changes: 42 additions & 0 deletions src/main/java/app/Application.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package app;

import io.github.humbleui.jwm.*;
import io.github.humbleui.jwm.skija.EventFrameSkija;
import io.github.humbleui.skija.Surface;

import java.io.File;
import java.util.function.Consumer;

import static app.Colors.APP_BACKGROUND_COLOR;

/**
* Класс окна приложения
*/
Expand All @@ -21,6 +26,40 @@ public Application() {
window = App.makeWindow();
// задаём обработчиком событий текущий объект
window.setEventListener(this);
// задаём заголовок
window.setTitle("Java 2D");
// задаём размер окна
window.setWindowSize(900, 900);
// задаём его положение
window.setWindowPosition(100, 100);
// задаём иконку

switch (Platform.CURRENT) {
case WINDOWS -> window.setIcon(new File("src/main/resources/windows.ico"));
case MACOS -> window.setIcon(new File("src/main/resources/macos.icns"));
}

// названия слоёв, которые будем перебирать
String[] layerNames = new String[]{
"LayerGLSkija", "LayerRasterSkija"
};

// перебираем слои
for (String layerName : layerNames) {
String className = "io.github.humbleui.jwm.skija." + layerName;
try {
Layer layer = (Layer) Class.forName(className).getDeclaredConstructor().newInstance();
window.setLayer(layer);
break;
} catch (Exception e) {
System.out.println("Ошибка создания слоя " + className);
}
}

// если окну не присвоен ни один из слоёв
if (window._layer == null)
throw new RuntimeException("Нет доступных слоёв для создания");

// делаем окно видимым
window.setVisible(true);
}
Expand All @@ -38,6 +77,9 @@ public void accept(Event e) {
App.terminate();
} else if (e instanceof EventWindowCloseRequest) {
window.close();
}else if (e instanceof EventFrameSkija ee) {
Surface s = ee.getSurface();
s.getCanvas().clear(APP_BACKGROUND_COLOR);
}
}
}
20 changes: 20 additions & 0 deletions src/main/java/app/Colors.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package app;

import misc.Misc;

/**
* Класс цветов
*/
public class Colors {
/**
* цвет фона
*/
public static final int APP_BACKGROUND_COLOR = Misc.getColor(255, 38, 70, 83);

/**
* Запрещённый конструктор
*/
private Colors() {
throw new AssertionError("Вызов этого конструктора запрещён");
}
}
29 changes: 29 additions & 0 deletions src/main/java/misc/Misc.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package misc;

/**
* Вспомогательная библиотека
*/
public class Misc {

/**
* Получить цвет по компонентам
*
* @param a прозрачность
* @param r красная компонента
* @param g зелёная компонента
* @param b синяя компонента
* @return целове число с цветом
*/
public static int getColor(int a, int r, int g, int b) {
return ((a * 256 + r) * 256 + g) * 256 + b;
}


/**
* Запрещаем вызов конструктора
*/
private Misc() {
throw new AssertionError("Вызов этого конструктора запрещён");
}

}
Binary file added src/main/resources/macos.icns
Binary file not shown.
Binary file added src/main/resources/windows.ico
Binary file not shown.

0 comments on commit 911a4f1

Please sign in to comment.