private void performSteganographyPerVertex(Vertex v, ByteWriteHelper writeHelper) { if (!writeHelper.HasData()) { return; } v.X = performSteganographyPerFloat(writeHelper.GetAndMoveCurrentBit(), v.X); if (!writeHelper.HasData()) { return; } v.Y = performSteganographyPerFloat(writeHelper.GetAndMoveCurrentBit(), v.Y); if (!writeHelper.HasData()) { return; } v.Z = performSteganographyPerFloat(writeHelper.GetAndMoveCurrentBit(), v.Z); }
private bool performStenography(byte[] data) { ByteWriteHelper writeHelper = new ByteWriteHelper(checkBox1.Checked, textBox4.Text); writeHelper.AppendData(new byte[] { 0x77, 0 }); //Magic byte, version writeHelper.AppendData(BitConverter.GetBytes(data.Length)); writeHelper.AppendData(data); writeHelper.FinalizeData(); List <Triangle> triangles = new List <Triangle>(); Dictionary <Vertex, Vertex> knownVertices = new Dictionary <Vertex, Vertex>(); foreach (Triangle tri in reader.ReadFromFile(PathRead)) { if (writeHelper.HasData()) { if (!(knownVertices.ContainsKey(tri.V1))) { Vertex tmp = new Vertex(tri.V1); performSteganographyPerVertex(tri.V1, writeHelper); knownVertices.Add(tmp, new Vertex(tri.V1)); } if (!(knownVertices.ContainsKey(tri.V2))) { Vertex tmp = new Vertex(tri.V2); performSteganographyPerVertex(tri.V2, writeHelper); knownVertices.Add(tmp, new Vertex(tri.V2)); } if (!(knownVertices.ContainsKey(tri.V3))) { Vertex tmp = new Vertex(tri.V3); performSteganographyPerVertex(tri.V3, writeHelper); knownVertices.Add(tmp, new Vertex(tri.V3)); } } if (knownVertices.ContainsKey(tri.V1)) { tri.V1.Set(knownVertices[tri.V1]); } if (knownVertices.ContainsKey(tri.V2)) { tri.V2.Set(knownVertices[tri.V2]); } if (knownVertices.ContainsKey(tri.V3)) { tri.V3.Set(knownVertices[tri.V3]); } triangles.Add(tri); } if (writeHelper.HasData()) { MessageBox.Show("The file is to small for the data amount!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { writer.WriteToFile(PathWrite, triangles); return(true); } return(false); }