====== struct ====== ``struct`` モジュールは、 ``xdwlib`` が用いる 座標や領域を表すクラスを 扱います。 Point オブジェクト ================== Point クラスは、座標または用紙等の大きさを表します。 DocuWorks で用いる座標は、用紙の左上隅や親アノテーションの位置を原点 (0, 0) とし、原点から右方への変位 (x 座標) および下方への変位 (y 座標) で表します。 数学で通常用いる座標系とは上下が逆転していることに注意してください (これに対応して、回転角も時計回りとなっています)。 Point クラスはイテレータプロトコルをサポートしています。 ``next()`` で横位置 (x 座標)、縦位置 (y 座標) を順次返します。 コンストラクタ -------------- クラス ``Point(x, y)`` x, y はそれぞれ横位置 (x 座標) および縦位置 (y 座標) です。 単位はミリメートルです。1/100 ミリメートル未満の部分も値として 保持されますが、XDWAPI の各機能を呼び出す際は切り捨てられます。 インスタンス属性 ---------------- ``x`` 横位置 (x 座標) です。単位はミリメートルです。 ``y`` 縦位置 (y 座標) です。単位はミリメートルです。 インスタンスメソッド -------------------- ``__add__(pnt)`` Point(``self.x`` + ``pnt.x``, ``self.y`` + ``pnt.y``) を返します。 ``__div__(n)`` Point(``self.x`` / ``n``, ``self.y`` / ``n``) を返します。 ``__eq__(pnt)`` ``self`` と ``pnt`` の位置が同一である場合は ``True`` を、 そうでない場合は ``False`` を返します。 ``__mul__(n)`` Point(``self.x`` * ``n``, ``self.y`` * ``n``) を返します。 ``__ne__(pnt)`` ``self`` と ``pnt`` の位置が同一である場合は ``False`` を、 そうでない場合は ``True`` を返します。 ``__neg__()`` Point( - ``self.x``, - ``self.y``) を返します。 ``__nonzero__()`` ``self.x`` と ``self.y`` のいずれも 0 である場合は ``False`` を、 そうでない場合は ``True`` を返します。 ``__rmul__(n)`` ``__mul__(n)`` と同じです。 ``__sub__(pnt)`` Point(``self.x`` - ``pnt.x``, ``self.y`` - ``pnt.y``) を返します。 ``ceil()`` x 座標および y 座標を減少方向へ整数化した新たな位置を返します。 ``fix()`` x 座標および y 座標の小数部分を切り捨てた新たな位置を返します。 ``floor()`` x 座標および y 座標を増加方向へ整数化した新たな位置を返します。 ``int()`` x 座標および y 座標を整数 (``int``) 化した新たな位置を返します ``rotate(degree, origin=None)`` 回転後の位置を返します。 ``degree`` は時計回りの回転角です。 単位は度です。 ``origin`` は回転の中心となる位置を表す Point オブジェクトです。単位はミリメートルです。 ``origin`` が ``None`` である場合は、Point(0, 0) とみなします。 ``round(places=0)`` x 座標および y 座標の小数部分を四捨五入して小数点以下第 ``places`` 位までとした新たな位置を返します。 ``places`` が 0 以下の場合は 小数点以上 ``places`` 桁が 0 となるように四捨五入します。たとえば、 ``p`` = Point(123.45, 234.56) であるとき、 ``p.round()`` は Point(123.00, 234.00) を、 ``p.round(1)`` は Point(123.40, 234.50) を、 ``p.round(-1)`` は Point(120.00, 230.00) を、それぞれ返します。 ``shift(x, y)`` 平行移動後の位置を返します。 ``x``, ``y`` はそれぞれ横位置および縦位置の 移動距離です。単位はミリメートルです。縦位置は下方が増加方向です。 2 引数 ``x, y`` の代わりに 2 要素のタプル ``(x, y)`` あるいは Point オブジェクト 1 個を与えることもできます。 Rect オブジェクト ================= Rect クラスは、半開矩形領域を表します。 Rect クラスはイテレータプロトコルをサポートしています。 ``next()`` で 左端、上端、右端、下端の位置を順次返します。 コンストラクタ -------------- クラス ``Rect(left=0, top=0, right=0, bottom=0, half_open=True)`` ``left``, ``top``, ``right``, ``bottom`` はそれぞれ 左端、上端、右端、下端の位置です。単位はミリメートルです。 ``left`` と ``top`` は合わせて ``lefttop=(left, top)`` と指定することもでき、また ``right`` と ``bottom`` も合わせて ``rightbottom=(right, bottom)`` と指定することもできます。 ``left``, ``top``, ``right``, ``bottom``, ``lefttop``, ``rightbottom`` はそれぞれ ``l``, ``t``, ``r``, ``b``, ``lt``, ``rb`` で指定することもできます。ただし、これらは初期化の際にのみ利用できる 略号で、初期化が終わったら利用できません。 ``half_open`` が偽の場合は、 ``right`` および ``bottom`` が閉鎖区間の 終端値となります。 (注) 縦位置は下方が増加方向であることと、 ``half_open`` が真の場合は 半開矩形領域の指定となることに注意してください。位置指定では 1/100 ミリメートル未満の部分も値として保持されますが、XDWAPI の各機能を 呼び出す際は切り捨てられます。 インスタンスメソッド -------------------- ``__eq__(r)`` 半開矩形領域が ``r`` と合致すれば ``True`` を、合致しなければ ``False`` を返します。 ``__ne__(r)`` 半開矩形領域が ``r`` と合致すれば ``False`` を、合致しなければ ``True`` を返します。 ``__mul__(n)`` 半開矩形領域の左上隅を固定して縦横に ``n`` 倍した値を Rect オブジェクトで返します。たとえば、 ``Rect(1, 2, 3, 4) * 10`` は Rect(1.00, 2.00, 21.00, 22.00) を返します。 ``__rmul__(n)`` ``__mul__(n)`` と同じです。 ``__div__(n)`` 半開矩形領域の左上隅を固定して縦横に ``n`` 倍した値を Rect オブジェクトで返します。たとえば、 ``Rect(1, 2, 3, 4) / 10`` は Rect(1.00, 2.00, 1.20, 2.20) を返します。 ``closed()`` 現在の値が半開矩形領域であるとみなし、閉鎖矩形領域 (``right`` および ``bottom`` が閉鎖区間の終端値であるような矩形領域指定。以下同じ) へ変換した値を返します。 ``half_open()`` 現在の値が閉鎖矩形領域であるとみなし、半開矩形領域へ変換した値を 返します。 ``int()`` ``self`` の属性 ``left``, ``top``, ``right``, ``bottom`` それぞれを整数 (``int``) 化した値を Rect オブジェクトで返します。 ``position()`` 半開矩形領域の左上隅の位置を Point オブジェクトで返します。 ``position_and_size()`` 2 要素のタプル (``self.position()``, ``self.size()``) を返します。 ``rotate(degree, origin=None)`` 半開矩形領域を回転した後の領域を返します。 ``degree`` は時計回りの 回転角です。単位は度です。 ``origin`` は回転の中心となる位置を表す Point オブジェクトです。単位はミリメートルです。 ``origin`` が ``None`` である場合は、Point(0, 0) とみなします。 ``shift(pnt)`` 半開矩形領域を平行移動した後の値を Rect オブジェクトで返します。 ``size()`` 半開矩形領域の大きさを Point 値で返します。