private bool doRead() { if (!File.Exists(PathRead)) { MessageBox.Show("File does not exist", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } if (StlFile.IsBinaryFile(PathRead)) { reader = new BinaryStlReader <Triangle, Vertex, Normal>(new DataCreator()); writer = null; } else { reader = new AsciiStlReader <Triangle, Vertex, Normal>(new DataCreator()); writer = null; } ByteReadHelper readHelper = readStenography(); string msg = ""; if (readHelper.ReadEverything()) { try { textBox3.Text = MyEncoding.GetString(readHelper.Data.ToArray()); return(true); } catch (Exception e) { msg = "\n" + e.Message; } } MessageBox.Show("Could not decode data!" + msg, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); }
public ByteReadHelper readStenography() { ByteReadHelper readHelper = new ByteReadHelper(checkBox1.Checked, textBox4.Text); HashSet <Vertex> knownVertices = new HashSet <Vertex>(); foreach (Triangle tri in reader.ReadFromFile(PathRead)) { if (!readHelper.ReadEverything()) { if (!(knownVertices.Contains(tri.V1))) { Vertex tmp = new Vertex(tri.V1); readStenographyPerVertex(tri.V1, readHelper); knownVertices.Add(tmp); } if (!(knownVertices.Contains(tri.V2))) { Vertex tmp = new Vertex(tri.V2); readStenographyPerVertex(tri.V2, readHelper); knownVertices.Add(tmp); } if (!(knownVertices.Contains(tri.V3))) { Vertex tmp = new Vertex(tri.V3); readStenographyPerVertex(tri.V3, readHelper); knownVertices.Add(tmp); } } } return(readHelper); }
private void readStenographyPerVertex(Vertex v, ByteReadHelper readHelper) { if (readHelper.ReadEverything()) { return; } readHelper.SetCurrentBitAndMove(readStenographyByFloat(v.X)); if (readHelper.ReadEverything()) { return; } readHelper.SetCurrentBitAndMove(readStenographyByFloat(v.Y)); if (readHelper.ReadEverything()) { return; } readHelper.SetCurrentBitAndMove(readStenographyByFloat(v.Z)); }