]> Nishi Git Mirror - mivfx.git/commitdiff
マウスでの移動
author諏訪子 <suwako@076.moe>
Thu, 2 May 2024 11:21:50 +0000 (20:21 +0900)
committer諏訪子 <suwako@076.moe>
Thu, 2 May 2024 11:21:50 +0000 (20:21 +0900)
main.c

diff --git a/main.c b/main.c
index 300f39c07904fa19c5f508828e7f3af0846bfef4..3d08ff2910764da60d4bbd9bd113c86fe24d0d5f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -18,6 +18,9 @@ int screenHeight;
 int init = 0;
 SDL_Rect renderQuad;
 
+// マウス
+int mouseX, mouseY, drag = 0;
+
 const char* sofname = "mivfx";
 const char* version = "0.5.0";
 
@@ -73,6 +76,29 @@ void windowevent(SDL_Event e) {
     } else if (e.key.keysym.sym == SDLK_a) {
       // GIFアニメーションの停止・続き、0.6.0から追加する予定
     }
+  } else if (e.type == SDL_MOUSEBUTTONDOWN) {
+    if (e.button.button == SDL_BUTTON_LEFT) {
+      drag = 1;
+      SDL_GetMouseState(&mouseX, &mouseY);
+    }
+  } else if (e.type == SDL_MOUSEBUTTONUP) {
+    if (e.button.button == SDL_BUTTON_LEFT) {
+      drag = 0;
+    }
+  } else if (e.type == SDL_MOUSEMOTION) {
+    if (drag) {
+      // TODO: 画像サイズを変わらないと、画面が黒くになる
+      int newMouseX, newMouseY;
+      SDL_GetMouseState(&newMouseX, &newMouseY);
+      SDL_RenderClear(renderer);
+
+      renderQuad.x = newMouseX - (renderQuad.w / 2);
+      renderQuad.y = newMouseY - (renderQuad.h / 2);
+
+      SDL_RenderClear(renderer);
+      SDL_RenderCopy(renderer, texture, NULL, &renderQuad);
+      SDL_RenderPresent(renderer);
+    }
   } else if (e.type == SDL_WINDOWEVENT && e.window.event == SDL_WINDOWEVENT_RESIZED) {
     // ウィンドウのサイズが変わった場合
     int newWidth = e.window.data1;