/*******************************************************************************************
							 | 
						|
								*
							 | 
						|
								*   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;
							 | 
						|
								}
							 |