/// <summary>フォントをオープンする。</summary> /// <remarks>openのindex=0決め打ちバージョン。</remarks> public YanesdkResult Load(SDL_RWopsH rw,int fontsize) { return Load(rw,fontsize,0); }
public static SDL_RWopsH SDL_RWFromMem(byte[] mem) { SDL_RWopsH h = new SDL_RWopsH(); h.hMem = Marshal.AllocHGlobal(mem.Length); Marshal.Copy(mem, 0, h.hMem, mem.Length); h.Handle = SDL_RWFromMem(h.hMem, mem.Length); h.Length = mem.Length; return h; }
/// <summary>フォントをオープンする(RWopsから)。</summary> /// <remarks> /// indexは、ttc(true type collection=ttfが複数入ったフォントファイル)の /// ときに、何番目のものかを指定する。0番から始まる番号。 /// </remarks> public YanesdkResult Load(SDL_RWopsH rw,int fontsize,int index) { Release(); if (fontsize <= 0 || rw.Handle == IntPtr.Zero) return YanesdkResult.InvalidParameter; // 23pt未満であれば倍率掛けて拡大しておく rate = 1; // while (fontsize * rate < 23) ++rate; // ↑この処理、Soildで描画するときにおかしくなるので廃止にしよう。 // フォントが23pt以下だと拡大する処理について。 // SDL_ttf.dllが古いと↑これを入れないといけない。 // 詳しくはYanesdk.NETのreadme.txtの更新履歴2006/10/28を見ること。 font = SDL.TTF_OpenFontIndexRW(rw.Handle, 1, fontsize * rate, index); if (font != IntPtr.Zero) { // 読みこめたので、これをファイルサイズとする。 bufferSize = rw.Length; bOpen = true; rwops = rw; } if (font == IntPtr.Zero) return YanesdkResult.FileReadError; // fileName = ファイル名不明(´ω`) CacheSystem.OnResourceChanged(this); return YanesdkResult.NoError; }
/// <summary> /// サーフェースへの画像読み込みメソッド。 /// </summary> /// <param name="filename"></param> /// <returns>読み込み失敗のときは非0が返る。</returns> /// <remarks> /// bmp画像,png画像を読み込みサポート。 /// </remarks> public YanesdkResult Load(string filename) { RWopsH = FileSys.ReadRW(filename); if (RWopsH.Handle != IntPtr.Zero) { surface = SDL.IMG_Load_RW(RWopsH.Handle, 0); if (surface != IntPtr.Zero) { // // この時点でsurfaceのαチャンネルの有無を判定して、メンバalphaに反映させる必要あり。 // alpha = getAlpha(surface); // →α channelの判定は動的に行なうように変更する fileName = filename; CacheSystem.OnResourceChanged(this); return YanesdkResult.NoError; } return YanesdkResult.FileReadError; } else { return YanesdkResult.FileNotFound; } }