先日、#ifdef
でプラットフォーム切り替えの処理が書けるということを知ったのだけれど、そのあたりのやり方をまとめたガイドが Pebble 公式ドキュメント内に存在していた。
オレが使った PBL_PLATFORM_BASALT
(もしくは PBL_PLATFORM_APLITE
)のやりかたは下記の感じになる。
#ifdef PBL_PLATFORM_BASALT
// for Pebble Time
#else
// for Pebble
#endif
この他に、PBL_COLOR
と PBL_BW
というマクロもあるようだ。ガイドの中にはこのように使われている。プラットフォームで分けるのではなく、ディスプレイの表示色による切替方法なんだね。
#ifdef PBL_COLOR
// for Color
#elif PBL_BW
// for Black and White
#endif
現在の商品構成では、PBL_PLATFOME_BASALT == PBL_COLOR
が成り立つけど、将来的には「Basalt プラットフォームでモノクロディスプレイ」なんて製品が出てくるのかも?
それから、色指定に関しては COLOR_FALLBACK()
を使って「この色が出せなかった場合にはこっちを使う」みたいなことができた。
window_set_background_color(s_main_window, COLOR_FALLBACK(GColorJaegerGreen, GColorBlack));
こっちの方が #ifdef
によるインデントの崩れ(崩れじゃないけど)が少なくなるので、色指定の部分では積極的に使っていきたい。
その他にも、watch_info_get_model()
による各モデルの見分けかたとかも載っている。そのサンプルで知ったのだけど、Pebble のモデルによって、ボタンレイアウトが違っているのね。そのサンプルでは「センターボタンの位置に合わせて何かを表示する」ときの使い方が載っている。なるほど、こういうのは、自分で持っているモデルとエミュレータだけでは分からない領域だった。
それにしても Pebble の developer 向けドキュメントは、個別の解説がシンプルだし、カテゴリが整理されていて読みやすい。