2012-01-01から1年間の記事一覧

PostScript で printf デバッグ

PostScript TUTORIAL and COOKBOOKの51ページに星の形を描くプログラムがあります。文字列を表示する print とスタックを表示する pstack を使って動作する様子を追いかけてみます。 Chapter 6: MORE GRAPHICS (Saving the Graphics State) /starside { 72 0…

右寄せ印刷(PostScript TUTORIAL and COOKBOOK 42 ページ)

PostScript TUTORIAL and COOKBOOKの42ページ。右寄せ印刷の動作が分かりにくいので追ってみます。 /rightshow % stk: string { dup stringwidth pop %get length of string 120 exch sub %calc. white space 0 rmoveto %Move over that much show } def %sh…

PostScript で日本語を表示してみました。

EUC で記述し、EUC-H、EUC-V のフォントを使用すれば日本語をそのまま表示することが出来ます。 %!PS-Adobe-3.0 EPSF-3.0 % bluebook P40 Chapter 5: PRINTING TEXT % EUC で保存。 % mm の定義 % 10 mm と記述すれば 10 * 2.834645669 の値となり、10 mmを…

PosScript の型

PosScript の型を調べる命令 type を見つけたので表示させてみます。 GPL Ghostscript 9.06 (2012-08-08) Copyright (C) 2012 Artifex Software, Inc. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. % 1 が…

PostScriptのスタック操作と手続きの合成

私は日本語訳の本を見ているのですが、PostScript TUTORIAL and COOKBOOKの39ページに内部でexchを使ってスタックの状態を入れ替えている手続きの定義がわかりづらかったので追ってみました。 x 座標、y 座標をスタックに積んで showGorilla を呼ぶと指定さ…

Haskell の putStr は文字を出力しない。

Haskell には文字列を表示するための関数 putStr があります。 Main> :t putStr putStr :: String -> IO () putStr は文字列を引数として IO アクションを返します。 putStr は出力する手続きを返すのであって、putStr が呼ばれたときに関数の中で出力するの…

Data.Array で数独のテーブルを表現してみる

配列の練習にData.Array で数独のテーブルを表現してみます。 import Data.Array data Cell = Cell{digit::Int, mark::Char} deriving(Eq,Show) blockSize :: ((Int, Int), (Int, Int)) blockSize = ((1,1),(3,3)) type Block = Array (Int, Int) Cell -- 3 …

Haskellによる西暦(Day)和暦変換、和暦の比較

Data.Time.Calendar の Day型と返還可能な和暦の型、Warekiを定義しました。 Wareki は Ord インスタンスを実装してありますので、そのまま比較、ソートできます。 import Data.Time.Calendar (Day(..), fromGregorian, toGregorian, fromGregorianValid) im…

Data.Text 最初の一歩

import Data.Text import qualified Data.Text.IO as TI import Cinnamon.Ucs (ucs4ToSjis) -- pack :: String -> Text txt = pack "日本語" kana = pack "にほんご" main = do putStrLn $ ucs4ToSjis "日本語" -- > 日本語 putStrLn $ ucs4ToSjis $ unpack …

wxHaskell での「応答なし」を回避する。(Haskell によるメッセージ処理)

Haskell によるメッセージ処理 以前の「wxHaskell での「応答なし」を回避する」はメッセージ処理をCでやっていましたが、Esa Ilari Vuokko氏製のDirectXバインディングを使ってみるを参考にHaskellでメッセージ処理をします。 -- ghc --make Main.hs -o msg…

クリップボード内のWindows Path文字列をUNIX Path文字列に変更する(Haskell)。

mintty の中でエクスプローラに表示されたパスをコピーして、そのパスに移動したいときがあります。 しかし、コピーして貼付けると表示されるのは "C:\HaskellPlatform\Clipboard-2.2.0\dist"のような文字列で、そのままでは CD コマンドなどには使えません…

Haskell で変数を使う。(IORef、Stateモナド、STモナド)

先に作った電卓のレジスタのように Haskell でも状態を保持しておきたいときがあります。 先の電卓ではIORefを使ってレジスタの状態を保持しました。 IORef > :m + Data.IORef > do{ x <- newIORef 1; modifyIORef x (+2); ret <-readIORef x; return ret} -…

wxFormBuilder を使う(3)「Window の中央にパーツを配置」

FlexGridSizerを使えばWindowを最大にしても、デフォルトに戻してもパーツを中央に表示させることが出来ます。 オブジェクトツリー 最初にFrameを配置して次にBoxSizerを配置。この BoxSizer の orient を wxVERTICALにしてパーツを追加していくとFrameと同…

wxFormBuilder を使う(2)「woBoxSizer でパーツを配置」

python入門から応用までの学習サイト python-izm.com の BoxSizer を参考にボタンを配置してみます。BoxSizer はボタンやテキストなどの部品を縦方向もしくは横方向へ連続して配置するためのものです。縦に連続して配置するか、横に連続して配置するかは右の…

Haskell で wxFormBuilder を使う。

wxFormBuilderの使い方を学ぶには wxRubyのこと (RubyでGUI)はwxRubyのサイトです。wxFormBuilderを使用して、「Hello World」「ラーメンタイマー」「時計」「双六ゲーム」「Twitterクライアント」を作り、XRCファイルも公開していますので、wxFormBuilderの…

Frame にアイコンを表示する。

Frame にアイコンを表示するのには Graphics.UI.WXCore.Image の topLevelWindowSetIconFromFile を使います。 module Main where {- Graphics.UI.WX ライブラリはWXCoreよりは高級というかレイヤが上位。-} import Graphics.UI.WX (start) import Graphics.…