add media img preview
This commit is contained in:
parent
73a3b29196
commit
b1f20b6f54
@ -333,6 +333,8 @@ namespace rrr::layers::gui
|
|||||||
em->execute(types::event_type::SHOW_HELP_DIALOG, nullptr);
|
em->execute(types::event_type::SHOW_HELP_DIALOG, nullptr);
|
||||||
freeze = true;
|
freeze = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
detect_img();
|
||||||
}
|
}
|
||||||
|
|
||||||
void navigation::released(system_event& e)
|
void navigation::released(system_event& e)
|
||||||
@ -433,4 +435,12 @@ namespace rrr::layers::gui
|
|||||||
buffers::get_instance().single_cut_buffer.clear();
|
buffers::get_instance().single_cut_buffer.clear();
|
||||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void navigation::detect_img()
|
||||||
|
{
|
||||||
|
if (selected_file.path.extension() == ".jpg" ||
|
||||||
|
selected_file.path.extension() == ".jpeg" ||
|
||||||
|
selected_file.path.extension() == ".png")
|
||||||
|
em->execute(types::event_type::SHOW_IMG, selected_file.path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,7 @@ namespace rrr::layers::gui
|
|||||||
void set_scroll();
|
void set_scroll();
|
||||||
void paste_from_copy(); // вставка после копирования
|
void paste_from_copy(); // вставка после копирования
|
||||||
void paste_from_cut(); // вставки после вырезания
|
void paste_from_cut(); // вставки после вырезания
|
||||||
|
void detect_img();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ namespace rrr::layers::gui
|
|||||||
|
|
||||||
BEGIN_IMGUI_WIN();
|
BEGIN_IMGUI_WIN();
|
||||||
|
|
||||||
auto pos = ImGui::GetCursorPos();
|
ImVec2 pos = ImGui::GetCursorPos();
|
||||||
pos.x += 17.f;
|
pos.x += 17.f;
|
||||||
pos.y += 9.f; // небольшой отступ сверху
|
pos.y += 9.f; // небольшой отступ сверху
|
||||||
ImGui::SetCursorPosY(pos.y);
|
ImGui::SetCursorPosY(pos.y);
|
||||||
@ -37,6 +37,22 @@ namespace rrr::layers::gui
|
|||||||
auto begin = data->begin() + delta;
|
auto begin = data->begin() + delta;
|
||||||
auto end = data->end();
|
auto end = data->end();
|
||||||
|
|
||||||
|
// потоки разные у on_event и этот
|
||||||
|
// по этому создание незя делать в switch
|
||||||
|
if (make_media)
|
||||||
|
{
|
||||||
|
make_media = false;
|
||||||
|
tx.make();
|
||||||
|
frame = cv::imread(media_path);
|
||||||
|
cv::cvtColor(frame, frame, cv::COLOR_BGR2RGBA);
|
||||||
|
tx.bind(frame);
|
||||||
|
media_show = true;
|
||||||
|
hack::log()(width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (media_show)
|
||||||
|
tx.draw(ImVec2(pos.x + 830.f, pos.y), ImVec2(width + 850.f, frame.rows / 1.6f));
|
||||||
|
|
||||||
for (files::iterator it = begin; it != end; ++it)
|
for (files::iterator it = begin; it != end; ++it)
|
||||||
{
|
{
|
||||||
auto item = *it;
|
auto item = *it;
|
||||||
@ -98,12 +114,18 @@ namespace rrr::layers::gui
|
|||||||
case types::event_type::NAVIGATION_DOWN:
|
case types::event_type::NAVIGATION_DOWN:
|
||||||
case types::event_type::NAVIGATION_LEFT:
|
case types::event_type::NAVIGATION_LEFT:
|
||||||
case types::event_type::NAVIGATION_RIGHT:
|
case types::event_type::NAVIGATION_RIGHT:
|
||||||
|
media_path.clear();
|
||||||
|
media_show = false;
|
||||||
selected_file = cnt->get_selected_file(TYPE_WIN::PREVIEW);
|
selected_file = cnt->get_selected_file(TYPE_WIN::PREVIEW);
|
||||||
cursor_position = 0;
|
cursor_position = 0;
|
||||||
current_position = 0;
|
current_position = 0;
|
||||||
delta = 0;
|
delta = 0;
|
||||||
set_scroll();
|
set_scroll();
|
||||||
break;
|
break;
|
||||||
|
case types::event_type::SHOW_IMG:
|
||||||
|
media_path = std::any_cast<std::filesystem::path>(value);
|
||||||
|
make_media = true;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,13 @@ namespace rrr::layers::gui
|
|||||||
int cursor_position = 0; // позиция курсора относительно высоты экрана
|
int cursor_position = 0; // позиция курсора относительно высоты экрана
|
||||||
int delta = 0;
|
int delta = 0;
|
||||||
enum class MOVE_DIRECTION { UP, DOWN };
|
enum class MOVE_DIRECTION { UP, DOWN };
|
||||||
|
|
||||||
|
std::filesystem::path media_path;
|
||||||
|
try_engine::texture tx;
|
||||||
|
cv::Mat frame;
|
||||||
|
cv::VideoCapture cap;
|
||||||
|
bool media_show = false;
|
||||||
|
bool make_media = false;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const ImVec4 dir_color = func::get_IMGUI_color<ImVec4>(91.f, 128.f, 191.f);
|
const ImVec4 dir_color = func::get_IMGUI_color<ImVec4>(91.f, 128.f, 191.f);
|
||||||
|
@ -17,7 +17,8 @@ namespace rrr::types
|
|||||||
CREATE_FILE,
|
CREATE_FILE,
|
||||||
SHOW_RENAME_FILE_DIALOG,
|
SHOW_RENAME_FILE_DIALOG,
|
||||||
RENAME_FILE,
|
RENAME_FILE,
|
||||||
SHOW_HELP_DIALOG
|
SHOW_HELP_DIALOG,
|
||||||
|
SHOW_IMG
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user