2015年06月01日

10インチ中華Pad買ってみた

 今まで、KEIANの7インチのタブレット、M704S PROを使っていたが、画面の小ささから電書を読むのがどうしてもつらくて、AmazonでQ94という新しい10インチのを買ってしまった。購入時点で11,500円。

 画面の解像度は600*1024と、M704Sと同じだが、画面サイズが大きくなってるので、電書は格段に読みやすい。表示文字サイズを小さくして表示文字数を増やせたり、画像データの細かい部分がある程度見やすくなったりしてるので。あと、本体サイズのおかげもあるだろうけど、電池のもちが全然違う。

 逆に気になるところは、当たり前だけど重い。M704Sも大きさの割にズッシリ感があったけど、Q94はサイズアップの分だけ倍増してる。また、M704Sとの相対的なものだけど、ドットが大きい分画面表示が粗く感じる。さらに、Kindleの電書の場合、マンガでコマが小さいもの、書き込みが細かいものなどは、ページ全体表示で読むのがまだ若干つらいし、画像データ系の雑誌はほぼ無理。自分はタブレットを買う時は値段重視なので、トレードオフとして納得できるし、慣れちゃうと思うけど、使い心地重視の人は、解像度が1ランク以上上のものを選んだ方がいいと思う。

posted by chrono at 17:58| Comment(0) | TrackBack(0) | 日記、雑文

2015年05月25日

作業日誌

 Windows用GTK+のウィジェット間ドラッグ&ドロップ機能の正しい使い方がいまいち把握できない。一番簡単に使おうと思ったら、とりあえずdrag-data-getシグナルとdrag-data-receivedシグナルのハンドラを書いとけばいいのかな。

 actionにCOPYとMOVEを指定しとくと、IconViewからのShiftキーを押しながらのドラッグで移動モードが動作するみたいだけど、そこはCtrlキーじゃないのか?

(追記)

 「Shiftキーで移動」は、例えばWindowsのエクスプローラでも同じだったので、上記の訂正部分は気にする必要はなかった。

 違和感は別のところに原因があった。

 Windowsのエクスプローラでは、アイコン選択のための最後のクリックで一度マウスボタンを放して、ドラッグのためのクリックは別にやり直すことができるが、GTK+の現在のWindows向けバイナリ版(3.6.4)のIconViewでは、アイコン選択時の最後のクリックで押したマウスボタンを放さずにそのままドラッグ操作を始めなければならない。そうしないと、アイコンの選択状態が変わってしまう。

 この仕様があるために、アイコンを複数選択するためのShift/Ctrlキー操作がドラッグ&ドロップのモード(移動orコピー)にも影響してしまう。つまり、一度のShift/Ctrlキー操作の中で、押す時と放す時で別のことを考えなければならない。これはかなり面倒だ。

 最新のソースコードで、このあたりどうなっているのか、自分では今のところちょっと確認できない。
posted by chrono at 07:37| Comment(0) | TrackBack(0) | 日記、雑文

HSPでGTK+のシグナルハンドラの呼び出し時に引数が正常に使えるようになった

 今まではHSPからGTK+を使う時に既存のコールバック実装プラグインを利用していて、シグナルハンドラの引数を参照しようとすると、システムエラーが出てスクリプトが落ちてしまうことが多く困っていたが、tds12さん作のモジュール(公開場所:http://hsp.tv/play/pforum.php?mode=all&num=62130)を利用することでシグナルハンドラの引数が自由に使えるようになった。

 モジュールのnewclbk3命令を呼び出す時に、p4に1(CLBKMODE_CDECL)を指定する。

※ https://github.com/kitachro/hsp-gtk/tree/master/tutorialでHSPからWindows用のGTK+を使うプログラムのサンプルを公開しています。
posted by chrono at 06:46| Comment(0) | TrackBack(0) | HSP

2015年04月05日

作業日誌

 『HSPからGTK+を使うためのチュートリアル』用に、GtkIconViewウィジェットの基本的な説明とサンプルプログラムを書いた。サンプルプログラムは、一応エラー吐かずに動いてるけど、メモリ開放系の関数を使ってるので、ちゃんと書けてるか不安。
posted by chrono at 21:54| Comment(0) | TrackBack(0) | 日記、雑文

2015年04月02日

HSPからGTK+3を使うためのチュートリアル更新

 HSPからGTK+3を使うためのチュートリアルを更新。

 GtkTextViewウィジェット、および関連オブジェクトの基本的な説明を追加。

2015年03月19日

2015年03月02日

HSPからGTK+3を使うためのチュートリアル更新

 HSPからGTK+3を使うためのチュートリアルを更新。

 ダイアログ系ウィジェットの簡単な説明とGtkFileChooserDialogウィジェットのサンプルプログラムを作成。

2015年02月10日

[HSP] 適当に作ったヘクスマップ描画ルーチン(改良版)

horizontal_hex_map_20150210.png vertical_hex_map_20150210.png

 正六角形を描けるかどうかはわからないけど、とりあえず数学の知識が要らない方法ということで。

#module
/* 横xi番目、縦yi番目のヘクスを横向きに描画 */
#deffunc draw_horizontal_hex int hex_width, int hex_height, int xi, int yi

if (xi \ 2) { ; 横奇数番目
yoffset = hex_height / 2 ; 縦方向の描画位置を半分ずらす
}
else {
yoffset = 0
}

xstart = ( hex_width / 4 * 3 ) * xi ; ヘクスをぴったり囲む四角形の左上X座標
ystart = hex_height * yi + yoffset ; ヘクスをぴったり囲む四角形の左上Y座標

; 左上の頂点から左回りで線を引いていく
line xstart + ( hex_width / 4 ), ystart, xstart, ystart + ( hex_height / 2 )
line xstart, ystart + ( hex_height / 2 ), xstart + ( hex_width / 4 ), ystart + hex_height
line xstart + ( hex_width / 4 ), ystart + hex_height, xstart + ( hex_width / 4 * 3 ), ystart + hex_height
line xstart + ( hex_width / 4 * 3 ), ystart + hex_height, xstart + hex_width, ystart + ( hex_height / 2 )
line xstart + hex_width, ystart + ( hex_height / 2 ), xstart + ( hex_width / 4 * 3 ), ystart
line xstart + ( hex_width / 4 * 3 ), ystart, xstart + ( hex_width / 4 ), ystart
return

/* 指定されたマス数・倍率のマップを横向きヘクスで描画 */
#deffunc draw_horizontal_hex_map int def_hex_width, int def_hex_height, int xnum, int ynum, int scale_map, int winid

; 描画に必要なサイズでウィンドウを初期化
map_width = ( ( def_hex_width / 4 * 3 * xnum ) + ( def_hex_width / 4 ) ) * scale_map + 1
map_height = ( def_hex_height * ynum ) * scale_map + 1
screen winid, map_width, map_height
title "ID " + winid

repeat xnum
xcnt = cnt
if ( xcnt \ 2 ) { ; 横奇数番目
ynum_cur = ynum - 1 ; 1個少なくてよい
}
else {
ynum_cur = ynum
}
repeat ynum_cur
draw_horizontal_hex ( def_hex_width * scale_map ), ( def_hex_height * scale_map ), xcnt, cnt
loop
loop
return "" + map_width + "," + map_height ; 描画サイズを返す
#global

#module
/* 横xi番目、縦yi番目のヘクスを縦向きに描画 */
#deffunc draw_vertical_hex int hex_width, int hex_height, int xi, int yi

if (yi \ 2) { ; 縦奇数番目
xoffset = hex_width / 2 ; 横方向の描画位置を半分ずらす
}
else {
xoffset = 0
}

xstart = hex_width * xi + xoffset ; ヘクスをぴったり囲む四角形の左上X座標
ystart = ( hex_height / 4 * 3 ) * yi ; ヘクスをぴったり囲む四角形の左上Y座標

; 上側の頂点から左回りで線を引いていく
line xstart + ( hex_width / 2 ), ystart, xstart, ystart + ( hex_height / 4 )
line xstart, ystart + ( hex_height / 4 ), xstart, ystart + ( hex_height / 4 * 3 )
line xstart, ystart + ( hex_height / 4 * 3 ), xstart + ( hex_width / 2 ), ystart + hex_height
line xstart + ( hex_width / 2 ), ystart + hex_height, xstart + hex_width, ystart + ( hex_height / 4 * 3 )
line xstart + hex_width, ystart + ( hex_height / 4 * 3 ), xstart + hex_width, ystart + ( hex_height / 4 )
line xstart + hex_width, ystart + ( hex_height / 4 ), xstart + ( hex_width / 2 ), ystart
return

/* 指定されたマス数・倍率のマップを縦向きヘクスで描画 */
#deffunc draw_vertical_hex_map int def_hex_width, int def_hex_height, int xnum, int ynum, int scale_map, int winid

; 描画に必要なサイズでウィンドウを初期化
map_width = def_hex_width * xnum * scale_map + 1
map_height = ( ( def_hex_height / 4 * 3 * ynum ) + ( def_hex_height / 4 ) ) * scale_map + 1

screen winid, map_width, map_height
title "ID " + winid

repeat ynum
ycnt = cnt
if ( ycnt \ 2 ) { ; 縦奇数番目
xnum_cur = xnum - 1 ; 1個少なくてよい
}
else {
xnum_cur = xnum
}
repeat xnum_cur
draw_vertical_hex ( def_hex_width * scale_map ), ( def_hex_height * scale_map ), cnt, ycnt
loop
loop
return "" + map_width + "," + map_height ; 描画サイズを返す
#global

; マス数・倍率・ウィンドウIDを指定してマップ描画
def_hex_width = 32 ; ヘクスのデフォルトの幅(横向き時。4で割れる数が良い)
def_hex_height = 28 ; ヘクスのデフォルトの高さ(横向き時。2で割れる数が良い)
xnum = 7 ; 横マス数
ynum = 8 ; 縦マス数
scale = 1 ; 描画倍率(正整数)
draw_horizontal_hex_map def_hex_width, def_hex_height, xnum, ynum, scale, 0
draw_vertical_hex_map def_hex_height, def_hex_width, ynum, xnum, scale, 1
stop

posted by chrono at 17:43| Comment(0) | TrackBack(0) | HSP

2015年02月04日

[HSP] 適当に作ったヘクスマップ描画ルーチン

hex_map_id0.png hex_map_id1.png

 ゲーム制作経験ない人が勢いで作ったので細かいところが少しおかしいかも。

#module
#const HEX_WIDTH_DEF 36 ; ヘクス横幅デフォルト(4の倍数)
#const HEX_HEIGHT_DEF 32 ; ヘクス縦幅デフォルト(2の倍数)

/* 横xi番目、縦yi番目のヘクスを横向きに描画 */
#deffunc draw_hex int xi, int yi, int scale_hex

HEX_WIDTH = HEX_WIDTH_DEF * scale_hex ; 描画するヘクス横幅
HEX_HEIGHT = HEX_HEIGHT_DEF * scale_hex ; 描画するヘクス縦幅

if (xi \ 2) { ; 横奇数番目
yoffset = HEX_HEIGHT / 2 ; 縦方向の描画位置を半分ずらす
}
else {
yoffset = 0
}

xstart = ( HEX_WIDTH / 4 * 3 ) * xi ; ヘクスをぴったり囲む四角形の左上X座標
ystart = HEX_HEIGHT * yi + yoffset ; ヘクスをぴったり囲む四角形の左上Y座標

; 左上の頂点から左回りで線を引いていく
line xstart + ( HEX_WIDTH / 4 ), ystart, xstart, ystart + ( HEX_HEIGHT / 2 )
line xstart, ystart + ( HEX_HEIGHT / 2 ), xstart + ( HEX_WIDTH / 4 ), ystart + HEX_HEIGHT
line xstart + ( HEX_WIDTH / 4 ), ystart + HEX_HEIGHT, xstart + ( HEX_WIDTH / 4 * 3 ), ystart + HEX_HEIGHT
line xstart + ( HEX_WIDTH / 4 * 3 ), ystart + HEX_HEIGHT, xstart + HEX_WIDTH, ystart + ( HEX_HEIGHT / 2 )
line xstart + HEX_WIDTH, ystart + ( HEX_HEIGHT / 2 ), xstart + ( HEX_WIDTH / 4 * 3 ), ystart
line xstart + ( HEX_WIDTH / 4 * 3 ), ystart, xstart + ( HEX_WIDTH / 4 ), ystart
return

/* 指定されたマス数・倍率のマップを横向きヘクスで描画 */
#deffunc draw_hex_map int xnum, int ynum, int scale_map, int winid

; 描画に必要なサイズでウィンドウを初期化
map_width = ( ( HEX_WIDTH_DEF / 4 * 3 * xnum ) + ( HEX_WIDTH_DEF / 4 ) ) * scale_map
map_height = ( HEX_HEIGHT_DEF * ynum ) * scale_map
screen winid, map_width, map_height
title "ID " + winid

repeat xnum
xcnt = cnt
if ( xcnt \ 2 ) { ; 横奇数番目
ynum_cur = ynum - 1 ; 1個少なくてよい
}
else {
ynum_cur = ynum
}
repeat ynum_cur
draw_hex xcnt, cnt, scale_map
loop
loop
return "" + map_width + "," + map_height ; 描画サイズを返す
#global

; マス数・倍率・ウィンドウIDを指定してマップ描画
xnum = 7 ; 横マス数
ynum = 5 ; 縦マス数
scale = 1 ; 描画倍率(正整数)
id = 0 ; 描画するウィンドウID
draw_hex_map xnum, ynum, scale, id

; 描画サイズ取得
sizestr = refstr
split sizestr, ",", wid, hei
wid = int( wid )
hei = int( hei )

; 90度回転して別ウィンドウにコピー
screen 1, hei, wid
title "ID 1"
gmode 0, wid, hei
pos ( hei / 2 ), ( wid / 2 )
grotate id, 0, 0, 1.57, wid, hei
stop
posted by chrono at 19:40| Comment(0) | TrackBack(0) | HSP

2015年01月26日

作業日誌

 GtkFontChooserDialogのサンプルプログラム作成。

 やっぱbinフォルダにPATHを通さずに使おうとするのは、不毛なんだろうなあ。Windows向けGTK+アプリケーションを他人に使ってもらう時は、バンドルアーカイブもダウンロードしてもらうのが一番簡単?
posted by chrono at 15:02| Comment(0) | TrackBack(0) | 日記、雑文