diff --git a/.editorconfig b/.editorconfig index 33cca13..0959717 100644 --- a/.editorconfig +++ b/.editorconfig @@ -14,6 +14,15 @@ ij_smart_tabs = false ij_visual_guides = 80, 120 ij_wrap_on_typing = false +[*.yml] +indent_size = 2 +tab_width = 2 +ij_yaml_keep_indents_on_empty_lines = false +ij_yaml_keep_line_breaks = true +ij_yaml_space_before_colon = false +ij_yaml_spaces_within_braces = true +ij_yaml_spaces_within_brackets = false + [*.java] ij_java_align_consecutive_assignments = false ij_java_align_consecutive_variable_declarations = false @@ -72,12 +81,12 @@ ij_java_case_statement_on_separate_line = true ij_java_catch_on_new_line = false ij_java_class_annotation_wrap = split_into_lines ij_java_class_brace_style = end_of_line -ij_java_class_count_to_use_import_on_demand = 5 +ij_java_class_count_to_use_import_on_demand = 3 ij_java_class_names_in_javadoc = 1 ij_java_deconstruction_list_wrap = on_every_item ij_java_do_not_indent_top_level_class_members = false -ij_java_do_not_wrap_after_single_annotation = false -ij_java_do_not_wrap_after_single_annotation_in_parameter = false +ij_java_do_not_wrap_after_single_annotation = true +ij_java_do_not_wrap_after_single_annotation_in_parameter = true ij_java_do_while_brace_force = if_multiline ij_java_doc_add_blank_line_after_description = true ij_java_doc_add_blank_line_after_param_comments = false @@ -102,7 +111,7 @@ ij_java_enum_constants_wrap = on_every_item ij_java_enum_field_annotation_wrap = off ij_java_extends_keyword_wrap = normal ij_java_extends_list_wrap = normal -ij_java_field_annotation_wrap = split_into_lines +ij_java_field_annotation_wrap = normal ij_java_field_name_prefix = ij_java_field_name_suffix = ij_java_finally_on_new_line = false @@ -154,7 +163,7 @@ ij_java_new_line_after_lparen_in_deconstruction_pattern = true ij_java_new_line_after_lparen_in_record_header = true ij_java_new_line_when_body_is_presented = false ij_java_packages_to_use_import_on_demand = java.awt.*, javax.swing.* -ij_java_parameter_annotation_wrap = off +ij_java_parameter_annotation_wrap = normal ij_java_parameter_name_prefix = ij_java_parameter_name_suffix = ij_java_parentheses_expression_new_line_after_left_paren = true @@ -267,7 +276,7 @@ ij_java_use_external_annotations = false ij_java_use_fq_class_names = false ij_java_use_relative_indents = false ij_java_use_single_class_imports = true -ij_java_variable_annotation_wrap = off +ij_java_variable_annotation_wrap = normal ij_java_visibility = public ij_java_while_brace_force = if_multiline ij_java_while_on_new_line = false diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 471f526..e1e36ab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,4 +37,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: Artifacts - path: build/libs/ \ No newline at end of file + path: build/libs/ diff --git a/src/main/java/com/kevinsundqvistnorlen/rubi/IRubyStyle.java b/src/main/java/com/kevinsundqvistnorlen/rubi/IRubyStyle.java index 4434f2e..6508827 100644 --- a/src/main/java/com/kevinsundqvistnorlen/rubi/IRubyStyle.java +++ b/src/main/java/com/kevinsundqvistnorlen/rubi/IRubyStyle.java @@ -3,11 +3,11 @@ import net.minecraft.text.Style; public interface IRubyStyle { - Style withRuby(String word, String ruby); - RubyText getRuby(); - Style removeRuby(); - static RubyText getRuby(Style style) { return ((IRubyStyle) style).getRuby(); } + + Style withRuby(String word, String ruby); + RubyText getRuby(); + Style removeRuby(); } diff --git a/src/main/java/com/kevinsundqvistnorlen/rubi/RubyText.java b/src/main/java/com/kevinsundqvistnorlen/rubi/RubyText.java index caffc2e..380fa63 100644 --- a/src/main/java/com/kevinsundqvistnorlen/rubi/RubyText.java +++ b/src/main/java/com/kevinsundqvistnorlen/rubi/RubyText.java @@ -3,22 +3,19 @@ import com.kevinsundqvistnorlen.rubi.option.ITextHandler; import com.kevinsundqvistnorlen.rubi.option.RubyRenderMode; import net.minecraft.client.font.TextHandler; -import net.minecraft.text.OrderedText; -import net.minecraft.text.Style; -import net.minecraft.text.TextVisitFactory; +import net.minecraft.text.*; import org.apache.commons.lang3.mutable.MutableFloat; import org.apache.commons.lang3.mutable.MutableObject; import org.joml.Matrix4f; -import java.util.*; +import java.util.Objects; import java.util.regex.Pattern; public record RubyText(String text, String ruby) { - public static final Pattern RUBY_PATTERN = Pattern.compile("\\^\\s*(.+?)\\s*\\(\\s*(.+?)\\s*\\)"); public static final Pattern RUBY_PATTERN_FOR_STRIPPING = Pattern.compile("ยง\\^\\s*(.+?)\\s*\\(\\s*(.+?)\\s*\\)"); - public static final char RUBY_MARKER = '\uFFFC';//'\ue9c0'; + public static final char RUBY_MARKER = '\uFFFC'; // '\ue9c0'; public static final float RUBY_SCALE = 0.5f; public static final float RUBY_OVERLAP = 0.1f; @@ -34,56 +31,6 @@ public static String strip(String returnValue) { return sb.toString(); } - public float getWidth(ITextHandler textHandler, Style style) { - var mode = RubyRenderMode.getOption().getValue(); - float baseWidth = 0f, - rubyWidth = 0f; - if (mode != RubyRenderMode.REPLACE) baseWidth = textHandler.getWidth(OrderedText.styledForwardsVisitedString(this.text(), style)); - if (mode != RubyRenderMode.HIDDEN) rubyWidth = textHandler.getWidth(OrderedText.styledForwardsVisitedString(this.ruby(), style)); - return switch (mode) { - case ABOVE, BELOW -> Math.max( - baseWidth * RubyText.TEXT_SCALE, - rubyWidth * RubyText.RUBY_SCALE - ); - case HIDDEN -> baseWidth; - case REPLACE -> rubyWidth; - }; - } - - public float getWidth(TextHandler.WidthRetriever widthRetriever, Style style) { - var mode = RubyRenderMode.getOption().getValue(); - MutableFloat baseWidth = new MutableFloat(), - rubyWidth = new MutableFloat(); - if (mode != RubyRenderMode.REPLACE) TextVisitFactory.visitForwards(this.text(), style, (unused, s, codePoint) -> { - baseWidth.add(widthRetriever.getWidth(codePoint, s)); - return true; - }); - if (mode != RubyRenderMode.HIDDEN) TextVisitFactory.visitForwards(this.ruby(), style, (unused, s, codePoint) -> { - rubyWidth.add(widthRetriever.getWidth(codePoint, s)); - return true; - }); - return switch (mode) { - case ABOVE, BELOW -> Math.max( - baseWidth.getValue() * RubyText.TEXT_SCALE, - rubyWidth.getValue() * RubyText.RUBY_SCALE - ); - case HIDDEN -> baseWidth.getValue(); - case REPLACE -> rubyWidth.getValue(); - }; - } - - @Override - public boolean equals(Object o) { - if (o == null || getClass() != o.getClass()) return false; - RubyText rubyText = (RubyText) o; - return Objects.equals(text, rubyText.text) && Objects.equals(ruby, rubyText.ruby); - } - - @Override - public int hashCode() { - return Objects.hash(text, ruby); - } - public static float draw( OrderedText rubiCharacter, float x, @@ -98,9 +45,12 @@ public static float draw( final MutableObject rubyTextWrapper = new MutableObject<>(null); final MutableObject