コード例 #1
0
ファイル: MessageFactory.cs プロジェクト: orf53975/Cube.Net
 /* ----------------------------------------------------------------- */
 ///
 /// Export
 ///
 /// <summary>
 /// エクスポート用メッセージを生成します。
 /// </summary>
 ///
 /// <param name="e">コールバック関数</param>
 ///
 /// <returns>SaveFileDialogMessage オブジェクト</returns>
 ///
 /* ----------------------------------------------------------------- */
 public static SaveFileMessage Export(SaveFileCallback e) =>
 new SaveFileMessage(e)
 {
     CheckPathExists = false,
     OverwritePrompt = true,
     Title           = Properties.Resources.MessageExport,
     Filter          = Properties.Resources.FilterOpml,
 };
コード例 #2
0
 /* ----------------------------------------------------------------- */
 ///
 /// SaveMessage
 ///
 /// <summary>
 /// Creates a message to show the SaveFileDialog.
 /// </summary>
 ///
 /// <param name="callback">
 /// Callback action when terminating the user operation.
 /// </param>
 ///
 /// <returns>SaveFileMessage object.</returns>
 ///
 /* ----------------------------------------------------------------- */
 public static SaveFileMessage SaveMessage(SaveFileCallback callback) =>
 new SaveFileMessage(callback)
 {
     Title           = Properties.Resources.TitleSaveAs,
     OverwritePrompt = true,
     CheckPathExists = false,
     Filter          = new[]
     {
         new ExtensionFilter(Properties.Resources.FilterPdf, true, ".pdf"),
         new ExtensionFilter(Properties.Resources.FilterAll, true, ".*"),
     }.GetFilter(),
 };
コード例 #3
0
ファイル: HinanawiTenshi.cs プロジェクト: tirr-c/th105Edit
        public void Save(string Path, SaveFileCallback callback = null)
        {
            FileStream save_stream = new FileStream(Path, FileMode.Create);

            try
            {
                ushort entry_count = (ushort)m_entries.Count;
                uint   entry_len   = 0;

                // 엔트리 리스트 길이 계산
                foreach (TenshiEntry i in m_entries)
                {
                    entry_len += (uint)i.EntryLength;
                }
                save_stream.Write(LittleEndian.ToEndian(entry_count), 0, 2);
                save_stream.Write(LittleEndian.ToEndian(entry_len), 0, 4);
                // 엔트리 리스트 구성
                uint                  offset            = 6 + entry_len;
                MemoryStream          entry_list_stream = new MemoryStream((int)entry_len);
                TenshiRandomGenerator rand = new TenshiRandomGenerator(6 + entry_len);
                foreach (TenshiEntry i in m_entries)
                {
                    entry_list_stream.Write(LittleEndian.ToEndian(offset), 0, 4);
                    entry_list_stream.Write(LittleEndian.ToEndian((uint)i.Length), 0, 4);
                    entry_list_stream.WriteByte((byte)ShiftJIS.GetByteCount(i.Entry));
                    entry_list_stream.Write(ShiftJIS.GetBytes(i.Entry), 0, ShiftJIS.GetByteCount(i.Entry));
                    i.NewOffset = offset;
                    offset     += (uint)i.Length;
                }
                // 리스트 암호화
                {
                    byte[] buf = entry_list_stream.GetBuffer();
                    byte   key = key_base, delta = key_delta;
                    for (uint i = 0; i < entry_len; i++)
                    {
                        buf[i] ^= key;
                        key    += delta;
                        delta  += key_ddelta;
                        buf[i] ^= (byte)(rand.NextInt() & 0xff);
                    }
                    save_stream.Write(buf, 0, (int)entry_len);
                    entry_list_stream.Dispose();
                }
                // 나 쓴다 데이터
                ushort count = 0;
                if (m_buf_queue == null)
                {
                    m_buf_queue = new Queue <byte[]>();
                }
                else
                {
                    m_buf_queue.Clear();
                }
                Thread th = new Thread(new ThreadStart(CryptThread));
                th.Start();
                for (ushort i = 0; i < entry_count; i++)
                {
                    while (m_buf_queue.Count <= 0)
                    {
                        ;
                    }
                    byte[] buf = m_buf_queue.Dequeue();
                    save_stream.Write(buf, 0, buf.Length);
                    if (callback != null)
                    {
                        callback(++count, entry_count);
                    }
                }
                m_stream.Close();
            }
            catch
            {
            }
            finally
            {
                save_stream.Close();
            }
        }