add some basic zoom keybinds
This commit is contained in:
parent
4b66284c65
commit
b02647d469
33
Program.cs
33
Program.cs
@ -232,7 +232,7 @@ public class UiGeometry {
|
|||||||
public UiGeometry(Vector2i windowSize) {
|
public UiGeometry(Vector2i windowSize) {
|
||||||
WindowSize = windowSize;
|
WindowSize = windowSize;
|
||||||
|
|
||||||
int numThumbnails = 10;
|
int numThumbnails = 20;
|
||||||
int thumbnailHeight = WindowSize.Y / numThumbnails;
|
int thumbnailHeight = WindowSize.Y / numThumbnails;
|
||||||
int thumbnailWidth = (int) 1.0 * thumbnailHeight * activeCamera.Resolution.X / activeCamera.Resolution.Y;
|
int thumbnailWidth = (int) 1.0 * thumbnailHeight * activeCamera.Resolution.X / activeCamera.Resolution.Y;
|
||||||
for (int i = 0; i < numThumbnails; i++) {
|
for (int i = 0; i < numThumbnails; i++) {
|
||||||
@ -277,6 +277,7 @@ public class Game : GameWindow {
|
|||||||
int photoIndex = 0;
|
int photoIndex = 0;
|
||||||
Shader shader = new();
|
Shader shader = new();
|
||||||
Matrix4 projection;
|
Matrix4 projection;
|
||||||
|
float zoomLevel = 0f;
|
||||||
|
|
||||||
protected override void OnUpdateFrame(FrameEventArgs e) {
|
protected override void OnUpdateFrame(FrameEventArgs e) {
|
||||||
base.OnUpdateFrame(e);
|
base.OnUpdateFrame(e);
|
||||||
@ -310,6 +311,30 @@ public class Game : GameWindow {
|
|||||||
upTimer = Int64.MaxValue;
|
upTimer = Int64.MaxValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (input.IsKeyDown(Keys.D0)) {
|
||||||
|
zoomLevel = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.IsKeyDown(Keys.D1)) {
|
||||||
|
zoomLevel = 1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.IsKeyDown(Keys.D2)) {
|
||||||
|
zoomLevel = 2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.IsKeyDown(Keys.D3)) {
|
||||||
|
zoomLevel = 4f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.IsKeyDown(Keys.D4)) {
|
||||||
|
zoomLevel = 8f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.IsKeyDown(Keys.D5)) {
|
||||||
|
zoomLevel = 16f;
|
||||||
|
}
|
||||||
|
|
||||||
// FIXME: make a proper Model class for tracking the state of the controls?
|
// FIXME: make a proper Model class for tracking the state of the controls?
|
||||||
if (input.IsKeyPressed(Keys.Down) || now > downTimer) {
|
if (input.IsKeyPressed(Keys.Down) || now > downTimer) {
|
||||||
if (photoIndex < photos.Count - 1) {
|
if (photoIndex < photos.Count - 1) {
|
||||||
@ -361,7 +386,8 @@ public class Game : GameWindow {
|
|||||||
// Load textures from JPEGs.
|
// Load textures from JPEGs.
|
||||||
// string[] files = Directory.GetFiles(@"c:\users\colin\desktop\photos-test\");
|
// string[] files = Directory.GetFiles(@"c:\users\colin\desktop\photos-test\");
|
||||||
string[] files = Directory.GetFiles(@"c:\users\colin\pictures\photos\2023\07\14\");
|
string[] files = Directory.GetFiles(@"c:\users\colin\pictures\photos\2023\07\14\");
|
||||||
//string[] files = Directory.GetFiles(@"C:\Users\colin\Pictures\photos\2018\06\23");
|
// string[] files = Directory.GetFiles(@"C:\Users\colin\Pictures\photos\2018\06\23");
|
||||||
|
// string[] files = Directory.GetFiles(@"C:\Users\colin\Desktop\Germany all\104D7000");
|
||||||
|
|
||||||
for (int i = 0; i < files.Count(); i++) {
|
for (int i = 0; i < files.Count(); i++) {
|
||||||
string file = files[i];
|
string file = files[i];
|
||||||
@ -391,6 +417,9 @@ public class Game : GameWindow {
|
|||||||
float scaleX = 1f * geometry.PhotoBox.Size.X / active.Size.X;
|
float scaleX = 1f * geometry.PhotoBox.Size.X / active.Size.X;
|
||||||
float scaleY = 1f * geometry.PhotoBox.Size.Y / active.Size.Y;
|
float scaleY = 1f * geometry.PhotoBox.Size.Y / active.Size.Y;
|
||||||
float scale = Math.Min(scaleX, scaleY);
|
float scale = Math.Min(scaleX, scaleY);
|
||||||
|
if (zoomLevel > 0f) {
|
||||||
|
scale = zoomLevel;
|
||||||
|
}
|
||||||
|
|
||||||
Vector2i renderSize = (Vector2i) (((Vector2) active.Size) * scale);
|
Vector2i renderSize = (Vector2i) (((Vector2) active.Size) * scale);
|
||||||
Vector2i center = (Vector2i) geometry.PhotoBox.Center;
|
Vector2i center = (Vector2i) geometry.PhotoBox.Center;
|
||||||
|
Loading…
Reference in New Issue
Block a user