示例#1
0
        // 大文字小文字違いだけのものは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);
        }
示例#2
0
文件: Font.cs 项目: sinshu/dtf
        /// <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);
        }
示例#3
0
        /// <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);
        }