browser/external/raylib-cpp-4.5.1/examples/textures/textures_image_drawing.cpp
2023-09-27 15:02:24 -04:00

81 lines
3.5 KiB
C++

/*******************************************************************************************
*
* raylib [textures] example - Image loading and drawing on it
*
* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM)
*
* This example has been created using raylib 1.4 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2016 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib-cpp.hpp"
int main(void) {
// Initialization
//--------------------------------------------------------------------------------------
const int screenWidth = 800;
const int screenHeight = 450;
raylib::Window window(screenWidth, screenHeight, "raylib [textures] example - image drawing");
raylib::Color darkGray = DARKGRAY;
// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
raylib::Image cat("resources/cat.png"); // Load image in CPU memory (RAM)
cat.Crop(raylib::Rectangle(100, 10, 280, 380)) // Crop an image piece
.FlipHorizontal() // Flip cropped image horizontally
.Resize(150, 200); // Resize flipped-cropped image
raylib::Image parrots("resources/parrots.png"); // Load image in CPU memory (RAM)
// Draw one image over the other with a scaling of 1.5f
parrots
.Draw(cat,
raylib::Rectangle(0, 0, cat.GetWidth(), cat.GetHeight()),
raylib::Rectangle(30, 40, cat.GetWidth() * 1.5f, cat.GetHeight() * 1.5f));
parrots.Crop(raylib::Rectangle(0, 50, parrots.GetWidth(), parrots.GetHeight() - 100)); // Crop resulting image
// Load custom font for frawing on image
raylib::Font font("resources/custom_jupiter_crash.png");
// Draw over image using custom font
parrots.DrawText(font, "PARROTS & CAT", raylib::Vector2(300, 230), font.baseSize, -2);
raylib::Texture2D texture(parrots); // Image converted to texture, uploaded to GPU memory (VRAM)
SetTargetFPS(60);
//---------------------------------------------------------------------------------------
// Main game loop
while (!window.ShouldClose()) { // Detect window close button or ESC key
// Update
//----------------------------------------------------------------------------------
// Update your variables here
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
{
window.ClearBackground(RAYWHITE);
texture.Draw(screenWidth / 2 - texture.width / 2,
screenHeight / 2 - texture.height / 2 - 40);
darkGray.DrawRectangleLines(screenWidth / 2 - texture.width / 2,
screenHeight / 2 - texture.height / 2 - 40,
texture.width, texture.height);
darkGray.DrawText("We are drawing only one texture from various images composed!",
240, 350, 10);
darkGray.DrawText("Source images have been cropped, scaled, flipped and copied one over the other.",
190, 370, 10);
}
EndDrawing();
//----------------------------------------------------------------------------------
}
return 0;
}