From 17eb4af81c7ff580b95c7572a612acf3f41551b4 Mon Sep 17 00:00:00 2001 From: Timi Date: Sun, 10 May 2026 16:27:33 +0800 Subject: [PATCH] v0.0.3 --- .gitea/workflows/ci.yml | 111 ++++++++++++++++ .idea/misc.xml | 2 +- pom.xml | 84 +++++++++++- .../java/com/imyeyu/fx/bean/Interpolates.java | 120 +++++++----------- .../java/com/imyeyu/fx/task/PublicTask.java | 2 +- .../imyeyu/fx/utils/AnimationRenderer.java | 13 +- .../imyeyu/fx/utils/DirectorySelector.java | 13 +- .../com/imyeyu/fx/utils/FileSelector.java | 11 +- .../com/imyeyu/fx/utils/StringConverters.java | 8 +- 9 files changed, 245 insertions(+), 119 deletions(-) create mode 100644 .gitea/workflows/ci.yml diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..c964697 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,111 @@ +name: CI/CD + +on: + pull_request: + branches: + - master + types: + - closed + +jobs: + build-deploy: + runs-on: act_runner_java + if: ${{ github.event.pull_request.merged == true }} + env: + JAVA_HOME: /usr/lib/jvm/java-21-openjdk + steps: + - name: Checkout code + run: | + git clone ${{ github.server_url }}/${{ github.repository }}.git . + git checkout ${{ github.sha }} + - name: Set up environment + run: | + echo "PR #${{ github.event.number }} merged into master" + echo "Source branch: ${{ github.event.pull_request.head.ref }}" + echo "Target branch: ${{ github.event.pull_request.base.ref }}" + - name: Run tests + run: | + echo "Running test suite..." + - name: Build project + run: | + mvn -B -DskipTests clean package source:jar javadoc:jar + - name: Deploy to Nexus + if: success() + run: | + if [ -z "${{ secrets.NEXUS_USERNAME }}" ] || [ -z "${{ secrets.NEXUS_PASSWORD }}" ]; then + echo "Missing secrets.NEXUS_USERNAME or secrets.NEXUS_PASSWORD" + exit 1 + fi + mkdir -p ~/.m2 + cat > ~/.m2/settings.xml < + + + timi-nexus + ${{ secrets.NEXUS_USERNAME }} + ${{ secrets.NEXUS_PASSWORD }} + + + + EOF + version=$(mvn -q -DforceStdout help:evaluate -Dexpression=project.version) + artifact_id=$(mvn -q -DforceStdout help:evaluate -Dexpression=project.artifactId) + main_jar="target/${artifact_id}-${version}.jar" + sources_jar="target/${artifact_id}-${version}-sources.jar" + javadoc_jar="target/${artifact_id}-${version}-javadoc.jar" + if [ ! -f "$main_jar" ] || [ ! -f "$sources_jar" ] || [ ! -f "$javadoc_jar" ]; then + echo "Missing build artifacts in target" + exit 1 + fi + mvn -B deploy:deploy-file \ + -Dfile="$main_jar" \ + -Dsources="$sources_jar" \ + -Djavadoc="$javadoc_jar" \ + -DpomFile="./pom.xml" \ + -Durl="https://nexus.imyeyu.com/repository/maven-releases/" \ + -DrepositoryId="timi-nexus" \ + -Dhttps.protocols=TLSv1.2 \ + -Djdk.tls.client.protocols=TLSv1.2 + - name: Create release + if: ${{ success() && startsWith(github.event.pull_request.title, 'v') }} + env: + GITEA_TOKEN: ${{ secrets.RUNNER_TOKEN }} + GITEA_SERVER_URL: ${{ github.server_url }} + GITEA_REPOSITORY: ${{ github.repository }} + RELEASE_TAG: ${{ github.event.pull_request.title }} + RELEASE_TARGET: ${{ github.sha }} + run: | + if [ -z "$GITEA_TOKEN" ]; then + echo "Missing secrets.RUNNER_TOKEN" + exit 1 + fi + api_url="$GITEA_SERVER_URL/api/v1/repos/$GITEA_REPOSITORY/releases" + payload=$(cat < - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 396ea57..4e6fbdf 100644 --- a/pom.xml +++ b/pom.xml @@ -6,16 +6,88 @@ com.imyeyu.fx timi-fx - 0.0.2 + 0.0.3 - 21.0.2 + 25.0.3 true - 21 - 21 + 25 + 25 UTF-8 + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.3 + + + org.apache.maven.plugins + maven-source-plugin + 3.3.1 + + + org.projectlombok + lombok-maven-plugin + 1.18.20.0 + + ${project.basedir}/src/main/java + ${project.build.directory}/delombok + false + UTF-8 + + + + generate-sources + + delombok + + + + + + org.projectlombok + lombok + 1.18.36 + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.11.2 + + ${project.build.directory}/delombok + UTF-8 + UTF-8 + UTF-8 + + + + + + + + timi_nexus + https://nexus.imyeyu.com/repository/maven-releases/ + + + + + + timi_nexus + https://nexus.imyeyu.com/repository/maven-public/ + + true + + + true + + + + org.openjfx @@ -25,12 +97,12 @@ com.imyeyu.config timi-config - 0.0.2 + 0.0.3 com.imyeyu.inject timi-inject - 0.0.2 + 0.0.3 true diff --git a/src/main/java/com/imyeyu/fx/bean/Interpolates.java b/src/main/java/com/imyeyu/fx/bean/Interpolates.java index f8e3760..a432667 100644 --- a/src/main/java/com/imyeyu/fx/bean/Interpolates.java +++ b/src/main/java/com/imyeyu/fx/bean/Interpolates.java @@ -1,6 +1,7 @@ package com.imyeyu.fx.bean; import com.sun.scenario.animation.SplineInterpolator; +import lombok.Getter; /** * 贝塞尔曲线,动画运动方式,常用 {@link #EASE_OUT_EXPO} @@ -8,38 +9,50 @@ import com.sun.scenario.animation.SplineInterpolator; * @author 夜雨 * @since 2022-02-16 22:43 */ +@Getter public enum Interpolates { - /** EASE ( .25, .1, .25, 1) */ EASE ( .25, .1, .25, 1), - /** LINEAR ( 0, 0, 1, 1) */ LINEAR ( 0, 0, 1, 1), - /** EASE_IN ( .42, 0, 1, 1) */ EASE_IN ( .42, 0, 1, 1), - /** EASE_OUT ( 0, 0, .58, 1) */ EASE_OUT ( 0, 0, .58, 1), - /** EASE_IN_OUT ( .42, 0, .58, 1) */ EASE_IN_OUT ( .42, 0, .58, 1), - /** EASE_IN_SINE ( .47, 0, .745, .715) */ EASE_IN_SINE ( .47, 0, .745, .715), - /** EASE_OUT_SINE ( .39, .575, .565, 1) */ EASE_OUT_SINE ( .39, .575, .565, 1), - /** EASE_IN_OUT_SINE (.445, .05, .55, .95) */ EASE_IN_OUT_SINE (.445, .05, .55, .95), - /** EASE_IN_QUAD ( .55, .085, .68, .53) */ EASE_IN_QUAD ( .55, .085, .68, .53), - /** EASE_OUT_QUAD ( .25, .46, .45, .94) */ EASE_OUT_QUAD ( .25, .46, .45, .94), - /** EASE_IN_OUT_QUAD (.455, .03, .515, .955) */ EASE_IN_OUT_QUAD (.455, .03, .515, .955), - /** EASE_IN_CUBIC ( .55, .055, .675, .19) */ EASE_IN_CUBIC ( .55, .055, .675, .19), - /** EASE_OUT_CUBIC (.215, .61, .355, 1) */ EASE_OUT_CUBIC (.215, .61, .355, 1), - /** EASE_IN_OUT_CUBIC (.645, .045, .355, 1) */ EASE_IN_OUT_CUBIC (.645, .045, .355, 1), - /** EASE_IN_QUART (.895, .03, .685, .22) */ EASE_IN_QUART (.895, .03, .685, .22), - /** EASE_OUT_QUART (.165, .84, .44, 1) */ EASE_OUT_QUART (.165, .84, .44, 1), - /** EASE_IN_OUT_QUART ( .77, 0, .175, 1) */ EASE_IN_OUT_QUART ( .77, 0, .175, 1), - /** EASE_IN_QUINT (.755, .05, .855, .06) */ EASE_IN_QUINT (.755, .05, .855, .06), - /** EASE_OUT_QUINT ( .23, 1, .32, 1) */ EASE_OUT_QUINT ( .23, 1, .32, 1), - /** EASE_IN_OUT_QUINT ( .86, 0, .07, 1) */ EASE_IN_OUT_QUINT ( .86, 0, .07, 1), - /** EASE_IN_EXPO ( .95, .05, .795, .035) */ EASE_IN_EXPO ( .95, .05, .795, .035), - /** EASE_OUT_EXPO ( .19, 1, .22, 1) */ EASE_OUT_EXPO ( .19, 1, .22, 1), - /** EASE_IN_OUT_EXPO ( 1, 0, 0, 1) */ EASE_IN_OUT_EXPO ( 1, 0, 0, 1), - /** EASE_IN_CIRC ( .6, .04, .98, .335) */ EASE_IN_CIRC ( .6, .04, .98, .335), - /** EASE_OUT_CIRC (.075, .82, .165, 1) */ EASE_OUT_CIRC (.075, .82, .165, 1), - /** EASE_IN_BACK ( .6, .28, .735, .045) */ EASE_IN_BACK ( .6, .28, .735, .045); + /** EASE ( .25, .1, .25, 1) */ EASE(.25, .1, .25, 1), + /** LINEAR ( 0, 0, 1, 1) */ LINEAR(0, 0, 1, 1), + /** EASE_IN ( .42, 0, 1, 1) */ EASE_IN(.42, 0, 1, 1), + /** EASE_OUT ( 0, 0, .58, 1) */ EASE_OUT(0, 0, .58, 1), + /** EASE_IN_OUT ( .42, 0, .58, 1) */ EASE_IN_OUT(.42, 0, .58, 1), + /** EASE_IN_SINE ( .47, 0, .745, .715) */ EASE_IN_SINE(.47, 0, .745, .715), + /** EASE_OUT_SINE ( .39, .575, .565, 1) */ EASE_OUT_SINE(.39, .575, .565, 1), + /** EASE_IN_OUT_SINE (.445, .05, .55, .95) */ EASE_IN_OUT_SINE(.445, .05, .55, .95), + /** EASE_IN_QUAD ( .55, .085, .68, .53) */ EASE_IN_QUAD(.55, .085, .68, .53), + /** EASE_OUT_QUAD ( .25, .46, .45, .94) */ EASE_OUT_QUAD(.25, .46, .45, .94), + /** EASE_IN_OUT_QUAD (.455, .03, .515, .955) */ EASE_IN_OUT_QUAD(.455, .03, .515, .955), + /** EASE_IN_CUBIC ( .55, .055, .675, .19) */ EASE_IN_CUBIC(.55, .055, .675, .19), + /** EASE_OUT_CUBIC (.215, .61, .355, 1) */ EASE_OUT_CUBIC(.215, .61, .355, 1), + /** EASE_IN_OUT_CUBIC (.645, .045, .355, 1) */ EASE_IN_OUT_CUBIC(.645, .045, .355, 1), + /** EASE_IN_QUART (.895, .03, .685, .22) */ EASE_IN_QUART(.895, .03, .685, .22), + /** EASE_OUT_QUART (.165, .84, .44, 1) */ EASE_OUT_QUART(.165, .84, .44, 1), + /** EASE_IN_OUT_QUART ( .77, 0, .175, 1) */ EASE_IN_OUT_QUART(.77, 0, .175, 1), + /** EASE_IN_QUINT (.755, .05, .855, .06) */ EASE_IN_QUINT(.755, .05, .855, .06), + /** EASE_OUT_QUINT ( .23, 1, .32, 1) */ EASE_OUT_QUINT(.23, 1, .32, 1), + /** EASE_IN_OUT_QUINT ( .86, 0, .07, 1) */ EASE_IN_OUT_QUINT(.86, 0, .07, 1), + /** EASE_IN_EXPO ( .95, .05, .795, .035) */ EASE_IN_EXPO(.95, .05, .795, .035), + /** EASE_OUT_EXPO ( .19, 1, .22, 1) */ EASE_OUT_EXPO(.19, 1, .22, 1), + /** EASE_IN_OUT_EXPO ( 1, 0, 0, 1) */ EASE_IN_OUT_EXPO(1, 0, 0, 1), + /** EASE_IN_CIRC ( .6, .04, .98, .335) */ EASE_IN_CIRC(.6, .04, .98, .335), + /** EASE_OUT_CIRC (.075, .82, .165, 1) */ EASE_OUT_CIRC(.075, .82, .165, 1), + /** EASE_IN_BACK ( .6, .28, .735, .045) */ EASE_IN_BACK(.6, .28, .735, .045); + /** 插值器 */ final SplineInterpolator value; - final double x1, y1, x2, y2; + /** 控制的 1 的横坐标 */ + final double x1; + + /** 控制点 1 的纵坐标 */ + final double y1; + + /** 控制点 2 的横坐标 */ + final double x2; + + /** 控制点 2 的纵坐标 */ + final double y2; Interpolates(double px1, double py1, double px2, double py2) { x1 = px1; @@ -55,7 +68,7 @@ public enum Interpolates { * @param precision 精度,构造数据量,不可小于 4 * @return 贝塞尔点列表,第二维 [0]: x 轴坐标,[1]: y 轴坐标 */ - public double[][] buildBezierPoint(double precision) { + public double[][] buildBezierPoint(long precision) { return buildBezierPoint(1, precision); } @@ -66,11 +79,10 @@ public enum Interpolates { * @param precision 精度,构造数据量,不可小于 4 * @return 贝塞尔点列表,第二维 [0]: x 轴坐标,[1]: y 轴坐标 */ - public double[][] buildBezierPoint(double boost, double precision) { + public double[][] buildBezierPoint(double boost, long precision) { if (precision < 4) { throw new IllegalArgumentException("precision can not less than 4: " + precision); } - precision = 1D / precision; Double[][] cps = new Double[4][2]; cps[0][0] = cps[0][1] = 0D; @@ -112,7 +124,7 @@ public enum Interpolates { * @param precision 精度,构造数据量,不可小于 4 * @return 贝塞尔点列表,值为 y 轴坐标 */ - public double[] buildBezierPointValue(double precision) { + public double[] buildBezierPointValue(long precision) { return buildBezierPointValue(1, precision); } @@ -123,7 +135,7 @@ public enum Interpolates { * @param precision 精度,构造数据量,不可小于 4 * @return 贝塞尔点列表,值为 y 轴坐标 */ - public double[] buildBezierPointValue(double boost, double precision) { + public double[] buildBezierPointValue(double boost, long precision) { double[][] points = buildBezierPoint(boost, precision); double[] result = new double[points.length]; for (int i = 0; i < points.length; i++) { @@ -132,48 +144,4 @@ public enum Interpolates { return result; } - /** - * 获取控制点 1 的横坐标 - * - * @return 控制的 1 的横坐标 - */ - public double getX1() { - return x1; - } - - /** - * 获取控制点 1 的纵坐标 - * - * @return 控制的 1 的纵坐标 - */ - public double getY1() { - return y1; - } - - /** - * 获取控制点 2 的横坐标 - * - * @return 控制的 2 的横坐标 - */ - public double getX2() { - return x2; - } - - /** - * 获取控制点 2 的纵坐标 - * - * @return 控制的 2 的纵坐标 - */ - public double getY2() { - return y2; - } - - /** - * 获取插值器 - * - * @return 插值器 - */ - public SplineInterpolator getValue() { - return value; - } } diff --git a/src/main/java/com/imyeyu/fx/task/PublicTask.java b/src/main/java/com/imyeyu/fx/task/PublicTask.java index d77ed03..ad52c70 100644 --- a/src/main/java/com/imyeyu/fx/task/PublicTask.java +++ b/src/main/java/com/imyeyu/fx/task/PublicTask.java @@ -8,7 +8,7 @@ import javafx.concurrent.Task; * @author 夜雨 * @since 2022-01-08 16:24 */ -abstract class PublicTask extends Task { +public abstract class PublicTask extends Task { /** * 更新数据 diff --git a/src/main/java/com/imyeyu/fx/utils/AnimationRenderer.java b/src/main/java/com/imyeyu/fx/utils/AnimationRenderer.java index fee9e07..ed003e9 100644 --- a/src/main/java/com/imyeyu/fx/utils/AnimationRenderer.java +++ b/src/main/java/com/imyeyu/fx/utils/AnimationRenderer.java @@ -11,6 +11,7 @@ import javafx.util.Duration; import com.imyeyu.fx.task.RunAsyncScheduled; import com.imyeyu.java.bean.Callback; import com.imyeyu.java.bean.CallbackArg; +import lombok.Getter; import java.util.Iterator; import java.util.LinkedList; @@ -74,7 +75,8 @@ public class AnimationRenderer { /** 标准帧生成时间(纳秒) */ private double NPF; - /** 预设渲染帧率 */ + /** 预设 FPS */ + @Getter private int prefFPS; /** 默认构造,60 FPS */ @@ -222,15 +224,6 @@ public class AnimationRenderer { } } - /** - * 获取预设 FPS - * - * @return 预设 FPS - */ - public int getPrefFPS() { - return prefFPS; - } - /** * 预设 FPS,渲染器会尽量匹配此帧率渲染,可能会突破少许,系统资源紧张时实际渲染帧率会低于预设 * diff --git a/src/main/java/com/imyeyu/fx/utils/DirectorySelector.java b/src/main/java/com/imyeyu/fx/utils/DirectorySelector.java index 25772fe..944143b 100644 --- a/src/main/java/com/imyeyu/fx/utils/DirectorySelector.java +++ b/src/main/java/com/imyeyu/fx/utils/DirectorySelector.java @@ -2,6 +2,7 @@ package com.imyeyu.fx.utils; import javafx.stage.DirectoryChooser; import javafx.stage.Window; +import lombok.Getter; import java.io.File; import java.util.Objects; @@ -12,6 +13,7 @@ import java.util.Objects; * @author 夜雨 * @version 2022-04-28 17:48 */ +@Getter public class DirectorySelector { /** 选择器 */ @@ -60,13 +62,4 @@ public class DirectorySelector { public File show(Window window) { return chooser.showDialog(window); } - - /** - * 获取选择器 - * - * @return 选择器 - */ - public DirectoryChooser getChooser() { - return chooser; - } -} \ No newline at end of file +} diff --git a/src/main/java/com/imyeyu/fx/utils/FileSelector.java b/src/main/java/com/imyeyu/fx/utils/FileSelector.java index 9d348e0..4872d6f 100644 --- a/src/main/java/com/imyeyu/fx/utils/FileSelector.java +++ b/src/main/java/com/imyeyu/fx/utils/FileSelector.java @@ -2,6 +2,7 @@ package com.imyeyu.fx.utils; import javafx.stage.FileChooser; import javafx.stage.Window; +import lombok.Getter; import java.io.File; import java.util.List; @@ -13,6 +14,7 @@ import java.util.Objects; * @author 夜雨 * @version 2022-04-14 19:38 */ +@Getter public class FileSelector { /** 选择器 */ @@ -91,13 +93,4 @@ public class FileSelector { public File save(Window window) { return chooser.showSaveDialog(window); } - - /** - * 获取选择器 - * - * @return 选择器 - */ - public FileChooser getChooser() { - return chooser; - } } diff --git a/src/main/java/com/imyeyu/fx/utils/StringConverters.java b/src/main/java/com/imyeyu/fx/utils/StringConverters.java index e61a44d..87a2184 100644 --- a/src/main/java/com/imyeyu/fx/utils/StringConverters.java +++ b/src/main/java/com/imyeyu/fx/utils/StringConverters.java @@ -1,8 +1,8 @@ package com.imyeyu.fx.utils; -import javafx.util.StringConverter; import com.imyeyu.java.ref.Ref; import com.imyeyu.utils.Time; +import javafx.util.StringConverter; import java.text.ParseException; import java.time.LocalDate; @@ -52,11 +52,7 @@ public class StringConverters { if (object == null) { return ""; } - try { - return Ref.getFieldValue(object, "name", String.class); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } + return object.toString(); } @Override -- 2.49.1