XDrawArc(3X11) — UNIX Programmer’s Manual
名称
XDrawArc, XDrawArcs − 円弧を作図する
形式
XDrawArc(display, d, gc, x, y, width, height, angle1, angle2)
Display ∗display;
Drawable d;
GC gc;
int x, y;
unsigned int width, height;
int angle1, angle2; XDrawArcs(display, d, gc, arcs, narcs)
Display ∗display;
Drawable d;
GC gc;
XArc ∗arcs;
int narcs;
引数
angle13時の方向を 0 として、円弧の出発点を度 ∗ 64 の単位で指定します。
angle2円弧の出発点に相対する円弧のパスと範囲を度 ∗ 64 の単位で指定します。
arcs円弧の配列を指すポインタを指定します。
ddrawable を指定します。
displayX サーバへのコネクションを指定します。
gcGC (Graphic Context) を指定します。
narcs配列の円弧数を指定します。
width
height円弧の長軸および短軸である幅と高さを指定します。
x
ydrawable の原点に相対するx - y 座標を指定し、バウンディング矩形(円弧はその長方形に内接します)の上部左側コーナーを指定します。
解説
XDrawArc は、1つの円または楕円弧を作図し、 XDrawArcs は複数の円または楕円弧を作図します。 各円弧は、矩形と 2つの角度によって指定されます。 円または楕円の中心は、矩形の中心であり、 長軸および短軸は幅と高さで指定します。 正の角度は左まわりの動作を表し、負の角度は右まわりの動作を表します。 angle2 の大きさが 360 度以上であれば XDrawArc または XDrawArcs がそれを 360 度に切り捨てます。 [ x, y, width, height, angle1, angle2] の場合、 長軸および短軸の原点は、 [x+ width over 2, y+ height over 2] にあり、 円または楕円全体を示す無限に細いパスは、 [x, y+ height over 2] および [x+ width, y+ height over 2] で水平軸と交差し、 [x+ width over 2, y] および [x+ width over 2, y+ height] で垂直軸と交差します。 これらの座標は、分数であり、 したがって離散座標に切り捨てられません。 パスは、理想的な数学的パスによって定義しなければなりません。 ライン幅 lw での幅のある線の場合、フィルする輪郭は、 円/楕円のパスからの垂直距離が lw/2 (分数になることがある) のすべての点からなる2本の無限に細いパスで与えられます。 cap-style および join-style は、円/楕円の終点における 接線に対応する線と同じように適用されます。 [ x, y, width, height, angle1, angle2] で表される 楕円においては、角度は、実行的な楕円にゆがめられた 楕円座標系における値を指定しなければなりません。 (円においては、角度は通常の直交座標系 あるいは円座標系における値と一致します)。 (訳者注:たとえば45度の中心角をもつ円弧を書くと、それは 1/4 の円 ですが、楕円の場合は、楕円座表系における45度とみなされ、みかけ上の 中心角は45度ではありません。) この楕円座標系における角度(以下 skewed-angle と呼ぶ)と、 通常の座標系における角度( normal-angle 、すなわち、 スクリーン上で分度器をあててはかった角度)との関係は次のようになります。
skewed-angle = atan
⎛
⎜
⎝tan(normal-angle)∗width over height
⎞
⎟
⎠+ adjust
ここで、skewed-angle と normal-angle はラジアンで表され、 (デグリーに 64 をかけたものでないことに注意してください)、 [0, 2π] の値をとります。 そして atan (アークタンジェント、tan の逆関数)は、 [−π over 2, π over 2] の値をとります。 adjust は補正値であり、次の値をとります。
0normal-angle が[0, π over 2] のとき
πnormal-angle が[π over 2, 3π over 2] のとき
2πnormal-angle が[3π over 2, 2π] のとき
与えられた円弧について、 XDrawArc と XDrawArcs は、2回以上ピクセルを描いたりしません。 2つの円弧が正しく接続され、ライン幅が 0 以上であり、 これらの円弧が交差する場合、 XDrawArc と XDrawArcs は、2回以上ピクセルを描いたりしません。 さもなければ、 交差する円弧の交差するピクセルは、複数回描かれます。 ひとつの終点と、右まわりの範囲で円弧を指定すると、他の終点と、 同等の左まわりの範囲を指定するのと同じピクセルを描きます (接続 (join) に影響を与えることを除く)。 1つの円弧の最後の点が次の円弧の最初の点と一致すると、 2つの円弧は正しく接続します。 1つの軸を 0 と指定する( width または height に 0 を指定する)ことで、 水平または垂直線を引くことができます。 角度は、片方の座標系にだけ基づいて計算し、画面縦横比を無視します。 両方の関数は、以下の GC 構成要素を使用します。 つまり function 、plane-mask 、line-width 、line-style 、cap-style 、 join-style 、fill-style 、subwindow-mode 、clip-x-origin 、 clip-y-origin および clip-mask を使用します。 また、以下の GC モード依存の構成要素を使用します。 つまり foreground 、background 、tile 、stipple 、tile-stipple-x-origin 、 tile-stipple-y-origin 、dash-offset および dash-list を使用します。 .PN XDrawArc と .PN XDrawArcs は、 BadDrawable、 BadGC および BadMatch エラーを生じることがあります。
診断
BadDrawable
Drawable 引数の値が、定義された Window または Pixmap を指さない。
BadGC GContext 引数の値が、定義された GContext を指さない。
BadMatch InputOnly ウィンドウが Drawable として使用された。
BadMatch ある引数またはひと組の引数の型と範囲は正しいが、 リクエストにより要求されたその他のなにかが一致しない。
関連事項
XDrawLine(3X11), XDrawPoint(3X11), XDrawRectangle(3X11)
Xlib − C Language X Interface
NEWS-OSRelease 3.3