From d274cdcc59472b7c1088f95daecc3889290e9acb Mon Sep 17 00:00:00 2001 From: Mark Oates Date: Fri, 27 Sep 2024 19:27:32 -0400 Subject: [PATCH 1/3] Add "al_get_render_state" --- docs/src/refman/graphics.txt | 16 ++++++++++++++- include/allegro5/render_state.h | 1 + src/display.c | 35 +++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/docs/src/refman/graphics.txt b/docs/src/refman/graphics.txt index b9ba1abd41..7e9550a9f2 100644 --- a/docs/src/refman/graphics.txt +++ b/docs/src/refman/graphics.txt @@ -2040,6 +2040,20 @@ Since: 5.1.2 See also: [al_set_render_state] + +### API: al_get_render_state + +Returns one of several render attributes; see [ALLEGRO_RENDER_STATE] +for details. + +This function will return 0 when there is no current display. + +Since: 5.2.11 + +See also: [al_set_render_state], [ALLEGRO_RENDER_STATE], [ALLEGRO_RENDER_FUNCTION], +[ALLEGRO_WRITE_MASK_FLAGS] + + ### API: al_set_render_state Set one of several render attributes; see [ALLEGRO_RENDER_STATE] @@ -2049,7 +2063,7 @@ This function does nothing if the target bitmap is a memory bitmap. Since: 5.1.2 -See also: [ALLEGRO_RENDER_STATE], [ALLEGRO_RENDER_FUNCTION], +See also: [al_get_render_state], [ALLEGRO_RENDER_STATE], [ALLEGRO_RENDER_FUNCTION], [ALLEGRO_WRITE_MASK_FLAGS] diff --git a/include/allegro5/render_state.h b/include/allegro5/render_state.h index 99c076489b..074519b52d 100644 --- a/include/allegro5/render_state.h +++ b/include/allegro5/render_state.h @@ -46,6 +46,7 @@ typedef enum ALLEGRO_WRITE_MASK_FLAGS { ALLEGRO_MASK_RGBA = (ALLEGRO_MASK_RGB | ALLEGRO_MASK_ALPHA) } ALLEGRO_WRITE_MASK_FLAGS; +AL_FUNC(int, al_get_render_state, (ALLEGRO_RENDER_STATE state)); AL_FUNC(void, al_set_render_state, (ALLEGRO_RENDER_STATE state, int value)); #ifdef __cplusplus diff --git a/src/display.c b/src/display.c index 7947425a97..f4bd7ddb0c 100644 --- a/src/display.c +++ b/src/display.c @@ -602,6 +602,41 @@ void al_acknowledge_drawing_resume(ALLEGRO_DISPLAY *display) } } +/* Function: al_get_render_state + */ +int al_get_render_state(ALLEGRO_RENDER_STATE state) +{ + ALLEGRO_DISPLAY *display = al_get_current_display(); + + if (!display) + return 0; + + switch (state) { + case ALLEGRO_ALPHA_TEST: + return display->render_state.alpha_test; + break; + case ALLEGRO_WRITE_MASK: + return display->render_state.write_mask; + break; + case ALLEGRO_DEPTH_TEST: + return display->render_state.depth_test; + break; + case ALLEGRO_DEPTH_FUNCTION: + return display->render_state.depth_function; + break; + case ALLEGRO_ALPHA_FUNCTION: + return display->render_state.alpha_function; + break; + case ALLEGRO_ALPHA_TEST_VALUE: + return display->render_state.alpha_test_value; + break; + default: + ALLEGRO_WARN("unknown state to retrieve: %d\n", state); + return 0; + break; + } +} + /* Function: al_set_render_state */ void al_set_render_state(ALLEGRO_RENDER_STATE state, int value) From b1a67f8825ecc80bef161ec000b56c5813525816 Mon Sep 17 00:00:00 2001 From: Mark Oates Date: Fri, 27 Sep 2024 22:53:11 -0400 Subject: [PATCH 2/3] Have "al_get_render_state" return -1 on error; Capitalize error --- src/display.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/display.c b/src/display.c index f4bd7ddb0c..f8d5828c0c 100644 --- a/src/display.c +++ b/src/display.c @@ -609,7 +609,7 @@ int al_get_render_state(ALLEGRO_RENDER_STATE state) ALLEGRO_DISPLAY *display = al_get_current_display(); if (!display) - return 0; + return -1; switch (state) { case ALLEGRO_ALPHA_TEST: @@ -631,8 +631,8 @@ int al_get_render_state(ALLEGRO_RENDER_STATE state) return display->render_state.alpha_test_value; break; default: - ALLEGRO_WARN("unknown state to retrieve: %d\n", state); - return 0; + ALLEGRO_ERROR("Unknown state to retrieve: %d\n", state); + return -1; break; } } @@ -666,7 +666,7 @@ void al_set_render_state(ALLEGRO_RENDER_STATE state, int value) display->render_state.alpha_test_value = value; break; default: - ALLEGRO_WARN("unknown state to change: %d\n", state); + ALLEGRO_WARN("Unknown state to change: %d\n", state); break; } From b41e91e2169e3279182615ecf5c416ac59bef985 Mon Sep 17 00:00:00 2001 From: Mark Oates Date: Sat, 28 Sep 2024 10:26:41 -0400 Subject: [PATCH 3/3] Fix return value in docs; Fix \"Since\" version in docs --- docs/src/refman/graphics.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/refman/graphics.txt b/docs/src/refman/graphics.txt index 7e9550a9f2..98c023dda1 100644 --- a/docs/src/refman/graphics.txt +++ b/docs/src/refman/graphics.txt @@ -2046,9 +2046,9 @@ See also: [al_set_render_state] Returns one of several render attributes; see [ALLEGRO_RENDER_STATE] for details. -This function will return 0 when there is no current display. +This function will return -1 when there is no current display. -Since: 5.2.11 +Since: 5.2.10 See also: [al_set_render_state], [ALLEGRO_RENDER_STATE], [ALLEGRO_RENDER_FUNCTION], [ALLEGRO_WRITE_MASK_FLAGS]