小ネタ。
知ってる人は知ってるが知らない人は存在すら知らないと思われる landscape mode.
Qt にデフォルトで入っていて、ちゃんと SL-A300 でも使えたという話。
Qt/Embedded の機能なので Qt/Embedded の layout manager を使ってデザインしてるアプリの全てで有効だ。 Konqueror/embedded や hancom word でも使えた。 が、シャープ製のアプリのほとんどで使えない。なんつーか ...
opie-rotation のほか、qpe-embedded-rotation (rotated font set) も必要だ。 qtopia(qpe) 自身を landscape で動かすには、さらに language (qpe-language or opie-language; こことか) も要る。 qtopia-free に付属する rotation (qpe-rotation) の場合は language なしでも自前で qpe を rotate できるはずだが未確認。
見ての通り。ほんとうに見ての通りで、 この rotation を portrait mode で立ち上げようが landscape mode で立ち上げようが、 ともかくチェックボタンにチェックすると、 次のアプリからまさにそれに対応する字の向きで立ち上がるようになる。![]()
qtopia(qpe) 自身を rotate するためには、rotation でチェックしたのち、 language を立ち上げて適当に言語を切替える。これによって qpe の再起動がかかる。 メニューからの「再起動」は、もちろん rotation したことをシステムが忘れてしまうのでダメ。
Rotation がやってることは単純で、環境変数 QWS_DISPLAY に Rot90 とか Rot180 とかを設定しているだけだ。 次の Qt アプリからその QWS_DISPLAY にあわせて (libqte が)描画しているだけである。
なお、アプリの立ち上がり時にチェックしてるので、高速起動モードになってるアプリは rotate しない。 「すでに立ち上がってる」ためだ。一度、高速起動モードを外してから立ち上げ直す必要がある。
左辺を下にして embedded-konsole を立ち上げ、その中で top を動かした。
ちなみに top を embedded-konsole 上でまともに使うためには、
↑のように landscape mode かつ font を最小の micro にする必要がある。
これ以外では最右端のプロセス名が消えるので、なにやってんだかわからなくなる。
ところで SL-A300 では load av.
が異常な数値になってることに気付いてる人はどれくらいいるのであろー ...
上のやつでは qtopia 自身 (qpe) は portrait mode で動いてるため、キーボードマークその他が portrait に出ているが、qpe も Qt/embedded アプリであって、これ自身も landscape で動かすことができる:
libqte が座標の読み換えで描画してんだから、 フォントの向きも直して描画してくれればいいものを、フォントの bitblt のトコだけは rotation の管轄外とばかりに rotation 済みの font を要求する。 左辺を下にする landscape mode はちょうど SL5000 系の portrait mode と同じフォントを使うので zaurus-ja で配付している unismall が使える↓が、それ以外は話にならん。![]()
SL-A300 で使ってるフォントフォーマットの QPF は内部構造がかなり面倒で、 ... てのはどれくらい面倒かというとそもそも QPF を Qt 外で扱うフィルタが無いとか 解説 webpage がないとかいう程度にめんどくさい。誰もなにかを書こうという気にならんほどなわけね。 つーか、私もヤです。グリフそのものは圧縮もなにもない単なるベタでどーでもいいんだけど、 その集合の並べ方が ... いや、3 分木(ノードに値をもつ 2 分木) にしてる理由は分かるけどさ。
Qt ライブラリ内部でも、BDF, TTF → QPF 方向の関数は用意されてても逆方向はない。 LC font 諦めるのもシャクやけどなぁ。