FrameGraphics Class
FRONT PAGE

コレは何?/What is this?

Linuxのフレームバッファに所望の図を描画する便利なC++のクラス。 フレームバッファと標準的な gcc(g++) の環境があればCUI上で動く。 ヘッダファイルをインクルードするだけ!他には何もいらない! (車輪の再発明は承知の上!)
FrameGraphics class is capable of drawing desired geometrical figures on a frame buffer of Linux. Standard gcc(g++) environment and a framebuffer are required.

画面/Screenshot

一例として、以下の様な図が描画できます。

拡大

ダウンロード/Download

クラスのソース&使い方の一例は以下からダウンロードできます。
You can download the source code of the class, and examples for demonstrations.

FrameGraphics-REV.140808.zip

gcc(g++) で動作確認済みです。フレームバッファさえあれば十分です。 入っているファイルの説明は以下の通り。
Compile, link, and operations of the class have been confirmed on Linux gcc(g++) and the frame buffer. The explanations of the files included in zip are as follows:

	FrameGraphics.cc	クラスの実体ファイル/actual implementation
	FrameGraphics.hh	クラスのヘッダ/header of this class
	Makefile		メイクファイル/make file
	makefile.depend		依存関係ファイル/dependencies
	ReadMe.txt		私を読んで/Read Me file
	test.cc			使い方の一例/examples
	

色深度は 16bit もしくは 32bit のみ対応!その他の色深度には対応していません!
Available color depths are only 16bit/32bit colors !

デモ/demonstration

以下のように、ディレクトリ直下でメイクして test を起動するだけ。
Please "make" and launch the executable file "test" as follows:

make
./test

すると何か図形が出てきます。(ひょっとしたら root 権限がないとダメな場合があるかも)
After that, you can see the geometrical figures shown in the above screenshot. ("root permission" might be required...?)

使い方の一例/Example

以下に使い方の一例を書いときます。 "/dev/fb0" にデータを書き出していますが,環境によっては異なるので予め調べておいて下さい。

1 : // FrameGraphics テストコード 2 : #include <stdio.h> 3 : #include <stdlib.h> 4 : #include "FrameGraphics.hh" // インクルードするだけ! 5 : 6 : using namespace ARCS; 7 : 8 : int main(void){ 9 : printf("FrameGraphics TEST CODE\n"); 10 : 11 : // グラフ描画準備 12 : FrameGraphics* FG; 13 : FG = new FrameGraphics("/dev/fb0"); // フレームバッファグラフィックス生成 14 : 15 : // 長方形の描画 16 : // (400px,100px)を左上として 500px×300pxのシアンの四角形を描画 17 : FG->DrawRect(400,100, 500,300, FrameGraphics::CYAN); 18 : 19 : delete FG; // フレームグラフィックスの消去 20 : 21 : return EXIT_SUCCESS; 22 : } 23 :

上記の例では、以下の様な四角形が表示されます。 The rectangular appears as following figure:

拡大

関数一覧/List of Functions

用意してある関数の一覧は以下の通り。
List of Functions is as follows:

// 画面情報の表示
void ShowParam(void);

// フレームバッファに点(x,y)を描画する
void DrawPoint(int x, int y, FGcolors color);
void DrawPoint(int x, int y, double r, double g, double b);

// 直線の描画
void DrawLine(int x1, int y1, int x2, int y2, FGcolors color);
void DrawLine(int x1, int y1, int x2, int y2, double r, double g, double b);

// 長方形の描画(色は塗らない)
void DrawRect(int x, int y, int w, int h, FGcolors color);
void DrawRect(int x, int y, int w, int h, double r, double g, double b);

// 長方形の描画(色を塗る)
void DrawRectFill(int x, int y, int w, int h, FGcolors color);
void DrawRectFill(int x, int y, int w, int h, double r, double g, double b);

// 円の描画をする cx,cy:円の中心座標,radius:半径,N:円の分割数
void DrawCircle(int cx, int cy, int radius, unsigned int N, FGcolors color);
void DrawCircle(int cx, int cy, int radius, unsigned int N, double r, double g, double b);

// 画面の消去
void ClearScreen(void);

// 長方形の範囲内を消去
void ClearRect(int x, int y, int w, int h);

// 画面の幅、高さ、色深度の取得
int GetWidth(void);
int GetHeight(void);
int GetDepth(void);

// 指定した書式で数値を描画する x:[px] 横位置,y:[px] 縦位置,align:揃え位置,format:書式指定子,
// val:所望の数値 formatの書式指定子は printf関数 の場合の書き方と同等
void PrintValue(int x, int y, FGalign align, std::string format, double val);

// 文字列を描画する x:[px]横位置,y:[px]縦位置,align:揃え位置,text:所望の文字列
// (ただし,半角英数字&半角記号のみ対応)
void PrintText(int x, int y, FGalign align, std::string text);

// 1文字分のフォントデータをフレームバッファに書き込む x:[px] 横位置,y:[px] 縦位置,ascii:アスキーコード
void WriteFont(int x, int y, unsigned int ascii);

// 設定した色のフォントデータを準備
void PrepareFontData(FGcolors fore_color, FGcolors back_color);

// 収録されているすべてのフォントデータを描画するテスト用関数
void PrintAllFontData();
色の定義/Definition of Colors

各関数の引数の r, g, b はそれぞれ 赤, 緑, 青 に対応し,値の範囲は 0~1 (0%~100%)で設定。
FGcolorsの色の定義は以下の通り。

RED, // 赤
GREEN, // 緑
BLUE, // 青
CYAN, // 水(シアン)
MAGENTA,// 紫(マゼンタ)
YELLOW, // 黄(イエロー)
ORANGE, // 橙
WHITE, // 白
GRAY75, // 灰 輝度75%
GRAY50, // 灰 輝度50%
GRAY25, // 灰 輝度25%
BLACK // 黒
文字列揃え位置の定義/Text Alignment

ALIGN_LEFT, // 文字列左揃え
ALIGN_CENTER, // 文字列中央揃え
ALIGN_RIGHT // 文字列右揃え
応用例/Applications

CuiPlot とか ARCS に使用しています。




ライセンス/Licenses

Copyright (C) 2011-2014 Yuki YOKOKURA
This program is free software;
you can redistribute it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 3 of the License, or any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details <http://www.gnu.org/licenses/>.
Besides, you can negotiate about other options of licenses instead of GPL.
If you would like to get other licenses, please contact us.







- 116277 -

研究室の横の倉庫 - Side Warehouse of Laboratory
Copyright(C), Side Warehouse, All rights reserved.