From 843731e048c803fe6837fd0bbc5c4bf4fbc6337e Mon Sep 17 00:00:00 2001 From: raysan5 Date: Fri, 14 Apr 2017 15:37:36 +0200 Subject: [PATCH] new example: text_input_box --- examples/text/text_input_box.c | 116 +++++++++++++++++++++++++++++++ examples/text/text_input_box.png | Bin 0 -> 15484 bytes 2 files changed, 116 insertions(+) create mode 100644 examples/text/text_input_box.c create mode 100644 examples/text/text_input_box.png diff --git a/examples/text/text_input_box.c b/examples/text/text_input_box.c new file mode 100644 index 000000000..54eebf40b --- /dev/null +++ b/examples/text/text_input_box.c @@ -0,0 +1,116 @@ +/******************************************************************************************* +* +* raylib [text] example - Input Box +* +* This example has been created using raylib 1.7 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2017 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +#define MAX_INPUT_CHARS 9 + +int main() +{ + // Initialization + //-------------------------------------------------------------------------------------- + int screenWidth = 800; + int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [text] example - input box"); + + char name[MAX_INPUT_CHARS + 1] = "\0"; // NOTE: One extra space required for line ending char '\0' + int letterCount = 0; + + Rectangle textBox = { screenWidth/2 - 100, 180, 225, 50 }; + bool mouseOnText = false; + + int framesCounter = 0; + + SetTargetFPS(60); + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + if (CheckCollisionPointRec(GetMousePosition(), textBox)) mouseOnText = true; + else mouseOnText = false; + + if (mouseOnText) + { + int key = GetKeyPressed(); + + // NOTE: Only allow keys in range [32..125] + if ((key >= 32) && (key <= 125) && (letterCount < MAX_INPUT_CHARS)) + { + name[letterCount] = (char)key; + letterCount++; + } + + if (key == KEY_BACKSPACE) + { + letterCount--; + name[letterCount] = '\0'; + + if (letterCount < 0) letterCount = 0; + } + } + + if (mouseOnText) framesCounter++; + else framesCounter = 0; + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + DrawText("PLACE MOUSE OVER INPUT BOX!", 240, 140, 20, GRAY); + + DrawRectangleRec(textBox, LIGHTGRAY); + if (mouseOnText) DrawRectangleLines(textBox.x, textBox.y, textBox.width, textBox.height, RED); + else DrawRectangleLines(textBox.x, textBox.y, textBox.width, textBox.height, DARKGRAY); + + DrawText(name, textBox.x + 5, textBox.y + 8, 40, MAROON); + + DrawText(FormatText("INPUT CHARS: %i/%i", letterCount, MAX_INPUT_CHARS), 315, 250, 20, DARKGRAY); + + if (mouseOnText) + { + if (letterCount < MAX_INPUT_CHARS) + { + // Draw blinking underscore char + if (((framesCounter/20)%2) == 0) DrawText("_", textBox.x + 8 + MeasureText(name, 40), textBox.y + 12, 40, MAROON); + } + else DrawText("Press BACKSPACE to delete chars...", 230, 300, 20, GRAY); + } + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} + +// Check if any key is pressed +// NOTE: We limit keys check to keys between 32 (KEY_SPACE) and 126 +bool IsAnyKeyPressed() +{ + bool keyPressed = false; + int key = GetKeyPressed(); + + if ((key >= 32) && (key <= 126)) keyPressed = true; + + return keyPressed; +} \ No newline at end of file diff --git a/examples/text/text_input_box.png b/examples/text/text_input_box.png new file mode 100644 index 0000000000000000000000000000000000000000..42f9d73a37ca3bc8b0df15be4303999286e98a40 GIT binary patch literal 15484 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYU_8XZ#=yWJp1k%11A~pTr;B4qMO^ZqUteF> zw*?wVF)dcaL6mSXF1r{Y$J=;OKmselSk-zUgFVG$ZExFw42~Wwgh5Z4gPZU{?2*GaR-HNW5+6QQL;o4Z9$2*oe~&ASYbL;l7@>10Ntx2pM&POg9YOWlXef+^0<3v6nifXW!f0ARZtIWch|wG|nj=PY1bQEP zv|JeEE@085;T)cYG`cCFtJ~pj8nN#~NoK-cg z547IL*{Z+v+rdB9H%{{g9d1k%0hb;ZY+2mW9o&TPf;%2q2!^{(2_V z=M|6U+DoS$mTtc2RS5E7!#70(D`ulvr?7bzEcQZ-X|b`w;?7)<@`MA<4PnY(ci4pW zB_BsZRJG)hE|5H=|XPKrC=o{EN$K#J?9#FmOaHcWc7mQL`IS{Z)2hW(-*75 z^Wwf8Sk!W9uSCnDZ8OdUAAB)4rGvNp%S@H1_WKFk>@mifU;MUjD9~JXd1Z0)UXI1# zRxbScF%O;IOJ2X|RR*$`!5AEP!AG%#8zgd31Fx$0#l_ztvkpF5-{_@uo49JU*uvMv3mW)}BS_W$CkZ$MTsq(MB{MT{pe z3P^kqkdU1yBiXrO#)-?vGi0TXGH?0Le)rzRMd<}C2MT5vO8JH_Rx}WSMDW}`n2(tk@|P}FbsXLUty6+`V;Dj%4#YxRs{ z%bf*Z%V+Iuz9MN8b+#oyN`K2K^Dn3LpX{nHVJq7rX&}Y)g&#cr7-EiR{4oJERQmto z2fPEJEeAj`Y9)AFei6YLyd{6-ZG7M54gUvuA zKs6W}*df@6ws=Un^$O}ZjEN0Kg7XPO!3hm{iU*9OuE7e6Db5d~Q|!7v@0{kp(J^$7}=W_kMXP1{(T)egK;-zGGP&Ryl6gQ?Y6EMoh5<|)6_nToA!1d9!V zSOFFAluk75WrwtHGB|iv3;Yn9=^y?-AnX1MTcs<#dQJ~L-+wWT+5`44m`G>?S39dP zQZX#tsZrY9Wj30%3YS8+kw`?!N6zcu zv^znNX>oZ+kJ@agwF>$yZqpNbm(79lY2yrnbDVcu>}EkyXj=$JgPyZ=?S-q7Kq;fn-aJM4n*60_wNO zP8f9p6DT{6Mg+l7NRZ@x4NJhBiUP8-y;o;@PuFAZKKvxHCML0I9pChwJHA}LZ8yW3 z<0tpBybZtEZU1!m?w;~W*|c9ky6?y_?p=SMEORb;n=HW!OXWu)jR-#|AG1&eH6kS8 zsZ`0S;mS<*Am-K^GljjFrKj5-Irl&y+kWpK=3@Sx-!6K|Z#81wnl8g})Og_+!>Bv3 zHevz?xDQuifiJg#`cAMizd?lQ$~;erb&b}Sz6tS^?2_=EzWC@Ba66=c3vAXG8xqWV z@=jFo>z5S|rCvN~JDhNp-JAc(xgP?b#5Yz)bZo6Rk?j*p2M2(&BDn8*`6bvUECllS z21uG=nt(#7TFR2Qod>37u>CU8F7oem`p&;KO{k!iUGcN$-OrABJNnc9!Q!n065Qor z+prO+!7as9;lxm@mSVC&LD3+>KUJxmpMPP+(&_c?{=22lCV~x6hPwGD$UU%5IJo$R z5@>Gj5O9bu_J1c;oi*RcB*I@;>eX`1hqE{pug7n(V&$IpQ)BK=3ERI}TNEG_wil!r zivzbVa1>)b@%!uk+DqL7y9Ybr&=2uBB%HCS0r`Bib37Ufprvl3p)eW>u&QV@EsUmx z(X@cv*cr_cqd8(UM~vnO^lbs7<-%yWFj_8*mJ6fh!sz${s3aT>h0#zLU5)}7cN|@m n0~%f*4TTX93JiCh7#M0l8eNxQ(LKPxz`)??>gTe~DWM4f9exo_ literal 0 HcmV?d00001