| /******************************************************************************************* | |
| * | |
| *   raylib [shapes] example - rectangle scaling by mouse | |
| * | |
| *   This example has been created using raylib 2.5 (www.raylib.com) | |
| *   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) | |
| * | |
| *   Copyright (c) 2019 Demioz and Ramon Santamaria (@raysan5) | |
| * | |
| ********************************************************************************************/ | |
| 
 | |
| #include "raylib.h" | |
|  | |
| #define MOUSE_SCALE_MARK_SIZE   12 | |
|  | |
| int main() | |
| { | |
|     // Initialization | |
|     //-------------------------------------------------------------------------------------- | |
|     int screenWidth = 800; | |
|     int screenHeight = 450; | |
| 
 | |
|     InitWindow(screenWidth, screenHeight, "raylib [shapes] example - rectangle scaling mouse"); | |
|      | |
|     Rectangle rec = { 100, 100, 200, 80 }; | |
|      | |
|     Vector2 mousePosition = { 0 }; | |
|      | |
|     bool mouseScaleReady = false; | |
|     bool mouseScaleMode = false; | |
|      | |
|     SetTargetFPS(60); | |
|     //-------------------------------------------------------------------------------------- | |
|  | |
|     // Main game loop | |
|     while (!WindowShouldClose())    // Detect window close button or ESC key | |
|     { | |
|         // Update | |
|         //---------------------------------------------------------------------------------- | |
|         mousePosition = GetMousePosition(); | |
|          | |
|         if (CheckCollisionPointRec(mousePosition, rec) &&  | |
|             CheckCollisionPointRec(mousePosition, (Rectangle){ rec.x + rec.width - MOUSE_SCALE_MARK_SIZE, rec.y + rec.height - MOUSE_SCALE_MARK_SIZE, MOUSE_SCALE_MARK_SIZE, MOUSE_SCALE_MARK_SIZE })) | |
|         { | |
|             mouseScaleReady = true; | |
|             if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) mouseScaleMode = true; | |
|         } | |
|         else mouseScaleReady = false; | |
|          | |
|         if (mouseScaleMode) | |
|         { | |
|             mouseScaleReady = true; | |
|              | |
|             rec.width = (mousePosition.x - rec.x); | |
|             rec.height = (mousePosition.y - rec.y); | |
|              | |
|             if (rec.width < MOUSE_SCALE_MARK_SIZE) rec.width = MOUSE_SCALE_MARK_SIZE; | |
|             if (rec.height < MOUSE_SCALE_MARK_SIZE) rec.height = MOUSE_SCALE_MARK_SIZE; | |
|              | |
|             if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) mouseScaleMode = false; | |
|         } | |
|         //---------------------------------------------------------------------------------- | |
|  | |
|         // Draw | |
|         //---------------------------------------------------------------------------------- | |
|         BeginDrawing(); | |
| 
 | |
|             ClearBackground(RAYWHITE); | |
|              | |
|             DrawText("Scale rectangle dragging from bottom-right corner!", 10, 10, 20, GRAY); | |
| 
 | |
|             DrawRectangleRec(rec, Fade(GREEN, 0.5f)); | |
|              | |
|             if (mouseScaleReady)  | |
|             { | |
|                 DrawRectangleLinesEx(rec, 1, RED); | |
|                 DrawTriangle((Vector2){ rec.x + rec.width - MOUSE_SCALE_MARK_SIZE, rec.y + rec.height },  | |
|                              (Vector2){ rec.x + rec.width, rec.y + rec.height }, | |
|                              (Vector2){ rec.x + rec.width, rec.y + rec.height - MOUSE_SCALE_MARK_SIZE }, RED); | |
|             } | |
| 
 | |
|         EndDrawing(); | |
|         //---------------------------------------------------------------------------------- | |
|     } | |
| 
 | |
|     // De-Initialization | |
|     //--------------------------------------------------------------------------------------    | |
|     CloseWindow();        // Close window and OpenGL context | |
|     //-------------------------------------------------------------------------------------- | |
|  | |
|     return 0; | |
| } |