Beispiel #1
0
        private void button2_Click(object sender, EventArgs e)
        {
            this.fc.str[0] = this.textBox1.Text;
            this.fc.str[1] = this.zih.ToString();
            this.fc.str[2] = Encoding.Default.GetString(this.Myapp.zimodatas[this.zimoindex], 0, (int)this.Myapp.zimos[this.zimoindex].ascstar);
            Form form = new zikucreat(this.fc, (int)this.Myapp.zimos[this.zimoindex].encode, this.Myapp);

            form.ShowDialog();
            if (form.DialogResult == DialogResult.OK)
            {
                if (MessageOpen.Show("是否立即替换刚才生成的字库?".Language(), "提示".Language(), MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    string       path         = this.fc.str[0];
                    int          num          = Marshal.SizeOf(default(zimoxinxi));
                    StreamReader streamReader = new StreamReader(path);
                    byte[]       array        = new byte[num];
                    streamReader.BaseStream.Read(array, 0, num);
                    zimoxinxi value = (zimoxinxi)array.BytesTostruct(default(zimoxinxi).GetType());
                    this.Myapp.zimos[this.zimoindex] = value;
                    array = new byte[value.size];
                    streamReader.BaseStream.Read(array, 0, array.Length);
                    this.Myapp.zimodatas[this.zimoindex] = new byte[array.Length];
                    array.CopyTo(this.Myapp.zimodatas[this.zimoindex], 0);
                    streamReader.Close();
                    streamReader.Dispose();
                    this.showzi();
                    this.fc.str[1] = "edit";
                    new datazhuan(this.Myapp).ShowDialog();
                    this.Ref();
                }
            }
            else
            {
                this.fc.str[1] = "";
            }
        }
Beispiel #2
0
        private bool creat()
        {
            int num = 0;

            byte[]         array          = new byte[2];
            byte[]         array2         = new byte[1];
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.Filter = "zi|*.zi";
            bool result;

            if (saveFileDialog.ShowDialog() != DialogResult.OK)
            {
                result = false;
            }
            else
            {
                string    fileName  = saveFileDialog.FileName;
                byte[]    array3    = this.textBox1.Text.GetbytesssASCII();
                int       num2      = int.Parse(this.comboBox1.Text);
                zimoxinxi zimoxinxi = default(zimoxinxi);
                int       count     = Marshal.SizeOf(default(zimoxinxi));
                zimoxinxi.state      = (byte)this.comboBox5.SelectedIndex;
                zimoxinxi.addbeg     = 0u;
                zimoxinxi.ver        = datasize.zikuver;
                zimoxinxi.ascstar    = (byte)array3.Length;
                zimoxinxi.datastar   = (ushort)zimoxinxi.ascstar;
                zimoxinxi.h          = byte.Parse(num2.ToString());
                zimoxinxi.qumo       = 10;
                zimoxinxi.encode     = (byte)this.Encode;
                zimoxinxi.codeh_star = datasize.encodes_App[(int)zimoxinxi.encode].codeh_star;
                zimoxinxi.codeh_end  = datasize.encodes_App[(int)zimoxinxi.encode].codeh_end;
                zimoxinxi.codel_star = datasize.encodes_App[(int)zimoxinxi.encode].codel_star;
                zimoxinxi.codel_end  = datasize.encodes_App[(int)zimoxinxi.encode].codel_end;
                zimoxinxi.codelT0    = datasize.encodes_App[(int)zimoxinxi.encode].codelT0;
                zimoxinxi.codelV0    = datasize.encodes_App[(int)zimoxinxi.encode].codelV0;
                byte[] array4 = new byte[0];
                int    num3   = 0;
                int    num4;
                byte[] array5;
                if (zimoxinxi.state == 0)
                {
                    if (datasize.encodes_App[(int)zimoxinxi.encode].codeh_star != 0)
                    {
                        zimoxinxi.qyt = 95u;
                    }
                    else
                    {
                        zimoxinxi.qyt = (uint)(datasize.encodes_App[(int)zimoxinxi.encode].codel_end - datasize.encodes_App[(int)zimoxinxi.encode].codel_star + 1);
                    }
                    zimoxinxi.w = byte.Parse(((int)(zimoxinxi.h / 2)).ToString());
                    num4        = (int)(zimoxinxi.h * zimoxinxi.w / 8);
                    array5      = new byte[(ulong)zimoxinxi.qyt * (ulong)((long)num4)];
                }
                else
                {
                    zimoxinxi.w = zimoxinxi.h;
                    if (zimoxinxi.state == 1)
                    {
                        zimoxinxi.qyt = (uint)((zimoxinxi.codeh_end - zimoxinxi.codeh_star + 1) * (zimoxinxi.codel_end - zimoxinxi.codel_star - zimoxinxi.codelV0 + 1) + 95);
                    }
                    if (zimoxinxi.state == 2)
                    {
                        this.zimostr       = "";
                        this.textBox2.Text = this.textBox2.Text + " ";
                        for (int i = 0; i < this.textBox2.Text.Length; i++)
                        {
                            this.zimostradd(this.textBox2.Text.Substring(i, 1), Encoding.GetEncoding(datasize.encodes_App[(int)zimoxinxi.encode].encodename));
                        }
                        if (this.zimostr == "")
                        {
                            MessageOpen.Show("没有可以取的字".Language());
                            result = false;
                            return(result);
                        }
                        zimoxinxi.qyt      = (uint)this.zimostr.Length;
                        zimoxinxi.datastar = (ushort)((uint)zimoxinxi.ascstar + zimoxinxi.qyt * 2u);
                        array4             = new byte[zimoxinxi.qyt * 2u];
                    }
                    num4 = (int)(zimoxinxi.h * zimoxinxi.w / 8);
                    if (zimoxinxi.state == 2)
                    {
                        array5 = new byte[(ulong)zimoxinxi.qyt * (ulong)((long)(num4 + 2))];
                    }
                    else
                    {
                        array5 = new byte[(ulong)zimoxinxi.qyt * (ulong)((long)num4)];
                    }
                }
                Bitmap   bitmap   = new Bitmap((int)zimoxinxi.w, (int)zimoxinxi.h);
                Encoding encoding = Encoding.GetEncoding(datasize.encodes_App[this.Encode].encodename);
                this.label3.Text    = "";
                this.label3.Visible = true;
                if (zimoxinxi.state == 1)
                {
                    for (int j = (int)datasize.encodes_App[(int)zimoxinxi.encode].codeh_star; j <= (int)datasize.encodes_App[(int)zimoxinxi.encode].codeh_end; j++)
                    {
                        for (int k = (int)datasize.encodes_App[(int)zimoxinxi.encode].codel_star; k <= (int)datasize.encodes_App[(int)zimoxinxi.encode].codel_end; k++)
                        {
                            if (k <= (int)zimoxinxi.codelT0 || k > (int)(zimoxinxi.codelT0 + zimoxinxi.codelV0))
                            {
                                if (this.creatend)
                                {
                                    result = false;
                                    return(result);
                                }
                                Application.DoEvents();
                                array[0] = (byte)j;
                                array[1] = (byte)k;
                                gdizi.bmpprintstr(bitmap, encoding.GetString(array), this.hanzipos, bitmap.Width, bitmap.Height, false);
                                bitmap.Getqumo(ref array5, bitmap.Width, num);
                                num += num4;
                            }
                        }
                        Application.DoEvents();
                        this.label3.Text = "进度:".Language() + (num * 100 / array5.Length).ToString() + "%";
                    }
                    for (int k = 32; k <= 126; k++)
                    {
                        array2[0] = byte.Parse(k.ToString());
                        gdizi.bmpprintstr(bitmap, encoding.GetString(array2), this.zifupos, bitmap.Height / 2, bitmap.Height, true);
                        bitmap.Getqumo(ref array5, bitmap.Width / 2, num);
                        num += num4;
                        Application.DoEvents();
                        this.label3.Text = "进度:".Language() + (num * 100 / array5.Length).ToString() + "%";
                    }
                }
                else if (zimoxinxi.state == 0)
                {
                    int k = 32;
                    while ((long)k < (long)((ulong)(32u + zimoxinxi.qyt)))
                    {
                        array2[0] = byte.Parse(k.ToString());
                        gdizi.bmpprintstr(bitmap, encoding.GetString(array2), this.zifupos, bitmap.Height / 2, bitmap.Height, true);
                        bitmap.Getqumo(ref array5, bitmap.Width, num);
                        num += num4;
                        Application.DoEvents();
                        this.label3.Text = "进度:".Language() + (num * 100 / array5.Length).ToString() + "%";
                        k++;
                    }
                }
                if (zimoxinxi.state == 2)
                {
                    for (int l = 0; l < this.zimostr.Length; l++)
                    {
                        Application.DoEvents();
                        this.label3.Text = l.ToString();
                        byte[] bytes = Encoding.GetEncoding(datasize.encodes_App[(int)zimoxinxi.encode].encodename).GetBytes(this.zimostr.Substring(l, 1));
                        if (bytes.Length >= 0)
                        {
                            if (bytes[0] > 31 && bytes[0] < 127)
                            {
                                array2[0] = bytes[0];
                                gdizi.bmpprintstr(bitmap, encoding.GetString(array2), this.zifupos, bitmap.Height / 2, bitmap.Height, true);
                                array4[num3] = 0;
                                num3++;
                                array4[num3] = bytes[0];
                                num3++;
                                bitmap.Getqumo(ref array5, bitmap.Width / 2, num);
                                num += num4;
                            }
                            else if (bytes[0] > 127 && bytes.Length == 2)
                            {
                                array[0] = bytes[0];
                                array[1] = bytes[1];
                                gdizi.bmpprintstr(bitmap, encoding.GetString(array), this.hanzipos, bitmap.Height, bitmap.Height, false);
                                array4[num3] = bytes[0];
                                num3++;
                                array4[num3] = bytes[1];
                                num3++;
                                bitmap.Getqumo(ref array5, bitmap.Width, num);
                                num += num4;
                            }
                        }
                        Application.DoEvents();
                        this.label3.Text = "进度:".Language() + (num * 100 / array5.Length).ToString() + "%";
                    }
                }
                zimoxinxi.size = (uint)(array5.Length + array3.Length);
                StreamWriter streamWriter = new StreamWriter(fileName);
                streamWriter.BaseStream.Write(zimoxinxi.structToBytes(), 0, count);
                streamWriter.BaseStream.Write(array3, 0, array3.Length);
                if (array4.Length > 1)
                {
                    streamWriter.BaseStream.Write(array4, 0, array4.Length);
                }
                streamWriter.BaseStream.Write(array5, 0, array5.Length);
                int num5 = (int)streamWriter.BaseStream.Length;
                streamWriter.Close();
                streamWriter.Dispose();
                this.fc.str[0] = fileName;
                Label expr_9FC = this.label3;
                expr_9FC.Text = expr_9FC.Text + "  " + "字库大小:".Language() + num5.ToString("0,000");
                MessageOpen.Show("生成字库完成,字库大小:".Language() + num5.ToString("0,000"));
                result = true;
            }
            return(result);
        }
Beispiel #3
0
        private void jiaohunziku(int index0, int index1)
        {
            zimoxinxi value = this.Myapp.zimos[index0];

            byte[] array = new byte[this.Myapp.zimodatas[index0].Length];
            this.Myapp.zimodatas[index0].CopyTo(array, 0);
            this.Myapp.zimos[index0]     = this.Myapp.zimos[index1];
            this.Myapp.zimodatas[index0] = new byte[this.Myapp.zimodatas[index1].Length];
            this.Myapp.zimodatas[index1].CopyTo(this.Myapp.zimodatas[index0], 0);
            this.Myapp.zimos[index1]     = value;
            this.Myapp.zimodatas[index1] = new byte[array.Length];
            array.CopyTo(this.Myapp.zimodatas[index1], 0);
            foreach (mpage current in this.Myapp.pages)
            {
                foreach (mobj current2 in current.objs)
                {
                    foreach (matt current3 in current2.atts)
                    {
                        if (current3.att.attlei == attshulei.Font.typevalue)
                        {
                            byte b = (byte)current3.zhi.BytesTostruct(0.GetType());
                            if ((int)b == index0)
                            {
                                current3.zhi = ((byte)index1).structToBytes();
                            }
                            else if ((int)b == index1)
                            {
                                current3.zhi = ((byte)index0).structToBytes();
                            }
                        }
                    }
                }
            }
            foreach (mpage current in this.Myapp.pages)
            {
                foreach (objsetcom_P current4 in current.objsetcomps)
                {
                    foreach (objsetcom current5 in current4.objset)
                    {
                        if (current5.backobj != null)
                        {
                            foreach (matt current3 in current5.backobj.atts)
                            {
                                if (current3.att.attlei == attshulei.Font.typevalue)
                                {
                                    byte b = (byte)current3.zhi.BytesTostruct(0.GetType());
                                    if ((int)b == index0)
                                    {
                                        current3.zhi = ((byte)index1).structToBytes();
                                    }
                                    else if ((int)b == index1)
                                    {
                                        current3.zhi = ((byte)index0).structToBytes();
                                    }
                                }
                            }
                        }
                    }
                }
            }
            foreach (mobj current2 in this.Myapp.copymobjs)
            {
                foreach (matt current3 in current2.atts)
                {
                    if (current3.att.attlei == attshulei.Font.typevalue)
                    {
                        byte b = (byte)current3.zhi.BytesTostruct(0.GetType());
                        if ((int)b == index0)
                        {
                            current3.zhi = ((byte)index1).structToBytes();
                        }
                        else if ((int)b == index1)
                        {
                            current3.zhi = ((byte)index0).structToBytes();
                        }
                    }
                }
            }
            this.Ref();
            this.zikuupdate(null, null);
        }