linuxでc言語でのプログラミングについて
下のプログラムは入力した4つ数字を円グラフで表示するものでこのプログラムをもとに棒グラフで表示するように変換しなくてはならないのですがHgwBoxFill関数を使うらしいのですがいろいろ試行錯誤してみてもできないのでどなたか教えてくれませんか?
1: /* プログラム始め */
2: #include <stdio.h>
3: #include <math.h>
4: #include "handy.h"
5:
6: /* プロトタイプ宣言 */
7: void draw_graph(int w, double start, double val, char *str);
8:
9: int main(void)
10: {
11: int w; /* ウィンドウID */
12: int c; /* 文字入力用 */
13: double XBASE = 100.0; /* ウィンドウ設定 */
14: double YBASE = 100.0;
15: double WINSIZE = 500.0;
16: int in1, in2, in3, in4; /* グラフ表示する数値 */
17: int total; /* グラフ表示する数値の総和 */
18: double sum; /* グラフ表示する数値の累積 */
19: double d1, d2, d3, d4; /* グラフ表示する数値の割合 */
20:
21: /* グラフ表示する数値の読み込み */
22: printf("四つの正整数を入力してください >> ");
23: scanf("%d %d %d %d", &in1, &in2, &in3, &in4);
24:
25: /* 各項がグラフ内で占める割合の計算 */
26: total = in1 + in2 + in3 + in4; /* 総和の計算 */
27: d1 = (double)in1 / (double)total; /* 割合の計算 */
28: d2 = (double)in2 / (double)total;
29: d3 = (double)in3 / (double)total;
30: d4 = (double)in4 / (double)total;
31:
32: /* ウィンドウの生成 */
33: w = HgWOpen(XBASE, YBASE, WINSIZE, WINSIZE);
34:
35: /* 線の幅指定 */
36: HgWWidth(w, 3.0);
37:
38: /* グラフの表示 */
39: sum = 0.0; /* 1項目めの表示 */
40: HgWColor(w, HG_RED);
41: draw_graph(w, sum, d1, "A");
42:
43: sum += d1; /* 2項目めの表示 */
44: HgWColor(w, HG_BLUE);
45: draw_graph(w, sum, d2, "B");
46:
47: sum += d2; /* 3項目めの表示 */
48: HgWColor(w, HG_GREEN);
49: draw_graph(w, sum, d3, "C");
50:
51: sum += d3; /* 4項目めの表示 */
51: HgWColor(w, HG_ORANGE);
53: draw_graph(w, sum, d4, "D");
54:
55: /* 最後に円表示 */
56: HgWColor(w, HG_BLACK);
57: HgWCircle(w, 250.0, 250.0, 200.0); /* 外側の円 */
58:
59:
60: printf("Push Any Key ");
61: c = getchar( );
62: c = getchar( );
63:
64: printf("Goodby!\n");
65:
66: return 0;
67: }
68:
69: /* */
70: /* グラフ表示する関数 */
71: /* */
72: void draw_graph(int w, double start, double val, char *str)
73: {
74: double x, y; /* 座標 */
75: double rad; /* 角度 */
76:
77: /* グラフの表示 */
78: rad = 2.0 * M_PI * (start + val); /* 角度計算 */
79: x = sin(rad) * 200.0 + 250.0; /* 座標計算 */
80: y = cos(rad) * 200.0 + 250.0;
81: HgWLine(w, 250.0, 250.0, x, y); /* グラフ表示 */
82:
83: /* 項目名の表示 */
84: rad = 2.0 * M_PI * (start + val / 2.0); /* 角度計算 */
85: x = sin(rad) * 120.0 + 250.0; /* 座標計算 */
86: y = cos(rad) * 120.0 + 250.0;
87: HgWColor(w, HG_BLACK);
88: HgWText(w, x, y, str); /* 項目名表示 */
89:
90: return; /* void型関数なので返り値なし */
91: }
92: /* プログラム終わり */
gnome端末がデスクトップ環境です
お礼
ちなみに商用ソフト会社のソフトを使わないときのツールは何でしょうか?
補足
ありがとうございます カイリックスを使えばWindowsとLinuxでつかえるC/C++GNOMEアプリが作れるのですね? 一石二鳥ということでしょうか?