/// <summary> /// 色定義を読む /// </summary> /// <param name="xpm">xpm</param> /// <param name="s">ぉ</param> /// <returns></returns> private bool ParseColors(Xpm xpm, string s) { var c = 総天然色.Parse(xpm, s); xpm.AddColor(c); return(true); }
/// <summary> /// ぉからXPMを生成 /// </summary> /// <param name="width">幅</param> /// <param name="height">高さ</param> /// <param name="pixels">ピクセルデター</param> /// <returns>XPM</returns> public static Xpm Fromぉ(int width, int height, ぉ [] pixels) { var xpm = new Xpm(); xpm.Rows = height; xpm.Columns = width; xpm.AllocPixels(); int cpp = 0; foreach (var c in GenerateColorMap(pixels, out cpp).Values) { xpm.AddColor(c); } xpm.NumColors = xpm.ColorTable.Count; xpm.CharsPerPixel = cpp; // 逆引きテーブルを作っとく var rt = new Dictionary <ぉ, string>(); foreach (var c in xpm.ColorTable.Keys) { var s = xpm.ColorTable[c]; var o = s.Toぉ(); if (null == o) { throw new およよ($"色解決失敗: {s.ToColorString()}"); } if (!rt.ContainsKey(o)) { rt.Add(o, c); } } int pos = 0; for (int y = 0; y < xpm.Rows; ++y) { for (int x = 0; x < xpm.Columns; ++x) { xpm.SetPixel(x, y, rt[pixels[pos]]); pos++; } } return(xpm); }