Skip to content

Commit

Permalink
prototype
Browse files Browse the repository at this point in the history
  • Loading branch information
alex committed Mar 7, 2022
1 parent 1d675e0 commit 6f2223e
Show file tree
Hide file tree
Showing 5 changed files with 309 additions and 31 deletions.
72 changes: 41 additions & 31 deletions src/main/java/app/Application.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
package app;

import controls.Label;
import io.github.humbleui.jwm.*;
import io.github.humbleui.jwm.skija.EventFrameSkija;
import io.github.humbleui.skija.Canvas;
import io.github.humbleui.skija.Surface;
import misc.CoordinateSystem2i;
import panels.PanelControl;
import panels.PanelHelp;
import panels.PanelLog;
import panels.PanelRendering;

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

import static app.Colors.APP_BACKGROUND_COLOR;
import static app.Colors.PANEL_BACKGROUND_COLOR;
import static app.Colors.*;

/**
* Класс окна приложения
Expand All @@ -24,31 +26,33 @@ public class Application implements Consumer<Event> {
/**
* отступы панелей
*/
private static final int PANEL_PADDING = 5;
public static final int PANEL_PADDING = 5;
/**
* радиус скругления элементов
*/
public static final int C_RAD_IN_PX = 4;
/**
* Первый заголовок
* панель легенды
*/
private final Label label;
private final PanelHelp panelHelp;
/**
* Первый заголовок
* панель курсора мыши
*/
private final Label label2;
private final PanelControl panelControl;
/**
* Первый заголовок
* панель рисования
*/
private final Label label3;
private final PanelRendering panelRendering;
/**
* панель событий
*/
private final PanelLog panelLog;


/**
* Конструктор окна приложения
*/
public Application() {


// создаём окно
window = App.makeWindow();
// задаём обработчиком событий текущий объект
Expand All @@ -60,23 +64,31 @@ public Application() {
// задаём его положение
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"));
}

// создаём первый заголовок
label = new Label(window, true, PANEL_BACKGROUND_COLOR, PANEL_PADDING,
4, 4, 1, 1, 1, 1, "Привет, мир!", true, true);

// создаём второй заголовок
label2 = new Label(window, true, PANEL_BACKGROUND_COLOR, PANEL_PADDING,
4, 4, 0, 3, 1, 1, "Второй заголовок", true, true);

// создаём третий заголовок
label3 = new Label(window, true, PANEL_BACKGROUND_COLOR, PANEL_PADDING,
4, 4, 2, 0, 1, 1, "Это тоже заголовок", true, true);
// создаём панель рисования
panelRendering = new PanelRendering(
window, true, PANEL_BACKGROUND_COLOR, PANEL_PADDING, 5, 3, 0, 0,
3, 2
);
// создаём панель управления
panelControl = new PanelControl(
window, true, PANEL_BACKGROUND_COLOR, PANEL_PADDING, 5, 3, 3, 0,
2, 2
);
// создаём панель лога
panelLog = new PanelLog(
window, true, PANEL_BACKGROUND_COLOR, PANEL_PADDING, 5, 3, 0, 2,
3, 1
);
// создаём панель помощи
panelHelp = new PanelHelp(
window, true, PANEL_BACKGROUND_COLOR, PANEL_PADDING, 5, 3, 3, 2,
2, 1
);

// названия слоёв, которые будем перебирать
String[] layerNames = new String[]{
Expand Down Expand Up @@ -133,13 +145,11 @@ public void paint(Canvas canvas, CoordinateSystem2i windowCS) {
canvas.save();
// очищаем канвас
canvas.clear(APP_BACKGROUND_COLOR);
// рисуем заголовок
label.paint(canvas, windowCS);
// рисуем второй заголовок
label2.paint(canvas, windowCS);
// рисуем третий заголовок
label3.paint(canvas, windowCS);
// восстанавливаем состояние канваса
// рисуем панели
panelRendering.paint(canvas, windowCS);
panelControl.paint(canvas, windowCS);
panelLog.paint(canvas, windowCS);
panelHelp.paint(canvas, windowCS);
canvas.restore();
}
}
66 changes: 66 additions & 0 deletions src/main/java/panels/PanelControl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package panels;

import controls.Label;
import io.github.humbleui.jwm.*;
import io.github.humbleui.skija.Canvas;
import misc.CoordinateSystem2i;

import static app.Application.PANEL_PADDING;
import static app.Colors.PANEL_BACKGROUND_COLOR;

/**
* Панель управления
*/
public class PanelControl extends GridPanel {
/**
* Заголовок
*/
private final Label label;

/**
* Панель управления
*
* @param window окно
* @param drawBG флаг, нужно ли рисовать подложку
* @param color цвет подложки
* @param padding отступы
* @param gridWidth кол-во ячеек сетки по ширине
* @param gridHeight кол-во ячеек сетки по высоте
* @param gridX координата в сетке x
* @param gridY координата в сетке y
* @param colspan кол-во колонок, занимаемых панелью
* @param rowspan кол-во строк, занимаемых панелью
*/
public PanelControl(
Window window, boolean drawBG, int color, int padding, int gridWidth, int gridHeight,
int gridX, int gridY, int colspan, int rowspan
) {
super(window, drawBG, color, padding, gridWidth, gridHeight, gridX, gridY, colspan, rowspan);

// создаём первый заголовок
label = new Label(window, false, PANEL_BACKGROUND_COLOR, PANEL_PADDING,
1, 1, 0, 0, 1, 1, "Панель управления", true, true);

}

/**
* Обработчик событий
*
* @param e событие
*/
@Override
public void accept(Event e) {

}

/**
* Метод под рисование в конкретной реализации
*
* @param canvas область рисования
* @param windowCS СК окна
*/
@Override
public void paintImpl(Canvas canvas, CoordinateSystem2i windowCS) {
label.paint(canvas, windowCS);
}
}
67 changes: 67 additions & 0 deletions src/main/java/panels/PanelHelp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package panels;

import controls.Label;
import io.github.humbleui.jwm.Event;
import io.github.humbleui.jwm.Window;
import io.github.humbleui.skija.Canvas;
import misc.CoordinateSystem2i;

import static app.Application.PANEL_PADDING;
import static app.Colors.PANEL_BACKGROUND_COLOR;

/**
* Панель поддержки
*/
public class PanelHelp extends GridPanel {
/**
* Заголовок
*/
private final Label label;

/**
* Панель управления
*
* @param window окно
* @param drawBG флаг, нужно ли рисовать подложку
* @param color цвет подложки
* @param padding отступы
* @param gridWidth кол-во ячеек сетки по ширине
* @param gridHeight кол-во ячеек сетки по высоте
* @param gridX координата в сетке x
* @param gridY координата в сетке y
* @param colspan кол-во колонок, занимаемых панелью
* @param rowspan кол-во строк, занимаемых панелью
*/
public PanelHelp(
Window window, boolean drawBG, int color, int padding, int gridWidth, int gridHeight,
int gridX, int gridY, int colspan, int rowspan
) {
super(window, drawBG, color, padding, gridWidth, gridHeight, gridX, gridY, colspan, rowspan);

// создаём первый заголовок
label = new Label(window, false, PANEL_BACKGROUND_COLOR, PANEL_PADDING,
1, 1, 0, 0, 1, 1, "Панель помощи", true, true);

}

/**
* Обработчик событий
*
* @param e событие
*/
@Override
public void accept(Event e) {

}

/**
* Метод под рисование в конкретной реализации
*
* @param canvas область рисования
* @param windowCS СК окна
*/
@Override
public void paintImpl(Canvas canvas, CoordinateSystem2i windowCS) {
label.paint(canvas, windowCS);
}
}
68 changes: 68 additions & 0 deletions src/main/java/panels/PanelLog.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package panels;

import controls.Label;
import io.github.humbleui.jwm.Event;
import io.github.humbleui.jwm.Window;
import io.github.humbleui.skija.Canvas;
import misc.CoordinateSystem2i;

import static app.Application.PANEL_PADDING;
import static app.Colors.PANEL_BACKGROUND_COLOR;

/**
* Панель управления
*/
public class PanelLog extends GridPanel {
/**
* Заголовок
*/
private final Label label;

/**
* Панель управления
*
* @param window окно
* @param drawBG флаг, нужно ли рисовать подложку
* @param color цвет подложки
* @param padding отступы
* @param gridWidth кол-во ячеек сетки по ширине
* @param gridHeight кол-во ячеек сетки по высоте
* @param gridX координата в сетке x
* @param gridY координата в сетке y
* @param colspan кол-во колонок, занимаемых панелью
* @param rowspan кол-во строк, занимаемых панелью
*/
public PanelLog(
Window window, boolean drawBG, int color, int padding, int gridWidth, int gridHeight,
int gridX, int gridY, int colspan, int rowspan
) {
super(window, drawBG, color, padding, gridWidth, gridHeight, gridX, gridY, colspan, rowspan);


// создаём первый заголовок
label = new Label(window, false, PANEL_BACKGROUND_COLOR, PANEL_PADDING,
1, 1, 0, 0, 1, 1, "Панель лога", true, true);

}

/**
* Обработчик событий
*
* @param e событие
*/
@Override
public void accept(Event e) {

}

/**
* Метод под рисование в конкретной реализации
*
* @param canvas область рисования
* @param windowCS СК окна
*/
@Override
public void paintImpl(Canvas canvas, CoordinateSystem2i windowCS) {
label.paint(canvas, windowCS);
}
}
Loading

0 comments on commit 6f2223e

Please sign in to comment.