mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 22:08:41 +00:00
eliminate more old view settings code, simplify new, also clean up the targetless launch flow even more - if we only have one target, but it's inactive, and the user is trying to launch, then it doesn't hurt to just act as if that target was selected, then select it for them...
This commit is contained in:
@@ -1219,52 +1219,6 @@ e_base_offset_from_eval(E_Eval eval)
|
|||||||
return eval.value.u64;
|
return eval.value.u64;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Rng1U64
|
|
||||||
e_range_from_eval(E_Eval eval)
|
|
||||||
{
|
|
||||||
U64 size = 0;
|
|
||||||
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
|
||||||
if(type->kind == E_TypeKind_Lens)
|
|
||||||
{
|
|
||||||
for EachIndex(idx, type->count)
|
|
||||||
{
|
|
||||||
E_Expr *arg = type->args[idx];
|
|
||||||
if(arg->kind == E_ExprKind_Define && str8_match(arg->first->string, str8_lit("size"), 0))
|
|
||||||
{
|
|
||||||
size = e_value_from_expr(arg->first->next).u64;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
E_TypeKey type_key = e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_AllDecorative);
|
|
||||||
E_TypeKind type_kind = e_type_kind_from_key(type_key);
|
|
||||||
E_TypeKey direct_type_key = e_type_key_unwrap(type_key, E_TypeUnwrapFlag_All);
|
|
||||||
E_TypeKind direct_type_kind = e_type_kind_from_key(direct_type_key);
|
|
||||||
if(size == 0 && e_type_kind_is_pointer_or_ref(type_kind) && (direct_type_kind == E_TypeKind_Struct ||
|
|
||||||
direct_type_kind == E_TypeKind_Union ||
|
|
||||||
direct_type_kind == E_TypeKind_Class ||
|
|
||||||
direct_type_kind == E_TypeKind_Array))
|
|
||||||
{
|
|
||||||
size = e_type_byte_size_from_key(direct_type_key);
|
|
||||||
}
|
|
||||||
if(size == 0 && eval.irtree.mode == E_Mode_Offset && (type_kind == E_TypeKind_Struct ||
|
|
||||||
type_kind == E_TypeKind_Union ||
|
|
||||||
type_kind == E_TypeKind_Class ||
|
|
||||||
type_kind == E_TypeKind_Array))
|
|
||||||
{
|
|
||||||
size = e_type_byte_size_from_key(type_key);
|
|
||||||
}
|
|
||||||
if(size == 0)
|
|
||||||
{
|
|
||||||
size = KB(16);
|
|
||||||
}
|
|
||||||
Rng1U64 result = {0};
|
|
||||||
result.min = e_base_offset_from_eval(eval);
|
|
||||||
result.max = result.min + size;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Debug Functions
|
//~ rjf: Debug Functions
|
||||||
|
|
||||||
|
|||||||
@@ -1179,7 +1179,6 @@ internal E_Key e_key_wrapf(E_Key key, char *fmt, ...);
|
|||||||
//~ rjf: Eval Info Extraction
|
//~ rjf: Eval Info Extraction
|
||||||
|
|
||||||
internal U64 e_base_offset_from_eval(E_Eval eval);
|
internal U64 e_base_offset_from_eval(E_Eval eval);
|
||||||
internal Rng1U64 e_range_from_eval(E_Eval eval);
|
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Debug Functions
|
//~ rjf: Debug Functions
|
||||||
|
|||||||
+34
-75
@@ -5367,45 +5367,48 @@ rd_view_query_input(void)
|
|||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal RD_Cfg *
|
internal String8
|
||||||
rd_view_cfg_from_string(String8 string)
|
rd_view_setting_from_name(String8 name)
|
||||||
{
|
{
|
||||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||||
RD_Cfg *cfg = rd_cfg_child_from_string(view, string);
|
String8 result = rd_cfg_child_from_string(view, name)->first->string;
|
||||||
return cfg;
|
if(result.size == 0)
|
||||||
|
{
|
||||||
|
result = rd_default_setting_from_names(view->string, name);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal E_Value
|
internal E_Value
|
||||||
rd_view_cfg_value_from_string(String8 string)
|
rd_view_setting_value_from_name(String8 name)
|
||||||
{
|
{
|
||||||
RD_Cfg *root = rd_view_cfg_from_string(string);
|
String8 expr = rd_view_setting_from_name(name);
|
||||||
String8 expr = root->first->string;
|
|
||||||
E_Eval eval = e_eval_from_string(expr);
|
E_Eval eval = e_eval_from_string(expr);
|
||||||
E_Value result = e_value_eval_from_eval(eval).value;
|
E_Value result = e_value_eval_from_eval(eval).value;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal B32
|
internal B32
|
||||||
rd_view_cfg_b32_from_string(String8 string)
|
rd_view_setting_b32_from_name(String8 name)
|
||||||
{
|
{
|
||||||
RD_Cfg *root = rd_view_cfg_from_string(string);
|
String8 string = rd_view_setting_from_name(name);
|
||||||
B32 result = !!e_value_from_stringf("(bool)(%S)", root->first->string).u64;
|
B32 result = !!e_value_from_stringf("(bool)(%S)", string).u64;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal U64
|
internal U64
|
||||||
rd_view_cfg_u64_from_string(String8 string)
|
rd_view_setting_u64_from_name(String8 name)
|
||||||
{
|
{
|
||||||
RD_Cfg *root = rd_view_cfg_from_string(string);
|
String8 string = rd_view_setting_from_name(name);
|
||||||
U64 result = e_value_from_stringf("(uint64)(%S)", root->first->string).u64;
|
U64 result = e_value_from_stringf("(uint64)(%S)", string).u64;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal F32
|
internal F32
|
||||||
rd_view_cfg_f32_from_string(String8 string)
|
rd_view_setting_f32_from_name(String8 name)
|
||||||
{
|
{
|
||||||
RD_Cfg *root = rd_view_cfg_from_string(string);
|
String8 string = rd_view_setting_from_name(name);
|
||||||
F32 result = e_value_from_stringf("(float32)(%S)", root->first->string).f32;
|
F32 result = e_value_from_stringf("(float32)(%S)", string).f32;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5466,57 +5469,6 @@ rd_arch_from_eval(E_Eval eval)
|
|||||||
return arch;
|
return arch;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal R_Tex2DFormat
|
|
||||||
rd_tex2dformat_from_eval(E_Eval eval)
|
|
||||||
{
|
|
||||||
R_Tex2DFormat fmt = R_Tex2DFormat_RGBA8;
|
|
||||||
B32 got_fmt = 0;
|
|
||||||
|
|
||||||
// rjf: try explicitly passed formats
|
|
||||||
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
|
||||||
if(type->kind == E_TypeKind_Lens)
|
|
||||||
{
|
|
||||||
for EachIndex(idx, type->count)
|
|
||||||
{
|
|
||||||
E_Expr *arg = type->args[idx];
|
|
||||||
if(arg->kind == E_ExprKind_Define && str8_match(arg->first->string, str8_lit("fmt"), 0))
|
|
||||||
{
|
|
||||||
got_fmt = 1;
|
|
||||||
for EachEnumVal(R_Tex2DFormat, f)
|
|
||||||
{
|
|
||||||
if(str8_match(arg->first->next->string, r_tex2d_format_display_string_table[f], StringMatchFlag_CaseInsensitive))
|
|
||||||
{
|
|
||||||
fmt = f;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// rjf: try implicit non-define arguments
|
|
||||||
if(type->kind == E_TypeKind_Lens)
|
|
||||||
{
|
|
||||||
for EachIndex(idx, type->count)
|
|
||||||
{
|
|
||||||
E_Expr *arg = type->args[idx];
|
|
||||||
if(arg->kind == E_ExprKind_LeafIdentifier)
|
|
||||||
{
|
|
||||||
for EachEnumVal(R_Tex2DFormat, f)
|
|
||||||
{
|
|
||||||
if(str8_match(arg->string, r_tex2d_format_display_string_table[f], StringMatchFlag_CaseInsensitive))
|
|
||||||
{
|
|
||||||
fmt = f;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return fmt;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- rjf: pushing/attaching view resources
|
//- rjf: pushing/attaching view resources
|
||||||
|
|
||||||
internal void *
|
internal void *
|
||||||
@@ -8698,7 +8650,7 @@ rd_window_frame(void)
|
|||||||
{
|
{
|
||||||
// rjf: gather info for this tab
|
// rjf: gather info for this tab
|
||||||
B32 tab_is_selected = (tab == panel->selected_tab);
|
B32 tab_is_selected = (tab == panel->selected_tab);
|
||||||
B32 tab_is_auto = rd_view_cfg_b32_from_string(str8_lit("auto"));
|
B32 tab_is_auto = rd_view_setting_b32_from_name(str8_lit("auto"));
|
||||||
|
|
||||||
// rjf: begin vertical region for this tab
|
// rjf: begin vertical region for this tab
|
||||||
ui_set_next_child_layout_axis(Axis2_Y);
|
ui_set_next_child_layout_axis(Axis2_Y);
|
||||||
@@ -12088,6 +12040,16 @@ rd_frame(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rjf: run -> no active targets, no processes, but we only have one target? -> just launch it, then select it
|
||||||
|
if((kind == RD_CmdKind_Run ||
|
||||||
|
kind == RD_CmdKind_StepInto ||
|
||||||
|
kind == RD_CmdKind_StepOver) && processes.count == 0 && targets.count == 1 && !has_active_targets)
|
||||||
|
{
|
||||||
|
rd_cmd(kind == RD_CmdKind_Run ? RD_CmdKind_LaunchAndRun : RD_CmdKind_LaunchAndStepInto, .cfg = targets.first->v->id);
|
||||||
|
rd_cmd(RD_CmdKind_SelectTarget, .cfg = targets.first->v->id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// rjf: run -> no targets at all, no processes? -> do helper for add-target
|
// rjf: run -> no targets at all, no processes? -> do helper for add-target
|
||||||
if((kind == RD_CmdKind_Run ||
|
if((kind == RD_CmdKind_Run ||
|
||||||
kind == RD_CmdKind_StepInto ||
|
kind == RD_CmdKind_StepInto ||
|
||||||
@@ -12100,13 +12062,10 @@ rd_frame(void)
|
|||||||
// rjf: run -> no active targets, no processes? -> do helper for launch-and-run
|
// rjf: run -> no active targets, no processes? -> do helper for launch-and-run
|
||||||
if((kind == RD_CmdKind_Run ||
|
if((kind == RD_CmdKind_Run ||
|
||||||
kind == RD_CmdKind_StepInto ||
|
kind == RD_CmdKind_StepInto ||
|
||||||
kind == RD_CmdKind_StepOver) && processes.count == 0)
|
kind == RD_CmdKind_StepOver) && processes.count == 0 && !has_active_targets)
|
||||||
{
|
{
|
||||||
if(!has_active_targets)
|
rd_cmd(RD_CmdKind_RunCommand, .cmd_name = rd_cmd_kind_info_table[kind == RD_CmdKind_Run ? RD_CmdKind_LaunchAndRun : RD_CmdKind_LaunchAndStepInto].string);
|
||||||
{
|
break;
|
||||||
rd_cmd(RD_CmdKind_RunCommand, .cmd_name = rd_cmd_kind_info_table[kind == RD_CmdKind_Run ? RD_CmdKind_LaunchAndRun : RD_CmdKind_LaunchAndStepInto].string);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: if this is a low-level operation, e.g. launch-and-run or launch-and-step-into,
|
// rjf: if this is a low-level operation, e.g. launch-and-run or launch-and-step-into,
|
||||||
@@ -14010,7 +13969,7 @@ rd_frame(void)
|
|||||||
RD_RegsScope(.tab = tab->id, .view = tab->id)
|
RD_RegsScope(.tab = tab->id, .view = tab->id)
|
||||||
{
|
{
|
||||||
if(str8_match(tab->string, str8_lit("text"), 0) &&
|
if(str8_match(tab->string, str8_lit("text"), 0) &&
|
||||||
rd_view_cfg_b32_from_string(str8_lit("auto")))
|
rd_view_setting_b32_from_name(str8_lit("auto")))
|
||||||
{
|
{
|
||||||
panel_w_auto = panel;
|
panel_w_auto = panel;
|
||||||
view_w_auto = tab;
|
view_w_auto = tab;
|
||||||
|
|||||||
@@ -915,16 +915,15 @@ internal UI_ScrollPt2 rd_view_scroll_pos(void);
|
|||||||
internal EV_View *rd_view_eval_view(void);
|
internal EV_View *rd_view_eval_view(void);
|
||||||
internal String8 rd_view_query_cmd(void);
|
internal String8 rd_view_query_cmd(void);
|
||||||
internal String8 rd_view_query_input(void);
|
internal String8 rd_view_query_input(void);
|
||||||
internal RD_Cfg *rd_view_cfg_from_string(String8 string);
|
internal String8 rd_view_setting_from_name(String8 string);
|
||||||
internal E_Value rd_view_cfg_value_from_string(String8 string);
|
internal E_Value rd_view_setting_value_from_name(String8 string);
|
||||||
internal B32 rd_view_cfg_b32_from_string(String8 string);
|
internal B32 rd_view_setting_b32_from_name(String8 string);
|
||||||
internal U64 rd_view_cfg_u64_from_string(String8 string);
|
internal U64 rd_view_setting_u64_from_name(String8 string);
|
||||||
internal F32 rd_view_cfg_f32_from_string(String8 string);
|
internal F32 rd_view_setting_f32_from_name(String8 string);
|
||||||
|
|
||||||
//- rjf: evaluation & tag (a view's 'call') parameter extraction
|
//- rjf: evaluation & tag (a view's 'call') parameter extraction
|
||||||
internal TXT_LangKind rd_lang_kind_from_eval(E_Eval eval);
|
internal TXT_LangKind rd_lang_kind_from_eval(E_Eval eval);
|
||||||
internal Arch rd_arch_from_eval(E_Eval eval);
|
internal Arch rd_arch_from_eval(E_Eval eval);
|
||||||
internal R_Tex2DFormat rd_tex2dformat_from_eval(E_Eval eval);
|
|
||||||
|
|
||||||
//- rjf: pushing/attaching view resources
|
//- rjf: pushing/attaching view resources
|
||||||
internal void *rd_view_state_by_size(U64 size);
|
internal void *rd_view_state_by_size(U64 size);
|
||||||
|
|||||||
+34
-26
@@ -1898,23 +1898,23 @@ RD_VIEW_UI_FUNCTION_DEF(text)
|
|||||||
rd_regs()->file_path = rd_file_path_from_eval(rd_frame_arena(), eval);
|
rd_regs()->file_path = rd_file_path_from_eval(rd_frame_arena(), eval);
|
||||||
rd_regs()->vaddr = 0;
|
rd_regs()->vaddr = 0;
|
||||||
rd_regs()->prefer_disasm = 0;
|
rd_regs()->prefer_disasm = 0;
|
||||||
rd_regs()->cursor.line = rd_view_cfg_value_from_string(str8_lit("cursor_line")).s64;
|
rd_regs()->cursor.line = rd_view_setting_value_from_name(str8_lit("cursor_line")).s64;
|
||||||
rd_regs()->cursor.column = rd_view_cfg_value_from_string(str8_lit("cursor_column")).s64;
|
rd_regs()->cursor.column = rd_view_setting_value_from_name(str8_lit("cursor_column")).s64;
|
||||||
rd_regs()->mark.line = rd_view_cfg_value_from_string(str8_lit("mark_line")).s64;
|
rd_regs()->mark.line = rd_view_setting_value_from_name(str8_lit("mark_line")).s64;
|
||||||
rd_regs()->mark.column = rd_view_cfg_value_from_string(str8_lit("mark_column")).s64;
|
rd_regs()->mark.column = rd_view_setting_value_from_name(str8_lit("mark_column")).s64;
|
||||||
if(rd_regs()->cursor.line == 0) { rd_regs()->cursor.line = 1; }
|
if(rd_regs()->cursor.line == 0) { rd_regs()->cursor.line = 1; }
|
||||||
if(rd_regs()->cursor.column == 0) { rd_regs()->cursor.column = 1; }
|
if(rd_regs()->cursor.column == 0) { rd_regs()->cursor.column = 1; }
|
||||||
if(rd_regs()->mark.line == 0) { rd_regs()->mark.line = 1; }
|
if(rd_regs()->mark.line == 0) { rd_regs()->mark.line = 1; }
|
||||||
if(rd_regs()->mark.column == 0) { rd_regs()->mark.column = 1; }
|
if(rd_regs()->mark.column == 0) { rd_regs()->mark.column = 1; }
|
||||||
U64 base_offset = e_base_offset_from_eval(eval);
|
U64 base_offset = e_base_offset_from_eval(eval);
|
||||||
U64 size = rd_view_cfg_value_from_string(str8_lit("size")).u64;
|
U64 size = rd_view_setting_value_from_name(str8_lit("size")).u64;
|
||||||
if(size == 0)
|
if(size == 0)
|
||||||
{
|
{
|
||||||
size = e_type_byte_size_from_key(e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_AllDecorative));
|
size = e_type_byte_size_from_key(e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_AllDecorative));
|
||||||
}
|
}
|
||||||
Rng1U64 range = r1u64(base_offset, base_offset+size);
|
Rng1U64 range = r1u64(base_offset, base_offset+size);
|
||||||
rd_regs()->text_key = rd_key_from_eval_space_range(eval.space, range, 1);
|
rd_regs()->text_key = rd_key_from_eval_space_range(eval.space, range, 1);
|
||||||
String8 lang = rd_view_cfg_from_string(str8_lit("lang"))->first->string;
|
String8 lang = rd_view_setting_from_name(str8_lit("lang"));
|
||||||
if(lang.size == 0)
|
if(lang.size == 0)
|
||||||
{
|
{
|
||||||
rd_regs()->lang_kind = rd_lang_kind_from_eval(eval);
|
rd_regs()->lang_kind = rd_lang_kind_from_eval(eval);
|
||||||
@@ -2181,7 +2181,7 @@ RD_VIEW_UI_FUNCTION_DEF(disasm)
|
|||||||
space = auto_space;
|
space = auto_space;
|
||||||
}
|
}
|
||||||
U64 base_offset = e_base_offset_from_eval(eval);
|
U64 base_offset = e_base_offset_from_eval(eval);
|
||||||
U64 size = rd_view_cfg_value_from_string(str8_lit("size")).u64;
|
U64 size = rd_view_setting_value_from_name(str8_lit("size")).u64;
|
||||||
if(size == 0)
|
if(size == 0)
|
||||||
{
|
{
|
||||||
size = KB(16);
|
size = KB(16);
|
||||||
@@ -2360,14 +2360,13 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
|
|||||||
//- rjf: unpack parameterization info
|
//- rjf: unpack parameterization info
|
||||||
//
|
//
|
||||||
F32 main_font_size = ui_bottom_font_size();
|
F32 main_font_size = ui_bottom_font_size();
|
||||||
Rng1U64 view_range = e_range_from_eval(eval);
|
|
||||||
U64 base_offset = e_base_offset_from_eval(eval);
|
U64 base_offset = e_base_offset_from_eval(eval);
|
||||||
U64 size = rd_view_cfg_value_from_string(str8_lit("size")).u64;
|
U64 size = rd_view_setting_value_from_name(str8_lit("size")).u64;
|
||||||
if(size == 0)
|
if(size == 0)
|
||||||
{
|
{
|
||||||
size = e_type_byte_size_from_key(e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_AllDecorative));
|
size = e_type_byte_size_from_key(e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_AllDecorative));
|
||||||
}
|
}
|
||||||
view_range = r1u64(base_offset, base_offset+size);
|
Rng1U64 view_range = r1u64(base_offset, base_offset+size);
|
||||||
if(eval.space.kind == 0)
|
if(eval.space.kind == 0)
|
||||||
{
|
{
|
||||||
eval.space = rd_eval_space_from_ctrl_entity(ctrl_entity_from_handle(d_state->ctrl_entity_store, rd_regs()->process), RD_EvalSpaceKind_CtrlEntity);
|
eval.space = rd_eval_space_from_ctrl_entity(ctrl_entity_from_handle(d_state->ctrl_entity_store, rd_regs()->process), RD_EvalSpaceKind_CtrlEntity);
|
||||||
@@ -2377,13 +2376,13 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
|
|||||||
{
|
{
|
||||||
view_range = r1u64(0, 0x7FFFFFFFFFFFull);
|
view_range = r1u64(0, 0x7FFFFFFFFFFFull);
|
||||||
}
|
}
|
||||||
U64 cursor_base_vaddr = rd_view_cfg_u64_from_string(str8_lit("cursor"));
|
U64 cursor_base_vaddr = rd_view_setting_u64_from_name(str8_lit("cursor"));
|
||||||
U64 mark_base_vaddr = rd_view_cfg_u64_from_string(str8_lit("mark"));
|
U64 mark_base_vaddr = rd_view_setting_u64_from_name(str8_lit("mark"));
|
||||||
U64 cursor_size = rd_view_cfg_u64_from_string(str8_lit("cursor_size"));
|
U64 cursor_size = rd_view_setting_u64_from_name(str8_lit("cursor_size"));
|
||||||
cursor_size = ClampBot(1, cursor_size);
|
cursor_size = ClampBot(1, cursor_size);
|
||||||
U64 initial_cursor_base_vaddr = cursor_base_vaddr;
|
U64 initial_cursor_base_vaddr = cursor_base_vaddr;
|
||||||
U64 initial_mark_base_vaddr = mark_base_vaddr;
|
U64 initial_mark_base_vaddr = mark_base_vaddr;
|
||||||
U64 num_columns = rd_view_cfg_u64_from_string(str8_lit("num_columns"));
|
U64 num_columns = rd_view_setting_u64_from_name(str8_lit("num_columns"));
|
||||||
if(num_columns == 0)
|
if(num_columns == 0)
|
||||||
{
|
{
|
||||||
num_columns = 16;
|
num_columns = 16;
|
||||||
@@ -3378,8 +3377,17 @@ RD_VIEW_UI_FUNCTION_DEF(bitmap)
|
|||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
//- rjf: evaluate expression
|
//- rjf: evaluate expression
|
||||||
//
|
//
|
||||||
Vec2S32 dim = v2s32((S32)rd_view_cfg_u64_from_string(str8_lit("w")), (S32)rd_view_cfg_u64_from_string(str8_lit("h")));
|
Vec2S32 dim = v2s32((S32)rd_view_setting_u64_from_name(str8_lit("w")), (S32)rd_view_setting_u64_from_name(str8_lit("h")));
|
||||||
R_Tex2DFormat fmt = rd_tex2dformat_from_eval(eval);
|
String8 fmt_string = rd_view_setting_from_name(str8_lit("fmt"));
|
||||||
|
R_Tex2DFormat fmt = R_Tex2DFormat_RGBA8;
|
||||||
|
for EachNonZeroEnumVal(R_Tex2DFormat, f)
|
||||||
|
{
|
||||||
|
if(str8_match(fmt_string, r_tex2d_format_display_string_table[f], StringMatchFlag_CaseInsensitive))
|
||||||
|
{
|
||||||
|
fmt = f;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
U64 base_offset = e_base_offset_from_eval(eval);
|
U64 base_offset = e_base_offset_from_eval(eval);
|
||||||
U64 expected_size = dim.x*dim.y*r_tex2d_format_bytes_per_pixel_table[fmt];
|
U64 expected_size = dim.x*dim.y*r_tex2d_format_bytes_per_pixel_table[fmt];
|
||||||
Rng1U64 offset_range = r1u64(base_offset, base_offset + expected_size);
|
Rng1U64 offset_range = r1u64(base_offset, base_offset + expected_size);
|
||||||
@@ -3387,11 +3395,11 @@ RD_VIEW_UI_FUNCTION_DEF(bitmap)
|
|||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
//- rjf: unpack params
|
//- rjf: unpack params
|
||||||
//
|
//
|
||||||
F32 zoom = rd_view_cfg_value_from_string(str8_lit("zoom")).f32;
|
F32 zoom = rd_view_setting_value_from_name(str8_lit("zoom")).f32;
|
||||||
Vec2F32 view_center_pos =
|
Vec2F32 view_center_pos =
|
||||||
{
|
{
|
||||||
rd_view_cfg_value_from_string(str8_lit("x")).f32,
|
rd_view_setting_value_from_name(str8_lit("x")).f32,
|
||||||
rd_view_cfg_value_from_string(str8_lit("y")).f32,
|
rd_view_setting_value_from_name(str8_lit("y")).f32,
|
||||||
};
|
};
|
||||||
if(zoom == 0)
|
if(zoom == 0)
|
||||||
{
|
{
|
||||||
@@ -3517,7 +3525,7 @@ RD_VIEW_UI_FUNCTION_DEF(bitmap)
|
|||||||
case R_Tex2DFormat_R8: {color = v4f32(((U8 *)(data.str+off_bytes))[0]/255.f, 0, 0, 1);}break;
|
case R_Tex2DFormat_R8: {color = v4f32(((U8 *)(data.str+off_bytes))[0]/255.f, 0, 0, 1);}break;
|
||||||
case R_Tex2DFormat_RG8: {color = v4f32(((U8 *)(data.str+off_bytes))[0]/255.f, ((U8 *)(data.str+off_bytes))[1]/255.f, 0, 1);}break;
|
case R_Tex2DFormat_RG8: {color = v4f32(((U8 *)(data.str+off_bytes))[0]/255.f, ((U8 *)(data.str+off_bytes))[1]/255.f, 0, 1);}break;
|
||||||
case R_Tex2DFormat_RGBA8: {color = v4f32(((U8 *)(data.str+off_bytes))[0]/255.f, ((U8 *)(data.str+off_bytes))[1]/255.f, ((U8 *)(data.str+off_bytes))[2]/255.f, ((U8 *)(data.str+off_bytes))[3]/255.f);}break;
|
case R_Tex2DFormat_RGBA8: {color = v4f32(((U8 *)(data.str+off_bytes))[0]/255.f, ((U8 *)(data.str+off_bytes))[1]/255.f, ((U8 *)(data.str+off_bytes))[2]/255.f, ((U8 *)(data.str+off_bytes))[3]/255.f);}break;
|
||||||
case R_Tex2DFormat_BGRA8: {color = v4f32(((U8 *)(data.str+off_bytes))[3]/255.f, ((U8 *)(data.str+off_bytes))[2]/255.f, ((U8 *)(data.str+off_bytes))[1]/255.f, ((U8 *)(data.str+off_bytes))[0]/255.f);}break;
|
case R_Tex2DFormat_BGRA8: {color = v4f32(((U8 *)(data.str+off_bytes))[2]/255.f, ((U8 *)(data.str+off_bytes))[1]/255.f, ((U8 *)(data.str+off_bytes))[0]/255.f, ((U8 *)(data.str+off_bytes))[3]/255.f);}break;
|
||||||
case R_Tex2DFormat_R16: {color = v4f32(((U16 *)(data.str+off_bytes))[0]/(F32)max_U16, 0, 0, 1);}break;
|
case R_Tex2DFormat_R16: {color = v4f32(((U16 *)(data.str+off_bytes))[0]/(F32)max_U16, 0, 0, 1);}break;
|
||||||
case R_Tex2DFormat_RGBA16: {color = v4f32(((U16 *)(data.str+off_bytes))[0]/(F32)max_U16, ((U16 *)(data.str+off_bytes))[1]/(F32)max_U16, ((U16 *)(data.str+off_bytes))[2]/(F32)max_U16, ((U16 *)(data.str+off_bytes))[3]/(F32)max_U16);}break;
|
case R_Tex2DFormat_RGBA16: {color = v4f32(((U16 *)(data.str+off_bytes))[0]/(F32)max_U16, ((U16 *)(data.str+off_bytes))[1]/(F32)max_U16, ((U16 *)(data.str+off_bytes))[2]/(F32)max_U16, ((U16 *)(data.str+off_bytes))[3]/(F32)max_U16);}break;
|
||||||
case R_Tex2DFormat_R32: {color = v4f32(((F32 *)(data.str+off_bytes))[0], 0, 0, 1);}break;
|
case R_Tex2DFormat_R32: {color = v4f32(((F32 *)(data.str+off_bytes))[0], 0, 0, 1);}break;
|
||||||
@@ -3883,12 +3891,12 @@ RD_VIEW_UI_FUNCTION_DEF(geo3d)
|
|||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
//- rjf: unpack parameters
|
//- rjf: unpack parameters
|
||||||
//
|
//
|
||||||
U64 count = rd_view_cfg_u64_from_string(str8_lit("count"));
|
U64 count = rd_view_setting_u64_from_name(str8_lit("count"));
|
||||||
U64 vtx_base_off = rd_view_cfg_u64_from_string(str8_lit("vtx"));
|
U64 vtx_base_off = rd_view_setting_u64_from_name(str8_lit("vtx"));
|
||||||
U64 vtx_size = rd_view_cfg_u64_from_string(str8_lit("vtx_size"));
|
U64 vtx_size = rd_view_setting_u64_from_name(str8_lit("vtx_size"));
|
||||||
F32 yaw_target = rd_view_cfg_f32_from_string(str8_lit("yaw"));
|
F32 yaw_target = rd_view_setting_f32_from_name(str8_lit("yaw"));
|
||||||
F32 pitch_target = rd_view_cfg_f32_from_string(str8_lit("pitch"));
|
F32 pitch_target = rd_view_setting_f32_from_name(str8_lit("pitch"));
|
||||||
F32 zoom_target = rd_view_cfg_f32_from_string(str8_lit("zoom"));
|
F32 zoom_target = rd_view_setting_f32_from_name(str8_lit("zoom"));
|
||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
//- rjf: evaluate & unpack expression
|
//- rjf: evaluate & unpack expression
|
||||||
|
|||||||
Reference in New Issue
Block a user