WARNING: RENAMED: GuiFade() to GuiSetAlpha()

This commit is contained in:
Ray 2023-07-21 19:32:43 +02:00
parent 848569ce33
commit ccc9b55e82

View File

@ -524,7 +524,8 @@ typedef enum {
TEXT_LINES_SPACING, // TextBoxMulti lines separation TEXT_LINES_SPACING, // TextBoxMulti lines separation
TEXT_ALIGNMENT_VERTICAL, // TextBoxMulti vertical alignment: 0-CENTERED, 1-UP, 2-DOWN TEXT_ALIGNMENT_VERTICAL, // TextBoxMulti vertical alignment: 0-CENTERED, 1-UP, 2-DOWN
TEXT_MULTILINE, // TextBox supports multiple lines TEXT_MULTILINE, // TextBox supports multiple lines
TEXT_WRAP_MODE // TextBox wrap mode for multiline: 0-NO_WRAP, 1-CHAR_WRAP, 2-WORD_WRAP TEXT_WRAP_MODE, // TextBox wrap mode for multiline: 0-NO_WRAP, 1-CHAR_WRAP, 2-WORD_WRAP
TEXT_READONLY // TextBox is readonly, no editable
} GuiTextBoxProperty; } GuiTextBoxProperty;
// Spinner // Spinner
@ -572,7 +573,7 @@ RAYGUIAPI void GuiDisable(void); // Disable gui c
RAYGUIAPI void GuiLock(void); // Lock gui controls (global state) RAYGUIAPI void GuiLock(void); // Lock gui controls (global state)
RAYGUIAPI void GuiUnlock(void); // Unlock gui controls (global state) RAYGUIAPI void GuiUnlock(void); // Unlock gui controls (global state)
RAYGUIAPI bool GuiIsLocked(void); // Check if gui is locked (global state) RAYGUIAPI bool GuiIsLocked(void); // Check if gui is locked (global state)
RAYGUIAPI void GuiFade(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f RAYGUIAPI void GuiSetAlpha(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f
RAYGUIAPI void GuiSetState(int state); // Set gui state (global state) RAYGUIAPI void GuiSetState(int state); // Set gui state (global state)
RAYGUIAPI int GuiGetState(void); // Get gui state (global state) RAYGUIAPI int GuiGetState(void); // Get gui state (global state)
@ -1393,7 +1394,7 @@ void GuiUnlock(void) { guiLocked = false; }
bool GuiIsLocked(void) { return guiLocked; } bool GuiIsLocked(void) { return guiLocked; }
// Set gui controls alpha global state // Set gui controls alpha global state
void GuiFade(float alpha) void GuiSetAlpha(float alpha)
{ {
if (alpha < 0.0f) alpha = 0.0f; if (alpha < 0.0f) alpha = 0.0f;
else if (alpha > 1.0f) alpha = 1.0f; else if (alpha > 1.0f) alpha = 1.0f;
@ -2285,7 +2286,7 @@ int GuiTextBox(Rectangle bounds, char *text, int bufferSize, bool editMode)
// Update control // Update control
//-------------------------------------------------------------------- //--------------------------------------------------------------------
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging) if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging && (GuiGetStyle(TEXTBOX, TEXT_READONLY) == 0))
{ {
Vector2 mousePoint = GetMousePosition(); Vector2 mousePoint = GetMousePosition();
@ -2467,7 +2468,7 @@ int GuiTextBox(Rectangle bounds, char *text, int bufferSize, bool editMode)
GuiDrawText(text + textIndexOffset, textBounds, GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(TEXTBOX, TEXT + (state*3))), guiAlpha)); GuiDrawText(text + textIndexOffset, textBounds, GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(TEXTBOX, TEXT + (state*3))), guiAlpha));
// Draw cursor // Draw cursor
if (editMode) if (editMode && (GuiGetStyle(TEXTBOX, TEXT_READONLY) == 0))
{ {
//if (autoCursorMode || ((blinkCursorFrameCounter/40)%2 == 0)) //if (autoCursorMode || ((blinkCursorFrameCounter/40)%2 == 0))
GuiDrawRectangle(cursor, 0, BLANK, Fade(GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED)), guiAlpha)); GuiDrawRectangle(cursor, 0, BLANK, Fade(GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED)), guiAlpha));
@ -2895,9 +2896,9 @@ int GuiStatusBar(Rectangle bounds, const char *text)
// Draw control // Draw control
//-------------------------------------------------------------------- //--------------------------------------------------------------------
GuiDrawRectangle(bounds, GuiGetStyle(STATUSBAR, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(STATUSBAR, (state != STATE_DISABLED)? BORDER_COLOR_NORMAL : BORDER_COLOR_DISABLED)), guiAlpha), GuiDrawRectangle(bounds, GuiGetStyle(STATUSBAR, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(STATUSBAR, BORDER + (state*3))), guiAlpha),
Fade(GetColor(GuiGetStyle(STATUSBAR, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED)), guiAlpha)); Fade(GetColor(GuiGetStyle(STATUSBAR, BASE + (state*3))), guiAlpha));
GuiDrawText(text, GetTextBounds(STATUSBAR, bounds), GuiGetStyle(STATUSBAR, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(STATUSBAR, (state != STATE_DISABLED)? TEXT_COLOR_NORMAL : TEXT_COLOR_DISABLED)), guiAlpha)); GuiDrawText(text, GetTextBounds(STATUSBAR, bounds), GuiGetStyle(STATUSBAR, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(STATUSBAR, TEXT + (state*3))), guiAlpha));
//-------------------------------------------------------------------- //--------------------------------------------------------------------
return result; return result;
@ -3389,11 +3390,13 @@ int GuiColorPicker(Rectangle bounds, const char *text, Color *color)
int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv)
{ {
int result = 0; int result = 0;
Vector3 tempHsv = { 0 };
if (colorHsv == NULL) if (colorHsv == NULL)
{ {
const Vector3 tempColor = { 200.0f/255.0f, 0.0f, 0.0f }; const Vector3 tempColor = { 200.0f/255.0f, 0.0f, 0.0f };
Vector3 tempHsv = ConvertRGBtoHSV(tempColor); tempHsv = ConvertRGBtoHSV(tempColor);
colorHsv = &tempHsv; colorHsv = &tempHsv;
} }
@ -3893,6 +3896,10 @@ void GuiLoadStyleDefault(void)
{ {
// Unload previous font texture // Unload previous font texture
UnloadTexture(guiFont.texture); UnloadTexture(guiFont.texture);
RL_FREE(guiFont.recs);
RL_FREE(guiFont.glyphs);
guiFont.recs = NULL;
guiFont.glyphs = NULL;
// Setup default raylib font // Setup default raylib font
guiFont = GetFontDefault(); guiFont = GetFontDefault();
@ -4429,6 +4436,7 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
#define ICON_TEXT_PADDING 4 #define ICON_TEXT_PADDING 4
#endif #endif
int wrapMode = GuiGetStyle(TEXTBOX, TEXT_WRAP_MODE);
int alignmentVertical = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT_VERTICAL); int alignmentVertical = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT_VERTICAL);
// We process the text lines one by one // We process the text lines one by one
@ -4451,7 +4459,7 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
// Get text position depending on alignment and iconId // Get text position depending on alignment and iconId
//--------------------------------------------------------------------------------- //---------------------------------------------------------------------------------
Vector2 position = { bounds.x, bounds.y }; Vector2 boundsPos = { bounds.x, bounds.y };
// NOTE: We get text size after icon has been processed // NOTE: We get text size after icon has been processed
// WARNING: GetTextWidth() also processes text icon to get width! -> Really needed? // WARNING: GetTextWidth() also processes text icon to get width! -> Really needed?
@ -4469,24 +4477,24 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
// Check guiTextAlign global variables // Check guiTextAlign global variables
switch (alignment) switch (alignment)
{ {
case TEXT_ALIGN_LEFT: position.x = bounds.x; break; case TEXT_ALIGN_LEFT: boundsPos.x = bounds.x; break;
case TEXT_ALIGN_CENTER: position.x = bounds.x + bounds.width/2 - textSizeX/2; break; case TEXT_ALIGN_CENTER: boundsPos.x = bounds.x + bounds.width/2 - textSizeX/2; break;
case TEXT_ALIGN_RIGHT: position.x = bounds.x + bounds.width - textSizeX; break; case TEXT_ALIGN_RIGHT: boundsPos.x = bounds.x + bounds.width - textSizeX; break;
default: break; default: break;
} }
switch (alignmentVertical) switch (alignmentVertical)
{ {
case 0: position.y = bounds.y + posOffsetY + bounds.height/2 - totalHeight/2 + TEXT_VALIGN_PIXEL_OFFSET(bounds.height); break; // CENTERED case 0: boundsPos.y = bounds.y + posOffsetY + bounds.height/2 - totalHeight/2 + TEXT_VALIGN_PIXEL_OFFSET(bounds.height); break; // CENTERED
case 1: position.y = bounds.y + posOffsetY; break; // UP case 1: boundsPos.y = bounds.y + posOffsetY; break; // UP
case 2: position.y = bounds.y + posOffsetY + bounds.height - totalHeight + TEXT_VALIGN_PIXEL_OFFSET(bounds.height); break; // DOWN case 2: boundsPos.y = bounds.y + posOffsetY + bounds.height - totalHeight + TEXT_VALIGN_PIXEL_OFFSET(bounds.height); break; // DOWN
default: break; default: break;
} }
// NOTE: Make sure we get pixel-perfect coordinates, // NOTE: Make sure we get pixel-perfect coordinates,
// In case of decimals we got weird text positioning // In case of decimals we got weird text positioning
position.x = (float)((int)position.x); boundsPos.x = (float)((int)boundsPos.x);
position.y = (float)((int)position.y); boundsPos.y = (float)((int)boundsPos.y);
//--------------------------------------------------------------------------------- //---------------------------------------------------------------------------------
// Draw text (with icon if available) // Draw text (with icon if available)
@ -4495,21 +4503,20 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
if (iconId >= 0) if (iconId >= 0)
{ {
// NOTE: We consider icon height, probably different than text size // NOTE: We consider icon height, probably different than text size
GuiDrawIcon(iconId, (int)position.x, (int)(bounds.y + bounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(bounds.height)), guiIconScale, tint); GuiDrawIcon(iconId, (int)boundsPos.x, (int)(bounds.y + bounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(bounds.height)), guiIconScale, tint);
position.x += (RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); boundsPos.x += (RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING);
} }
#endif #endif
//DrawTextEx(guiFont, text, position, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING), tint);
// Get size in bytes of text, // Get size in bytes of text,
// considering end of line and line break // considering end of line and line break
int size = 0; int lineSize = 0;
for (int c = 0; (lines[i][c] != '\0') && (lines[i][c] != '\n'); c++, size++){ } for (int c = 0; (lines[i][c] != '\0') && (lines[i][c] != '\n'); c++, lineSize++){ }
float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize;
int lastSpacePos = 0;
int textOffsetY = 0; int textOffsetY = 0;
float textOffsetX = 0.0f; float textOffsetX = 0.0f;
for (int c = 0, codepointSize = 0; c < size; c += codepointSize) for (int c = 0, codepointSize = 0; c < lineSize; c += codepointSize)
{ {
int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); int codepoint = GetCodepointNext(&lines[i][c], &codepointSize);
int index = GetGlyphIndex(guiFont, codepoint); int index = GetGlyphIndex(guiFont, codepoint);
@ -4526,7 +4533,7 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
// Draw only required text glyphs fitting the bounds.width // Draw only required text glyphs fitting the bounds.width
if (textOffsetX < (bounds.width - guiFont.recs[index].width)) if (textOffsetX < (bounds.width - guiFont.recs[index].width))
{ {
DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ position.x + textOffsetX, position.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), tint); DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ boundsPos.x + textOffsetX, boundsPos.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), tint);
} }
} }