mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-28 20:06:14 +08:00
150 lines
5.9 KiB
C++
150 lines
5.9 KiB
C++
#include "rd_log.h"
|
|
#include "render.h"
|
|
|
|
int Render::ControlWindow() {
|
|
auto time_duration = ImGui::GetTime() - control_bar_button_pressed_time_;
|
|
if (control_window_width_is_changing_) {
|
|
if (control_bar_expand_) {
|
|
control_window_width_ =
|
|
control_window_min_width_ +
|
|
(control_window_max_width_ - control_window_min_width_) * 4 *
|
|
time_duration;
|
|
} else {
|
|
control_window_width_ =
|
|
control_window_max_width_ -
|
|
(control_window_max_width_ - control_window_min_width_) * 4 *
|
|
time_duration;
|
|
}
|
|
}
|
|
|
|
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1, 1, 1, 1));
|
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowMinSize, ImVec2(0, 0));
|
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 10.0f);
|
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0);
|
|
ImGui::PushStyleVar(ImGuiStyleVar_ChildRounding, 10.0f);
|
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
|
|
|
|
ImGui::SetNextWindowSize(
|
|
ImVec2(control_window_width_, control_window_height_), ImGuiCond_Always);
|
|
ImGui::SetNextWindowPos(ImVec2(0, title_bar_height_), ImGuiCond_Once);
|
|
if (ImGui::IsMouseReleased(ImGuiPopupFlags_MouseButtonLeft) ||
|
|
control_window_width_is_changing_) {
|
|
if (control_winodw_pos_.x <= stream_window_width_ / 2) {
|
|
int pos_x = 0;
|
|
int pos_y =
|
|
(control_winodw_pos_.y >=
|
|
(fullscreen_button_pressed_ ? 0 : title_bar_height_) &&
|
|
control_winodw_pos_.y <=
|
|
stream_window_height_ - control_window_height_)
|
|
? control_winodw_pos_.y
|
|
: (control_winodw_pos_.y <
|
|
(fullscreen_button_pressed_ ? 0 : title_bar_height_)
|
|
? (fullscreen_button_pressed_ ? 0 : title_bar_height_)
|
|
: (stream_window_height_ - control_window_height_));
|
|
|
|
if (control_bar_expand_) {
|
|
if (control_window_width_ >= control_window_max_width_) {
|
|
control_window_width_ = control_window_max_width_;
|
|
control_window_width_is_changing_ = false;
|
|
} else {
|
|
control_window_width_is_changing_ = true;
|
|
}
|
|
} else {
|
|
if (control_window_width_ <= control_window_min_width_) {
|
|
control_window_width_ = control_window_min_width_;
|
|
control_window_width_is_changing_ = false;
|
|
} else {
|
|
control_window_width_is_changing_ = true;
|
|
}
|
|
}
|
|
ImGui::SetNextWindowPos(ImVec2(pos_x, pos_y), ImGuiCond_Always);
|
|
is_control_bar_in_left_ = true;
|
|
} else if (control_winodw_pos_.x > stream_window_width_ / 2) {
|
|
int pos_x = 0;
|
|
int pos_y =
|
|
(control_winodw_pos_.y >=
|
|
(fullscreen_button_pressed_ ? 0 : title_bar_height_) &&
|
|
control_winodw_pos_.y <=
|
|
stream_window_height_ - control_window_height_)
|
|
? control_winodw_pos_.y
|
|
: (control_winodw_pos_.y <
|
|
(fullscreen_button_pressed_ ? 0 : title_bar_height_)
|
|
? (fullscreen_button_pressed_ ? 0 : title_bar_height_)
|
|
: (stream_window_height_ - control_window_height_));
|
|
|
|
if (control_bar_expand_) {
|
|
if (control_window_width_ >= control_window_max_width_) {
|
|
control_window_width_ = control_window_max_width_;
|
|
control_window_width_is_changing_ = false;
|
|
pos_x = stream_window_width_ - control_window_max_width_;
|
|
} else {
|
|
control_window_width_is_changing_ = true;
|
|
pos_x = stream_window_width_ - control_window_width_;
|
|
}
|
|
} else {
|
|
if (control_window_width_ <= control_window_min_width_) {
|
|
control_window_width_ = control_window_min_width_;
|
|
control_window_width_is_changing_ = false;
|
|
pos_x = stream_window_width_ - control_window_min_width_;
|
|
} else {
|
|
control_window_width_is_changing_ = true;
|
|
pos_x = stream_window_width_ - control_window_width_;
|
|
}
|
|
}
|
|
ImGui::SetNextWindowPos(ImVec2(pos_x, pos_y), ImGuiCond_Always);
|
|
is_control_bar_in_left_ = false;
|
|
}
|
|
}
|
|
|
|
ImGui::Begin("ControlWindow", nullptr,
|
|
ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize |
|
|
ImGuiWindowFlags_NoScrollbar |
|
|
ImGuiWindowFlags_NoBringToFrontOnFocus);
|
|
ImGui::PopStyleVar();
|
|
|
|
control_winodw_pos_ = ImGui::GetWindowPos();
|
|
ImGui::PushStyleColor(ImGuiCol_ChildBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
|
static bool a, b, c, d, e;
|
|
ImGui::SetNextWindowPos(
|
|
ImVec2(is_control_bar_in_left_
|
|
? control_winodw_pos_.x - control_window_width_
|
|
: control_winodw_pos_.x,
|
|
control_winodw_pos_.y),
|
|
ImGuiCond_Always);
|
|
ImGui::SetWindowFontScale(0.5f);
|
|
|
|
ImGui::BeginChild("ControlBar",
|
|
ImVec2(control_window_width_ * 2, control_window_height_),
|
|
ImGuiChildFlags_Border, ImGuiWindowFlags_NoDecoration);
|
|
ImGui::SetWindowFontScale(1.0f);
|
|
ImGui::PopStyleColor();
|
|
|
|
ControlBar();
|
|
control_bar_hovered_ = ImGui::IsWindowHovered();
|
|
|
|
ImGui::EndChild();
|
|
ImGui::End();
|
|
ImGui::PopStyleVar(4);
|
|
ImGui::PopStyleColor();
|
|
|
|
ImGui::SetNextWindowPos(
|
|
ImVec2(0, fullscreen_button_pressed_ ? 0 : title_bar_height_),
|
|
ImGuiCond_Always);
|
|
ImGui::SetNextWindowSize(
|
|
ImVec2(stream_window_width_,
|
|
stream_window_height_ -
|
|
(fullscreen_button_pressed_ ? 0 : title_bar_height_)),
|
|
ImGuiCond_Always);
|
|
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0, 0, 0, 0));
|
|
ImGui::PushStyleColor(ImGuiCol_Border,
|
|
ImVec4(178 / 255.0f, 178 / 255.0f, 178 / 255.0f,
|
|
fullscreen_button_pressed_ ? 0 : 1.0f));
|
|
ImGui::Begin("VideoBg", nullptr,
|
|
ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar |
|
|
ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar |
|
|
ImGuiWindowFlags_NoBringToFrontOnFocus);
|
|
ImGui::PopStyleColor(2);
|
|
ImGui::End();
|
|
|
|
return 0;
|
|
} |