From 19895c83a6b8cd6f834ade94c99c405ca8c073a9 Mon Sep 17 00:00:00 2001 From: Reasel Date: Fri, 20 Apr 2018 07:18:58 -0700 Subject: [PATCH] Add dropdown for font style for in-game overlays --- .../net/runelite/client/config/FontType.java | 49 ++++++++++++++++++ .../client/config/RuneLiteConfig.java | 10 ++-- .../net/runelite/client/ui/FontManager.java | 15 ++++++ .../client/ui/overlay/OverlayRenderer.java | 18 +++++-- .../net/runelite/client/ui/runescape_bold.ttf | Bin 0 -> 36540 bytes 5 files changed, 82 insertions(+), 10 deletions(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/config/FontType.java create mode 100644 runelite-client/src/main/resources/net/runelite/client/ui/runescape_bold.ttf diff --git a/runelite-client/src/main/java/net/runelite/client/config/FontType.java b/runelite-client/src/main/java/net/runelite/client/config/FontType.java new file mode 100644 index 0000000000..8ed57bd302 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/config/FontType.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2018, Tanner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.config; + +import lombok.RequiredArgsConstructor; +import lombok.Getter; +import net.runelite.client.ui.FontManager; + +import java.awt.Font; + +@Getter +@RequiredArgsConstructor +public enum FontType +{ + REGULAR("Regular", FontManager.getRunescapeFont()), + BOLD("Bold", FontManager.getRunescapeBoldFont()), + SMALL("Small", FontManager.getRunescapeSmallFont()); + + private final String name; + private final Font font; + + @Override + public String toString() + { + return name; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java b/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java index 507c68acda..e2c1293b64 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java @@ -116,12 +116,12 @@ public interface RuneLiteConfig extends Config } @ConfigItem( - keyName = "useSmallFont", - name = "Small font in dynamic overlays", - description = "Toggles between small and regular RuneScape font for in-game overlays" + keyName = "fontType", + name = "Dynamic Overlay Font", + description = "Configures what font type is used for in-game overlays such as player name, ground items, etc." ) - default boolean useSmallFont() + default FontType fontType() { - return true; + return FontType.SMALL; } } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/ui/FontManager.java b/runelite-client/src/main/java/net/runelite/client/ui/FontManager.java index 3ffb544036..b6fdac5172 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/FontManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/FontManager.java @@ -34,6 +34,7 @@ public class FontManager { private static final Font runescapeFont; private static final Font runescapeSmallFont; + private static final Font runescapeBoldFont; static { @@ -58,6 +59,15 @@ public class FontManager runescapeSmallFont = StyleContext.getDefaultStyleContext() .getFont(smallFont.getName(), Font.PLAIN, 16); ge.registerFont(runescapeSmallFont); + + Font boldFont = Font.createFont(Font.TRUETYPE_FONT, + FontManager.class.getResourceAsStream("runescape_bold.ttf")) + .deriveFont(Font.PLAIN, 16); + ge.registerFont(boldFont); + + runescapeBoldFont = StyleContext.getDefaultStyleContext() + .getFont(boldFont.getName(), Font.PLAIN, 16); + ge.registerFont(runescapeBoldFont); } catch (FontFormatException ex) { @@ -78,4 +88,9 @@ public class FontManager { return runescapeSmallFont; } + + public static Font getRunescapeBoldFont() + { + return runescapeBoldFont; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index 7099aec931..5ea3c01094 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -506,11 +506,19 @@ public class OverlayRenderer extends MouseListener implements KeyListener final OverlayPosition position = overlay.getPosition(); // Set font based on configuration - subGraphics.setFont((position == OverlayPosition.DYNAMIC - || position == OverlayPosition.TOOLTIP) - && runeLiteConfig.useSmallFont() - ? FontManager.getRunescapeSmallFont() - : FontManager.getRunescapeFont()); + if (position == OverlayPosition.DYNAMIC) + { + subGraphics.setFont(runeLiteConfig.fontType().getFont()); + } + else if (position == OverlayPosition.TOOLTIP) + { + subGraphics.setFont(FontManager.getRunescapeSmallFont()); + } + else + { + subGraphics.setFont(FontManager.getRunescapeFont()); + } + subGraphics.translate(point.x, point.y); final Dimension dimension = MoreObjects.firstNonNull(overlay.render(subGraphics), new Dimension()); diff --git a/runelite-client/src/main/resources/net/runelite/client/ui/runescape_bold.ttf b/runelite-client/src/main/resources/net/runelite/client/ui/runescape_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e45ca0584622537d3010716b348abcc099b3f213 GIT binary patch literal 36540 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 literal 0 HcmV?d00001