board package¶
Submodules¶
board.backupcaller module¶
forward_medhods.py
未定義メソッドの代理呼び出しをするクラス.
Pythonのリフレクション機能を用いる.
220830: Created by Hiroki Arimura, arim@ist.hokudai.ac.jp
- class board.backupcaller.BackupCaller(host, fname, verbose=False, verbose_prefix=None)[source]¶
Bases:
objectメソッド呼び出しの転送をするクラス.
- Parameters
host (Object) – 呼び出しの転送先オブジェクト.
fname (str) – 呼び出しの関数名/メソッド名.
verbose (bool) – デバグ用出力のフラグ. default=False.
Notes
具体的な利用法は,下記のExampleを参照されたい.次の手順で,メソッド転送が実行される.
`MyObject`の初期化時に,自分が実装していないメソッドの転送先オブジェクトに,`OtherObject`を設定する.
`MyObject`は,特殊関数 `__getattr__()`を次のように実装する:
もし関数名(属性名)`name`が自身に対して呼ばれたら,
代理オブジェクト`agent`と関数名`name`を引数として,オブジェクト BackupCaller(self.agent, name)を生成して,それを返り値として返す.この時点では,元の呼び出しの引数`(a1,…,aN)`は渡されないことに注意.
呼び出し側では,返り値のBackupCallerオブジェクトを受け取り,python処理系が,それに元の呼び出しの引数`(a1,…,aN)`を与えて実行する.
Example:
import sys import backupcaller as bc class OtherObject: #転送先オブジェクトのクラス. #ふつうのオブジェクトであり,特別な準備は不要. def swim(self, name): print(f' @OtherObject: method="swim" is called') print(f'An animal {name} swims!') class MyObject: #転送元オブジェクトのクラス. def __init__(self, agent=None): #ここで,転送先オブジェクトを準備する.# if agent != None: self.agent = agent #転送先オブジェクト ## メソッド転送 def __getattr__(self, name): #メソッドが未定義のとき,呼び出される特殊関数. #未定義の属性呼び出しのときも呼ばれるので注意. print(f' @MyObject: method="__getattr__" is called') return bc.BackupCaller(self.agent, name, verbose=True) def walk(self, name): print(f' @OtherObject: method=swim is called') print(f'A cat {name} walk!') #a duck can swim a_duck = OtherObject() #a cat can walk, but cannot swim a_cat = MyObject(agent=a_duck) a_cat.walk('a_cat') #a cat can walk => walk a_cat.swim('a_cat') #Since a cat cannot swim, a duck swims instead => swim a_cat.donothing('a_cat') => fail
board.cboard module¶
画盤モジュール
画盤システムの実装モジュール.
220815: Created by Hiroki Arimura, arim@ist.hokudai.ac.jp
based on board.py
Attributes:
DEFAULT_PPT = 720 (int): デフォールトの解像度 DEFAULT_LINE_WIDTH = 1 (float): デフォールトの辺幅 DEFAULT_COLOR_BORDER_INNER = ‘red’ (str): デフォールトの境界色(内側) DEFAULT_COLOR_BORDER_OUTER = ‘blue’ (str): デフォールトの境界色(外側)
- class board.cboard.Board(**kwargs)[source]¶
Bases:
PlaceBoard描画を行う画盤(board)のクラス.`PackerBoard`のラッパー.
- Parameters
**kwargs – 他のキーワード引数.上位クラスに渡される.
- class board.cboard.BoardBase(shape=None, anchor=None, **kwargs)[source]¶
Bases:
Loggable図形(Board)の描画に関する基本機能を提供するクラス.子孫クラスから呼び出される二つの私的関数`_arrange()`と`_draw(self, cr)`を提供する.
- Parameters
anchor_str (str, tuple(str,str)) – 文字列対によるアンカー表記.それ自体が`None`でも良いし,対の片方または両方の要素が`None`を取っても良い.
shape (tuple(float,float)) – 形状ベクトル (sx, sy) in R^2
**kwargs – 他のキーワード引数.上位クラスに渡される.
- trans¶
自身の変換
- Type
- box¶
自身の包含矩形.
- Type
tuple(float,float,float,float)
- boxes¶
子全体の包含矩形.
- Type
float,float,float,float
- anchor¶
正規化アンカーベクトル a = (ax,ay) in [0,1]^2.配置時点での包含矩形に対する原点の相対位置を表す.
- Type
tuple(float,float)
- verbose¶
ログ出力のフラグ
- Type
bool
Notes
本クラスでは,主ループとして,配置関数`_arrange()`と描画関数`_draw(self, cr)`を提供し,子孫クラスにおいて,これらの以下のサブメソッドを実装することで,独自の振る舞いを定義する.
関数`_arrange()`のサブメソッド
arrange_box_children(self): 子を相互に配置し,子全体の包含矩形`self.boxes`を求める.
arrange_box_self(self): 子全体の包含矩形`self.boxes`と修飾情報(modifiers)から自身の包含矩形を求める.ボードは,修飾情報として,余白やアンカー点の情報をもつ.
関数`_draw()`のサブメソッド:
draw_me_before(self, cr): Cairoの文脈オブジェクト`cr`を受け取り,子の描画の前に,自身を描画する手続きを定義する.
draw_me_after(self, cr): Cairoの文脈オブジェクト`cr`を受け取り,子の描画の後に,自身を描画する手続きを定義する.
Note
アンカー表記の対の要素に`None`を許す.
Example:
anchor=('left' , 'top') => (0.0, 0.0) anchor=('mid' , 'mid') => (0.5, 0.5) anchor=('right', 'bot') => (1.0, 1.0) anchor=('left' , None) => (0.0, 0.5) anchor=(None , 'top') => (0.5, 0.0)
- arrange_box_children()[source]¶
自身の子たちの配置情報を計算する.子孫クラスでオーバーライドすること.
Note
配置情報として,子リストにおいて子それぞれの変換と子自身を計算する.終了前に属性`self.boxes`を設定すること. 次の属性を操作する:
読み出し: self.children_
書き込み: self.boxes (非None)
- arrange_box_self()[source]¶
修飾情報から自身の配置情報を計算する.子孫クラスでオーバーライドすること
Notes
自身の配置情報として変換と包含矩形を求める.終了前に属性`self.box`と`self.trans`を設定すること.次の属性を操作する:
読み出し: self.boxes (非None)
書き込み: self.box (非None)
書き込み: self.trans (Noneも許す)
- draw_me_after(cr)[source]¶
自分の描画を行う.子の描画の前に実行される.子孫クラスでオーバーライドすること.
- Parameters
cr (Cairo.Context) – Cairoの文脈オブジェクト
Notes
文脈オブジェクトに,配置情報を元に直接書き込みを行う.
- draw_me_before(cr)[source]¶
自分の描画を行う.子の描画の前に実行される.子孫クラスでオーバーライドすること.
- Parameters
cr (Cairo.Context) – Cairoの文脈オブジェクト
Notes
文脈オブジェクトに,配置情報を元に直接書き込みを行う.
- draw_perturbed_box(box, context=None, max_perturb=None)[source]¶
自分の包含矩形を描画する.視認性のため, max_perturbで決まる摂動を加えて描画する.
- get_anchor()[source]¶
自身の包含矩形上のアンカー点(配置の原点)を返す.ここに,各種の配置関数`_arrange()`は,アンカー点を原点として図形を配置する.
- Returns
2次元平面上のアンカー点 b = (bx,by) in R^2
- Return type
(tuple(float, float))
Notes
返り値は,次の属性に保持されている.
self.anchor (tuple(float,float)) : 正規化アンカーベクトル a = (ax,ay) in [0,1]^2
- get_box()[source]¶
保持する自身の包含矩形を返す.
- Returns
自身の包含矩形.親による自身の配置を規定する.
- Return type
(tuple(float,float,float,float))
- get_trans() GeoTransform[source]¶
保持する変換を返す.
- Returns
自身に適用する変換.自身の子の配置を規定する.
- Return type
- class board.cboard.Canvas(imgtype=(cairo.Format.ARGB32,), format='pdf', outfile='out', imagesize=None, portrait=False, boundingbox=False, max_perturb=None, **kwargs)[source]¶
Bases:
PlaceBoardトップレベルのボードのクラス.描画のためのCairoのSurfaceを保持する. 描画対象のすべての要素(ボード)は,本オブジェクトの子孫として保持する.
- Parameters
imgtype (cairo.Format) – Surfaceフォーマット (default: cairo.FORMAT_ARGB32)
format (str) – 出力ファイルフォーマット(拡張子 pdf, png)default: “pdf”
outfile (str) – 出力ファイル名(拡張子を除く)default: “out”
imagesize (str) – 初期の画像サイズ. default: ‘XGA’
verbose (bool) – ログ出力のフラグ.default=False
portrait (bool) – 画像サイズが縦長か?
boundingbox (bool) – デバッグ用: 包含矩形のデバッグ出力をする
max_perturb (float) – デバッグ用: 包含矩形の摂動幅
- show(noshow=False, depth=0)[source]¶
配置と描画を行ない,画像をディスプレイに表示する. 次の手順で描画する.
ステップ1: 再帰的に子オブジェクトへ _arrange() 命令を送り,ボトムアップに配置の包含矩形 box を計算する
ステップ2: 包含矩形情報 box を元に,self.create_pim() 命令を発行して,pillowの画像盤 self.im を生成する.
ステップ3: 再帰的に draw() 命令を発行して,トップダウンに描画を行う
ステップ4: 自身のもつpillowオブジェクト self.imに show() 命令を送り,画像を表示する
- class board.cboard.CoreBoard(**kwargs)[source]¶
Bases:
BoardBase描画を行う画盤(board)のクラス.具体的な子の配置方法は持たず,サブクラスで実装される.`WrapperBoard`とは比較不能(兄弟)な継承関係をもつ.
- Parameters
**kwargs – 他のキーワード引数.上位クラスに渡される.
- class board.cboard.DrawCircle(x=0.0, y=0.0, r=None, **kwargs)[source]¶
Bases:
DrawCommandBase描画演算オブジェクトのクラス.DrawCommandBaseクラスのサブクラス.
- Parameters
x (float) – 円の中心位置のx座標.default=0.0.
y (float) – 円の中心位置のy座標.default=0.0.
r (float) – 円の半径.必須.
**kwargs (dict) – 上位コマンドに渡すオプション引数.
- class board.cboard.DrawCommandBase(cmd=None, **kwargs)[source]¶
Bases:
CoreBoard描画演算オブジェクトの基底クラス.Boardクラスのサブクラス.
- Parameters
cmd (str) – 命令の名前の文字列.default=None.
**kwargs (dict) – 上位コマンドに渡すオプション引数.
- cmd¶
命令の名前の文字列.default=None.
- Type
str
- kwargs¶
コマンドの引数からなる辞書.各コマンドは,この辞書の項目を参照して実装する.
- Type
dict
- class board.cboard.DrawMarkerCross(**kwargs)[source]¶
Bases:
DrawPolyLines原点 (0,0) を中心とした×印(Cross)を書く.
- Parameters
ticklen (float) – ×印の交差辺の長さ. default=4.0.
line_width (float) – ×印の交差辺の線幅.default=0.75.
- class board.cboard.DrawPolyLines(**kwargs)[source]¶
Bases:
DrawCommandBase描画演算オブジェクトのクラス.DrawCommandBaseクラスのサブクラス.
- Parameters
**kwargs (dict) – 上位コマンドに渡すオプション引数.
Examples:
#サイズが4x4の十字型(X)を書く. P = DrawPolyLine() P.move_to(0.0, 0.0) P.line_to(4.0, 4.0) P.move_to(0.0, 4.0) P.line_to(4.0, 0.0)
- arrange_box_self()[source]¶
修飾情報から自身の配置情報を計算する.子孫クラスでオーバーライドすること
Notes
自身の配置情報として変換と包含矩形を求める.終了前に属性`self.box`と`self.trans`を設定すること.次の属性を操作する:
読み出し: self.boxes (非None)
書き込み: self.box (非None)
書き込み: self.trans (Noneも許す)
- class board.cboard.DrawRectangle(x=0.0, y=0.0, width=None, height=None, **kwargs)[source]¶
Bases:
DrawCommandBase描画演算オブジェクトのクラス.DrawCommandBaseクラスのサブクラス.
- Parameters
x (float) – default=0.0.
y (float) – default=0.0.
**kwargs (dict) – 上位コマンドに渡すオプション引数.
- class board.cboard.GridPackerBoard(**kwargs)[source]¶
Bases:
PackerBoard描画を行う画盤(board)のクラス.`PackerBoard`のラッパー.
- Parameters
**kwargs – 他のキーワード引数.上位クラスに渡される.
- class board.cboard.MarginWrapper(child=None, margin=None, **kwargs)[source]¶
Bases:
WrapperBoard唯一の子を指定した余白(margin)で包むラッパーのクラス, 自身が持たないメソッド呼び出しを子に転送する.
- Parameters
child (BoardBase) – 子として保持するBoardBaseオブジェクト.
margin (float, tuple(float, float)) – 子の外周に付与する余白の情報
**kwargs – 他のキーワード引数.上位クラスに渡される.
- margin¶
余白情報 margin = (margin_x, margin_y).
- Type
tuple(float,float)
- box¶
修正された包含矩形.子の包含矩形の外側にmarginで指定したx方向とy方向の幅の余白を拡大した形状になる.関数`get_box()`で返される.
- Type
tuple(float,float,float,float)
- trans¶
修正された変換.拡大された包含矩形の左上隅を原点とする.
- Type
- verbose¶
ログ出力のフラグ
- Type
bool
- class board.cboard.PackerBoard(orient='x', packing=None, cell_margin=None, cell_side=None, **kwargs)[source]¶
Bases:
CoreBoard画盤(board)のクラス.Boardのサブクラス
- Parameters
orient (str) – 並べる主軸方向の指定.`x`または`y`の値をとる.default=’x’
packing (str) – 内部のボードの詰め方の指定情報. packing in (‘even’,’pack’)
width (float) – 自身の幅.default=None.
height (float) – 自身の高さ.default=None.
kwargs – 他のキーワード引数.上位クラスに渡される.
- add(child: Optional[BoardBase] = None) BoardBase[source]¶
子を追加する.関数`BoardBase.put(child, trans=None)`へのラッパー関数.
Example:
root = Canvas() parent= root.put(Board()) child = parent.add(Rectangle()) child = parent.add(Circle())
- arrange_box_children(**kwargs)[source]¶
自身の子すべてを再配置する.必ず終わりにself.boxesを設定すること. 次の属性を操作する:
self.boxes
- children_box_enumerated() iterator[source]¶
添字とエントリの対`idx, triple`の並び children を返す. 現在は,`triple`は,三つ組`trans, child, child_box`である.必要なら部分クラスで上書きする.
- Returns
三つ組`trans (GeoTransform)`, child (BoardBase), child_box (tuple(float,float,float,float))`のリスト.
- Return type
(list)
Notes
ただし,childはNoneでないことを保証し,そうでないときはErrorを投げる. transとchild_boxはNoneでも良い.
- class board.cboard.PlaceBoard(**kwargs)[source]¶
Bases:
CoreBoard画盤(board)のクラス: 座標系オブジェクト
- Parameters
**kwargs – 他のキーワード引数.上位クラスに渡される.
- verbose¶
ログ出力のフラグ
- Type
bool
- count = 0¶
- put(child=None, trans=None) BoardBase[source]¶
子を追加する.
- Parameters
trans (cairo.Matrix) – 自座標における子の配置を指示する変換行列.原点にある子を所望の場所に配置するためのアフィン変換を表す.
child (Board) – 子として追加するBoardオブジェクト
- Returns
追加した子
- Return type
(Board)
Example:
root = Canvas() child = root.put(Board()) child = parent.put(trans=Translate(dest=(1,2)), Rectangle())
- class board.cboard.SideWrapper(side=None, **kwargs)[source]¶
Bases:
WrapperBoard唯一の子を,指定した側面(side)に基づいて配置するラッパーのクラス. 自身が持たないメソッド呼び出しを子に転送する.
- Parameters
**kwargs – 他のキーワード引数.上位クラスに渡される.
- class board.cboard.WrapperBoard(child=None, **kwargs)[source]¶
Bases:
BoardBaseラッパーのクラス.描画は行わず,唯一の子の位置パラメータ決めのみを行う.自身が持たないメソッド呼び出しを,唯一の子に転送する. `CoreBoard`とは比較不能(兄弟)な継承関係をもつ.
- Parameters
child (BoardBase) – 子として保持するBoardBaseオブジェクト.
**kwargs – 他のキーワード引数.上位クラスに渡される.
- verbose¶
ログ出力のフラグ
- Type
bool
- arrange_box_self()[source]¶
アンカー情報から,変換と包含矩形を計算する.子孫クラスでオーバーライドする. 次の属性を操作する:
self.boxes : 読み出し
self.box : 書き込み
self.trans : 書き込み
crt.ANCHOR_ORIGINは,左上原点のアンカー指定(left,top)
- board.cboard.numpair_normalize(margin=None, default=None)[source]¶
マージン指定を正規化する.margin が数の対(float,float)ならばそのまま返し, margin が数ならば,(margin,margin)を返す. margin==Noneのときは,(0.0,0.0)を返す.
- board.cboard.pair_normalize(pair=None)[source]¶
変換と子ボードの対を分解し,検査して返す.
- Parameters
pair (tuple()) –
- Returns
変換と子ボードの対 (trans, child)
- Return type
(tuple())
- board.cboard.perturb_point(x=0.0, y=0.0, max_perturb=0.0)[source]¶
与えられた点 (x, y) に対して,幅 [(-1)*max_perturb, (+1)*max_perturb] の摂動を与えた点(x1, y1)を返す. :param x: 入力点のx- and y-coordinates.デフォールト値 x = y = 0.0 :type x: float :param y: 入力点のx- and y-coordinates.デフォールト値 x = y = 0.0 :type y: float
- Returns
摂動を加えた点のx- and y-coordinates
- Return type
x1, y1 (float)
Notes
xとyが省略されたときは,値0.0, 0.0を中心とした摂動を返す.
board.common module¶
- board.common.elemtype_normalize(etype=None)[source]¶
与えられた入力オブジェクトetypeが,正しい型オブジェクトかを検査し, 型リストetypes_を返す.もしそうでなければ,エラーを投げて異常終了する. ただし,etype==Noneのときは,そのまま返す(任意の型を表す).
- Parameters
etype (Object) – 基礎型,または,基礎型のリスト(和)
- Returns
正規化された型リスト
- Return type
(list(型))
- board.common.ensure(test, msg=None, outs=None)[source]¶
ブール式test を評価し,真ならばTrueを返し,偽ならば,panic関数を呼んで,メッセージ文字列を出力して実行を中止する.
- Parameters
test (ブール式) – テストのためのブール式
msg (str) – メッセージ文字列
outs (outstream) – 出力ストリーム.デフォールトはsys.stdout.
- board.common.ensure_box(value=None, name=None, nullable=True, default=None, etype=None, to_check_only=False)[source]¶
値が指定された型の点(数の対)かどうかを検査し,値valueをそのまま返す. 条件を満たさなければ,エラーを投げて終了する. 関数`ensure_vector`のラッパー.
空のときに,フラグ`nullable==False`ならば即時にエラーを投げて停止する.
そうでないときに,非空のデフォールト値`default`が与えられていれば,それを返す.
- Parameters
value (Any) – 値
etype (tuple(type)) – 選言型のタプル.defaultは(float,int).
nullable (bool) – 値がNoneでも良いことを表すフラグ.
etype – 型のタプル.型の選言を表す.数値ベクトルは,デフォールトの`etype=(int, float)`で良い.
default (Any) – 任意のデフォールト値を与える.値がNoneのとき返される.
to_check_only (bool) – もし真ならば,型を満たさない時は,エラーを投げずに実行されて,Noneを返す.default is False.ここに,to_check_onlyが真ならば,`nullable==False`および`default = None`に上書きされるので注意.
- board.common.ensure_defined(value=None, default=None, required=False)[source]¶
空でなければ,値valueをそのまま返す.代入時に,変数の値が空でないことを保証するために用いる.
空のときに,フラグ`required==True`ならば即時にエラーを投げて停止する.
そうでないときに,非空のデフォールト値`default`が与えられていれば,それを返す.
- Parameters
value (Any) – 値
default (Any) – デフォールト値
required (bool) – 値が非Noneであることを要請するフラグ.
- board.common.ensure_point(value=None, name=None, nullable=True, default=None, etype=None, to_check_only=False)[source]¶
値が指定された型の点(数の対)かどうかを検査し,値valueをそのまま返す. 条件を満たさなければ,エラーを投げて終了する. 関数`ensure_vector`のラッパー.
空のときに,フラグ`required==True`ならば即時にエラーを投げて停止する.
そうでないときに,非空のデフォールト値`default`が与えられていれば,それを返す.
- Parameters
value (Any) – 値
nullable (bool) – 値がNoneでも良いことを表すフラグ.
default (Any) – 任意のデフォールト値を与える.値がNoneのとき返される.
etype (tuple(type)) – 型のタプル.型の選言を表す.数値ベクトルは,デフォールトの`etype=(int, float)`で良い.
to_check_only (bool) – もし真ならば,型を満たさない時は,エラーを投げずに実行されて,Noneを返す.default is False.ここに,to_check_onlyが真ならば,`nullable==False`および`default = None`に上書きされるので注意.
- board.common.ensure_value(value=None, default=None, etype=None, nullable=True, name='it', typename=None, to_check_only=False)[source]¶
入力として受け取った値`value`が指定された要素型`etype`の値であるかを検査し,条件を満たせば値をそのまま返す.もし指定の条件を満たさなければ,エラーを投げて終了する.
空でなければ,値valueをそのまま返す.
空のときに,フラグ`required==True`ならば即時にエラーを投げて停止する.
そうでないときに,非空のデフォールト値`default`が与えられていれば,それを返す.
- Parameters
value (Any) – 値
etype (tuple(type)) – 型のタプル.型の選言を表す.デフォールト値`etype=None`.
default (Any) – 任意のデフォールト値を与える.値がNoneのとき返される.
nullable (bool) – 値がNoneでも良いことを表すフラグ.nullable=Trueかつ値がNullならばエラーを投げる.
to_check_only (bool) – もし真ならば,型を満たさない時は,エラーを投げずに実行されて,Noneを返す.default is False.ここに,to_check_onlyが真ならば,`nullable==False`および`default = None`に上書きされるので注意.
Notes
データの検査を行う関数の実装用に用いる.典型的な使用例は,次の通り:
変数の値を保証して代入するためのフィルタの実装
値の型を保証した代入
Note
引数`etype`の組の要素として,`None`の型を与えたい時は,要素型として`type(None)`を与えること.
- board.common.ensure_vector(value=None, dim=2, default=None, etype=None, nullable=True, name='it', typename=None, to_check_only=False)[source]¶
入力として受け取った値`value`が指定された要素型`etype`と要素数`dim`をもつ数値の組であるかを検査し,条件を満たせば値をそのまま返す.もし指定の条件を満たさなければ,エラーを投げて終了する.
空でなければ,値valueをそのまま返す.
空のときに,フラグ`required==True`ならば即時にエラーを投げて停止する.
そうでないときに,非空のデフォールト値`default`が与えられていれば,それを返す.
- Parameters
value (Any) – 値
dim (int) – ベクトルの長さ
etype (tuple(type)) – 型のタプル.型の選言を表す.デフォールト値`etype=None`.
default (Any) – 任意のデフォールト値を与える.値がNoneのとき返される.
nullable (bool) – 値がNoneでも良いことを表すフラグ.nullable=Trueかつ値がNullならばエラーを投げる.
to_check_only (bool) – もし真ならば,型を満たさない時は,エラーを投げずに実行されて,Noneを返す.default is False.ここに,to_check_onlyが真ならば,`nullable==False`および`default = None`に上書きされるので注意.
Notes
データの検査を行う関数の実装用に用いる.典型的な使用例は,次の通り:
変数の値を保証して代入するためのフィルタの実装
値の型を保証した代入
Note
引数`etype`の組の要素として,`None`の型を与えたい時は,要素型として`type(None)`を与えること.
- board.common.get_cyclic(elements=None, idx=0)[source]¶
非負整数idxを受け取り,長さnの配列の`(idx % n)`番目の要素を返す. :param elements=None: :type elements=None: list(object) :param idx=0: :type idx=0: int
- Returns
選択された要素
- Return type
object
Notes
どのように大きなidxに対しても,添字エラーにならず何かの要素を返す.
- board.common.is_typeof_seq(L, etype=None, dim=None, verbose=False)[source]¶
オブジェクトLが,指定された型と長さをもつ系列オブジェクトかを真偽で返す. さらに系列型であり,etypeがNoneでないときに,系列の全ての要素が型etypeをもつならば`True`,そうでなければ`False`を返す.
- Parameters
L (object) – オブジェクト
etype (Type) – int, float, strなどのprimitive型,または,型の選言(union etype)を表すリスト (ty1, …, tyN).
length (int) – 系列が満たすべき長さ
verbose (bool) – ログ出力のスイッチ
- Returns
オブジェクトLが,etypeの型指定を満たす系列型ならば`True`を, そうでなければ`False`を返す.
- Return type
(bool)
Example:
>>> com.is_typeof_seq([1,2,3], etype=int) True >>> com.is_typeof_seq([1,2.0,3], etype=int) False >>> com.is_typeof_seq([1,2.0,3], etype=(int, float)) True >>> com.is_typeof_seq([1,'b',3], etype=int) False >>> com.is_typeof_seq([1,'b',3], etype=(int, str)) True
- board.common.is_typeof_value(obj, etype=None)[source]¶
オブジェクトobjが空でなく,型etypeをもつとき,`True`を返し,それ以外のとき`False`を返す.
- Parameters
obj (object) – オブジェクト
etype (Type) – 型のリスト`(ty1, …, tyN)`.
- Returns
オブジェクトobjが,etypeの型指定を満たすならば`True`を, そうでなければ`False`を返す.
- Return type
(bool)
- board.common.log(msg, outs=<_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>)[source]¶
標準関数print(msg)のラッパー.出力ストリームoutsを与えるとそこへ,指定がなければstd.errへ,print(msg)の出力を書き込む.
- Parameters
msg (str) – 出力する文字列
outs (出力ストリーム) – 出力先.default=sys.stderr.
- board.common.panic(msg, outs=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>)[source]¶
メッセージ文字列を標準出力に印刷して,例外を投げて実行を中止する.
- Parameters
msg (str) – メッセージ文字列
outs (outstream) – 出力ストリーム.デフォールトはsys.stdout.
board.crtool module¶
Cairoライブラリの描画機能を提供するモジュール.
- board.crtool.FONT_SLANT¶
フォントの斜体スタイルを表す定数の辞書.次の値をもつ
‘italic’: cairo.FontSlant.ITALIC
‘normal’: cairo.FontSlant.NORMAL
‘oblique’: cairo.FontSlant.OBLIQUE
- Type
dict(str, cairo.FontSlant)
- board.crtool.FONT_WEIGHT¶
フォントの太字スタイルを表す定数の辞書.次の値をもつ.
‘bold’: cairo.FontWeight.BOLD
‘normal’: cairo.FontWeight.NORMAL
- Type
dict(str, cairo.FontWeight)
- board.crtool.LINE_CAP¶
線の終端のスタイルを表す定数の辞書.次の値をもつ.
‘square’: cairo.LINE_CAP_SQUARE
‘round’: cairo.LINE_CAP_ROUND
‘butt’: cairo.LINE_CAP_BUTT
- Type
dict(str, Object)
- board.crtool.LINE_JOIN¶
線の結合部のスタイルを表す定数の辞書.次の値をもつ.
‘miter’: cairo.LINE_JOIN_MITER
‘round’: cairo.LINE_JOIN_ROUND
‘bevel’: cairo.LINE_JOIN_BEVEL
- Type
dict(str, Object)
- board.crtool.ANCHOR_X¶
位置合わせ用のx方向のアンカー値を表す定数の辞書.範囲`[0,1]`の値をとり,辺上の正規化された位置を表す.複数の別名を提供している.
‘left’ : 0.0, ‘center’ : 0.5, ‘right’ : 1.0, #標準名
‘beg’ : 0.0, ‘mid’ : 0.5, ‘end’ : 1.0, #xとy方向の共通名
- Type
dict(str, float)
- board.crtool.ANCHOR_Y¶
位置合わせ用のy方向のアンカー値を表す定数の辞書.範囲`[0,1]`の値をとり,辺上の正規化された位置を表す.複数の別名を提供している.
‘top’ : 0.0, ‘middle’ : 0.5, ‘bottom’ : 1.0, #標準名
‘bot’ : 1.0, ‘above’ : 0.0, ‘below’ : 1.0, #別名
‘beg’ : 0.0, ‘mid’ : 0.5, ‘end’ : 1.0, #xとy方向の共通名
- Type
dict(str, float)
- board.crtool.MYCOL¶
色を表す定数の辞書.色名の文字列に,RGB表現の三つ組$(r,g,b) in [0,1]^3$を対応させる.
pure color: ‘red’:(1,0,0),’blue’:(0,0,1),’lightgreen’:(0,1,0),
basic color: ‘yellow’:(1,1,0),’magenta’:(1,0,1),’cyan’:(0,1,1),
dark color: ‘darkgreen’:(0,0.5,0),’darkred’:(0.5,0,0),’darkblue’:(0,0,0.5),
alias color: ‘green’:(0,0.5,0),’brown’:(0.5,0,0),’navy’:(0,0,0.5),’orange’:(1.0 - 0.125, 0.0 + 0.125, 0.0),
black-and-white: ‘black’:(0,0,0), ‘grey0’:(0,0,0), ‘grey10’:(0.10,0.10,0.10), ‘grey25’:(0.25,0.25,0.25), ‘grey50’:(0.50,0.50,0.50), ‘grey75’:(0.75,0.75,0.75), ‘grey100’:(1,1,1), ‘white’:(1,1,1).
- Type
dict(str, (float,float,float))
- board.crtool.DARKCOL¶
色を表す定数の辞書.色名の文字列に,RGB表現の三つ組$(r,g,b) in [0,1]^3$を対応させる.
pure color: ‘red’:(1,0,0), ‘blue’:(0,0,1),
dark color: ‘darkgreen’:(0,0.5,0), ‘darkred’:(0.5,0,0), ‘darkblue’:(0,0,0.5), ‘orange’:(1.0 - 0.125, 0.0 + 0.125, 0.0),
black-and-white: ‘black’:(0,0,0), ‘grey0’:(0,0,0), ‘grey10’:(0.10,0.10,0.10), ‘grey25’:(0.25,0.25,0.25), ‘grey50’:(0.50,0.50,0.50), ‘grey75’:(0.75,0.75,0.75), ‘grey100’:(1,1,1),
- Type
dict(str, (float,float,float))
- class board.crtool.GeoTransform[source]¶
Bases:
object空間変換の抽象クラス.これを継承した具体クラスを作成して用いる.
- class board.crtool.ImageBoard(imgtype=cairo.Format.ARGB32, format='pdf', outfile='out', display_shape=None, verbose=False)[source]¶
Bases:
objectCairoの文脈(context)の生成と出力を実装するクラス.
本オブジェクトの生成時に,オプション引数を与えると,Cairo.contextを生成し,保持する.
- Parameters
imgtype (str) – 画像フォーマット (cairo)
format (str) – 出力ファイルの描画フォーマット (cairo) in “pdf”, “png”
display_shape (tuple(int, int)) – 画像のサイズ (xsize, ysize)
outfile (str) – 出力画像ファイル名の本体を表す文字列.例:out
verbose (bool) – デバッグ/実行情報の表示のフラグ
- ims¶
Cairoの画像オブジェクト(Surface)を保持する.
- Type
cairo.ImageSurface, cairo.PDFSurface
- cr¶
Cairoの文脈オブジェクト.関数`context()`で取得し,各種のCairoの描画操作,または,crtoolの描画操作を適用できる.
- Type
cairo.Context
- class board.crtool.Rotate(angle=None)[source]¶
Bases:
GeoTransform並行移動の変換のクラス
- Parameters
angle (float) – 回転の量.単位はラジアンであり,math.pi*0.5, `math.pi/6`などのように指定する.
- class board.crtool.Translate(dest=None, src=None)[source]¶
Bases:
GeoTransform並行移動の変換のクラス.次の引数 destかsrcのどちらか一つを指定する.
- Parameters
dest (tuple(float,float)) – 原点を移す先の点の座標
src (tuple(float,float)) – 点原点に移す元の点(アンカー)
Attributes: move (tuple(float, float)) : 並行移動ベクトル vect = (tx, ty)
- board.crtool.anchor_point_by_vector(box=None, vect=None)[source]¶
矩形`box`において,正規化アンカーベクトル`vect`が表すアンカー点を返す.
- Parameters
vect (tuple(float, float)) – 正規化アンカー位置`vect=(ax,ay) in [0,1]^2`
- Returns
包含矩形box上の点 a = (ax, ay)
- Return type
(tuple(float, float))
- board.crtool.anchor_vector(anchor_str=None, default=None, strict=False)[source]¶
文字列対によるアンカー表記を受け取り,対応する正規化アンカーベクトル`a = (ax,ay) in [0,1]^2`を返す.
- Parameters
anchor_str (str, tuple(str,str)) – 文字列対によるアンカー表記.それ自体が`None`でも良いし,対の片方または両方の要素が`None`を取っても良い.
default (tuple(str,str)) – アンカー表記のデフォールト値.`anchor_str==None`のとき,代わりに用いられる.
Note
アンカー表記の対の要素に`None`を許す.
Example:
anchor=('left' , 'top') => (0.0, 0.0) anchor=('mid' , 'mid') => (0.5, 0.5) anchor=('right', 'bot') => (1.0, 1.0) anchor=('left' , None) => (0.0, 0.5) anchor=(None , 'top') => (0.5, 0.0)
- board.crtool.box_apply_trans(box, trans=None, verbose=False)[source]¶
変換を適用する
- Parameters
cr (Cairo.Context) – Cairo.Context
trans (GeoTransform) – 空間変換
- board.crtool.box_from_shape(shape=None, origin=None)[source]¶
形状shape=(sx, sy)を受け取り,矩形 box = (x0, y0, x1, y1)を返す.
- board.crtool.box_union(boxes, box1, verbose=False)[source]¶
矩形の対を受け取り,それらの最小包含長方形を表す対を返す.
- Parameters
boxes – 点 (x0, y0) または矩形 (x0, y0, x1, y1)
box1 – 点 (x0, y0) または矩形 (x0, y0, x1, y1)
- Returns
矩形 box = [p, q]
- Return type
rect
- board.crtool.cr_add_alpha(rgb=None, alpha=0.0)[source]¶
色指定の三つ組rgbにalpha in [0.0,1.0]を追加する
- Parameters
rgb (tuple(float, float, float)) – 色を表す3つ組 $(r,g,b) in [0,1]^3$.
alpha (float) – アルファ値を表す実数 in $lpha in [0,1]$.
- Returns
アルファ値つきの色を表す4つ組 $(r,g,b, a) in [0,1]^4$.
- Return type
rgb (tuple(float, float, float))
- board.crtool.cr_apply_trans(trans=None, context=None, verbose=False)[source]¶
変換を適用する
- Parameters
context (Cairo.Context) – Cairo.Context
trans (GeoTransform) – 空間変換
- board.crtool.cr_arc(x=None, y=None, r=None, start=None, end=None, context=None, **kwargs)[source]¶
円盤を描く.
- Parameters
x (float) – x-coordinate of the center
y (float) – y-coordinate of the center
r (float) – radius
start (float) – the starting and ending angle in radian
end (float) – the starting and ending angle in radian
fill (bool) – fill (True) or stroke (False, default)
- Returns
包含矩形
- Return type
(Rect)
- board.crtool.cr_arrow_head(x, y, x_last, y_last, context=None, head_shape=None, head_length=10, head_angle=0.3490658503988659, head_offset_ratio=0.3, to_surpress_short_head=True, **kwargs)[source]¶
ペンを移動する.
- Parameters
x (float) – x-coordinate of the center
y (float) – y-coordinate of the center
x_last (float) – 矢印をもつ場合に,前の点の座標を与える.矢印の向きを決める.
y_last (float) – 矢印をもつ場合に,前の点の座標を与える.矢印の向きを決める.
context (cairo.Context) – 文脈オブジェクト.必須.
head_shape (str) – 矢印頭の形状. 省略時は,DEFAULT_HEAD_SHAPE=’sharp’.
head_length (float) – デフォールトARROWHEAD_LENGTH
head_angle (float) – デフォールトARROWHEAD_ANGLE
head_offset_ratio (float) – デフォールトARROWHEAD_OFFSET_RATIO
to_surpress_short_head (bool) – 矢印頭と同程度以下の長さの線分に対して矢印頭の描画を省略する.デフォールトTrue
Notes
矢印頭の形状 head_shape (str) は次のいずれかの値をとる.
stroke : 2辺の輪郭線によるV字型の矢印頭
triangle : 塗りつぶした二等辺三角形の矢印頭
sharp : 塗りつぶした尖った鏃型の矢印頭.`triangle`の根本が凹んだ形.
関数`line_to`による線分`(x_last, y_last), (x, y)`の描画時に呼びだされる.
- board.crtool.cr_circle(x=None, y=None, r=None, context=None, **kwargs)[source]¶
円盤を描く
- Parameters
x (float) – x-coordinate of the center
y (float) – y-coordinate of the center
r (float) – radius
fill (bool) – fill (True) or stroke (False, default)
- Returns
包含矩形
- Return type
(Rect)
- board.crtool.cr_draw_marker(ax, ay, r=None, context=None, **kwargs)[source]¶
関数cr_draw_marker_circleのラッパー関数.下位互換性のため.
- board.crtool.cr_draw_marker_circle(ax, ay, r=None, context=None, **kwargs)[source]¶
円形(circle)のマークを描画する.
- Parameters
ax (float) – 配置位置のx座標
ay (float) – 配置位置のy座標
r (float) – 半径.
context (cairo.Context) – Cairoの文脈オブジェクト.
- board.crtool.cr_draw_marker_cross(x=0.0, y=0.0, angle=0.7853981633974483, ticklen=4, context=None, **kwargs)[source]¶
十文字型(crossing)のマークを描画する.
- Parameters
x (float) – 配置位置のx座標
y (float) – 配置位置のy座標
angle (float) – マーカーの十文字の向きをラジアンで指定する実数.
ticklen (float) – 十文字の各線分の長さ(default: DEFAULT_MARKER_TICKLEN)
context (cairo.Context) – Cairoの文脈オブジェクト.
- board.crtool.cr_line_to(x, y, context=None, has_arrow=False, x_last=None, y_last=None, **kwargs)[source]¶
ペンを移動する.
- Parameters
x (float) – x-coordinate of the center
y (float) – y-coordinate of the center
context (cairo.Context) – 文脈オブジェクト
has_arrow (bool) – 線分端に矢印をもつか?
x_last (float) – 矢印をもつ場合に,前の点の座標を与える.矢印の向きを決める.省略可能.
y_last (float) – 矢印をもつ場合に,前の点の座標を与える.矢印の向きを決める.省略可能.
arrow_head (str) – 矢印の形状. 値は,関数`crtool.cr_arrow_head`を参照のこと.
- Returns
包含矩形
- Return type
(Rect)
- board.crtool.cr_move_to(x, y, context=None)[source]¶
ペンを移動する.
- Parameters
x (float) – x- and y-coordinate of the center
y (float) – x- and y-coordinate of the center
- Returns
包含矩形
- Return type
(Rect)
- board.crtool.cr_process_stroke_or_fill(context=None, **kwargs)[source]¶
図形描画後の書き出しを行う.
- Parameters
context (cairo.Context) – Cairoの文脈オブジェクト.
cmd (str) – 次の命令の一つ: ‘stroke’, ‘fill’, ‘stroke_preserve’, ‘fill_preserve’.
preserve (bool) – 演算後のパス保持のフラグ.パスを保存するなら`True`, しないなら`False`
- board.crtool.cr_rectangle(x=None, y=None, width=None, height=None, context=None, fill=None, edge_rgb=None, **kwargs)[source]¶
矩形を描く
- Parameters
x (float) – x-coordinate of the center
y (float) – y-coordinate of the center
width (float) – width
height (float) – height
fill (bool) – fill if True or stroke if False (default)
- Returns
包含矩形
- Return type
(Rect)
- board.crtool.cr_set_context_parameters(context=None, **kwargs)[source]¶
cairo.Contextに各種パラメータを設定するラッパー関数.各種の代替キーを提供する.
- Parameters
context (cairo.Context) – Cairoの文脈オブジェクト.
source_rgb (tuple(float, float, float)) – Cairoの色指定の数の三つ組.代替キー’rgb’
linewidth (float) – 線幅.代替キー’line_width’, ‘pen_width’
linecap (str) – 線端の形状.代替キー’line_cap’, ‘line_end’
fontsize (float) – フォントサイズ.代替キー’font_size’, ‘fsize’.
fontfamily (str) – フォントファミリー指定.代替キーfont_family, ffamily.
fontslant (str) – フォントの斜体指定.代替キーfont_slant, fslant.値は`(‘italic’, ‘normal’, ‘oblique’)`をとる.詳しくは,関数`cr_font_face`を参照のこと.
fontweight (str) – フォントの太字指定.代替キーfont_weight, fweight.値は,`(‘normal’, ‘bold’)`をとる.詳しくは,関数`cr_font_face`を参照のこと.
- board.crtool.cr_set_font_face(context=None, **kwargs)[source]¶
cairo.ContextにFont Faceを設定する.
- Parameters
context (cairo.Context) – Cairoの文脈オブジェクト.
fontfamily (str) – Cairoのフォントファミリー指定.代替キーfont_family, ffamily
fontslant (str) – Cairoの斜体指定.値は`(‘italic’, ‘normal’, ‘oblique’)`をとる.詳しくは,辞書`crtool.FONT_SLANT`を参照のこと.代替キーfont_slant, fslant.
fontweight (str) – Cairoの太字指定.値は,`(‘normal’, ‘bold’)`をとる.詳しくは,辞書`crtool.FONT_WEIGHT`を参照のこと.代替キーfont_weight, fweight.
- board.crtool.cr_set_source_rgb(source_rgb=None, context=None)[source]¶
contextに色source_rgbを設定する. source_rgbはアルファなし(r,g,b)とアルファあり(r,g,b,a)の両方を受け付ける.
- board.crtool.cr_text(ox, oy, msg=None, context=None, **kwargs)[source]¶
文脈にテキストを描画する.Cairo.show_text(msg)のラッパー.
- Parameters
context (cairo.Context) – Cairoの文脈オブジェクト.
ox (float) – テキストの配置位置 (ox, oy)
oy (float) – テキストの配置位置 (ox, oy)
msg (str) – テキスト
- board.crtool.cr_text_extent(ox, oy, msg=None, context=None, **kwargs)[source]¶
テキストの配置情報を事前に取得する.Cairo.context.text_extents(msg)のラッパー.
- Parameters
context (cairo.Context) – Cairoの文脈オブジェクト.
ox (float) – テキストの配置位置 (ox, oy)
oy (float) – テキストの配置位置 (ox, oy)
msg (str) – テキスト
- Returns
テキストの描画情報の6つ組 (x, y, width, height, dx, dy)
- Return type
(tuple)
Notes
返り値の6つ組は次の通り
x, y : テキストの配置位置.原点は左上
width, height : テキストの包含矩形のサイズ
dx, dy : グリフ位置の増分
- board.crtool.get_display_shape(shape=None, portrait=None)[source]¶
入力の画像サイズ指定shapeから, 画像サイズを表す正数の組 shape = (xsize,ysize)を返す.
- Parameters
shape (str, (float,float)) – 出力画像サイズを表す文字列sizenameまたは正数の組(xsize, ysize)
portrait (bool) – 画面向きの指定.Trueならば縦長画面か,Falseならば横長画面.default=False.
- Returns
画像サイズを表す正数の組
- Return type
((float,float))
- board.crtool.lookup_dict(dict=None, key=None, default=None)[source]¶
与えられた辞書を,文字列キーで検索して,値を返す. ただし,辞書のキーは小文字化されていることを仮定する. このとき,次の点でpython組み込みの辞書と異なる.
キー文字列は大文字小文字を区別しないこと.
キーが登録されていなければ引数defaultの値を返すこと.
- Parameters
dict (dict) – python組み込みの辞書.キーが小文字のみであること.
key (str) – キー文字列.大文字小文字の別は無視される.
default (Any) – デフォールト値.
- Returns
キーに対応する値.ただし,値が見つからない時は,default値が返される.
- Return type
(Any)
- board.crtool.vt_add(vec0, vec1)[source]¶
二つのベクトルvec0, vec1の成分和のベクトル`vec0 + vec1`を返す.
- Parameters
vec0 (tuple(float,float)) – vec0 = (x0, y0)
vec1 (tuple(float,float)) – vec1 = (x1, y1)
- Returns
vec = (x0+x1, y0+y1)
- Return type
(tuple(float,float))
- board.crtool.vt_mult(vec0, vec1)[source]¶
二つのベクトルvec0, vec1の成分ごと積のベクトル`vec0 * vec1`を返す.
- Parameters
vec0 (tuple(float,float)) – vec0 = (x0, y0)
vec1 (tuple(float,float)) – vec1 = (x1, y1)
- Returns
vec = (x0*x1, y0*y1)
- Return type
(tuple(float,float))
board.kwargs module¶
- board.kwargs.extract(kwargs=None, keys=[], required=[], deleted=[], trans=[], func=None, reduced=False, verbose=False)[source]¶
キーワード引数辞書から指定した属性を抽出して得られた新しい辞書を返す. このとき,パラメータtransに指定したキーワード属性は,ptからpxへ単位変換を行う.
- Parameters
kwargs (dict) – 元のキーワード引数の辞書.
keys (list(str)) – 抽出するキーワードのリスト.Noneならば,transと全てのキーをコピーする.空リスト`[]`のときは,trans以外のキーはコピーしない
required (list(str)) – 必須のキーワードのリスト.検査して含まれてなければ,エラーで停止する.keysと重複して良い.
deleted (list(str)) – 除去するキーワードのリスト.keysと重複してはいけない(重複すると返り値の辞書から除去されるので注意).
trans (list(str)) – 値を変換して抽出するキーワードのリスト(keysに含まれていなくても良い)
func (lambda) – 座標変換関数. transのための座標変換関数またはラムダ式.ここに,関数func(xy)は,引数として,点xy=(x0,y0)または点のリストxy=[(x0,x1), (y0,y1), …]の型の入力を受けつけること.
reduced=False (bool) – 関数kwargs.reduceを用いて,値がNoneのキーワードを除去したコピーを作成して返す.非破壊的であり,元の辞書は変更しない.
- Returns
新しいキーワード引数の辞書 kwargs1.
- Return type
dict
全ての属性をコピーしたい時は,引数keys=Noneとおく.このとき,transで指定した変換を行い,他の全ての属性をコピーする.
もしtrans以外の属性をコピーしたくない時は,明示的に`keys=[]`とおく.(空リスト[]と空値Noneのあつかいは異なるので注意)
Examples
例:描画情報`xy`を座標変換し,他のすべての属性を取り出す:
kwargs1 = kw.extract(kwargs, trans=['xy'], keys=None)
例:属性’fill’, ‘width’, ‘outline’を取り出す:
kwargs1 = kw.extract(kwargs=kwargs, keys=['fill', 'width', 'outline'])
例:属性’fill’, ‘width’, ‘outline’を取り出す:
kwargs1 = kw.extract(kwargs=kwargs, keys=['xy', 'text', 'font', 'size', 'anchor', 'orient', 'direction',])
例: 指定属性 ‘margin’, ‘padding’ 以外の全ての属性を取り出す:
kwargs1 = kw.extract(kwargs, keys=None, deleted=['margin', 'padding'])
- board.kwargs.get(kwargs=None, key=None, altkeys=None, required=False, default=None)[source]¶
キーワード辞書kwargsにおいて,key値の検査をして,その値を返す. もしそのkeyが見つからない場合には,続いて,次の動作を順に行う: - キーdefaultが指定されていればそれを返す.してされていなければ,次へ進む. - ブール値required=Trueが指定されていれば,直ちにエラーを起こして停止する. - もし見つからなければNoneを返す.
- Parameters
kwargs (dict) – キーワード辞書 (None)
key (int or str) – 指定したキーワード.
default (object) – 任意の値.指定キーワードの値がNoneの場合に返すデフォールト値.
required (bool) – 必須キーワードかのフラグ.この値がTrueの場合,キーワードの値が未定義(None)ならば,エラーを投げる.default=False.
- Returns
辞書におけるキーワードkeyの値.値がNoneの場合は上記の説明に従う.
- Return type
object
- board.kwargs.get_required(kwargs=None, key=None)[source]¶
キーワード辞書kwargsのkeyの値を返す. 未定義ならエラーを投げる
get(kwargs=kwargs, key=key, default=None)へのラッパー.
- board.kwargs.reduce(kwargs=None)[source]¶
キーワード辞書kwargsからNone値のキーと値を取り除き,残りを複製して得られた辞書を返す.元の辞書は破壊されず,コピーを返す.
- Parameters
kwargs (dict) – 元のキーワード引数の辞書.
- Returns
新しいキーワード引数の辞書 kwargs1.
- Return type
dict
- board.kwargs.replace_apply(kwargs=None, keys=None, func=None, verbose=False)[source]¶
キーワード引数辞書において,指定したキーに関数funcを適用して置き換える.
- Parameters
kwargs (dict) – 元のキーワード引数の辞書.
keys (list(str)) – 抽出するキーワードのリスト.Noneならば,transと全てのキーをコピーする.空リスト`[]`のときは,trans以外のキーはコピーしない
func (lambda) – 座標変換関数. transのための座標変換関数またはラムダ式.ここに,関数func(xy)は,引数として,点xy=(x0,y0)または点のリストxy=[(x0,x1), (y0,y1), …]の型の入力を受けつけること.
- Returns
新しいキーワード引数の辞書 kwargs1.
- Return type
dict
引数のkwargsに破壊的変更を加えるので,注意すること.
主に,数値引数の離散化に用いる(px).
board.loggable module¶
ボードの基本機能を提供するモジュール.
loggableモジュールは,ボードオブジェクトが,複合画像の木のノードとしてもつ最低限の機能を提供する.
複合画像を表すボードオブジェクトは木構造をなす.
Loggableオブジェクトは,次の機能を提供する:
親子情報の管理
ログ出力の管理
- class board.loggable.Loggable(dep_init=0, max_children=-1, tags=None, verbose=False, **kwargs)[source]¶
Bases:
objectボードの最基底クラス. 複合画像を表すボードオブジェクトの木のノードがもつ最低限の機能を提供する.
- Parameters
dep_init (int) – 深さの初期値.default=None.
tags (str, list(str)) – タグ文字列またはタグ文字列のリスト.タグ文字列のリストは,オブジェクトの属性`tags`に保持され,実装者と利用者により,各種の用途に用いることができる.default=None.
verbose (bool) – デバッグ用出力のフラグ.default=False.
**kwargs – 任意のオプション引数.オブジェクトの属性`kwargs`に保持されて,実装者と利用者により,各種の用途に用いることができる.
- tags¶
タグ文字列またはタグ文字列のリスト.実装者と利用者により,各種の用途に用いることができる.
- Type
str, list(str)
- kwargs¶
オプション引数の辞書.オブジェクトの属性`kwargs`に保持されて,実装者と利用者により,各種の用途に用いることができる.
- Type
dict
- add_tag(tags) Loggable[source]¶
タグ文字列を追加する. :param tags: タグ文字列.任意のグルーピングに用いる. :type tags: str
- Returns
自分自身.いわゆる’cascade object call interface’ のため.
- Return type
(Loggable)
- append(pair=None) Loggable[source]¶
子ボードの対 pair (trans, child)を受け取り,子配列に追加する.
trans (cairo.Matrix) : 自座標における子の配置を指示する変換オブジェクト
child (Board): 子として追加するBoardオブジェクト
- Parameters
pair (tuple) – 変換と子ボードの対 (trans, child)
- Returns
追加した子
- Return type
(Board)
Example:
root = Canvas() child = root.put(Board()) child = parent.put(trans=Translate(dest=(1, 2)), Rectangle())
- children() list[source]¶
子エントリの並び children を返す.ここに,子エントリvalue = (trans, child) は,変換 trans と子オブジェクトchildの対である.
- Returns
子エントリvalue = (trans, child) のリスト
- Return type
list
- children_enumerated() list[source]¶
添字と子エントリの対`idx, value`の並び children を返す. 現在は,`trans, child = value`である.部分クラスで上書きする.
- Returns
子オブジェクトのリスト
- Return type
list
- Notes :
読み出し`idx, value = children_enumerated()`と書き込み`children_replace(idx, value)`を対にして用いる.
- dump(dep=0, file=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>)[source]¶
Loggableオブジェクトの構造を印刷する.
- Parameters
B (Loggable) – ボードオブジェクトの根
- fetch(key=None, default=None, verbose=False) Any[source]¶
自分の先祖にフィールド`key`が定義されているボードがあれば,そのような直近の先祖での値を返す.もしそのような先祖がなければ,`default`が指定されていれば,その値を返し,それ以外ならば`None`を返す.
- Parameters
key (str) – 検索するキー文字列
default (Any) – キーをもつ先祖が見つからない時に返すデフォールト値
- Returns
キーをもつ最近先祖におけるキーの値
- Return type
(Any)
- repo(msg=None, header=True, is_child=False, file=<_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>)[source]¶
入れ子深さを考慮したレポート文字列を出力する.
- Parameters
dep=0 (int) – 入れ小深さ
msg=None (str) – 出力する文字列
header=True (str) – 出力するヘッダー文字列.ふつうは関数名 ‘methodname’
file (outstream) – 出力ストリーム.デフォールトsys.stderr
Examples:
self.repo(depth, msg=f'.send_draw: cmd={cmd} kwargs={kwargs1}')
- set_child_by_idx(idx=None, pair=None) Loggable[source]¶
添字 idx と変換と子ボードの対 pair (trans, child)を受け取り, 子配列のidxセルにpairを代入する. 添字は,下記の例のように元の配列から取り出したものに限る.
trans (cairo.Matrix) : 自座標における子の配置を指示する変換オブジェクト
child (Board): 子として追加するBoardオブジェクト
- Parameters
idx (int) – 子配列の添字
pair (tuple) – 変換と子ボードの対 (trans, child)
Example:
for idx, value in parent: trans, child = value trans1, child1 = modifing(trans, child) parent.set(idx, trans=trans1, child1)