ここではCarbide.c++固有のメモを扱います。 Symbian C++に関連することがらはProg/Symbianにあります。
UI DesignerはCrabide.c++の有料版で使用することが出来るGUIベースのS60画面デザインツールです。 便利ではあるのですが、色々と使いこなすためのワザも必要です。 詳しくはページ Prog/CarbideC/UIDesigner を参照ください。
SDK S60_3rd_FP1では発生しない。 SDK S60_3rd_MRなどで発生。
mmpファイルに以下の行を追加する。
SYSTEMINCLUDE \epoc32\include\mmf\plugin
この情報はForum Nokia Developer Discussion Boardのスレッドを参考にしました。
注) プロジェクトをインポートすると再発するかも。その場合はmmpファイルを変更してCompileし直すと良いかも。
コンパイルは成功しているがリンクでエラーしている。 コンソールを見るとmwldsym2.exeがエラーを吐いている。
冷静に考えると何のことは無く、リンカーにリンクすべきライブラリーの情報が与えられていないだけのことです。
undefined symbolだと言われたクラスをSDKのドキュメントで調べると一番上にlib名が出ているので、それをmmpファイルに追加する。
Carbide.c++ v1.2でS60 3rdのアプリケーション開発において複数言語をサポートする手順です。
大体のところは Forum Nokia Wiki の 'How to define localization messages' に載っているが、少々足りないことも。
LANG SCが
LANG 01 32などとなります。 言語と2ケタの番号の対応は e32const.h か mmp ファイルの編集画面で確認できる。 ちなみに日本語は 32 です。
&EN,JAのようにする。これで英語、日本語になります。言語を表す2文字の英字はSDK HelpのLanguage code tableのページにあります。
; standard SIS file header
#{"Simon","サイモン"},(0xE0009999),1,0,0
;Localised Vendor name
%{"Kozak","コザック"}
;Supports Series 60 v 3.0
[0x101F7961], 0, 0, 0, {"Series60ProductID","Series60ProductID"}
みたいな感じです。"$(EPOCROOT)Epoc32\data\z\resource\apps\Simon_0xE0009999.rsc" -"!:\resource\apps\Simon_0xE0009999.rsc" "$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\Simon_0xE0009999_reg.rsc" -"!:\private\10003a3f\import\apps\Simon_0xE0009999_reg.rsc"を
{
"$(EPOCROOT)Epoc32\data\z\resource\apps\Simon_0xE0009999.r01"
"$(EPOCROOT)Epoc32\data\z\resource\apps\Simon_0xE0009999.r32"
}-"!:\resource\apps\Simon_0xE0009999.rsc"
{
"$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\Simon_0xE0009999_reg.r01"
"$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\Simon_0xE0009999_reg.r32"
}-"!:\private\10003a3f\import\apps\Simon_0xE0009999_reg.rsc"
のような感じにします。CHARACTER_SET UTF8 #ifdef LANGUAGE_01 #include "Simon.l01" #endif #ifdef LANGUAGE_32 #include "Simon.l32" #endifわたしは最初のCHARACTER_SET UTF8を忘れてハマりました。コンパイルエラーもせず、ただ文字化けしてしまいます。
アイコンはSVGというスケーラブルな図形フォーマットで記述します。 これが中々に難物でツールの入手からアイコンがデバイスに出るまで丸一日を要してしまいました。
[ ツール ]
SVG形式の図形を編集するフリーソフトです。 SVGはXMLでもあるので簡単な画像ならテキストエディタでも作れますが美しいアイコンを作るのは難しいでしょう。 Inkscapeは窓の杜などを探せば見つかります。 Adobe Illustratorを持っていればSVGが作れるそうです。
Inkscapeなどで出力されるSVG形式をそのままでは使うことが出来ません。 SVG2SVGTでSVGT形式に変更する必要があります。 このツールはSDKに含まれています。 ${EPOCROOT}S60Tools\svg2svgt にインストーラーが入っている。
[ 手順 ]
number_of_icons = 1; icon_file = "¥¥resource¥¥apps¥¥appName_aif.mif";実際のmifファイル名はコンパイル時のコンソール出力で確認できます。Carvide.c++ v1.3では表示されないかも、その時は"Epoc32¥release¥winscw¥udeb¥z¥resource¥apps¥"を探します。
[ SDK の選択 ]
ま〜さんのM-FEP関連のフォーラムで知りました。 SDK S60_3rd_FP1で作成したSISをFP無しの初期のS60 3rdデバイス(例えばE61)にインストールした場合アイコンが表示されないようです。 Forum NokiaのDeveloper Discussion Boardによると、原因はSDK_S60_3rd_FP1のmifconv.exeにあるようです。 逆のケース、S60_3rd_MRで作成したSISをFP1デバイスにインストールした場合は大丈夫かも(もうじき確認できるはず、、、)。
[ SVG の形式 ]
細かいことは分かりませんが、SVGファイルの中身によりアイコンとして使用できない物があります。 Forum NokiaのDeveloper Discussion Boardsにいくらか情報がありますが、書き物としてまとまっているような物はまだ見つかりません。
とりあえず中身をのぞいてpathの記述がある場合は要注意です。 ただし全てのpathがだめな訳では無いです。
問題はInkscapeで円とか楕円を書くと必ずpathで記述されるのですが、これがほとんど全滅です。
曲線が必要な場合はcircleを基本として加工していくのが良いようですがInkscapeでは作れません。
添付した
circle.zip に入っているcircle.svgを雛形として使用すると良いです。
このファイルはSVGT形式なので、そのままプロジェクトに取り込んでアイコンの変更だけの練習にも使えます。
これを加工して楕円や扇形を作ってみたところ、うまくアイコンとして使用できる物が出来ました。
円と矩形を重ねて差分を取ったり結合させたりと色々と工夫するとかなり複雑な図柄も表現出来ます。
グラデーションが簡単に表現できるのもSVGの特徴なのですが、グラデーションをかけたらアイコンが見えなくなる場面もありました。 細かくカット・トライを行ってアイコンを作っていくしかないです。
[ サイズについて ]
サイズについて以下の情報がブログ「書くことないです。」にて紹介されていました。
width="*" height="*"を
width="100%" height="100%" viewBox="0 0 * *"のように変更する。
余談ですがSVGは元々webのために考えられた物てW3Cで規格化されました。 よって本来はWebブラウザーで見ることが出来るようになってほしいのですがIEでは残念ながらプラグインを入れないと見れません。 Firefoxなら見ることが出来ますのでSVGビューアーとしても使えます。