]> Nishi Git Mirror - mivfx.git/commitdiff
マウスで使って画像を移動出来る様に 15/head
author諏訪子 <suwako@076.moe>
Thu, 2 May 2024 15:40:48 +0000 (00:40 +0900)
committer諏訪子 <suwako@076.moe>
Thu, 2 May 2024 15:40:48 +0000 (00:40 +0900)
CHANGELOG.md
main.c

index 87fdb638eb4fac552e177c84bbff34c6d92ff264..0af2a416d39fe4096b17238d03106d62ec533fea 100644 (file)
@@ -6,6 +6,7 @@
 * サイズ変更の修正
 * Pixivからダウンロード出来る様に
 * ズーム機能性の追加
+* マウスで使って画像を移動出来る様に
 
 # 0.4.0
 * URLから画像ファイルを開ける様に
diff --git a/main.c b/main.c
index 6d0c2fbbf9095b12b7989b0b62c1f424d418bf43..26f331754fcfe739002ccfd1c530bc2d8157d74b 100644 (file)
--- a/main.c
+++ b/main.c
@@ -17,9 +17,13 @@ int screenWidth;
 int screenHeight;
 int init = 0;
 SDL_Rect renderQuad;
+float newWidth;
+float newHeight;
 
 // マウス
-int mouseX, mouseY, drag = 0;
+int mouseX = 10;
+int mouseY = 10;
+int drag = 0;
 
 // ズーム
 float zoom = 1.0f;
@@ -88,11 +92,14 @@ void windowevent(SDL_Event e) {
     }
   } else if (e.type == SDL_MOUSEMOTION) {
     if (drag) {
-      // TODO: 画像サイズを変わらないと、画面が黒くになる
       int newMouseX, newMouseY;
       SDL_GetMouseState(&newMouseX, &newMouseY);
       SDL_RenderClear(renderer);
 
+      if (newWidth == 0.0f) renderQuad.w = imgWidth;
+      else renderQuad.w = (int)newWidth;
+      if (newHeight == 0.0f) renderQuad.h = imgHeight;
+      else renderQuad.h = (int)newHeight;
       renderQuad.x = newMouseX - (renderQuad.w / 2);
       renderQuad.y = newMouseY - (renderQuad.h / 2);
 
@@ -101,7 +108,6 @@ void windowevent(SDL_Event e) {
       SDL_RenderPresent(renderer);
     }
   } else if (e.type == SDL_MOUSEWHEEL) {
-    // TODO: ノートパソコンでおかしくなる
     float zoomSpeed = 0.1f;
     if (e.wheel.y > 0) {
       zoom += zoomSpeed;
@@ -114,8 +120,8 @@ void windowevent(SDL_Event e) {
     }
 
     // 画像のサイズが変わった場合
-    float newWidth = (float)imgWidth * zoom;
-    float newHeight = (float)imgHeight * zoom;
+    newWidth = (float)imgWidth * zoom;
+    newHeight = (float)imgHeight * zoom;
     float minLimit = 50.0f;
 
     // 画像は50x50以下じゃ駄目