From fddec3f04b2ea1c7be6e9a776eb7bb637b22edd1 Mon Sep 17 00:00:00 2001 From: zeefaad Date: Sun, 28 Dec 2025 13:42:30 +0100 Subject: [PATCH] agrandir la figure d'interf --- main.c | 25 +++++++++++++++++++++---- michelson | Bin 125688 -> 129784 bytes michelson.fs | 5 +++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/main.c b/main.c index 6012017..fa3ba32 100644 --- a/main.c +++ b/main.c @@ -99,16 +99,25 @@ void DrawInterferenceViewCPU(Michelson *mic, Rectangle rec) { DrawLine(cx, cy - 10, cx, cy + 10, Fade(WHITE, 0.5f)); } -void DrawInterferenceViewGPU(Michelson *mic, Rectangle rec, Shader shader) { +void DrawInterferenceViewGPU(Michelson *mic, Rectangle rec, Shader shader, bool *isFullscreen) { DrawRectangleRec((Rectangle){rec.x - 4, rec.y - 30, rec.width + 8, rec.height + 34}, COLOR_PANEL); DrawText("ECRAN", rec.x, rec.y - 26, 20, COLOR_TEXT_DIM); + const char* btnText = *isFullscreen ? "PETIT" : "GRAND"; + if (GuiButton((Rectangle){rec.x + rec.width - 80, rec.y - 28, 80, 24}, btnText)) { + *isFullscreen = !(*isFullscreen); + } + if (CheckCollisionPointRec(GetMousePosition(), (Rectangle){rec.x + rec.width - 80, rec.y - 28, 80, 24})) { + DrawText("(Touche F)", rec.x + rec.width - 160, rec.y - 22, 10, GRAY); + } + // Shader glsl float centerX = rec.x + rec.width / 2.0f; float centerY = rec.y + rec.height / 2.0f; float center[2] = { centerX, centerY }; float scrHeight = (float)GetScreenHeight(); + float zoom = *isFullscreen ? 0.7 : 1; // SetShaderValue(shader, GetShaderLocation(shader, "center"), center, SHADER_UNIFORM_VEC2); @@ -118,6 +127,7 @@ void DrawInterferenceViewGPU(Michelson *mic, Rectangle rec, Shader shader) { SetShaderValue(shader, GetShaderLocation(shader, "d2"), &mic->d2, SHADER_UNIFORM_FLOAT); SetShaderValue(shader, GetShaderLocation(shader, "lambda"), &mic->lambda, SHADER_UNIFORM_FLOAT); SetShaderValue(shader, GetShaderLocation(shader, "angleM1"), &mic->angleM1, SHADER_UNIFORM_FLOAT); + SetShaderValue(shader, GetShaderLocation(shader, "zoom"), &zoom, SHADER_UNIFORM_FLOAT); // GPU BeginShaderMode(shader); @@ -294,7 +304,7 @@ void DrawControlPanel(Michelson *mic) { int fps = GetFPS(); Color fpsColor = (fps >= 100) ? COLOR_ACCENT : (fps >= 60 ? GREEN : (fps >= 30 ? ORANGE : RED)); DrawText("STATUT:", startX, bottomY + 12, 20, COLOR_TEXT_DIM); - DrawText(TextFormat("GPU MODE | %i FPS", fps), startX + 100, bottomY + 12, 20, fpsColor); + DrawText(TextFormat("%i FPS", fps), startX + 100, bottomY + 12, 20, fpsColor); } int main () { @@ -311,10 +321,17 @@ int main () { mic.lambda = 550.0f; mic.angleM1 = 0.0f; - Rectangle screenViewBounds = {1920 - 530, 50, 500, 500}; + bool isFullscreen = false; + + Rectangle normalBounds = {1920 - 530, 50, 500, 500}; + Rectangle fullScreenBounds = {UI_WIDTH + 10, 40, 1920 - UI_WIDTH - 20, 1030}; //Rectangle screenViewBounds = {400, 0, 1080, 1080}; while (!WindowShouldClose()) { + if (IsKeyPressed(KEY_F)) { + isFullscreen = !isFullscreen; + } + Rectangle currentViewBounds = isFullscreen ? fullScreenBounds : normalBounds; BeginDrawing(); ClearBackground(COLOR_BG); // Grille fond @@ -323,7 +340,7 @@ int main () { DrawMichelsonSchema(&mic); DrawControlPanel(&mic); - DrawInterferenceViewGPU(&mic, screenViewBounds, shader); + DrawInterferenceViewGPU(&mic, currentViewBounds, shader, &isFullscreen); EndDrawing(); } CloseWindow(); diff --git a/michelson b/michelson index a43bda882eaeef507cd1e473f5a85e083d86289d..537eb3b0916c46350fd35369602f901406856bc1 100755 GIT binary patch delta 19112 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 nano float deltaLnm = 2.0 * (d1 - d2) * 1000.0; - float relX = (pixelX - center.x); - float relY = (pixelY - center.y); + float relX = (pixelX - center.x) * zoom; + float relY = (pixelY - center.y) * zoom; vec3 baseColorVec = WavelengthToRGB(lambda);