Merge remote-tracking branch 'EpicGames/dev' into odin_dll_calls_not_working

# Conflicts:
#	src/df/core/generated/df_core.meta.c
This commit is contained in:
2024-05-30 13:33:03 -04:00
52 changed files with 2050 additions and 1348 deletions
+27 -12
View File
@@ -569,7 +569,7 @@ f_hash2style_from_tag_size(F_Tag tag, F32 size)
}
internal F_Run
f_push_run_from_string(Arena *arena, F_Tag tag, F32 size, F_RunFlags flags, String8 string)
f_push_run_from_string(Arena *arena, F_Tag tag, F32 size, F32 base_align_px, F32 tab_size_px, F_RunFlags flags, String8 string)
{
ProfBeginFunction();
@@ -708,7 +708,7 @@ f_push_run_from_string(Arena *arena, F_Tag tag, F32 size, F_RunFlags flags, Stri
atlas->root->max_free_size[Corner_01] =
atlas->root->max_free_size[Corner_10] =
atlas->root->max_free_size[Corner_11] = v2s16(atlas->root_dim.x/2, atlas->root_dim.y/2);
atlas->texture = r_tex2d_alloc(R_Tex2DKind_Dynamic, v2s32((S32)atlas->root_dim.x, (S32)atlas->root_dim.y), R_Tex2DFormat_RGBA8, 0);
atlas->texture = r_tex2d_alloc(R_ResourceKind_Dynamic, v2s32((S32)atlas->root_dim.x, (S32)atlas->root_dim.y), R_Tex2DFormat_RGBA8, 0);
}
// rjf: allocate from atlas
@@ -792,6 +792,13 @@ f_push_run_from_string(Arena *arena, F_Tag tag, F32 size, F_RunFlags flags, Stri
}
}
// rjf: on tabs -> expand advance
F32 advance = info->advance;
if(is_tab)
{
advance = floor_f32(tab_size_px) - mod_f32(floor_f32(base_align_px), floor_f32(tab_size_px));
}
// rjf: push piece
{
F_Piece *piece = f_piece_chunk_list_push_new(arena, &piece_chunks, string.size);
@@ -801,10 +808,11 @@ f_push_run_from_string(Arena *arena, F_Tag tag, F32 size, F_RunFlags flags, Stri
info->subrect.y0,
info->subrect.x0 + info->raster_dim.x,
info->subrect.y0 + info->raster_dim.y);
piece->advance = info->advance;
piece->advance = advance;
piece->decode_size = piece_substring.size;
piece->offset = v2s16(0, -hash2style_node->ascent - 4);
}
base_align_px += advance;
dim.x += piece->advance;
dim.y = Max(dim.y, dim_2s16(piece->subrect).y);
}
@@ -833,12 +841,12 @@ f_push_run_from_string(Arena *arena, F_Tag tag, F32 size, F_RunFlags flags, Stri
}
internal String8List
f_wrapped_string_lines_from_font_size_string_max(Arena *arena, F_Tag font, F32 size, String8 string, F32 max)
f_wrapped_string_lines_from_font_size_string_max(Arena *arena, F_Tag font, F32 size, F32 base_align_px, F32 tab_size_px, String8 string, F32 max)
{
String8List list = {0};
{
Temp scratch = scratch_begin(&arena, 1);
F_Run run = f_push_run_from_string(scratch.arena, font, size, 0, string);
F_Run run = f_push_run_from_string(scratch.arena, font, size, base_align_px, tab_size_px, 0, string);
F32 off_px = 0;
U64 off_bytes = 0;
U64 line_start_off_bytes = 0;
@@ -946,12 +954,12 @@ f_wrapped_string_lines_from_font_size_string_max(Arena *arena, F_Tag font, F32 s
}
internal Vec2F32
f_dim_from_tag_size_string(F_Tag tag, F32 size, String8 string)
f_dim_from_tag_size_string(F_Tag tag, F32 size, F32 base_align_px, F32 tab_size_px, String8 string)
{
ProfBeginFunction();
Temp scratch = scratch_begin(0, 0);
Vec2F32 result = {0};
F_Run run = f_push_run_from_string(scratch.arena, tag, size, 0, string);
F_Run run = f_push_run_from_string(scratch.arena, tag, size, base_align_px, tab_size_px, 0, string);
result = run.dim;
scratch_end(scratch);
ProfEnd();
@@ -959,13 +967,13 @@ f_dim_from_tag_size_string(F_Tag tag, F32 size, String8 string)
}
internal Vec2F32
f_dim_from_tag_size_string_list(F_Tag tag, F32 size, String8List list)
f_dim_from_tag_size_string_list(F_Tag tag, F32 size, F32 base_align_px, F32 tab_size_px, String8List list)
{
ProfBeginFunction();
Vec2F32 sum = {0};
for(String8Node *n = list.first; n != 0; n = n->next)
{
Vec2F32 str_dim = f_dim_from_tag_size_string(tag, size, n->string);
Vec2F32 str_dim = f_dim_from_tag_size_string(tag, size, base_align_px, tab_size_px, n->string);
sum.x += str_dim.x;
sum.y = Max(sum.y, str_dim.y);
}
@@ -973,8 +981,15 @@ f_dim_from_tag_size_string_list(F_Tag tag, F32 size, String8List list)
return sum;
}
internal F32
f_column_size_from_tag_size(F_Tag tag, F32 size)
{
F32 result = f_dim_from_tag_size_string(tag, size, 0, 0, str8_lit("H")).x;
return result;
}
internal U64
f_char_pos_from_tag_size_string_p(F_Tag tag, F32 size, String8 string, F32 p)
f_char_pos_from_tag_size_string_p(F_Tag tag, F32 size, F32 base_align_px, F32 tab_size_px, String8 string, F32 p)
{
ProfBeginFunction();
Temp scratch = scratch_begin(0, 0);
@@ -984,7 +999,7 @@ f_char_pos_from_tag_size_string_p(F_Tag tag, F32 size, String8 string, F32 p)
F32 x = 0;
for(U64 char_idx = 0; char_idx <= string.size; char_idx += 1)
{
F32 this_char_distance = fabsf(p - x);
F32 this_char_distance = abs_f32(p - x);
if(this_char_distance < best_distance || best_distance < 0.f)
{
best_offset = char_idx;
@@ -992,7 +1007,7 @@ f_char_pos_from_tag_size_string_p(F_Tag tag, F32 size, String8 string, F32 p)
}
if(char_idx < string.size)
{
x += f_dim_from_tag_size_string(tag, size, str8_substr(string, r1u64(char_idx, char_idx+1))).x;
x += f_dim_from_tag_size_string(tag, size, base_align_px, tab_size_px, str8_substr(string, r1u64(char_idx, char_idx+1))).x;
}
}
result = best_offset;