21 for(
size_t i = 0; i < resolutions.size(); ++i)
23 auto& resolution = resolutions[i];
25 ImGui::PushID(
static_cast<int>(i));
30 ImGui::AlignTextToFramePadding();
31 if(ImGui::TreeNode((
"Resolution " + std::to_string(i)).c_str()))
36 char name_buffer[256];
37 std::strncpy(name_buffer, resolution.name.c_str(),
sizeof(name_buffer) - 1);
38 name_buffer[
sizeof(name_buffer) - 1] =
'\0';
40 if(ImGui::InputText(
"##name", name_buffer,
sizeof(name_buffer)))
42 resolution.name = name_buffer;
43 result.changed =
true;
45 result.edit_finished |= ImGui::IsItemDeactivatedAfterEdit();
46 ImGui::DrawItemActivityOutline();
52 int width = resolution.width;
53 if(ImGui::InputInt(
"##width", &width, 1, 100))
57 resolution.width = width;
58 result.changed =
true;
61 result.edit_finished |= ImGui::IsItemDeactivatedAfterEdit();
62 ImGui::DrawItemActivityOutline();
68 int height = resolution.height;
69 if(ImGui::InputInt(
"##height", &height, 1, 100))
73 resolution.height = height;
74 result.changed =
true;
77 result.edit_finished |= ImGui::IsItemDeactivatedAfterEdit();
78 ImGui::DrawItemActivityOutline();
84 float aspect = resolution.aspect;
85 if(ImGui::InputFloat(
"##aspect", &aspect, 0.01f, 0.1f,
"%.3f"))
89 resolution.aspect = aspect;
90 result.changed =
true;
93 result.edit_finished |= ImGui::IsItemDeactivatedAfterEdit();
94 ImGui::DrawItemActivityOutline();
97 if(ImGui::Button(
"Auto Calculate"))
99 if(resolution.width > 0 && resolution.height > 0)
101 resolution.aspect =
static_cast<float>(resolution.width) /
static_cast<float>(resolution.height);
102 result.changed =
true;
103 result.edit_finished =
true;
106 ImGui::SetItemTooltipEx(
"Calculate aspect ratio from width and height");
110 if(i > 0 && !info.read_only)
115 resolutions.erase(resolutions.begin() + i);
116 result.changed =
true;
117 result.edit_finished =
true;
122 ImGui::SetItemTooltipEx(
"Delete this resolution");
138 new_resolution.
name =
"New Resolution";
139 new_resolution.
width = 1920;
140 new_resolution.
height = 1080;
141 new_resolution.
aspect = 16.0f / 9.0f;
143 resolutions.push_back(new_resolution);
144 result.changed =
true;
145 result.edit_finished =
true;
147 ImGui::SetItemTooltipEx(
"Add a new resolution preset");