feat: initial DX12 foundation framework
This commit is contained in:
116
Engine/Platform/Window.cpp
Normal file
116
Engine/Platform/Window.cpp
Normal file
@@ -0,0 +1,116 @@
|
||||
/**
|
||||
* @file Window.cpp
|
||||
* @brief window 句柄对象成员函数实现。
|
||||
* @details
|
||||
* 本文件将 window 类的高层接口转发到平台后端函数:
|
||||
* - full screen、caption、resize 等操作;
|
||||
* - 原生句柄与尺寸查询;
|
||||
* - 窗口关闭状态查询。
|
||||
* 通过 INCLUDE_WINDOW_CPP 宏控制其编译包含方式。
|
||||
*/
|
||||
#if INCLUDE_WINDOW_CPP
|
||||
#include "Window.h"
|
||||
|
||||
namespace XEngine::platform {
|
||||
|
||||
|
||||
/**
|
||||
* @brief 设置窗口全屏状态。
|
||||
* @param is_fullscreen 目标全屏状态。
|
||||
*/
|
||||
void
|
||||
window::set_fullscreen(bool is_fullscreen) const
|
||||
{
|
||||
assert(is_valid());
|
||||
set_window_fullscreen(_id, is_fullscreen);
|
||||
}
|
||||
/**
|
||||
* @brief 查询窗口是否处于全屏状态。
|
||||
* @return 全屏返回 true。
|
||||
*/
|
||||
bool
|
||||
window::is_fullscreen() const
|
||||
{
|
||||
assert(is_valid());
|
||||
return is_window_fullscreen(_id);
|
||||
}
|
||||
/**
|
||||
* @brief 获取原生窗口句柄。
|
||||
* @return 平台相关窗口句柄指针。
|
||||
*/
|
||||
void*
|
||||
window::handle() const
|
||||
{
|
||||
assert(is_valid());
|
||||
return get_window_handle(_id);
|
||||
}
|
||||
/**
|
||||
* @brief 设置窗口标题。
|
||||
* @param caption 标题文本。
|
||||
*/
|
||||
void
|
||||
window::set_caption(const wchar_t* caption) const
|
||||
{
|
||||
assert(is_valid());
|
||||
set_window_caption(_id, caption);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取窗口矩形坐标。
|
||||
* @return 左上右下坐标向量。
|
||||
*/
|
||||
math::u32v4 window::size() const
|
||||
{
|
||||
assert(is_valid());
|
||||
return get_window_size(_id);
|
||||
}
|
||||
/**
|
||||
* @brief 调整窗口客户区尺寸。
|
||||
* @param width 目标宽度。
|
||||
* @param height 目标高度。
|
||||
*/
|
||||
void
|
||||
window::resize(u32 width, u32 height)const
|
||||
{
|
||||
assert(is_valid());
|
||||
resize_window(_id, width, height);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取窗口当前宽度。
|
||||
* @return 宽度像素值。
|
||||
*/
|
||||
u32
|
||||
window::width()const
|
||||
{
|
||||
assert(is_valid());
|
||||
math::u32v4 s{ size() };
|
||||
return s.z - s.x;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取窗口当前高度。
|
||||
* @return 高度像素值。
|
||||
*/
|
||||
u32
|
||||
window::height()const
|
||||
{
|
||||
assert(is_valid());
|
||||
math::u32v4 s{ size() };
|
||||
return s.w - s.y;
|
||||
}
|
||||
/**
|
||||
* @brief 查询窗口是否已关闭。
|
||||
* @return 已关闭返回 true。
|
||||
*/
|
||||
bool
|
||||
window::is_closed()const
|
||||
{
|
||||
assert(is_valid());
|
||||
return is_window_close(_id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endif //INCLUDE_WINDOW_CPP
|
||||
Reference in New Issue
Block a user