Small rendering cleanup.
This commit is contained in:
parent
d269cc8482
commit
fc44c4c623
13 changed files with 171 additions and 37 deletions
|
@ -1,6 +1,7 @@
|
|||
add_subdirectory(test_utils)
|
||||
|
||||
add_subdirectory(geometry)
|
||||
add_subdirectory(graphics)
|
||||
add_subdirectory(ui_controls)
|
||||
|
||||
file(COPY data/ DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_data)
|
||||
|
@ -12,7 +13,6 @@ set(TEST_MODULES
|
|||
core
|
||||
database
|
||||
fonts
|
||||
graphics
|
||||
image
|
||||
ipc
|
||||
network
|
||||
|
|
|
@ -1,38 +1,40 @@
|
|||
set(MODULE_NAME graphics)
|
||||
|
||||
set(PLATFORM_UNIT_TEST_FILES)
|
||||
|
||||
set(OpenGL_GL_PREFERENCE "GLVND")
|
||||
find_package(OpenGL QUIET)
|
||||
if (OpenGL_FOUND)
|
||||
set(PLATFORM_UNIT_TEST_FILES
|
||||
graphics/TestOpenGlRendering.cpp
|
||||
)
|
||||
set(PLATFORM_UNIT_TEST_FILES
|
||||
TestOpenGlRendering.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
if(WIN32)
|
||||
|
||||
list(APPEND PLATFORM_UNIT_TEST_FILES
|
||||
graphics/TestD2DOffScreenRendering.cpp
|
||||
)
|
||||
set(GRAPHICS_UI_TEST_FILES
|
||||
graphics/TestDirectXRendering.cpp
|
||||
graphics/TestD2DRendering.cpp
|
||||
PARENT_SCOPE
|
||||
)
|
||||
list(APPEND PLATFORM_UNIT_TEST_FILES
|
||||
TestD2DOffScreenRendering.cpp
|
||||
)
|
||||
set(UI_TEST_FILES
|
||||
TestDirectXRendering.cpp
|
||||
TestD2DRendering.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
set(GRAPHICS_UNIT_TEST_DEPENDENCIES
|
||||
graphics client
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
set(GRAPHICS_UI_TEST_DEPENDENCIES
|
||||
graphics client
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
set(GRAPHICS_UNIT_TEST_FILES
|
||||
graphics/TestRasterizer.cpp
|
||||
|
||||
set(UNIT_TEST_FILES
|
||||
TestRasterizer.cpp
|
||||
${PLATFORM_UNIT_TEST_FILES}
|
||||
PARENT_SCOPE
|
||||
)
|
||||
)
|
||||
|
||||
set(UNIT_TEST_TARGET_NAME ${MODULE_NAME}_unit_tests)
|
||||
add_executable(${UNIT_TEST_TARGET_NAME} ${CMAKE_SOURCE_DIR}/test/test_runner.cpp ${UNIT_TEST_FILES})
|
||||
target_link_libraries(${UNIT_TEST_TARGET_NAME} PUBLIC test_utils graphics client)
|
||||
set_property(TARGET ${UNIT_TEST_TARGET_NAME} PROPERTY FOLDER test/${MODULE_NAME})
|
||||
|
||||
|
||||
set(UI_TEST_TARGET_NAME ${MODULE_NAME}_ui_tests)
|
||||
add_executable(${UI_TEST_TARGET_NAME} WIN32 ${CMAKE_SOURCE_DIR}/test/ui_test_runner.cpp ${UI_TEST_FILES})
|
||||
target_link_libraries(${UI_TEST_TARGET_NAME} PUBLIC test_utils graphics client)
|
||||
set_property(TARGET ${UI_TEST_TARGET_NAME} PROPERTY FOLDER test/${MODULE_NAME})
|
||||
|
||||
|
||||
|
|
|
@ -3,17 +3,74 @@
|
|||
#include "TestRenderUtils.h"
|
||||
|
||||
#include "RectangleNode.h"
|
||||
#include "CircleNode.h"
|
||||
#include "LineNode.h"
|
||||
#include "PathNode.h"
|
||||
|
||||
void addRect(const Point& loc, std::vector<std::unique_ptr<AbstractVisualNode> >& nodes, double radius = 0.0)
|
||||
{
|
||||
auto node = std::make_unique<RectangleNode>(loc, 150.0, 100.0);
|
||||
node->setRadius(radius);
|
||||
nodes.push_back(std::move(node));
|
||||
}
|
||||
|
||||
void addCircle(const Point& loc, std::vector<std::unique_ptr<AbstractVisualNode> >& nodes, double minorRadius = 0.0)
|
||||
{
|
||||
const auto radius = 50.0;
|
||||
auto centre_loc = loc;
|
||||
centre_loc.move(0.0, radius);
|
||||
|
||||
auto node = std::make_unique<CircleNode>(centre_loc, radius);
|
||||
|
||||
if (minorRadius != 0.0)
|
||||
{
|
||||
node->setMinorRadius(minorRadius);
|
||||
}
|
||||
|
||||
nodes.push_back(std::move(node));
|
||||
}
|
||||
|
||||
void addLine(const Point& loc, std::vector<std::unique_ptr<AbstractVisualNode> >& nodes)
|
||||
{
|
||||
std::vector<Point> points = { Point(150.0, 100.0) };
|
||||
auto node = std::make_unique<LineNode>(loc, points);
|
||||
nodes.push_back(std::move(node));
|
||||
}
|
||||
|
||||
void addPath(const Point& loc, const std::string& path, std::vector<std::unique_ptr<AbstractVisualNode> >& nodes)
|
||||
{
|
||||
auto node = std::make_unique<PathNode>(loc, path);
|
||||
nodes.push_back(std::move(node));
|
||||
}
|
||||
|
||||
TEST_CASE(TestD2dOffScreenRendering, "graphics")
|
||||
{
|
||||
TestRenderer renderer(800, 800);
|
||||
|
||||
auto rect = std::make_unique<RectangleNode>(Point(10, 10), 200.0, 200.0);
|
||||
std::vector<std::unique_ptr<AbstractVisualNode> > nodes;
|
||||
|
||||
auto loc = Point(10, 10);
|
||||
addRect(loc, nodes);
|
||||
|
||||
loc.move(250, 0);
|
||||
addCircle(loc, nodes);
|
||||
|
||||
loc.move(100, 0);
|
||||
addLine(loc, nodes);
|
||||
|
||||
loc = Point(10, 150);
|
||||
addRect(loc, nodes, 10.0);
|
||||
|
||||
loc.move(250, 0);
|
||||
addCircle(loc, nodes, 75.0);
|
||||
|
||||
loc.move(100, 0);
|
||||
addPath(loc, "M0 0 h150 v100 h-150Z", nodes);
|
||||
|
||||
auto scene = renderer.getScene();
|
||||
//scene->setBackgroundColor(Color(100, 100, 0));
|
||||
scene->addNode(rect.get());
|
||||
|
||||
for (const auto& node : nodes)
|
||||
{
|
||||
scene->addNode(node.get());
|
||||
}
|
||||
renderer.write(TestUtils::getTestOutputDir(__FILE__) / "out.png");
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue