TI-Nspire & Lua / スクリプティングのヒント / 自作の描画函数も出来合いの描画函数と同じように実行できるようにする
参考: http://adriweb.free.fr/t3/2013/Powerpoint_Advanced_TI-Nspire_Lua_Programming.pptx, p.25
--[[普通の方法 function drawCircle(centerX, centerY, radius, gc) -- 中心座標で円を描くための自作函数 local diameter = radius + radius gc:drawArc(centerX - radius, centerY - radius, diameter, diameter, 0, 360) end function fillCircle(centerX, centerY, radius, gc) -- 中心座標で円を塗りつぶすための自作函数 local diameter = radius + radius gc:fillArc(centerX - radius, centerY - radius, diameter, diameter, 0, 360) end function on.paint(gc) -- 出来合いの描画函数と実行方法が揃わない。 drawCircle(10,10,10,gc) fillCircle(50,50,10,gc) gc:drawRect(20,20,20,20) gc:fillRect(120,120,20,20) end --]] ---[[特殊な方法 function drawCircle(gc, centerX, centerY, radius) -- 中心座標で円を描くための自作函数 local diameter = radius + radius gc:drawArc(centerX - radius, centerY - radius, diameter, diameter, 0, 360) end function fillCircle(gc, centerX, centerY, radius) -- 中心座標で円を塗りつぶすための自作函数 local diameter = radius + radius gc:fillArc(centerX - radius, centerY - radius, diameter, diameter, 0, 360) end platform.withGC(getmetatable)["drawCircle"] = drawCircle platform.withGC(getmetatable)["fillCircle"] = fillCircle function on.paint(gc) -- 出来合いの描画函数と同じように実行できる。 gc:drawCircle(10,10,10) gc:fillCircle(50,50,10) gc:drawRect(20,20,20,20) gc:fillRect(120,120,20,20) end --]] --[[だから自作描画函数は最初から次のように定義しておけば見づらくとも手間が省ける。 platform.withGC(getmetatable)["drawCircle"] = function(gc, centerX, centerY, radius) local diameter = radius + radius gc:drawArc(centerX - radius, centerY - radius, diameter, diameter, 0, 360) end platform.withGC(getmetatable)["fillCircle"] = function(gc, centerX, centerY, radius) local diameter = radius + radius gc:fillArc(centerX - radius, centerY - radius, diameter, diameter, 0, 360) end --]]