| @ -0,0 +1,108 @@ | |||
| /******************************************************************************************* | |||
| * | |||
| * raylib [textures] example - 9-patch drawing | |||
| * | |||
| * NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM) | |||
| * | |||
| * This example has been created using raylib 2.0 (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" | |||
| int main() | |||
| { | |||
| // Initialization | |||
| //-------------------------------------------------------------------------------------- | |||
| int screenWidth = 800; | |||
| int screenHeight = 450; | |||
| InitWindow(screenWidth, screenHeight, "raylib [textures] example - 9-patch drawing"); | |||
| // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) | |||
| Texture2D nPatchTexture = LoadTexture("resources/ninepatch_button.png"); | |||
| Vector2 mousePosition; | |||
| Vector2 origin = {0.0f, 0.0f}; | |||
| // The location and size of the n-patches. | |||
| Rectangle dstRec1 = {480.0f, 160.0f, 32.0f, 32.0f}; | |||
| Rectangle dstRec2 = {160.0f, 160.0f, 32.0f, 32.0f}; | |||
| Rectangle dstRecH = {160.0f, 93.0f, 32.0f, 32.0f}; // this rec's height is ignored | |||
| Rectangle dstRecV = {92.0f, 160.0f, 32.0f, 32.0f}; // this rec's width is ignored | |||
| // A 9-patch (NPT_9PATCH) changes its sizes in both axis | |||
| NPatchInfo ninePatchInfo1 = {(Rectangle){0.0f, 0.0f, 64.0f, 64.0f}, 12, 40, 12, 12, NPT_9PATCH }; | |||
| NPatchInfo ninePatchInfo2 = {(Rectangle){0.0f, 128.0f, 64.0f, 64.0f}, 16, 16, 16, 16, NPT_9PATCH }; | |||
| // A horizontal 3-patch (NPT_3PATCH_HORIZONTAL) changes its sizes along the x axis only | |||
| NPatchInfo h3PatchInfo = {(Rectangle){0.0f, 64.0f, 64.0f, 64.0f}, 8, 8, 8, 8, NPT_3PATCH_HORIZONTAL }; | |||
| // A vertical 3-patch (NPT_3PATCH_VERTICAL) changes its sizes along the y axis only | |||
| NPatchInfo v3PatchInfo = {(Rectangle){0.0f, 192.0f, 64.0f, 64.0f}, 6, 6, 6, 6, NPT_3PATCH_VERTICAL }; | |||
| SetTargetFPS(60); | |||
| //--------------------------------------------------------------------------------------- | |||
| // Main game loop | |||
| while (!WindowShouldClose()) // Detect window close button or ESC key | |||
| { | |||
| // Update | |||
| //---------------------------------------------------------------------------------- | |||
| mousePosition = GetMousePosition(); | |||
| // resize the n-patches based on mouse position. | |||
| dstRec1.width = mousePosition.x - dstRec1.x; | |||
| dstRec1.height = mousePosition.y - dstRec1.y; | |||
| dstRec2.width = mousePosition.x - dstRec2.x; | |||
| dstRec2.height = mousePosition.y - dstRec2.y; | |||
| dstRecH.width = mousePosition.x - dstRecH.x; | |||
| dstRecV.height = mousePosition.y - dstRecV.y; | |||
| // set a minimum width and/or height | |||
| if (dstRec1.width < 1.0f) dstRec1.width = 1.0f; | |||
| if (dstRec1.width > 300.0f) dstRec1.width = 300.0f; | |||
| if (dstRec1.height < 1.0f) dstRec1.height = 1.0f; | |||
| if (dstRec2.width < 1.0f) dstRec2.width = 1.0f; | |||
| if (dstRec2.width > 300.0f) dstRec2.width = 300.0f; | |||
| if (dstRec2.height < 1.0f) dstRec2.height = 1.0f; | |||
| if (dstRecH.width < 1.0f) dstRecH.width = 1.0f; | |||
| if (dstRecV.height < 1.0f) dstRecV.height = 1.0f; | |||
| //---------------------------------------------------------------------------------- | |||
| // Draw | |||
| //---------------------------------------------------------------------------------- | |||
| BeginDrawing(); | |||
| ClearBackground(RAYWHITE); | |||
| // Draw the n-patches | |||
| DrawTextureNPatch(nPatchTexture, ninePatchInfo2, dstRec2, origin, 0.0f, WHITE); | |||
| DrawTextureNPatch(nPatchTexture, ninePatchInfo1, dstRec1, origin, 0.0f, WHITE); | |||
| DrawTextureNPatch(nPatchTexture, h3PatchInfo, dstRecH, origin, 0.0f, WHITE); | |||
| DrawTextureNPatch(nPatchTexture, v3PatchInfo, dstRecV, origin, 0.0f, WHITE); | |||
| // Draw the source texture | |||
| DrawRectangleLines( 5, 88, 74, 266, BLUE); | |||
| DrawTexture(nPatchTexture, 10, 93, WHITE); | |||
| DrawText("TEXTURE", 15, 360, 10, DARKGRAY); | |||
| DrawRectangle( 10, 10, 250, 73, Fade(SKYBLUE, 0.5)); | |||
| DrawRectangleLines( 10, 10, 250, 73, BLUE); | |||
| DrawText("9-Patch and 3-Patch example", 20, 20, 10, BLACK); | |||
| DrawText(" Move the mouse to stretch or", 40, 40, 10, DARKGRAY); | |||
| DrawText(" shrink the n-patches.", 40, 60, 10, DARKGRAY); | |||
| EndDrawing(); | |||
| //---------------------------------------------------------------------------------- | |||
| } | |||
| // De-Initialization | |||
| //-------------------------------------------------------------------------------------- | |||
| UnloadTexture(nPatchTexture); // Texture unloading | |||
| CloseWindow(); // Close window and OpenGL context | |||
| //-------------------------------------------------------------------------------------- | |||
| return 0; | |||
| } | |||