stretchedfixedmode: add resizable interface scaling

This commit is contained in:
Lotto
2018-10-21 17:56:22 +02:00
parent 2ba20c1859
commit 7cf3e3401a
13 changed files with 285 additions and 65 deletions

View File

@@ -297,7 +297,7 @@ public class Hooks implements Callbacks
notifier.processFlash(graphics2d);
// Stretch the game image if the user has that enabled
if (!client.isResized() && client.isStretchedEnabled())
if (client.isStretchedEnabled())
{
GraphicsConfiguration gc = clientUi.getGraphicsConfiguration();
Dimension stretchedDimensions = client.getStretchedDimensions();

View File

@@ -35,7 +35,7 @@ public interface StretchedFixedModeConfig extends Config
@ConfigItem(
keyName = "keepAspectRatio",
name = "Keep aspect ratio",
description = "Keeps the aspect ratio when stretching"
description = "Keeps the aspect ratio when stretching."
)
default boolean keepAspectRatio()
{
@@ -45,7 +45,7 @@ public interface StretchedFixedModeConfig extends Config
@ConfigItem(
keyName = "increasedPerformance",
name = "Increased performance mode",
description = "Uses a fast algorithm when stretching, lowering quality but increasing performance"
description = "Uses a fast algorithm when stretching, lowering quality but increasing performance."
)
default boolean increasedPerformance()
{
@@ -55,10 +55,20 @@ public interface StretchedFixedModeConfig extends Config
@ConfigItem(
keyName = "integerScaling",
name = "Integer Scaling",
description = "Forces use of a whole number scale factor"
description = "Forces use of a whole number scale factor when stretching."
)
default boolean integerScaling()
{
return false;
}
@ConfigItem(
keyName = "scalingFactor",
name = "Resizable Scaling (%)",
description = "In resizable mode, the game is reduced in size this much before it's stretched."
)
default int scalingFactor()
{
return 50;
}
}

View File

@@ -29,7 +29,9 @@ import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.events.CanvasSizeChanged;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.ResizeableChanged;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.input.MouseManager;
import net.runelite.client.plugins.Plugin;
@@ -83,6 +85,18 @@ public class StretchedFixedModePlugin extends Plugin
mouseManager.unregisterMouseWheelListener(mouseWheelListener);
}
@Subscribe
public void onResizableChanged(ResizeableChanged event)
{
client.invalidateStretching(true);
}
@Subscribe
public void onCanvasSizeChanged(CanvasSizeChanged event)
{
client.invalidateStretching(false);
}
@Subscribe
public void onConfigChanged(ConfigChanged event)
{
@@ -99,5 +113,8 @@ public class StretchedFixedModePlugin extends Plugin
client.setStretchedIntegerScaling(config.integerScaling());
client.setStretchedKeepAspectRatio(config.keepAspectRatio());
client.setStretchedFast(config.increasedPerformance());
client.setScalingFactor(config.scalingFactor());
client.invalidateStretching(true);
}
}

View File

@@ -30,7 +30,6 @@ import java.awt.Dimension;
import java.awt.event.MouseEvent;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.Constants;
import net.runelite.client.input.MouseListener;
public class TranslateMouseListener implements MouseListener
@@ -87,17 +86,13 @@ public class TranslateMouseListener implements MouseListener
private MouseEvent translateEvent(MouseEvent e)
{
if (!client.isResized())
{
Dimension stretchedDimensions = client.getStretchedDimensions();
Dimension stretchedDimensions = client.getStretchedDimensions();
Dimension realDimensions = client.getRealDimensions();
int newX = (int) (e.getX() / (stretchedDimensions.width / (double) Constants.GAME_FIXED_WIDTH));
int newY = (int) (e.getY() / (stretchedDimensions.height / (double) Constants.GAME_FIXED_HEIGHT));
int newX = (int) (e.getX() / (stretchedDimensions.width / realDimensions.getWidth()));
int newY = (int) (e.getY() / (stretchedDimensions.height / realDimensions.getHeight()));
return new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), e.getModifiersEx(),
newX, newY, e.getClickCount(), e.isPopupTrigger(), e.getButton());
}
return e;
return new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), e.getModifiersEx(),
newX, newY, e.getClickCount(), e.isPopupTrigger(), e.getButton());
}
}

View File

@@ -30,7 +30,6 @@ import java.awt.Dimension;
import java.awt.event.MouseWheelEvent;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.Constants;
import net.runelite.client.input.MouseWheelListener;
public class TranslateMouseWheelListener implements MouseWheelListener
@@ -51,17 +50,13 @@ public class TranslateMouseWheelListener implements MouseWheelListener
private MouseWheelEvent translateEvent(MouseWheelEvent e)
{
if (!client.isResized())
{
Dimension stretchedDimensions = client.getStretchedDimensions();
Dimension stretchedDimensions = client.getStretchedDimensions();
Dimension realDimensions = client.getRealDimensions();
int newX = (int) (e.getX() / (stretchedDimensions.width / (double) Constants.GAME_FIXED_WIDTH));
int newY = (int) (e.getY() / (stretchedDimensions.height / (double) Constants.GAME_FIXED_HEIGHT));
int newX = (int) (e.getX() / (stretchedDimensions.width / realDimensions.getWidth()));
int newY = (int) (e.getY() / (stretchedDimensions.height / realDimensions.getHeight()));
return new MouseWheelEvent((Component) e.getSource(), e.getID(), e.getWhen(), e.getModifiers(), newX, newY,
e.getClickCount(), e.isPopupTrigger(), e.getScrollType(), e.getScrollAmount(), e.getWheelRotation());
}
return e;
return new MouseWheelEvent((Component) e.getSource(), e.getID(), e.getWhen(), e.getModifiers(), newX, newY,
e.getClickCount(), e.isPopupTrigger(), e.getScrollType(), e.getScrollAmount(), e.getWheelRotation());
}
}