@ -0,0 +1,153 @@
|
||||
/* com/ui/StyleHelper.java */
|
||||
package com.pair.ui;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.layout.*;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.control.PasswordField;
|
||||
import javafx.scene.control.ChoiceBox;
|
||||
import javafx.scene.control.Spinner;
|
||||
|
||||
public class StyleHelper {
|
||||
/** 给按钮一次性加上通用样式、hover、pressed 动画 - 兼容方法 */
|
||||
public static void styleButton(Button btn) {
|
||||
btn.setStyle(UIConstants.BTN_NORMAL);
|
||||
// 仅背景深浅变化,字体、圆角始终一致
|
||||
btn.setOnMouseEntered(e -> btn.setStyle(UIConstants.BTN_HOVER));
|
||||
btn.setOnMouseExited(e -> btn.setStyle(UIConstants.BTN_NORMAL));
|
||||
btn.setOnMousePressed(e -> btn.setStyle(UIConstants.BTN_PRESSED));
|
||||
btn.setOnMouseReleased(e -> btn.setStyle(UIConstants.BTN_NORMAL));
|
||||
btn.setPrefSize(UIConstants.BTN_WIDTH, UIConstants.BTN_HEIGHT);
|
||||
}
|
||||
|
||||
/** 新的统一按钮样式方法 - 支持不同类型按钮 */
|
||||
public static void styleButton(Button btn, String type) {
|
||||
btn.setStyle(UIConstants.getButtonNormalStyle(type));
|
||||
btn.setOnMouseEntered(e -> btn.setStyle(UIConstants.getButtonHoverStyle(type)));
|
||||
btn.setOnMouseExited(e -> btn.setStyle(UIConstants.getButtonNormalStyle(type)));
|
||||
btn.setOnMousePressed(e -> btn.setStyle(UIConstants.getButtonPressedStyle(type)));
|
||||
btn.setOnMouseReleased(e -> btn.setStyle(UIConstants.getButtonNormalStyle(type)));
|
||||
|
||||
// 根据按钮类型设置尺寸
|
||||
switch (type) {
|
||||
case UIConstants.BTN_TYPE_PRIMARY:
|
||||
case UIConstants.BTN_TYPE_WARNING:
|
||||
btn.setPrefSize(UIConstants.BTN_LARGE_WIDTH, UIConstants.BTN_LARGE_HEIGHT);
|
||||
break;
|
||||
case UIConstants.BTN_TYPE_SUCCESS:
|
||||
case UIConstants.BTN_TYPE_ERROR:
|
||||
case UIConstants.BTN_TYPE_INFO:
|
||||
btn.setPrefSize(UIConstants.BTN_MEDIUM_WIDTH, UIConstants.BTN_MEDIUM_HEIGHT);
|
||||
break;
|
||||
default:
|
||||
btn.setPrefSize(UIConstants.BTN_SMALL_WIDTH, UIConstants.BTN_SMALL_HEIGHT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** 主要按钮 - 使用主色调 */
|
||||
public static void stylePrimaryButton(Button btn) {
|
||||
styleButton(btn, UIConstants.BTN_TYPE_PRIMARY);
|
||||
}
|
||||
|
||||
/** 次要按钮 - 使用辅助色调 */
|
||||
public static void styleSecondaryButton(Button btn) {
|
||||
styleButton(btn, UIConstants.BTN_TYPE_SECONDARY);
|
||||
}
|
||||
|
||||
/** 成功按钮 - 使用绿色调 */
|
||||
public static void styleSuccessButton(Button btn) {
|
||||
styleButton(btn, UIConstants.BTN_TYPE_SUCCESS);
|
||||
}
|
||||
|
||||
/** 警告按钮 - 使用橙色调 */
|
||||
public static void styleWarningButton(Button btn) {
|
||||
styleButton(btn, UIConstants.BTN_TYPE_WARNING);
|
||||
}
|
||||
|
||||
/** 错误按钮 - 使用红色调 */
|
||||
public static void styleErrorButton(Button btn) {
|
||||
styleButton(btn, UIConstants.BTN_TYPE_ERROR);
|
||||
}
|
||||
|
||||
/** 信息按钮 - 使用蓝色调 */
|
||||
public static void styleInfoButton(Button btn) {
|
||||
styleButton(btn, UIConstants.BTN_TYPE_INFO);
|
||||
}
|
||||
|
||||
/** 快速生成"白色卡片"VBox - 兼容方法 */
|
||||
public static VBox createCard() {
|
||||
VBox card = new VBox(UIConstants.DEFAULT_SPACING);
|
||||
card.setPadding(UIConstants.CARD_PADDING);
|
||||
card.setStyle(UIConstants.CARD_STYLE);
|
||||
card.setEffect(UIConstants.CARD_SHADOW);
|
||||
return card;
|
||||
}
|
||||
|
||||
/** 新的卡片生成方法 - 支持不同尺寸 */
|
||||
public static VBox createCard(String size) {
|
||||
VBox card = new VBox(UIConstants.MEDIUM_SPACING);
|
||||
card.setPadding(UIConstants.CARD_PADDING);
|
||||
card.setAlignment(Pos.CENTER);
|
||||
|
||||
switch (size) {
|
||||
case "SMALL":
|
||||
card.setStyle(UIConstants.CARD_STYLE_SMALL);
|
||||
break;
|
||||
case "LARGE":
|
||||
card.setStyle(UIConstants.CARD_STYLE_LARGE);
|
||||
break;
|
||||
default: // MEDIUM
|
||||
card.setStyle(UIConstants.CARD_STYLE_MEDIUM);
|
||||
break;
|
||||
}
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
/** 创建小型卡片 */
|
||||
public static VBox createSmallCard() {
|
||||
return createCard("SMALL");
|
||||
}
|
||||
|
||||
/** 创建中型卡片 */
|
||||
public static VBox createMediumCard() {
|
||||
return createCard("MEDIUM");
|
||||
}
|
||||
|
||||
/** 创建大型卡片 */
|
||||
public static VBox createLargeCard() {
|
||||
return createCard("LARGE");
|
||||
}
|
||||
|
||||
/** 统一输入框样式 - TextField */
|
||||
public static void styleTextField(TextField textField, String width) {
|
||||
textField.setStyle(UIConstants.getInputStyle(width));
|
||||
}
|
||||
|
||||
/** 统一输入框样式 - PasswordField */
|
||||
public static void stylePasswordField(PasswordField passwordField, String width) {
|
||||
passwordField.setStyle(UIConstants.getInputStyle(width));
|
||||
}
|
||||
|
||||
/** 统一输入框样式 - ChoiceBox */
|
||||
public static void styleChoiceBox(ChoiceBox<?> choiceBox, String width) {
|
||||
choiceBox.setStyle(UIConstants.getInputStyle(width));
|
||||
}
|
||||
|
||||
/** 统一输入框样式 - Spinner */
|
||||
public static void styleSpinner(Spinner<?> spinner) {
|
||||
spinner.getEditor().setStyle(UIConstants.getInputStyle(String.valueOf(UIConstants.INPUT_MEDIUM_WIDTH)));
|
||||
spinner.setStyle("-fx-background-radius: 8; -fx-border-radius: 8;");
|
||||
}
|
||||
|
||||
/** 快速设置输入框为中等宽度 */
|
||||
public static void styleInputField(TextField field) {
|
||||
styleTextField(field, String.valueOf(UIConstants.INPUT_MEDIUM_WIDTH));
|
||||
}
|
||||
|
||||
/** 快速设置密码框为中等宽度 */
|
||||
public static void stylePasswordField(PasswordField field) {
|
||||
stylePasswordField(field, String.valueOf(UIConstants.INPUT_MEDIUM_WIDTH));
|
||||
}
|
||||
}
|
||||
@ -1,69 +1,217 @@
|
||||
// UIConstants.java
|
||||
package com.pair.ui;
|
||||
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.effect.DropShadow;
|
||||
import javafx.scene.paint.Color;
|
||||
|
||||
public final class UIConstants {
|
||||
private UIConstants() {}
|
||||
|
||||
public static final double LABEL_ITEM_TITLE_SIZE = 16.0;
|
||||
/* ====== 间距 & 边距 ====== */
|
||||
public static final double DEFAULT_SPACING = 16;
|
||||
public static final Insets PAGE_PADDING = new Insets(40);
|
||||
public static final Insets CARD_PADDING = new Insets(24);
|
||||
public static final Insets TOP_BAR_PADDING = new Insets(12);
|
||||
|
||||
// 间距与边距
|
||||
public static final double DEFAULT_SPACING = 15.0;
|
||||
public static final Insets DEFAULT_PADDING = new Insets(40);
|
||||
public static final Insets SMALL_PADDING = new Insets(20);
|
||||
public static final Insets TOP_BAR_PADDING = new Insets(10);
|
||||
// 新增:统一间距规范
|
||||
public static final double SMALL_SPACING = 8;
|
||||
public static final double MEDIUM_SPACING = 16;
|
||||
public static final double LARGE_SPACING = 24;
|
||||
public static final double XLARGE_SPACING = 32;
|
||||
|
||||
// 字体
|
||||
// 新增:卡片尺寸规范
|
||||
public static final double CARD_SMALL_WIDTH = 400;
|
||||
public static final double CARD_MEDIUM_WIDTH = 600;
|
||||
public static final double CARD_LARGE_WIDTH = 800;
|
||||
public static final double CARD_MIN_HEIGHT = 500;
|
||||
|
||||
// 新增:输入框宽度规范
|
||||
public static final double INPUT_SMALL_WIDTH = 200;
|
||||
public static final double INPUT_MEDIUM_WIDTH = 300;
|
||||
public static final double INPUT_LARGE_WIDTH = 400;
|
||||
|
||||
// 新增:按钮尺寸规范
|
||||
public static final double BTN_SMALL_WIDTH = 100;
|
||||
public static final double BTN_MEDIUM_WIDTH = 120;
|
||||
public static final double BTN_LARGE_WIDTH = 140;
|
||||
public static final double BTN_SMALL_HEIGHT = 32;
|
||||
public static final double BTN_MEDIUM_HEIGHT = 36;
|
||||
public static final double BTN_LARGE_HEIGHT = 40;
|
||||
|
||||
/* ====== 字体 ====== */
|
||||
public static final String FONT_FAMILY = "Microsoft YaHei";
|
||||
public static final double TITLE_FONT_SIZE = 26.0;
|
||||
public static final double SUBTITLE_FONT_SIZE = 16.0;
|
||||
public static final double BUTTON_FONT_SIZE = 15.0;
|
||||
public static final double LABEL_FONT_SIZE = 14.0;
|
||||
public static final double INPUT_FONT_SIZE = 14.0;
|
||||
public static final double HINT_FONT_SIZE = 12.0;
|
||||
public static final double ERROR_FONT_SIZE = 12.0;
|
||||
public static final double QUIZ_TITLE_FONT_SIZE = 20.0;
|
||||
public static final double SCORE_FONT_SIZE = 32.0;
|
||||
|
||||
// 按钮尺寸
|
||||
public static final double BUTTON_WIDTH = 140.0;
|
||||
public static final double BUTTON_HEIGHT = 40.0;
|
||||
public static final double BACK_BUTTON_WIDTH = 80.0;
|
||||
public static final double BACK_BUTTON_HEIGHT = 30.0;
|
||||
|
||||
// 颜色
|
||||
public static final String COLOR_PRIMARY = "#2c3e50";
|
||||
public static final String COLOR_ACCENT = "#3498db";
|
||||
public static final String COLOR_ERROR = "#e74c3c";
|
||||
public static final String COLOR_HINT = "#7f8c8d";
|
||||
public static final String COLOR_BACKGROUND = "#ecf0f1";
|
||||
|
||||
// 按钮样式
|
||||
public static final String BUTTON_STYLE =
|
||||
"-fx-background-color: " + COLOR_ACCENT + "; " +
|
||||
"-fx-text-fill: white; " +
|
||||
"-fx-background-radius: 8; " +
|
||||
"-fx-font-size: " + BUTTON_FONT_SIZE + "px; " +
|
||||
"-fx-font-family: '" + FONT_FAMILY + "'; " +
|
||||
"-fx-cursor: hand;";
|
||||
|
||||
public static final String BUTTON_HOVER_STYLE =
|
||||
"-fx-background-color: #2980b9;";
|
||||
|
||||
// 输入框样式
|
||||
public static final double TITLE_FONT_SIZE = 26;
|
||||
public static final double SUB_TITLE_FONT_SIZE = 18;
|
||||
public static final double BODY_FONT_SIZE = 14;
|
||||
public static final double BTN_FONT_SIZE = 14;
|
||||
public static final double SMALL_FONT_SIZE = 12;
|
||||
|
||||
// 新增:更大的标题字体
|
||||
public static final double LARGE_TITLE_FONT_SIZE = 32;
|
||||
public static final double XLARGE_TITLE_FONT_SIZE = 40;
|
||||
|
||||
/* ====== 圆角 & 阴影 ====== */
|
||||
public static final double CARD_RADIUS = 12;
|
||||
public static final DropShadow CARD_SHADOW = new DropShadow(15, 0, 4, Color.web("#00000020"));
|
||||
|
||||
/* ====== 主题色(一键换色只改这里) ====== */
|
||||
public static final Color COLOR_PRIMARY = Color.web("#2563eb"); // 主色 - 蓝色
|
||||
public static final Color COLOR_SECONDARY = Color.web("#10b981"); // 辅助 - 绿色
|
||||
public static final Color COLOR_ERROR = Color.web("#ef4444"); // 错误 - 红色
|
||||
public static final Color COLOR_BG = Color.web("#f3f4f6"); // 背景 - 浅灰
|
||||
public static final Color COLOR_TEXT = Color.web("#1f2937"); // 文字 - 深灰
|
||||
public static final Color COLOR_TEXT_SUB = Color.web("#6b7280"); // 副文字 - 中灰
|
||||
|
||||
// 新增:扩展配色方案
|
||||
public static final Color COLOR_SUCCESS = Color.web("#22c55e"); // 成功 - 亮绿
|
||||
public static final Color COLOR_WARNING = Color.web("#f59e0b"); // 警告 - 橙色
|
||||
public static final Color COLOR_INFO = Color.web("#3b82f6"); // 信息 - 亮蓝
|
||||
public static final Color COLOR_DARK = Color.web("#374151"); // 深色 - 深灰
|
||||
public static final Color COLOR_LIGHT = Color.web("#ffffff"); // 浅色 - 白色
|
||||
|
||||
/* ====== 通用按钮 ====== */
|
||||
public static final double BTN_WIDTH = 140;
|
||||
public static final double BTN_HEIGHT = 40;
|
||||
|
||||
// 新增:按钮类型常量
|
||||
public static final String BTN_TYPE_PRIMARY = "PRIMARY";
|
||||
public static final String BTN_TYPE_SECONDARY = "SECONDARY";
|
||||
public static final String BTN_TYPE_SUCCESS = "SUCCESS";
|
||||
public static final String BTN_TYPE_WARNING = "WARNING";
|
||||
public static final String BTN_TYPE_ERROR = "ERROR";
|
||||
public static final String BTN_TYPE_INFO = "INFO";
|
||||
|
||||
// 新增:统一按钮样式生成方法
|
||||
public static String getButtonNormalStyle(String type) {
|
||||
Color bgColor;
|
||||
switch (type) {
|
||||
case BTN_TYPE_PRIMARY: bgColor = COLOR_PRIMARY; break;
|
||||
case BTN_TYPE_SECONDARY: bgColor = COLOR_SECONDARY; break;
|
||||
case BTN_TYPE_SUCCESS: bgColor = COLOR_SUCCESS; break;
|
||||
case BTN_TYPE_WARNING: bgColor = COLOR_WARNING; break;
|
||||
case BTN_TYPE_ERROR: bgColor = COLOR_ERROR; break;
|
||||
case BTN_TYPE_INFO: bgColor = COLOR_INFO; break;
|
||||
default: bgColor = COLOR_PRIMARY; break;
|
||||
}
|
||||
return "-fx-background-color: " + toWeb(bgColor) + ";"
|
||||
+ "-fx-text-fill: white;"
|
||||
+ "-fx-background-radius: 8;"
|
||||
+ "-fx-font-family: '" + FONT_FAMILY + "';"
|
||||
+ "-fx-font-size: " + BTN_FONT_SIZE + "px;"
|
||||
+ "-fx-cursor: hand;"
|
||||
+ "-fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.2), 6, 0, 0, 2);";
|
||||
}
|
||||
|
||||
public static String getButtonHoverStyle(String type) {
|
||||
Color bgColor;
|
||||
switch (type) {
|
||||
case BTN_TYPE_PRIMARY: bgColor = COLOR_PRIMARY.darker(); break;
|
||||
case BTN_TYPE_SECONDARY: bgColor = COLOR_SECONDARY.darker(); break;
|
||||
case BTN_TYPE_SUCCESS: bgColor = COLOR_SUCCESS.darker(); break;
|
||||
case BTN_TYPE_WARNING: bgColor = COLOR_WARNING.darker(); break;
|
||||
case BTN_TYPE_ERROR: bgColor = COLOR_ERROR.darker(); break;
|
||||
case BTN_TYPE_INFO: bgColor = COLOR_INFO.darker(); break;
|
||||
default: bgColor = COLOR_PRIMARY.darker(); break;
|
||||
}
|
||||
return "-fx-background-color: " + toWeb(bgColor) + ";"
|
||||
+ "-fx-text-fill: white;"
|
||||
+ "-fx-background-radius: 8;"
|
||||
+ "-fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.3), 8, 0, 0, 3);";
|
||||
}
|
||||
|
||||
public static String getButtonPressedStyle(String type) {
|
||||
Color bgColor;
|
||||
switch (type) {
|
||||
case BTN_TYPE_PRIMARY: bgColor = COLOR_PRIMARY.darker().darker(); break;
|
||||
case BTN_TYPE_SECONDARY: bgColor = COLOR_SECONDARY.darker().darker(); break;
|
||||
case BTN_TYPE_SUCCESS: bgColor = COLOR_SUCCESS.darker().darker(); break;
|
||||
case BTN_TYPE_WARNING: bgColor = COLOR_WARNING.darker().darker(); break;
|
||||
case BTN_TYPE_ERROR: bgColor = COLOR_ERROR.darker().darker(); break;
|
||||
case BTN_TYPE_INFO: bgColor = COLOR_INFO.darker().darker(); break;
|
||||
default: bgColor = COLOR_PRIMARY.darker().darker(); break;
|
||||
}
|
||||
return "-fx-background-color: " + toWeb(bgColor) + ";"
|
||||
+ "-fx-text-fill: white;"
|
||||
+ "-fx-background-radius: 8;"
|
||||
+ "-fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.1), 4, 0, 0, 1);";
|
||||
}
|
||||
|
||||
// 保留原有样式用于兼容
|
||||
public static final String BTN_NORMAL =
|
||||
"-fx-background-color: " + toWeb(COLOR_PRIMARY) + ";"
|
||||
+ "-fx-text-fill: white;"
|
||||
+ "-fx-background-radius: 8;" // 圆角
|
||||
+ "-fx-font-family: '" + FONT_FAMILY + "';"
|
||||
+ "-fx-font-size: " + BTN_FONT_SIZE + "px;"
|
||||
+ "-fx-cursor: hand;";
|
||||
|
||||
public static final String BTN_HOVER =
|
||||
"-fx-background-color: " + toWeb(COLOR_PRIMARY.darker()) + ";"
|
||||
+ "-fx-text-fill: white;"
|
||||
+ "-fx-background-radius: 8;"; // 保持圆角
|
||||
|
||||
public static final String BTN_PRESSED =
|
||||
"-fx-background-color: " + toWeb(COLOR_PRIMARY.darker().darker()) + ";"
|
||||
+ "-fx-text-fill: white;"
|
||||
+ "-fx-background-radius: 8;";
|
||||
|
||||
|
||||
/* ====== 输入框 ====== */
|
||||
// 新增:输入框样式生成方法
|
||||
public static String getInputStyle(String width) {
|
||||
return "-fx-background-radius: 8;"
|
||||
+ "-fx-border-radius: 8;"
|
||||
+ "-fx-border-color: " + toWeb(COLOR_TEXT_SUB) + ";"
|
||||
+ "-fx-padding: 12;"
|
||||
+ "-fx-font-family: '" + FONT_FAMILY + "';"
|
||||
+ "-fx-font-size: " + BODY_FONT_SIZE + "px;"
|
||||
+ "-fx-pref-width: " + width + ";"
|
||||
+ "-fx-background-color: " + toWeb(COLOR_LIGHT) + ";"
|
||||
+ "-fx-effect: innershadow(gaussian, rgba(0,0,0,0.05), 2, 0, 0, 1);";
|
||||
}
|
||||
|
||||
// 新增:输入框宽度预设
|
||||
public static final String INPUT_STYLE_SMALL = getInputStyle(String.valueOf(INPUT_SMALL_WIDTH));
|
||||
public static final String INPUT_STYLE_MEDIUM = getInputStyle(String.valueOf(INPUT_MEDIUM_WIDTH));
|
||||
public static final String INPUT_STYLE_LARGE = getInputStyle(String.valueOf(INPUT_LARGE_WIDTH));
|
||||
|
||||
// 保留原有样式用于兼容
|
||||
public static final String INPUT_STYLE =
|
||||
"-fx-background-radius: 8; " +
|
||||
"-fx-border-radius: 8; " +
|
||||
"-fx-border-color: #bdc3c7; " +
|
||||
"-fx-padding: 8; " +
|
||||
"-fx-font-size: " + INPUT_FONT_SIZE + "px; " +
|
||||
"-fx-font-family: '" + FONT_FAMILY + "';";
|
||||
|
||||
// 表单容器样式
|
||||
public static final String FORM_STYLE =
|
||||
"-fx-background-color: white; " +
|
||||
"-fx-background-radius: 12; " +
|
||||
"-fx-border-radius: 12; " +
|
||||
"-fx-effect: dropshadow(gaussian, rgba(0,0,0,0.1), 10, 0, 0, 5);";
|
||||
"-fx-background-radius: 8;"
|
||||
+ "-fx-border-radius: 8;"
|
||||
+ "-fx-border-color: " + toWeb(COLOR_TEXT_SUB) + ";"
|
||||
+ "-fx-padding: 10;"
|
||||
+ "-fx-font-family: '" + FONT_FAMILY + "';"
|
||||
+ "-fx-font-size: " + BODY_FONT_SIZE + "px;"
|
||||
+ "-fx-pref-width: 240;";
|
||||
|
||||
/* ====== 卡片容器 ====== */
|
||||
// 新增:卡片容器样式生成方法
|
||||
public static String getCardStyle(double width, double minHeight) {
|
||||
return "-fx-background-color: " + toWeb(COLOR_LIGHT) + ";"
|
||||
+ "-fx-background-radius: " + CARD_RADIUS + ";"
|
||||
+ "-fx-border-radius: " + CARD_RADIUS + ";"
|
||||
+ "-fx-pref-width: " + width + ";"
|
||||
+ "-fx-min-height: " + minHeight + ";"
|
||||
+ "-fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.1), 15, 0, 4, 4);";
|
||||
}
|
||||
|
||||
// 新增:卡片尺寸预设
|
||||
public static final String CARD_STYLE_SMALL = getCardStyle(CARD_SMALL_WIDTH, CARD_MIN_HEIGHT);
|
||||
public static final String CARD_STYLE_MEDIUM = getCardStyle(CARD_MEDIUM_WIDTH, CARD_MIN_HEIGHT);
|
||||
public static final String CARD_STYLE_LARGE = getCardStyle(CARD_LARGE_WIDTH, CARD_MIN_HEIGHT);
|
||||
|
||||
// 保留原有样式用于兼容
|
||||
public static final String CARD_STYLE =
|
||||
"-fx-background-color: white;"
|
||||
+ "-fx-background-radius: " + CARD_RADIUS + ";"
|
||||
+ "-fx-border-radius: " + CARD_RADIUS + ";";
|
||||
|
||||
|
||||
|
||||
/* ====== 工具 ====== */
|
||||
public static String toWeb(Color c) {
|
||||
return String.format("#%02X%02X%02X", (int) (c.getRed() * 255),
|
||||
(int) (c.getGreen() * 255), (int) (c.getBlue() * 255));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue