⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umd_genegine.cs

📁 用VC.NET开发的应用于Symbian上的电子书开发源代码.
💻 CS
📖 第 1 页 / 共 3 页
字号:
				{
					File.Delete(text1);
				}
				else
				{
					result = "生成文件操作被用户取消";
					return false;
				}
			}
			FileStream stream1 = new FileStream(text1, FileMode.OpenOrCreate, FileAccess.Write);
			BinaryWriter writer1 = new BinaryWriter(stream1);
			this.iPGKSeed = (short) (random1.Next(0x401, 0x7fff) % 0xffff);
			writer1.Write((uint) 0xde9a9b89);
			writer1.Write('#');
			writer1.Write((short) 1);
			writer1.Write((byte) 0);
			writer1.Write((byte) 8);
			writer1.Write((byte) 2);//漫画书
			writer1.Write(this.iPGKSeed);
			writer1.Write('#');
			writer1.Write((short) 2);
			writer1.Write((byte) 0);
			writer1.Write((byte) (5 + (this.iTitle.Length * 2)));
			writer1.Write(Encoding.Unicode.GetBytes(this.iTitle));
			writer1.Write('#');
			writer1.Write((short) 3);
			writer1.Write((byte) 0);
			writer1.Write((byte) (5 + (this.iAuthor.Length * 2)));
			writer1.Write(Encoding.Unicode.GetBytes(this.iAuthor));
			if (this.iYear.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 4);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iYear.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iYear));
			}
			if (this.iMonth.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 5);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iMonth.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iMonth));
			}
			if (this.iDay.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 6);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iDay.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iDay));
			}
			if (this.iGender.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 7);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iGender.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iGender));
			}
			if (this.iPublisher.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 8);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iPublisher.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iPublisher));
			}
			if (this.iVendor.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 9);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iVendor.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iVendor));
			}
			//			writer1.Write('#');
			//			writer1.Write((short) 11);
			//			writer1.Write((byte) 0);
			//			writer1.Write((byte) 9);
			//			writer1.Write(this.ibContent.Length);
			//			private ArrayList MHiChapterOff;// = new ArrayList();//目录偏移
			//			private ArrayList MHsChapterStr;// = new ArrayList();//目录名称
			//			private ArrayList MHsChapterJpg;// = new ArrayList();//图片列表

			num1 = (uint) (0x3000 + random1.Next(0xfff));
			writer1.Write('#');
			writer1.Write((short) 0x83);
			writer1.Write((byte) 1);
			writer1.Write((byte) 9);
			writer1.Write(num1);
			writer1.Write('$');
			writer1.Write(num1);
			writer1.Write((uint) (9 + (this.MHiChapterOff.Count * 4)));
			int num8 = 0;
			while (num8 < MHiChapterOff.Count)
			{
				int num2 = (int)MHiChapterOff[num8];
				writer1.Write(num2);
				num8++;
			}
			num1 = (uint) (0x4000 + random1.Next(0xfff));
			writer1.Write('#');
			writer1.Write((short) 0x84);
			writer1.Write((byte) 1);
			writer1.Write((byte) 9);
			writer1.Write(num1);
			int num3 = 0;
			foreach (object obj1 in this.MHsChapterStr)
			{
				num3 += ((((string) obj1).Length * 2) + 1);
			}
			writer1.Write('$');
			writer1.Write(num1);
			writer1.Write((uint) (9 + num3));
			foreach (object obj2 in this.MHsChapterStr)
			{
				writer1.Write((byte) (((string) obj2).Length * 2));
				writer1.Write(Encoding.Unicode.GetBytes((string) obj2));
				//writer1.Write((byte)0x29);
				//writer1.Write((byte)0x20);
			}
			//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
			writer1.Write('#');
			writer1.Write((short) 0x0F);
			writer1.Write((byte) 0);
			writer1.Write((byte) 6);
			writer1.Write((byte) 1);
			uint[] numArray1 = new uint[this.MHsChapterJpg.Count];
			int num5 = 0;
			if (this.MHsChapterJpg.Count > 1)
			{
				num5 = random1.Next(0, MHsChapterJpg.Count - 1);
			}
			//********************************
			//写入图片
			for (int num6 = 0; num6 < this.MHsChapterJpg.Count; num6++)
			{
				string tmpJpgFileName = (string)MHsChapterJpg[num6];
				//*********************************
				if (!File.Exists(tmpJpgFileName))
				{
					result = "图形文件["+tmpJpgFileName+"]不存在!";
					return false;
				}
				FileStream JpgStream = new FileStream(tmpJpgFileName, FileMode.Open,FileAccess.Read);
				byte[] JpgBuffer = new byte[JpgStream.Length];
				JpgStream.Read(JpgBuffer, 0, (int) JpgStream.Length);
				JpgStream.Close();
				//*********************************
				numArray1[num6] = (uint) (random1.Next(1, 0xfffffff) * -1);
				writer1.Write('$');
				writer1.Write(numArray1[num6]);
				writer1.Write((uint) (9 + JpgBuffer.Length));
				writer1.Write(JpgBuffer);
				//*********************************
				if (num6 == num5)
				{
					writer1.Write('#');
					writer1.Write((short) 10);
					writer1.Write((byte) 0);
					writer1.Write((byte) 9);
					writer1.Write(this.iCID);
				}
			}
			//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
			num1 = (uint) (0x2000 + random1.Next(0xfff));
			writer1.Write('#');
			writer1.Write((short) 0x81);
			writer1.Write((byte) 1);
			writer1.Write((byte) 9);
			writer1.Write(num1);
			writer1.Write('$');
			writer1.Write(num1);
			writer1.Write((uint) (9 + (numArray1.Length * 4)));
			uint[] numArray4 = numArray1;
			for (num8 = 0; num8 < numArray4.Length; num8++)
			{
				uint num7 = numArray4[num8];
				writer1.Write(num7);
			}
			if (File.Exists(this.iCoverFile))
			{
				FileStream stream2 = new FileStream(this.iCoverFile + ".tmp", FileMode.Open);
				byte[] buffer1 = new byte[stream2.Length];
				stream2.Read(buffer1, 0, (int) stream2.Length);
				stream2.Close();
				num1 = (uint) (0x1000 + random1.Next(0xfff));
				writer1.Write('#');
				writer1.Write((short) 130);
				writer1.Write((byte) 1);
				writer1.Write((byte) 10);
				writer1.Write((byte) 1);
				writer1.Write(num1);
				writer1.Write('$');
				writer1.Write(num1);
				writer1.Write((uint) (9 + buffer1.Length));
				writer1.Write(buffer1);
			}
			writer1.Write('#');
			writer1.Write((short) 0xf1);
			writer1.Write((byte) 0);
			writer1.Write((byte) 0x15);
			writer1.Write(Encoding.ASCII.GetBytes("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"));

			//			pbar.Maximum = this.iContent.Length * 5;
			//			pbar.Value = 0;
			//			this.GetPageOffsetS60(0x10, this.ACTUAL_WIDTH_S60_HORI, ref pbar, out numArray2);
			//			this.WritePageOffset(0x10, (byte) (this.ACTUAL_WIDTH_S60_HORI + 4), ref numArray2, ref writer1, 1);
			//			numArray2.Initialize();
			//			this.GetPageOffsetS60(0x10, this.ACTUAL_WIDTH_S60_VERT, ref pbar, out numArray2);
			//			this.WritePageOffset(0x10, (byte) (this.ACTUAL_WIDTH_S60_VERT + 4), ref numArray2, ref writer1, 1);
			//			numArray2.Initialize();
			//			this.GetPageOffsetS60(12, this.ACTUAL_WIDTH_S60_HORI, ref pbar, out numArray2);
			//			this.WritePageOffset(12, (byte) (this.ACTUAL_WIDTH_S60_HORI + 4), ref numArray2, ref writer1, 1);
			//			numArray2.Initialize();
			//			this.GetPageOffsetS60(12, this.ACTUAL_WIDTH_S60_VERT, ref pbar, out numArray2);
			//			this.WritePageOffset(12, (byte) (this.ACTUAL_WIDTH_S60_VERT + 4), ref numArray2, ref writer1, 1);
			//			numArray2.Initialize();
			//			this.GetPageOffsetSP(10, this.ACTUAL_WIDTH_SP, ref pbar, out numArray2);
			//			this.WritePageOffset(10, this.ACTUAL_WIDTH_SP, ref numArray2, ref writer1, 5);
			writer1.Write('#');
			writer1.Write((short) 12);
			writer1.Write((byte) 1);
			writer1.Write((byte) 9);
			writer1.Write((uint) (((uint) writer1.BaseStream.Position) + 4));
			writer1.Close();
			stream1.Close();
			result = "true";
			return true;
		}
		public bool MHMake(ref ProgressBar pbar, out string result)
		{
			Random random1 = new Random();
			uint num1 = 0;
			if (this.iSaveTo.EndsWith(@"\"))
			{
				this.iSaveTo.Remove(this.iSaveTo.Length - 1, 1);
			}
			string text1 = this.iSaveTo + @"\" + this.iTitle + ".umd";
			if (File.Exists(text1))
			{
				if (MessageBox.Show("您要保存的文件已经存在,是否覆盖?", "mBook制作工具 版本:1.0", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
				{
					File.Delete(text1);
				}
				else
				{
					result = "生成文件操作被用户取消";
					return false;
				}
			}
			FileStream stream1 = new FileStream(text1, FileMode.OpenOrCreate, FileAccess.Write);
			BinaryWriter writer1 = new BinaryWriter(stream1);
			this.iPGKSeed = (short) (random1.Next(0x401, 0x7fff) % 0xffff);
			writer1.Write((uint) 0xde9a9b89);
			writer1.Write('#');
			writer1.Write((short) 1);
			writer1.Write((byte) 0);
			writer1.Write((byte) 8);
			writer1.Write((byte) 2);//漫画书
			writer1.Write(this.iPGKSeed);
			writer1.Write('#');
			writer1.Write((short) 2);
			writer1.Write((byte) 0);
			writer1.Write((byte) (5 + (this.iTitle.Length * 2)));
			writer1.Write(Encoding.Unicode.GetBytes(this.iTitle));
			writer1.Write('#');
			writer1.Write((short) 3);
			writer1.Write((byte) 0);
			writer1.Write((byte) (5 + (this.iAuthor.Length * 2)));
			writer1.Write(Encoding.Unicode.GetBytes(this.iAuthor));
			if (this.iYear.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 4);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iYear.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iYear));
			}
			if (this.iMonth.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 5);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iMonth.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iMonth));
			}
			if (this.iDay.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 6);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iDay.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iDay));
			}
			if (this.iGender.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 7);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iGender.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iGender));
			}
			if (this.iPublisher.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 8);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iPublisher.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iPublisher));
			}
			if (this.iVendor.Length > 0)
			{
				writer1.Write('#');
				writer1.Write((short) 9);
				writer1.Write((byte) 0);
				writer1.Write((byte) (5 + (this.iVendor.Length * 2)));
				writer1.Write(Encoding.Unicode.GetBytes(this.iVendor));
			}
//			writer1.Write('#');
//			writer1.Write((short) 11);
//			writer1.Write((byte) 0);
//			writer1.Write((byte) 9);
//			writer1.Write(this.ibContent.Length);
//			private ArrayList MHiChapterOff;// = new ArrayList();//目录偏移
//			private ArrayList MHsChapterStr;// = new ArrayList();//目录名称
//			private ArrayList MHsChapterJpg;// = new ArrayList();//图片列表

			num1 = (uint) (0x3000 + random1.Next(0xfff));
			writer1.Write('#');
			writer1.Write((short) 0x83);
			writer1.Write((byte) 1);
			writer1.Write((byte) 9);
			writer1.Write(num1);
			writer1.Write('$');
			writer1.Write(num1);
			writer1.Write((uint) (9 + (this.MHiChapterOff.Count * 4)));
			int num8 = 0;
			while (num8 < MHiChapterOff.Count)
			{
				int num2 = (int)MHiChapterOff[num8];
				writer1.Write(num2);
				num8++;
			}
			num1 = (uint) (0x4000 + random1.Next(0xfff));
			writer1.Write('#');
			writer1.Write((short) 0x84);
			writer1.Write((byte) 1);
			writer1.Write((byte) 9);
			writer1.Write(num1);
			int num3 = 0;
			foreach (object obj1 in this.MHsChapterStr)
			{
				num3 += ((((string) obj1).Length * 2) + 3);
			}
			writer1.Write('$');
			writer1.Write(num1);
			writer1.Write((uint) (9 + num3));
			foreach (object obj2 in this.MHsChapterStr)
			{
				writer1.Write((byte) (((string) obj2).Length * 2+2));
				writer1.Write(Encoding.Unicode.GetBytes((string) obj2));
				writer1.Write((byte)0x29);
				writer1.Write((byte)0x20);
			}
			//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
			writer1.Write('#');
			writer1.Write((short) 0x0E);
			writer1.Write((byte) 0);
			writer1.Write((byte) 6);
			writer1.Write((byte) 1);
			uint[] numArray1 = new uint[this.MHsChapterJpg.Count];
			int num5 = 0;
			if (this.MHsChapterJpg.Count > 1)
			{
				num5 = random1.Next(0, MHsChapterJpg.Count - 1);
			}
			//********************************
			//写入图片
			for (int num6 = 0; num6 < this.MHsChapterJpg.Count; num6++)
			{
				string tmpJpgFileName = (string)MHsChapterJpg[num6];
				//*********************************
				if (!File.Exists(tmpJpgFileName))
				{
					result = "图形文件["+tmpJpgFileName+"]不存在!";
					return false;
				}
				FileStream JpgStream = new FileStream(tmpJpgFileName, FileMode.Open,FileAccess.Read);
				byte[] JpgBuffer = new byte[JpgStream.Length];
				JpgStream.Read(JpgBuffer, 0, (int) JpgStream.Length);
				JpgStream.Close();
				//*********************************
				numArray1[num6] = (uint) (random1.Next(1, 0xfffffff) * -1);
				writer1.Write('$');
				writer1.Write(numArray1[num6]);
				writer1.Write((uint) (9 + JpgBuffer.Length));
				writer1.Write(JpgBuffer);
				//*********************************
				if (num6 == num5)
				{
					writer1.Write('#');
					writer1.Write((short) 10);
					writer1.Write((byte) 0);
					writer1.Write((byte) 9);
					writer1.Write(this.iCID);
				}
			}
			//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
			num1 = (uint) (0x2000 + random1.Next(0xfff));
			writer1.Write('#');
			writer1.Write((short) 0x81);
			writer1.Write((byte) 1);
			writer1.Write((byte) 9);
			writer1.Write(num1);
			writer1.Write('$');
			writer1.Write(num1);
			writer1.Write((uint) (9 + (numArray1.Length * 4)));
			uint[] numArray4 = numArray1;
			for (num8 = 0; num8 < numArray4.Length; num8++)
			{
				uint num7 = numArray4[num8];
				writer1.Write(num7);
			}
			if (File.Exists(this.iCoverFile))
			{
				FileStream stream2 = new FileStream(this.iCoverFile + ".tmp", FileMode.Open);
				byte[] buffer1 = new byte[stream2.Length];
				stream2.Read(buffer1, 0, (int) stream2.Length);
				stream2.Close();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -