読者です 読者をやめる 読者になる 読者になる

ゆとりーなの日記

日記的な事を書いて行くと思はれる

図形描画

二次元図形が書けるようになりました。実装は変るかもしれませんが、取り敢えずインターフェイスは変らないつもりな感じです。DXライブイラリで書ける図形は書けるようにしました。

#include <pstade/oven/algorithm.hpp>
#include <ngy313/process.hpp>
#include <ngy313/window.hpp>
#include <ngy313/graphic.hpp>
#include <ngy313/pixel.hpp>
#include <ngy313/line.hpp>
#include <ngy313/box.hpp>
#include <ngy313/line_box.hpp>
#include <ngy313/triangle.hpp>
#include <ngy313/line_triangle.hpp>
#include <ngy313/circle.hpp>
#include <ngy313/line_circle.hpp>
#include <ngy313/oval.hpp>
#include <ngy313/line_oval.hpp>
#include <ngy313/color_code.hpp>

int main() {
  ngy313::set_window_caption("試験窓");
  ngy313::window_resize(640, 480);
  ngy313::window_show();
  pstade::oven::for_each(ngy313::process_message(), ngy313::main_loop([]() {
    {
      const ngy313::scoped_render render;
      if (render.succeeded()) {
        ngy313::clear(ngy313::kBlack);
        // 点
        const ngy313::pixel pixel(16.f, 16.f);
        ngy313::draw(pixel);
        // 線
        const ngy313::line line(32.f, 16.f, 156.f, 16.f);
        ngy313::draw(line);
        // 塗りつぶし長方形
        const ngy313::box box(32.f, 32.f, 128.f, 128.f);
        ngy313::draw(box);
        // 塗りつぶさない長方形
        const ngy313::line_box line_box(192.f, 32.f, 128.f, 128.f);
        ngy313::draw(line_box);
        // 塗りつぶし三角形
        const ngy313::triangle triangle(88.f, 
                                        180.f,
                                        152.f,
                                        288.f,
                                        24.f,
                                        288.f);
        ngy313::draw(triangle);
        // 塗りつぶさない三角形
        const ngy313::line_triangle line_triangle(232.f, 
                                                  180.f,
                                                  296.f,
                                                  288.f,
                                                  168.f,
                                                  288.f);
        ngy313::draw(line_triangle);
        // 塗りつぶし円
        const ngy313::circle circle(80.f, 360.f, 64.f);
        ngy313::draw(circle);
        // 塗りつぶさない円
        const ngy313::line_circle line_circle(240.f, 360.f, 64.f);
        ngy313::draw(line_circle);
        // 塗りつぶし楕円
        const ngy313::oval oval(480.f, 160.f, 80.f, 64.f);
        ngy313::draw(oval);
        // 塗りつぶさない楕円
        const ngy313::line_oval line_oval(480.f, 320.f, 80.f, 64.f);
        ngy313::draw(line_oval);
      }
    }
    ngy313::present();
  }));
  return 0;
}

実行結果