From 35e67da08e3d214589968c19b4b2fb31d8e566cc Mon Sep 17 00:00:00 2001 From: raysan5 Date: Sun, 17 Oct 2021 21:02:18 +0200 Subject: UPDATED: examples to raylib 4.0 Some new examples added --- examples/web/textures/textures_image_processing.c | 199 ---------------------- 1 file changed, 199 deletions(-) delete mode 100644 examples/web/textures/textures_image_processing.c (limited to 'examples/web/textures/textures_image_processing.c') diff --git a/examples/web/textures/textures_image_processing.c b/examples/web/textures/textures_image_processing.c deleted file mode 100644 index 00282d0..0000000 --- a/examples/web/textures/textures_image_processing.c +++ /dev/null @@ -1,199 +0,0 @@ -/******************************************************************************************* -* -* raylib [textures] example - Image processing -* -* NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM) -* -* This example has been created using raylib 3.5 (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.h" - -#include // Required for: free() - -#if defined(PLATFORM_WEB) - #include -#endif - -#define NUM_PROCESSES 8 - -//---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -const int screenWidth = 800; -const int screenHeight = 450; - -typedef enum { - NONE = 0, - COLOR_GRAYSCALE, - COLOR_TINT, - COLOR_INVERT, - COLOR_CONTRAST, - COLOR_BRIGHTNESS, - FLIP_VERTICAL, - FLIP_HORIZONTAL -} ImageProcess; - -static const char *processText[] = { - "NO PROCESSING", - "COLOR GRAYSCALE", - "COLOR TINT", - "COLOR INVERT", - "COLOR CONTRAST", - "COLOR BRIGHTNESS", - "FLIP VERTICAL", - "FLIP HORIZONTAL" -}; - -static Image imOrigin = { 0 }; -static Texture2D texture = { 0 }; - -static Image imCopy = { 0 }; - -static int currentProcess = NONE; -static bool textureReload = false; - -static Rectangle toggleRecs[NUM_PROCESSES] = { 0 }; -int mouseHoverRec = -1; - -//---------------------------------------------------------------------------------- -// Module Functions Declaration -//---------------------------------------------------------------------------------- -void UpdateDrawFrame(void); // Update and Draw one frame - -//---------------------------------------------------------------------------------- -// Program Main Entry Point -//---------------------------------------------------------------------------------- -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - InitWindow(screenWidth, screenHeight, "raylib [textures] example - image processing"); - - // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) - - imOrigin = LoadImage("resources/parrots.png"); // Loaded in CPU memory (RAM) - ImageFormat(&imOrigin, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8); // Format image to RGBA 32bit (required for texture update) - texture = LoadTextureFromImage(imOrigin); // Image converted to texture, GPU memory (VRAM) - - for (int i = 0; i < NUM_PROCESSES; i++) toggleRecs[i] = (Rectangle){ 40.0f, (float)(50 + 32*i), 150.0f, 30.0f }; - -#if defined(PLATFORM_WEB) - emscripten_set_main_loop(UpdateDrawFrame, 60, 1); -#else - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - UpdateDrawFrame(); - } -#endif - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadTexture(texture); // Unload texture from VRAM - UnloadImage(imOrigin); // Unload image-origin from RAM - UnloadImage(imCopy); // Unload image-copy from RAM - - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module Functions Definition -//---------------------------------------------------------------------------------- -void UpdateDrawFrame(void) -{ - // Update - //---------------------------------------------------------------------------------- - // Mouse toggle group logic - for (int i = 0; i < NUM_PROCESSES; i++) - { - if (CheckCollisionPointRec(GetMousePosition(), toggleRecs[i])) - { - mouseHoverRec = i; - - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) - { - currentProcess = i; - textureReload = true; - } - break; - } - else mouseHoverRec = -1; - } - - // Keyboard toggle group logic - - if (IsKeyPressed(KEY_DOWN)) - { - currentProcess++; - if (currentProcess > (NUM_PROCESSES - 1)) currentProcess = 0; - textureReload = true; - } - else if (IsKeyPressed(KEY_UP)) - { - currentProcess--; - if (currentProcess < 0) currentProcess = 7; - textureReload = true; - } - - // Reload texture when required - if (textureReload) - { - UnloadImage(imCopy); // Unload image-copy data - imCopy = ImageCopy(imOrigin); // Restore image-copy from image-origin - - // NOTE: Image processing is a costly CPU process to be done every frame, - // If image processing is required in a frame-basis, it should be done - // with a texture and by shaders - switch (currentProcess) - { - case COLOR_GRAYSCALE: ImageColorGrayscale(&imCopy); break; - case COLOR_TINT: ImageColorTint(&imCopy, GREEN); break; - case COLOR_INVERT: ImageColorInvert(&imCopy); break; - case COLOR_CONTRAST: ImageColorContrast(&imCopy, -40); break; - case COLOR_BRIGHTNESS: ImageColorBrightness(&imCopy, -80); break; - case FLIP_VERTICAL: ImageFlipVertical(&imCopy); break; - case FLIP_HORIZONTAL: ImageFlipHorizontal(&imCopy); break; - default: break; - } - - Color *pixels = LoadImageColors(imCopy); // Load pixel data from image (RGBA 32bit) - UpdateTexture(texture, pixels); // Update texture with new image data - UnloadImageColors(pixels); // Unload pixels data from RAM - - textureReload = false; - } - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - DrawText("IMAGE PROCESSING:", 40, 30, 10, DARKGRAY); - - // Draw rectangles - for (int i = 0; i < NUM_PROCESSES; i++) - { - DrawRectangleRec(toggleRecs[i], ((i == currentProcess) || (i == mouseHoverRec)) ? SKYBLUE : LIGHTGRAY); - DrawRectangleLines((int)toggleRecs[i].x, (int) toggleRecs[i].y, (int) toggleRecs[i].width, (int) toggleRecs[i].height, ((i == currentProcess) || (i == mouseHoverRec)) ? BLUE : GRAY); - DrawText( processText[i], (int)( toggleRecs[i].x + toggleRecs[i].width/2 - MeasureText(processText[i], 10)/2), (int) toggleRecs[i].y + 11, 10, ((i == currentProcess) || (i == mouseHoverRec)) ? DARKBLUE : DARKGRAY); - } - - DrawTexture(texture, screenWidth - texture.width - 60, screenHeight/2 - texture.height/2, WHITE); - DrawRectangleLines(screenWidth - texture.width - 60, screenHeight/2 - texture.height/2, texture.width, texture.height, BLACK); - - EndDrawing(); - //---------------------------------------------------------------------------------- -} \ No newline at end of file -- cgit v1.2.3