diff options
author | crupest <crupest@outlook.com> | 2021-11-29 15:23:01 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-11-29 15:23:01 +0800 |
commit | 1bbd3e0c1817774335c97f4c59e0310b61949ece (patch) | |
tree | 76c4177c3f4891a14c5b995533363cd3c18808b0 /demos/graphics_experiments/1 | |
parent | 80096172330bc0148320384f4b01f3ea62e52c92 (diff) | |
download | cru-1bbd3e0c1817774335c97f4c59e0310b61949ece.tar.gz cru-1bbd3e0c1817774335c97f4c59e0310b61949ece.tar.bz2 cru-1bbd3e0c1817774335c97f4c59e0310b61949ece.zip |
...
Diffstat (limited to 'demos/graphics_experiments/1')
-rw-r--r-- | demos/graphics_experiments/1/main.cpp | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/demos/graphics_experiments/1/main.cpp b/demos/graphics_experiments/1/main.cpp deleted file mode 100644 index 926557e7..00000000 --- a/demos/graphics_experiments/1/main.cpp +++ /dev/null @@ -1,76 +0,0 @@ -#include "cru/platform/Color.hpp" -#include "cru/platform/bootstrap/Bootstrap.hpp" -#include "cru/platform/graphics/Factory.hpp" -#include "cru/platform/graphics/Painter.hpp" -#include "cru/platform/gui/UiApplication.hpp" -#include "cru/platform/gui/Window.hpp" - -#include <functional> - -void BresenhamDrawLine(int x1, int y1, int x2, int y2, - const std::function<void(int, int)>& draw_pixel) { - // calculating range for line between start and end point - int dx = x2 - x1; - int dy = y2 - y1; - - int x = x1; - int y = y1; - - // this is the case when slope(m) < 1 - if (abs(dx) > abs(dy)) { - draw_pixel(x, y); // this putpixel is for very first pixel of the line - int pk = (2 * abs(dy)) - abs(dx); - - for (int i = 0; i < abs(dx); i++) { - x = x + 1; - if (pk < 0) - pk = pk + (2 * abs(dy)); - else { - y = y + 1; - pk = pk + (2 * abs(dy)) - (2 * abs(dx)); - } - draw_pixel(x, y); - } - } else { - // this is the case when slope is greater than or equal to 1 i.e: m>=1 - draw_pixel(x, y); // this putpixel is for very first pixel of the line - int pk = (2 * abs(dx)) - abs(dy); - - for (int i = 0; i < abs(dy); i++) { - y = y + 1; - if (pk < 0) - pk = pk + (2 * abs(dx)); - else { - x = x + 1; - pk = pk + (2 * abs(dx)) - (2 * abs(dy)); - } - - draw_pixel(x, y); // display pixel at coordinate (x, y) - } - } -} - -int main() { - auto application = cru::platform::bootstrap::CreateUiApplication(); - auto window = application->CreateWindow(); - - auto brush = application->GetGraphicsFactory()->CreateSolidColorBrush( - cru::platform::colors::black); - - window->SetClientSize(cru::platform::Size(400, 200)); - - window->PaintEvent()->AddHandler([window, &brush](nullptr_t) { - auto painter = window->BeginPaint(); - auto draw_pixel = [&painter, &brush](int x, int y) { - painter->FillRectangle({static_cast<float>(x) - 0.5f, - static_cast<float>(y) - 0.5f, 1.0f, 1.0f}, - brush.get()); - }; - BresenhamDrawLine(50, 50, 100, 200, draw_pixel); - BresenhamDrawLine(50, 50, 200, 100, draw_pixel); - }); - - window->SetVisibility(cru::platform::gui::WindowVisibilityType::Show); - - return application->Run(); -} |