MCPcopy Create free account
hub / github.com/cococry/leif / lf_rect_render

Function lf_rect_render

leif.c:3207–3276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3205 }
3206
3207void lf_rect_render(vec2s pos, vec2s size, LfColor color, LfColor border_color, float border_width, float corner_radius) {
3208 if(!state.renderer_render) return;
3209 if(item_should_cull((LfAABB){.pos = pos, .size = size})) {
3210 return;
3211 }
3212 // Offsetting the postion, so that pos is the top left of the rendered object
3213 vec2s pos_initial = pos;
3214 pos = (vec2s){pos.x + size.x / 2.0f, pos.y + size.y / 2.0f};
3215
3216 // Initializing texture coords data
3217 vec2s texcoords[4] = {
3218 (vec2s){1.0f, 1.0f},
3219 (vec2s){1.0f, 0.0f},
3220 (vec2s){0.0f, 0.0f},
3221 (vec2s){0.0f, 1.0f},
3222 };
3223 // Calculating the transform matrix
3224 mat4 translate;
3225 mat4 scale;
3226 mat4 transform;
3227 vec3 pos_xyz = {(corner_radius != 0.0f ? (float)state.dsp_w / 2.0f : pos.x), (corner_radius != 0.0f ? (float)state.dsp_h / 2.0f : pos.y), 0.0f};
3228 vec3 size_xyz = {corner_radius != 0.0f ? state.dsp_w : size.x, corner_radius != 0.0f ? state.dsp_h : size.y, 0.0f};
3229 glm_translate_make(translate, pos_xyz);
3230 glm_scale_make(scale, size_xyz);
3231 glm_mat4_mul(translate,scale,transform);
3232
3233 // Adding the vertices to the batch renderer
3234 for(uint32_t i = 0; i < 4; i++) {
3235 if(state.render.vert_count >= MAX_RENDER_BATCH) {
3236 renderer_flush();
3237 renderer_begin();
3238 }
3239 vec4 result;
3240 glm_mat4_mulv(transform, state.render.vert_pos[i].raw, result);
3241 state.render.verts[state.render.vert_count].pos[0] = result[0];
3242 state.render.verts[state.render.vert_count].pos[1] = result[1];
3243
3244 vec4s border_color_zto = lf_color_to_zto(border_color);
3245 const vec4 border_color_arr = {border_color_zto.r, border_color_zto.g, border_color_zto.b, border_color_zto.a};
3246 memcpy(state.render.verts[state.render.vert_count].border_color, border_color_arr, sizeof(vec4));
3247
3248 state.render.verts[state.render.vert_count].border_width = border_width;
3249
3250 vec4s color_zto = lf_color_to_zto(color);
3251 const vec4 color_arr = {color_zto.r, color_zto.g, color_zto.b, color_zto.a};
3252 memcpy(state.render.verts[state.render.vert_count].color, color_arr, sizeof(vec4));
3253
3254 const vec2 texcoord_arr = {texcoords[i].x, texcoords[i].y};
3255 memcpy(state.render.verts[state.render.vert_count].texcoord, texcoord_arr, sizeof(vec2));
3256
3257 state.render.verts[state.render.vert_count].tex_index = -1;
3258
3259 const vec2 scale_arr = {size.x, size.y};
3260 memcpy(state.render.verts[state.render.vert_count].scale, scale_arr, sizeof(vec2));
3261
3262 const vec2 pos_px_arr = {(float)pos_initial.x, (float)pos_initial.y};
3263 memcpy(state.render.verts[state.render.vert_count].pos_px, pos_px_arr, sizeof(vec2));
3264

Callers 11

button_exFunction · 0.85
div_containerFunction · 0.85
draw_scrollbar_onFunction · 0.85
input_fieldFunction · 0.85
dropdown_menu_item_locFunction · 0.85
_lf_slider_int_locFunction · 0.85
lf_text_wideFunction · 0.85
lf_text_render_wcharFunction · 0.85
lf_rectFunction · 0.85
lf_seperatorFunction · 0.85

Calls 4

item_should_cullFunction · 0.85
renderer_flushFunction · 0.85
renderer_beginFunction · 0.85
lf_color_to_ztoFunction · 0.85

Tested by

no test coverage detected