[C++] 139 FLTK : 線の描画 fl_line

[M1 Mac, Big Sur 11.6.8, clang 13.0.0, FLTK 1.3.8, NO IDE]

4月に書いた[C++] 48の記事以降、その内容が最善な方法ではないと自覚していて、ずっともやもやしていたのですが、ようやくシンプルに線を描けるようになりました。

Fl_Widgetを継承したLineクラスのdraw()関数内でx()関数、y()関数、w()関数、h()関数を使うことで解決しました。

x()ではなくgetx()だったら瞬時に意味を理解していたと思いますが、引数の有無でgetとsetを使い分けるのがFLTKの仕様ですから慣れるしかないです。

FLTKはいいツールだというのに、こういった癖の強いところでC++ユーザーに受け入れられないのではと思います。せめてLineクラスは標準Widgetとして用意しておくべきでしょう。

GUI内に4本の線を描画
#include <Line.h>

Line::Line(int x,int y, int w,int h):Fl_Widget(x,y,w,h){
}
Line::~Line(){}
void Line::draw(){
	fl_color(fl_rgb_color(211,207,217));
	fl_line_style(0,1);
	int x1 = x(), y1 = y();
	int x2 = x()+ w(), y2 = y()+ h();
	fl_line(x1,y1,x2,y2);
}
#pragma once
#include <FLstd.h> // 自製
#include <cppstd.h> // 自製

class Line: public Fl_Widget
{
public:
	Line(int x,int y, int w, int h);
	~Line();
	void draw();
};
#include "Line.h"

Line *line1 = new Line(40,171,309,0);
Line *line2 = new Line(349,10,0,195);
Line *line3 = new Line(278,131,71,0);
Line *line4 = new Line(278,131,0,41);

参考サイト