Files
video-v1/vav2/platforms/windows/applications/vav2player/Vav2Player/MainWindow.xaml.h

53 lines
3.0 KiB
C++

#pragma once
#include "MainWindow.g.h"
#include "VavCore/VavCore.h"
#include "LogMessagePage.xaml.h"
namespace winrt::Vav2Player::implementation
{
struct MainWindow : MainWindowT<MainWindow>
{
MainWindow();
// These methods are no longer needed - moved to MainVideoPage
// Navigation event handlers
void SwitchToMainView_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
void SwitchToMultiVideoView_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
void SwitchToLayeredVideoView_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
void Exit_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
void Settings_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
void About_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
// Log panel handlers
void ShowLogToggle_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e);
// Drag-based splitter handlers
void Splitter_PointerPressed(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::Input::PointerRoutedEventArgs const& e);
void Splitter_PointerMoved(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::Input::PointerRoutedEventArgs const& e);
void Splitter_PointerReleased(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::Input::PointerRoutedEventArgs const& e);
void Splitter_PointerEntered(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::Input::PointerRoutedEventArgs const& e);
void Splitter_PointerExited(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::Input::PointerRoutedEventArgs const& e);
// 성능 최적화된 비디오 렌더링 함수들
static void ConvertYUVToBGRA(const VavCoreVideoFrame& yuv_frame, uint8_t* bgra_buffer, uint32_t width, uint32_t height);
static void RenderFrameToScreen(const VavCoreVideoFrame& frame, winrt::Microsoft::UI::Xaml::Media::Imaging::WriteableBitmap& bitmap, std::vector<uint8_t>& bgra_buffer);
// Access log panel
winrt::Vav2Player::LogMessagePage LogPanel() { return m_logPanel; }
private:
bool m_isDraggingSplitter = false;
double m_initialPanelWidth = 0.0;
double m_lastMouseX = 0.0;
winrt::Vav2Player::LogMessagePage m_logPanel{nullptr};
};
}
namespace winrt::Vav2Player::factory_implementation
{
struct MainWindow : MainWindowT<MainWindow, implementation::MainWindow>
{
};
}