From ad79d4a88422256d348ecfd06c53f8bc44b7777f Mon Sep 17 00:00:00 2001
From: "Everton Jr." <69195288+evertonse@users.noreply.github.com>
Date: Tue, 29 Oct 2024 18:23:51 -0300
Subject: [PATCH] [shapes] Add `shapes_rectangle_advanced ` example
implementing a `DrawRectangleRoundedGradientH` function (#4435)
* [rshapes] Add function
* "[shapes] rectangle advanced: fix screen width and height to fit with other examples"
---
examples/Makefile | 3 +-
examples/Makefile.Web | 3 +
examples/README.md | 163 ++++----
examples/shapes/shapes_rectangle_advanced.c | 330 +++++++++++++++
examples/shapes/shapes_rectangle_advanced.png | Bin 0 -> 6839 bytes
.../shapes_rectangle_advanced.vcxproj | 390 ++++++++++++++++++
projects/VS2022/raylib.sln | 2 +
7 files changed, 809 insertions(+), 82 deletions(-)
create mode 100644 examples/shapes/shapes_rectangle_advanced.c
create mode 100644 examples/shapes/shapes_rectangle_advanced.png
create mode 100644 projects/VS2022/examples/shapes_rectangle_advanced.vcxproj
diff --git a/examples/Makefile b/examples/Makefile
index ee3f1fc4..a3ce8f6d 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -532,7 +532,8 @@ SHAPES = \
shapes/shapes_logo_raylib_anim \
shapes/shapes_rectangle_scaling \
shapes/shapes_splines_drawing \
- shapes/shapes_top_down_lights
+ shapes/shapes_top_down_lights \
+ shapes/shapes_rectangle_advanced
TEXTURES = \
textures/textures_background_scrolling \
diff --git a/examples/Makefile.Web b/examples/Makefile.Web
index 7e2aaacc..25014505 100644
--- a/examples/Makefile.Web
+++ b/examples/Makefile.Web
@@ -696,6 +696,9 @@ shapes/shapes_splines_drawing: shapes/shapes_splines_drawing.c
shapes/shapes_top_down_lights: shapes/shapes_top_down_lights.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
+shapes/shapes_rectangle_advanced: shapes/shapes_rectangle_advanced.c
+ $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
+
# Compile TEXTURES examples
textures/textures_background_scrolling: textures/textures_background_scrolling.c
diff --git a/examples/README.md b/examples/README.md
index ee528d04..d25ad10c 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -80,6 +80,7 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes](
| 47 | [shapes_draw_circle_sector](shapes/shapes_draw_circle_sector.c) | | ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
| 48 | [shapes_draw_rectangle_rounded](shapes/shapes_draw_rectangle_rounded.c) | | ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) |
| 49 | [shapes_top_down_lights](shapes/shapes_top_down_lights.c) | | ⭐️⭐️⭐️⭐️ | **4.2** | **4.2** | [Jeffery Myers](https://github.com/JeffM2501) |
+| 50 | [shapes_rectangle_advanced](shapes/shapes_rectangle_advanced.c) | | ⭐️⭐️⭐️⭐️⭐️| **5.0** | **5.0** | [ExCyber](https://github.com/evertonse) |
### category: textures
@@ -87,28 +88,28 @@ Examples using raylib textures functionality, including image/textures loading/g
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 50 | [textures_logo_raylib](textures/textures_logo_raylib.c) | | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
-| 51 | [textures_srcrec_dstrec](textures/textures_srcrec_dstrec.c) | | ⭐️⭐️⭐️☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
-| 52 | [textures_image_drawing](textures/textures_image_drawing.c) | | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
-| 53 | [textures_image_generation](textures/textures_image_generation.c) | | ⭐️⭐️☆☆ | 1.8 | 1.8 | [Ray](https://github.com/raysan5) |
-| 54 | [textures_image_loading](textures/textures_image_loading.c) | | ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
-| 55 | [textures_image_processing](textures/textures_image_processing.c) | | ⭐️⭐️⭐️☆ | 1.4 | 3.5 | [Ray](https://github.com/raysan5) |
-| 56 | [textures_image_text](textures/textures_image_text.c) | | ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
-| 57 | [textures_to_image](textures/textures_to_image.c) | | ⭐️☆☆☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
-| 58 | [textures_raw_data](textures/textures_raw_data.c) | | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
-| 59 | [textures_particles_blending](textures/textures_particles_blending.c) | | ⭐️☆☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) |
-| 60 | [textures_npatch_drawing](textures/textures_npatch_drawing.c) | | ⭐️⭐️⭐️☆ | 2.0 | 2.5 | [Jorge A. Gomes](https://github.com/overdev) |
-| 61 | [textures_background_scrolling](textures/textures_background_scrolling.c) | | ⭐️☆☆☆ | 2.0 | 2.5 | [Ray](https://github.com/raysan5) |
-| 62 | [textures_sprite_anim](textures/textures_sprite_anim.c) | | ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
-| 63 | [textures_sprite_button](textures/textures_sprite_button.c) | | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
-| 64 | [textures_sprite_explosion](textures/textures_sprite_explosion.c) | | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) |
-| 65 | [textures_bunnymark](textures/textures_bunnymark.c) | | ⭐️⭐️⭐️☆ | 1.6 | 2.5 | [Ray](https://github.com/raysan5) |
-| 66 | [textures_mouse_painting](textures/textures_mouse_painting.c) | | ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) |
-| 67 | [textures_blend_modes](textures/textures_blend_modes.c) | | ⭐️☆☆☆ | 3.5 | 3.5 | [Karlo Licudine](https://github.com/accidentalrebel) |
-| 68 | [textures_draw_tiled](textures/textures_draw_tiled.c) | | ⭐️⭐️⭐️☆ | 3.0 | **4.2** | [Vlad Adrian](https://github.com/demizdor) |
-| 69 | [textures_polygon](textures/textures_polygon.c) | | ⭐️☆☆☆ | 3.7 | 3.7 | [Chris Camacho](https://github.com/codifies) |
-| 70 | [textures_fog_of_war](textures/textures_fog_of_war.c) | | ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
-| 71 | [textures_gif_player](textures/textures_gif_player.c) | | ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
+| 51 | [textures_logo_raylib](textures/textures_logo_raylib.c) | | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
+| 52 | [textures_srcrec_dstrec](textures/textures_srcrec_dstrec.c) | | ⭐️⭐️⭐️☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
+| 53 | [textures_image_drawing](textures/textures_image_drawing.c) | | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
+| 54 | [textures_image_generation](textures/textures_image_generation.c) | | ⭐️⭐️☆☆ | 1.8 | 1.8 | [Ray](https://github.com/raysan5) |
+| 55 | [textures_image_loading](textures/textures_image_loading.c) | | ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
+| 56 | [textures_image_processing](textures/textures_image_processing.c) | | ⭐️⭐️⭐️☆ | 1.4 | 3.5 | [Ray](https://github.com/raysan5) |
+| 57 | [textures_image_text](textures/textures_image_text.c) | | ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
+| 58 | [textures_to_image](textures/textures_to_image.c) | | ⭐️☆☆☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
+| 59 | [textures_raw_data](textures/textures_raw_data.c) | | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
+| 60 | [textures_particles_blending](textures/textures_particles_blending.c) | | ⭐️☆☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) |
+| 61 | [textures_npatch_drawing](textures/textures_npatch_drawing.c) | | ⭐️⭐️⭐️☆ | 2.0 | 2.5 | [Jorge A. Gomes](https://github.com/overdev) |
+| 62 | [textures_background_scrolling](textures/textures_background_scrolling.c) | | ⭐️☆☆☆ | 2.0 | 2.5 | [Ray](https://github.com/raysan5) |
+| 63 | [textures_sprite_anim](textures/textures_sprite_anim.c) | | ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) |
+| 64 | [textures_sprite_button](textures/textures_sprite_button.c) | | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) |
+| 65 | [textures_sprite_explosion](textures/textures_sprite_explosion.c) | | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) |
+| 66 | [textures_bunnymark](textures/textures_bunnymark.c) | | ⭐️⭐️⭐️☆ | 1.6 | 2.5 | [Ray](https://github.com/raysan5) |
+| 67 | [textures_mouse_painting](textures/textures_mouse_painting.c) | | ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) |
+| 68 | [textures_blend_modes](textures/textures_blend_modes.c) | | ⭐️☆☆☆ | 3.5 | 3.5 | [Karlo Licudine](https://github.com/accidentalrebel) |
+| 69 | [textures_draw_tiled](textures/textures_draw_tiled.c) | | ⭐️⭐️⭐️☆ | 3.0 | **4.2** | [Vlad Adrian](https://github.com/demizdor) |
+| 70 | [textures_polygon](textures/textures_polygon.c) | | ⭐️☆☆☆ | 3.7 | 3.7 | [Chris Camacho](https://github.com/codifies) |
+| 71 | [textures_fog_of_war](textures/textures_fog_of_war.c) | | ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
+| 72 | [textures_gif_player](textures/textures_gif_player.c) | | ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
### category: text
@@ -116,18 +117,18 @@ Examples using raylib text functionality, including sprite fonts loading/generat
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 72 | [text_raylib_fonts](text/text_raylib_fonts.c) | | ⭐️☆☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) |
-| 73 | [text_font_spritefont](text/text_font_spritefont.c) | | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
-| 74 | [text_font_filters](text/text_font_filters.c) | | ⭐️⭐️☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) |
-| 75 | [text_font_loading](text/text_font_loading.c) | | ⭐️☆☆☆ | 1.4 | 3.0 | [Ray](https://github.com/raysan5) |
-| 76 | [text_font_sdf](text/text_font_sdf.c) | | ⭐️⭐️⭐️☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
-| 77 | [text_format_text](text/text_format_text.c) | | ⭐️☆☆☆ | 1.1 | 3.0 | [Ray](https://github.com/raysan5) |
-| 78 | [text_input_box](text/text_input_box.c) | | ⭐️⭐️☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) |
-| 79 | [text_writing_anim](text/text_writing_anim.c) | | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
-| 80 | [text_rectangle_bounds](text/text_rectangle_bounds.c) | | ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
-| 81 | [text_unicode](text/text_unicode.c) | | ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
-| 82 | [text_draw_3d](text/text_draw_3d.c) | | ⭐️⭐️⭐️⭐️ | 3.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
-| 83 | [text_codepoints_loading](text/text_codepoints_loading.c) | | ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
+| 73 | [text_raylib_fonts](text/text_raylib_fonts.c) | | ⭐️☆☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) |
+| 74 | [text_font_spritefont](text/text_font_spritefont.c) | | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
+| 75 | [text_font_filters](text/text_font_filters.c) | | ⭐️⭐️☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) |
+| 76 | [text_font_loading](text/text_font_loading.c) | | ⭐️☆☆☆ | 1.4 | 3.0 | [Ray](https://github.com/raysan5) |
+| 77 | [text_font_sdf](text/text_font_sdf.c) | | ⭐️⭐️⭐️☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
+| 78 | [text_format_text](text/text_format_text.c) | | ⭐️☆☆☆ | 1.1 | 3.0 | [Ray](https://github.com/raysan5) |
+| 79 | [text_input_box](text/text_input_box.c) | | ⭐️⭐️☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) |
+| 80 | [text_writing_anim](text/text_writing_anim.c) | | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) |
+| 81 | [text_rectangle_bounds](text/text_rectangle_bounds.c) | | ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
+| 82 | [text_unicode](text/text_unicode.c) | | ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
+| 83 | [text_draw_3d](text/text_draw_3d.c) | | ⭐️⭐️⭐️⭐️ | 3.5 | **4.0** | [Vlad Adrian](https://github.com/demizdor) |
+| 84 | [text_codepoints_loading](text/text_codepoints_loading.c) | | ⭐️⭐️⭐️☆ | **4.2** | **4.2** | [Ray](https://github.com/raysan5) |
### category: models
@@ -135,25 +136,25 @@ Examples using raylib models functionality, including models loading/generation
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 84 | [models_animation](models/models_animation.c) | | ⭐️⭐️☆☆ | 2.5 | 3.5 | [culacant](https://github.com/culacant) |
-| 85 | [models_billboard](models/models_billboard.c) | | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
-| 86 | [models_box_collisions](models/models_box_collisions.c) | | ⭐️☆☆☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
-| 87 | [models_cubicmap](models/models_cubicmap.c) | | ⭐️⭐️☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) |
-| 88 | [models_first_person_maze](models/models_first_person_maze.c) | | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) |
-| 89 | [models_geometric_shapes](models/models_geometric_shapes.c) | | ⭐️☆☆☆ | 1.0 | 3.5 | [Ray](https://github.com/raysan5) |
-| 90 | [models_mesh_generation](models/models_mesh_generation.c) | | ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
-| 91 | [models_mesh_picking](models/models_mesh_picking.c) | | ⭐️⭐️⭐️☆ | 1.7 | **4.0** | [Joel Davis](https://github.com/joeld42) |
-| 92 | [models_loading](models/models_loading.c) | | ⭐️☆☆☆ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
-| 93 | [models_loading_gltf](models/models_loading_gltf.c) | | ⭐️☆☆☆ | 3.7 | **4.2** | [Ray](https://github.com/raysan5) |
-| 94 | [models_loading_vox](models/models_loading_vox.c) | | ⭐️☆☆☆ | **4.0** | **4.0** | [Johann Nadalutti](https://github.com/procfxgen) |
-| 95 | [models_loading_m3d](models/models_loading_m3d.c) | | ⭐️☆☆☆ | **4.2** | **4.2** | [bzt](https://bztsrc.gitlab.io/model3d) |
-| 96 | [models_orthographic_projection](models/models_orthographic_projection.c) | | ⭐️☆☆☆ | 2.0 | 3.7 | [Max Danielsson](https://github.com/autious) |
-| 97 | [models_point_rendering](models/models_point_rendering.c) | | ⭐️⭐️☆☆ | 5.0 | 5.0 | [Reese Gallagher](https://github.com/satchelfrost) |
-| 98 | [models_rlgl_solar_system](models/models_rlgl_solar_system.c) | | ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
-| 99 | [models_yaw_pitch_roll](models/models_yaw_pitch_roll.c) | | ⭐️⭐️☆☆ | 1.8 | **4.0** | [Berni](https://github.com/Berni8k) |
-| 100 | [models_waving_cubes](models/models_waving_cubes.c) | | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [codecat](https://github.com/codecat) |
-| 101 | [models_heightmap](models/models_heightmap.c) | | ⭐️☆☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) |
-| 102 | [models_skybox](models/models_skybox.c) | | ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
+| 85 | [models_animation](models/models_animation.c) | | ⭐️⭐️☆☆ | 2.5 | 3.5 | [culacant](https://github.com/culacant) |
+| 86 | [models_billboard](models/models_billboard.c) | | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
+| 87 | [models_box_collisions](models/models_box_collisions.c) | | ⭐️☆☆☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) |
+| 88 | [models_cubicmap](models/models_cubicmap.c) | | ⭐️⭐️☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) |
+| 89 | [models_first_person_maze](models/models_first_person_maze.c) | | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) |
+| 90 | [models_geometric_shapes](models/models_geometric_shapes.c) | | ⭐️☆☆☆ | 1.0 | 3.5 | [Ray](https://github.com/raysan5) |
+| 91 | [models_mesh_generation](models/models_mesh_generation.c) | | ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
+| 92 | [models_mesh_picking](models/models_mesh_picking.c) | | ⭐️⭐️⭐️☆ | 1.7 | **4.0** | [Joel Davis](https://github.com/joeld42) |
+| 93 | [models_loading](models/models_loading.c) | | ⭐️☆☆☆ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
+| 94 | [models_loading_gltf](models/models_loading_gltf.c) | | ⭐️☆☆☆ | 3.7 | **4.2** | [Ray](https://github.com/raysan5) |
+| 95 | [models_loading_vox](models/models_loading_vox.c) | | ⭐️☆☆☆ | **4.0** | **4.0** | [Johann Nadalutti](https://github.com/procfxgen) |
+| 96 | [models_loading_m3d](models/models_loading_m3d.c) | | ⭐️☆☆☆ | **4.2** | **4.2** | [bzt](https://bztsrc.gitlab.io/model3d) |
+| 97 | [models_orthographic_projection](models/models_orthographic_projection.c) | | ⭐️☆☆☆ | 2.0 | 3.7 | [Max Danielsson](https://github.com/autious) |
+| 98 | [models_point_rendering](models/models_point_rendering.c) | | ⭐️⭐️☆☆ | 5.0 | 5.0 | [Reese Gallagher](https://github.com/satchelfrost) |
+| 99 | [models_rlgl_solar_system](models/models_rlgl_solar_system.c) | | ⭐️⭐️⭐️⭐️ | 2.5 | **4.0** | [Ray](https://github.com/raysan5) |
+| 100 | [models_yaw_pitch_roll](models/models_yaw_pitch_roll.c) | | ⭐️⭐️☆☆ | 1.8 | **4.0** | [Berni](https://github.com/Berni8k) |
+| 101 | [models_waving_cubes](models/models_waving_cubes.c) | | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [codecat](https://github.com/codecat) |
+| 102 | [models_heightmap](models/models_heightmap.c) | | ⭐️☆☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) |
+| 103 | [models_skybox](models/models_skybox.c) | | ⭐️⭐️☆☆ | 1.8 | **4.0** | [Ray](https://github.com/raysan5) |
### category: shaders
@@ -161,25 +162,25 @@ Examples using raylib shaders functionality, including shaders loading, paramete
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 103 | [shaders_basic_lighting](shaders/shaders_basic_lighting.c) | | ⭐️⭐️⭐️⭐️ | 3.0 | **4.2** | [Chris Camacho](https://github.com/codifies) |
-| 104 | [shaders_model_shader](shaders/shaders_model_shader.c) | | ⭐️⭐️☆☆ | 1.3 | 3.7 | [Ray](https://github.com/raysan5) |
-| 105 | [shaders_shapes_textures](shaders/shaders_shapes_textures.c) | | ⭐️⭐️☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) |
-| 106 | [shaders_custom_uniform](shaders/shaders_custom_uniform.c) | | ⭐️⭐️☆☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
-| 107 | [shaders_postprocessing](shaders/shaders_postprocessing.c) | | ⭐️⭐️⭐️☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
-| 108 | [shaders_palette_switch](shaders/shaders_palette_switch.c) | | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Marco Lizza](https://github.com/MarcoLizza) |
-| 109 | [shaders_raymarching](shaders/shaders_raymarching.c) | | ⭐️⭐️⭐️⭐️ | 2.0 | **4.2** | [Ray](https://github.com/raysan5) |
-| 110 | [shaders_texture_drawing](shaders/shaders_texture_drawing.c) | | ⭐️⭐️☆☆ | 2.0 | 3.7 | [Michał Ciesielski](https://github.com/) |
-| 111 | [shaders_texture_outline](shaders/shaders_texture_outline.c) | | ⭐️⭐️⭐️☆ | **4.0** | **4.0** | [Samuel Skiff](https://github.com/GoldenThumbs) |
-| 112 | [shaders_texture_waves](shaders/shaders_texture_waves.c) | | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Anata](https://github.com/anatagawa) |
-| 113 | [shaders_julia_set](shaders/shaders_julia_set.c) | | ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [eggmund](https://github.com/eggmund) |
-| 114 | [shaders_eratosthenes](shaders/shaders_eratosthenes.c) | | ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [ProfJski](https://github.com/ProfJski) |
-| 115 | [shaders_fog](shaders/shaders_fog.c) | | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/codifies) |
-| 116 | [shaders_simple_mask](shaders/shaders_simple_mask.c) | | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/codifies) |
-| 117 | [shaders_hot_reloading](shaders/shaders_hot_reloading.c) | | ⭐️⭐️⭐️☆ | 3.0 | 3.5 | [Ray](https://github.com/raysan5) |
-| 118 | [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) | | ⭐️⭐️⭐️⭐️ | 3.7 | **4.2** | [seanpringle](https://github.com/seanpringle) |
-| 119 | [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) | | ⭐️⭐️☆☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) |
-| 120 | [shaders_spotlight](shaders/shaders_spotlight.c) | | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/codifies) |
-| 121 | [shaders_deferred_render](shaders/shaders_deferred_render.c) | | ⭐️⭐️⭐️⭐️ | 4.5 | 4.5 | [Justin Andreas Lacoste](https://github.com/27justin) |
+| 104 | [shaders_basic_lighting](shaders/shaders_basic_lighting.c) | | ⭐️⭐️⭐️⭐️ | 3.0 | **4.2** | [Chris Camacho](https://github.com/codifies) |
+| 105 | [shaders_model_shader](shaders/shaders_model_shader.c) | | ⭐️⭐️☆☆ | 1.3 | 3.7 | [Ray](https://github.com/raysan5) |
+| 106 | [shaders_shapes_textures](shaders/shaders_shapes_textures.c) | | ⭐️⭐️☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) |
+| 107 | [shaders_custom_uniform](shaders/shaders_custom_uniform.c) | | ⭐️⭐️☆☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
+| 108 | [shaders_postprocessing](shaders/shaders_postprocessing.c) | | ⭐️⭐️⭐️☆ | 1.3 | **4.0** | [Ray](https://github.com/raysan5) |
+| 109 | [shaders_palette_switch](shaders/shaders_palette_switch.c) | | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Marco Lizza](https://github.com/MarcoLizza) |
+| 110 | [shaders_raymarching](shaders/shaders_raymarching.c) | | ⭐️⭐️⭐️⭐️ | 2.0 | **4.2** | [Ray](https://github.com/raysan5) |
+| 111 | [shaders_texture_drawing](shaders/shaders_texture_drawing.c) | | ⭐️⭐️☆☆ | 2.0 | 3.7 | [Michał Ciesielski](https://github.com/) |
+| 112 | [shaders_texture_outline](shaders/shaders_texture_outline.c) | | ⭐️⭐️⭐️☆ | **4.0** | **4.0** | [Samuel Skiff](https://github.com/GoldenThumbs) |
+| 113 | [shaders_texture_waves](shaders/shaders_texture_waves.c) | | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Anata](https://github.com/anatagawa) |
+| 114 | [shaders_julia_set](shaders/shaders_julia_set.c) | | ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [eggmund](https://github.com/eggmund) |
+| 115 | [shaders_eratosthenes](shaders/shaders_eratosthenes.c) | | ⭐️⭐️⭐️☆ | 2.5 | **4.0** | [ProfJski](https://github.com/ProfJski) |
+| 116 | [shaders_fog](shaders/shaders_fog.c) | | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/codifies) |
+| 117 | [shaders_simple_mask](shaders/shaders_simple_mask.c) | | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/codifies) |
+| 118 | [shaders_hot_reloading](shaders/shaders_hot_reloading.c) | | ⭐️⭐️⭐️☆ | 3.0 | 3.5 | [Ray](https://github.com/raysan5) |
+| 119 | [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) | | ⭐️⭐️⭐️⭐️ | 3.7 | **4.2** | [seanpringle](https://github.com/seanpringle) |
+| 120 | [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) | | ⭐️⭐️☆☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) |
+| 121 | [shaders_spotlight](shaders/shaders_spotlight.c) | | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/codifies) |
+| 122 | [shaders_deferred_render](shaders/shaders_deferred_render.c) | | ⭐️⭐️⭐️⭐️ | 4.5 | 4.5 | [Justin Andreas Lacoste](https://github.com/27justin) |
### category: audio
@@ -187,10 +188,10 @@ Examples using raylib audio functionality, including sound/music loading and pla
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 122 | [audio_module_playing](audio/audio_module_playing.c) | | ⭐️☆☆☆ | 1.5 | 3.5 | [Ray](https://github.com/raysan5) |
-| 123 | [audio_music_stream](audio/audio_music_stream.c) | | ⭐️☆☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) |
-| 124 | [audio_raw_stream](audio/audio_raw_stream.c) | | ⭐️⭐️⭐️☆ | 1.6 | **4.2** | [Ray](https://github.com/raysan5) |
-| 125 | [audio_sound_loading](audio/audio_sound_loading.c) | | ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) |
+| 123 | [audio_module_playing](audio/audio_module_playing.c) | | ⭐️☆☆☆ | 1.5 | 3.5 | [Ray](https://github.com/raysan5) |
+| 124 | [audio_music_stream](audio/audio_music_stream.c) | | ⭐️☆☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) |
+| 125 | [audio_raw_stream](audio/audio_raw_stream.c) | | ⭐️⭐️⭐️☆ | 1.6 | **4.2** | [Ray](https://github.com/raysan5) |
+| 126 | [audio_sound_loading](audio/audio_sound_loading.c) | | ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) |
### category: others
@@ -198,11 +199,11 @@ Examples showing raylib misc functionality that does not fit in other categories
| ## | example | image | difficulty
level | version
created | last version
updated | original
developer |
|----|----------|--------|:-------------------:|:------------------:|:------------------:|:----------|
-| 126 | [rlgl_standalone](others/rlgl_standalone.c) | | ⭐️⭐️⭐️⭐️ | 1.6 | **4.0** | [Ray](https://github.com/raysan5) |
-| 127 | [rlgl_compute_shader](others/rlgl_compute_shader.c) | | ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Teddy Astie](https://github.com/tsnake41) |
-| 128 | [easings_testbed](others/easings_testbed.c) | | ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) |
-| 129 | [raylib_opengl_interop](others/raylib_opengl_interop.c) | | ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Stephan Soller](https://github.com/arkanis) |
-| 130 | [embedded_files_loading](others/embedded_files_loading.c) | | ⭐️⭐️☆☆ | 3.5 | 3.5 | [Kristian Holmgren](https://github.com/defutura) |
+| 127 | [rlgl_standalone](others/rlgl_standalone.c) | | ⭐️⭐️⭐️⭐️ | 1.6 | **4.0** | [Ray](https://github.com/raysan5) |
+| 128 | [rlgl_compute_shader](others/rlgl_compute_shader.c) | | ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Teddy Astie](https://github.com/tsnake41) |
+| 129 | [easings_testbed](others/easings_testbed.c) | | ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) |
+| 130 | [raylib_opengl_interop](others/raylib_opengl_interop.c) | | ⭐️⭐️⭐️⭐️ | **4.0** | **4.0** | [Stephan Soller](https://github.com/arkanis) |
+| 131 | [embedded_files_loading](others/embedded_files_loading.c) | | ⭐️⭐️☆☆ | 3.5 | 3.5 | [Kristian Holmgren](https://github.com/defutura) |
As always contributions are welcome, feel free to send new examples! Here is an [examples template](examples_template.c) to start with!
diff --git a/examples/shapes/shapes_rectangle_advanced.c b/examples/shapes/shapes_rectangle_advanced.c
new file mode 100644
index 00000000..a103e82a
--- /dev/null
+++ b/examples/shapes/shapes_rectangle_advanced.c
@@ -0,0 +1,330 @@
+#include "raylib.h"
+#include "rlgl.h"
+#include
+
+// Draw rectangle with rounded edges and horizontal gradient, with options to choose side of roundness
+// Adapted from both `DrawRectangleRounded` and `DrawRectangleGradientH`
+void DrawRectangleRoundedGradientH(Rectangle rec, float roundnessLeft, float roundnessRight, int segments, Color left, Color right)
+{
+ // Neither side is rounded
+ if ((roundnessLeft <= 0.0f && roundnessRight <= 0.0f) || (rec.width < 1) || (rec.height < 1 ))
+ {
+ DrawRectangleGradientEx(rec, left, left, right, right);
+ return;
+ }
+
+ if (roundnessLeft >= 1.0f) roundnessLeft = 1.0f;
+ if (roundnessRight >= 1.0f) roundnessRight = 1.0f;
+
+ // Calculate corner radius both from right and left
+ float recSize = rec.width > rec.height ? rec.height : rec.width;
+ float radiusLeft = (recSize*roundnessLeft)/2;
+ float radiusRight = (recSize*roundnessRight)/2;
+
+ if (radiusLeft <= 0.0f) radiusLeft = 0.0f;
+ if (radiusRight <= 0.0f) radiusRight = 0.0f;
+
+ if (radiusRight <= 0.0f && radiusLeft <= 0.0f) return;
+
+ float stepLength = 90.0f/(float)segments;
+
+ /*
+ Diagram Copied here for reference, original at `DrawRectangleRounded` source code
+
+ P0____________________P1
+ /| |\
+ /1| 2 |3\
+ P7 /__|____________________|__\ P2
+ | |P8 P9| |
+ | 8 | 9 | 4 |
+ | __|____________________|__ |
+ P6 \ |P11 P10| / P3
+ \7| 6 |5/
+ \|____________________|/
+ P5 P4
+ */
+
+ // Coordinates of the 12 points also apdated from `DrawRectangleRounded`
+ const Vector2 point[12] = {
+ // PO, P1, P2
+ {(float)rec.x + radiusLeft, rec.y}, {(float)(rec.x + rec.width) - radiusRight, rec.y}, { rec.x + rec.width, (float)rec.y + radiusRight },
+ // P3, P4
+ {rec.x + rec.width, (float)(rec.y + rec.height) - radiusRight}, {(float)(rec.x + rec.width) - radiusRight, rec.y + rec.height},
+ // P5, P6, P7
+ {(float)rec.x + radiusLeft, rec.y + rec.height}, { rec.x, (float)(rec.y + rec.height) - radiusLeft}, {rec.x, (float)rec.y + radiusLeft},
+ // P8, P9
+ {(float)rec.x + radiusLeft, (float)rec.y + radiusLeft}, {(float)(rec.x + rec.width) - radiusRight, (float)rec.y + radiusRight},
+ // P10, P11
+ {(float)(rec.x + rec.width) - radiusRight, (float)(rec.y + rec.height) - radiusRight}, {(float)rec.x + radiusLeft, (float)(rec.y + rec.height) - radiusLeft}
+ };
+
+ const Vector2 centers[4] = { point[8], point[9], point[10], point[11] };
+ const float angles[4] = { 180.0f, 270.0f, 0.0f, 90.0f };
+
+#if defined(SUPPORT_QUADS_DRAW_MODE)
+ rlSetTexture(GetShapesTexture().id);
+ Rectangle shapeRect = GetShapesTextureRectangle();
+
+ rlBegin(RL_QUADS);
+ // Draw all the 4 corners: [1] Upper Left Corner, [3] Upper Right Corner, [5] Lower Right Corner, [7] Lower Left Corner
+ for (int k = 0; k < 4; ++k)
+ {
+ Color color;
+ float radius;
+ if (k == 0) color = left, radius = radiusLeft; // [1] Upper Left Corner
+ if (k == 1) color = right, radius = radiusRight; // [3] Upper Right Corner
+ if (k == 2) color = right, radius = radiusRight; // [5] Lower Right Corner
+ if (k == 3) color = left, radius = radiusLeft; // [7] Lower Left Corner
+ float angle = angles[k];
+ const Vector2 center = centers[k];
+
+ for (int i = 0; i < segments/2; i++)
+ {
+ rlColor4ub(color.r, color.g, color.b, color.a);
+ rlTexCoord2f(shapeRect.x/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(center.x, center.y);
+
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(center.x + cosf(DEG2RAD*(angle + stepLength*2))*radius, center.y + sinf(DEG2RAD*(angle + stepLength*2))*radius);
+
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(center.x + cosf(DEG2RAD*(angle + stepLength))*radius, center.y + sinf(DEG2RAD*(angle + stepLength))*radius);
+
+ rlTexCoord2f(shapeRect.x/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(center.x + cosf(DEG2RAD*angle)*radius, center.y + sinf(DEG2RAD*angle)*radius);
+
+ angle += (stepLength*2);
+ }
+
+ // End one even segments
+ if ( segments % 2)
+ {
+ rlTexCoord2f(shapeRect.x/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(center.x, center.y);
+
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(center.x + cosf(DEG2RAD*(angle + stepLength))*radius, center.y + sinf(DEG2RAD*(angle + stepLength))*radius);
+
+ rlTexCoord2f(shapeRect.x/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(center.x + cosf(DEG2RAD*angle)*radius, center.y + sinf(DEG2RAD*angle)*radius);
+
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(center.x, center.y);
+ }
+ }
+
+ //
+ // Here we use the `Diagram` to guide ourselves to which point receives what color.
+ //
+ // By choosing the color correctly associated with a pointe the gradient effect
+ // will naturally come from OpenGL interpolation.
+ //
+
+ // [2] Upper Rectangle
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlTexCoord2f(shapeRect.x/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[0].x, point[0].y);
+ rlTexCoord2f(shapeRect.x/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[8].x, point[8].y);
+
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[9].x, point[9].y);
+
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[1].x, point[1].y);
+
+ // [4] Left Rectangle
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlTexCoord2f(shapeRect.x/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[2].x, point[2].y);
+ rlTexCoord2f(shapeRect.x/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[9].x, point[9].y);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[10].x, point[10].y);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[3].x, point[3].y);
+
+ // [6] Bottom Rectangle
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlTexCoord2f(shapeRect.x/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[11].x, point[11].y);
+ rlTexCoord2f(shapeRect.x/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[5].x, point[5].y);
+
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[4].x, point[4].y);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[10].x, point[10].y);
+
+ // [8] left Rectangle
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlTexCoord2f(shapeRect.x/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[7].x, point[7].y);
+ rlTexCoord2f(shapeRect.x/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[6].x, point[6].y);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[11].x, point[11].y);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[8].x, point[8].y);
+
+ // [9] Middle Rectangle
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlTexCoord2f(shapeRect.x/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[8].x, point[8].y);
+ rlTexCoord2f(shapeRect.x/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[11].x, point[11].y);
+
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, (shapeRect.y + shapeRect.height)/texShapes.height);
+ rlVertex2f(point[10].x, point[10].y);
+ rlTexCoord2f((shapeRect.x + shapeRect.width)/texShapes.width, shapeRect.y/texShapes.height);
+ rlVertex2f(point[9].x, point[9].y);
+
+ rlEnd();
+ rlSetTexture(0);
+#else
+
+ //
+ // Here we use the `Diagram` to guide ourselves to which point receives what color.
+ //
+ // By choosing the color correctly associated with a pointe the gradient effect
+ // will naturally come from OpenGL interpolation.
+ // But this time instead of Quad, we think in triangles.
+ //
+
+ rlBegin(RL_TRIANGLES);
+
+ // Draw all of the 4 corners: [1] Upper Left Corner, [3] Upper Right Corner, [5] Lower Right Corner, [7] Lower Left Corner
+ for (int k = 0; k < 4; ++k)
+ {
+ Color color;
+ float radius;
+ if (k == 0) color = left, radius = radiusLeft; // [1] Upper Left Corner
+ if (k == 1) color = right, radius = radiusRight; // [3] Upper Right Corner
+ if (k == 2) color = right, radius = radiusRight; // [5] Lower Right Corner
+ if (k == 3) color = left, radius = radiusLeft; // [7] Lower Left Corner
+ float angle = angles[k];
+ const Vector2 center = centers[k];
+ for (int i = 0; i < segments; i++)
+ {
+ rlColor4ub(color.r, color.g, color.b, color.a);
+ rlVertex2f(center.x, center.y);
+ rlVertex2f(center.x + cosf(DEG2RAD*(angle + stepLength))*radius, center.y + sinf(DEG2RAD*(angle + stepLength))*radius);
+ rlVertex2f(center.x + cosf(DEG2RAD*angle)*radius, center.y + sinf(DEG2RAD*angle)*radius);
+ angle += stepLength;
+ }
+ }
+
+ // [2] Upper Rectangle
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlVertex2f(point[0].x, point[0].y);
+ rlVertex2f(point[8].x, point[8].y);
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlVertex2f(point[9].x, point[9].y);
+ rlVertex2f(point[1].x, point[1].y);
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlVertex2f(point[0].x, point[0].y);
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlVertex2f(point[9].x, point[9].y);
+
+ // [4] Right Rectangle
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlVertex2f(point[9].x, point[9].y);
+ rlVertex2f(point[10].x, point[10].y);
+ rlVertex2f(point[3].x, point[3].y);
+ rlVertex2f(point[2].x, point[2].y);
+ rlVertex2f(point[9].x, point[9].y);
+ rlVertex2f(point[3].x, point[3].y);
+
+ // [6] Bottom Rectangle
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlVertex2f(point[11].x, point[11].y);
+ rlVertex2f(point[5].x, point[5].y);
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlVertex2f(point[4].x, point[4].y);
+ rlVertex2f(point[10].x, point[10].y);
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlVertex2f(point[11].x, point[11].y);
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlVertex2f(point[4].x, point[4].y);
+
+ // [8] Left Rectangle
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlVertex2f(point[7].x, point[7].y);
+ rlVertex2f(point[6].x, point[6].y);
+ rlVertex2f(point[11].x, point[11].y);
+ rlVertex2f(point[8].x, point[8].y);
+ rlVertex2f(point[7].x, point[7].y);
+ rlVertex2f(point[11].x, point[11].y);
+
+ // [9] Middle Rectangle
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlVertex2f(point[8].x, point[8].y);
+ rlVertex2f(point[11].x, point[11].y);
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlVertex2f(point[10].x, point[10].y);
+ rlVertex2f(point[9].x, point[9].y);
+ rlColor4ub(left.r, left.g, left.b, left.a);
+ rlVertex2f(point[8].x, point[8].y);
+ rlColor4ub(right.r, right.g, right.b, right.a);
+ rlVertex2f(point[10].x, point[10].y);
+ rlEnd();
+#endif
+}
+
+int main(int argc, char *argv[])
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ const int screenWidth = 800;
+ const int screenHeight = 450;
+ InitWindow(screenWidth, screenHeight, "raylib [shapes] example - rectangle avanced");
+ SetTargetFPS(60);
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update rectangle bounds
+ //----------------------------------------------------------------------------------
+ double width = GetScreenWidth()/2.0, height = GetScreenHeight()/6.0;
+ Rectangle rec = {
+ GetScreenWidth() / 2.0 - width/2,
+ GetScreenHeight() / 2.0 - (5)*(height/2),
+ width, height
+ };
+ //--------------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+ ClearBackground(RAYWHITE);
+
+ // Draw All Rectangles with different roundess for each side and different gradients
+ DrawRectangleRoundedGradientH(rec, 0.8, 0.8, 36, BLUE, RED);
+
+ rec.y += rec.height + 1;
+ DrawRectangleRoundedGradientH(rec, 0.5, 1.0, 36, RED, PINK);
+
+ rec.y += rec.height + 1;
+ DrawRectangleRoundedGradientH(rec, 1.0, 0.5, 36, RED, BLUE);
+
+ rec.y += rec.height + 1;
+ DrawRectangleRoundedGradientH(rec, 0.0, 1.0, 36, BLUE, BLACK);
+
+ rec.y += rec.height + 1;
+ DrawRectangleRoundedGradientH(rec, 1.0, 0.0, 36, BLUE, PINK);
+ EndDrawing();
+ //--------------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+ return 0;
+}
+
diff --git a/examples/shapes/shapes_rectangle_advanced.png b/examples/shapes/shapes_rectangle_advanced.png
new file mode 100644
index 0000000000000000000000000000000000000000..a68170a31f5c9ba3e184a002b510b12fe82c3a2a
GIT binary patch
literal 6839
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
y
+
+
+
+ Debug.DLL
+ Win32
+
+
+ Debug.DLL
+ x64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release.DLL
+ Win32
+
+
+ Release.DLL
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {703BE7BA-5B99-4F70-806D-3A259F6A991E}
+ Win32Proj
+ shapes_rectangle_advanced
+ 10.0
+ shapes_rectangle_advanced
+
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+ Application
+ false
+ $(DefaultPlatformToolset)
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ true
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)..\..\examples\shapes
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\shapes
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\shapes
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\shapes
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\shapes
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\shapes
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\shapes
+ WindowsLocalDebugger
+
+
+ $(SolutionDir)..\..\examples\shapes
+ WindowsLocalDebugger
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ /FS %(AdditionalOptions)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)
+ CompileAsC
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+ Copy Debug DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP
+ $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)
+ CompileAsC
+ true
+
+
+ Console
+ true
+ true
+ true
+ raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\
+
+
+ xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"
+
+
+ Copy Release DLL to output directory
+
+
+
+
+
+
+
+
+
+
+ {e89d61ac-55de-4482-afd4-df7242ebc859}
+
+
+
+
+
+
diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln
index acda9e25..e2f512d8 100644
--- a/projects/VS2022/raylib.sln
+++ b/projects/VS2022/raylib.sln
@@ -297,6 +297,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_splines_drawing", "e
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_top_down_lights", "examples\shapes_top_down_lights.vcxproj", "{703BE7BA-5B99-4F70-806D-3A259F6A991E}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rectangle_advanced", "examples\shapes_rectangle_advanced.vcxproj", "{703BE7BA-5B99-4F70-806D-3A259F6A991E}"
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_gpu_skinning", "examples\models_gpu_skinning.vcxproj", "{8245DAD9-D402-4D5C-8F45-32229CD3B263}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shadowmap", "examples\shaders_shadowmap.vcxproj", "{41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}"