// 大文字小文字違いだけのものはCLSに準拠しない(´ω`) /// <summary> /// 定義ファイルを読み込む /// /// 定義ファイルに書いてあるファイル名が実行ファイルからの相対pathなのか、それとも /// 定義ファイルの存在するフォルダからの相対pathなのかどうかは、 /// IsDefRelativePathオプションに従う。 /// </summary> public YanesdkResult LoadDefFile(string filename) { Release(); basePath = FileSys.GetDirName(filename); YanesdkResult result = reader.LoadDefFile(filename, OptNum); if (result == YanesdkResult.NoError) { Dictionary <int, FilenamelistReader.Info> .KeyCollection keys = reader.Data.Keys; foreach (int key in keys) { // ファイル名は定義ファイル相対pathならそのようにする if (IsDefRelativePath) { reader.Data[key].name = FileSys.MakeFullName(basePath, reader.Data[key].name); } ICachedObject obj = OnDefFileLoaded(reader.Data[key]); dict.Add(key, obj); } } return(result); }
/// <summary>フォントをオープンする。</summary> /// <remarks> /// <para> /// 指定するのは、フォント名。 /// indexは、ttc(true type collection=ttfが複数入ったフォントファイル)の /// ときに、何番目のものかを指定する。0番から始まる番号。 /// </para> /// <para> /// Windowsならフォルダは決まっているので、カレントとパスの通っている /// ところに無ければ、そこから取得する。 /// </para> /// <para> /// Linuxのほうは、カレント、あとパスの通っているところから取得する。 /// </para> /// </remarks> /// <example> /// 例) /// Windowsでは、 /// <list type=""> /// msgothic.ttc : MSゴシック /// msmincho.ttc : MS明朝 /// </list> /// <para> /// Linuxの場合、日本語フォントを用いる場合は、 /// GT書体 (東京大学多国語処理研究会) /// http://www.l.u-tokyo.ac.jp/GT/ /// などから持ってきて、msgothic.ttcやmsmincho.ttcとリネームして /// カレントフォルダに配置しておくようにしてください。</para> /// /// <para> /// フォントフォルダの検索に用いているAPIは、 /// win95の場合はIE4.0以降をインストールしてないとダメ /// win98以降は使える。 /// </para> /// </example> public YanesdkResult Load(string fontname, int fontsize, int index) { Release(); YanesdkResult hr = Load(FileSys.ReadRW(fontname), fontsize, index); if (hr != YanesdkResult.NoError) { // カレントにないので、SHGetSpecialFolderPath関数を使って // フォントディレクトリを取得して頑張ってみる。 string fontpath; switch (System.Platform.PlatformID) { case Yanesdk.System.PlatformID.Windows: fontpath = FileSys.ConcatPath(Environment.SystemDirectory, @"..\fonts"); break; case Yanesdk.System.PlatformID.Linux: fontpath = "/usr/share/fonts/ja/TrueType/"; break; case Yanesdk.System.PlatformID.MacOS: fontpath = "/System/Library/Fonts/"; break; default: throw null; } hr = Load(FileSys.ReadRW(FileSys.MakeFullName(fontpath, fontname)), fontsize, index); } if (hr == YanesdkResult.NoError) { fileName = fontname; // もし、ローダー以外からファイルを単に読み込んだだけならば、Reconstructableにしておく。 if (constructInfo == null) { constructInfo = new FontConstructAdaptor(fontname, fontsize, index); } } return(hr); }
/// <summary> /// 定義ファイルの読み込み。 /// /// ここで生成したCachedObjectLoaderのDisposeを呼び出さないこと。 /// (同時に同じ定義ファイルをLoadDefFileしているCachedObjectLoaderのインスタンスと /// 同一インスタンスなので、そちら側で困ったことになる) /// </summary> /// <param name="defFile"></param> /// <returns></returns> public T LoadDefFile(string defFile) { // 念のため、一意な名前にしておく。 // ex. "./def.txt"と"def.txt"が別のファイル名扱いされると // Loaderが別になってしまうので。 string defFileName = FileSys.MakeFullName("", defFile); if (maps.ContainsKey(defFileName)) { return(maps[defFileName]); } T loader = new T(); loader.Factory = this.Factory; OnLoadDefFile(loader); loader.IsDefRelativePath = this.isDefRelativePath; loader.LoadDefFile(defFile); // このresultがどうなってようがそれは知らん maps.Add(defFileName, loader); return(loader); }