PieceDescriptorCollection GetPieceDescriptors(BinaryReader reader, int offset, uint length) { PieceDescriptorCollection result = new PieceDescriptorCollection(offset, length); result.Read(reader); return(result); }
bool LoadText(OleStorage storage, out string text) { text = string.Empty; if (storage == null) { return(false); } BinaryReader documentReader = GetDocumentStreamReader(storage); if (documentReader == null) { return(false); } int pdcOffset; uint pdcLength; string tableName; GetDataFromFib(documentReader, out tableName, out pdcOffset, out pdcLength); BinaryReader tableReader = GetTableStreamReader(storage, tableName); if (tableReader == null) { return(false); } PieceDescriptorCollection pieces = GetPieceDescriptors(tableReader, pdcOffset, pdcLength); if (pieces == null) { return(false); } int count = pieces.Count; for (int i = 0; i < count; i++) { uint pieceStart; uint pieceEnd; bool isUnicode = pieces.GetPieceFileBounds(i, out pieceStart, out pieceEnd); documentReader.BaseStream.Seek(pieceStart, SeekOrigin.Begin); text += ReadString(documentReader, pieceEnd - pieceStart, isUnicode); } return(true); }