public void SaveToStream(Stream aStream) { HC._SaveFileFormatAndVersion(aStream); // 文件格式和版本 _DeleteUnUsedStyle(); FStyle.SaveToStream(aStream); FData.SaveToStream(aStream); }
public virtual void SaveToStream(Stream aStream, bool aQuick = false, HashSet <SectionArea> aAreas = null) { HC._SaveFileFormatAndVersion(aStream); // 文件格式和版本 DoSaveStreamBefor(aStream); HashSet <SectionArea> vArea = aAreas; if (vArea == null) { vArea = new HashSet <SectionArea>(); vArea.Add(SectionArea.saHeader); vArea.Add(SectionArea.saFooter); vArea.Add(SectionArea.saPage); } if (!aQuick) { DeleteUnUsedStyle(FStyle, FSections, vArea); } FStyle.SaveToStream(aStream); // 节数量 byte vByte = (byte)FSections.Count; aStream.WriteByte(vByte); // 各节数据 for (int i = 0; i <= FSections.Count - 1; i++) { FSections[i].SaveToStream(aStream, vArea); } DoSaveStreamAfter(aStream); }
protected void SaveItemToStreamAlone(HCCustomItem aItem, Stream aStream) { HC._SaveFileFormatAndVersion(aStream); aItem.SaveToStream(aStream); if (aItem.StyleNo > HCStyle.Null) { Style.TextStyles[aItem.StyleNo].SaveToStream(aStream); } Style.ParaStyles[aItem.ParaNo].SaveToStream(aStream); }
public void SaveDomainToStream(Stream aStream, int aDomainItemNo) { int vGroupBeg = -1; int vGroupEnd = GetDomainAnother(aDomainItemNo); if (vGroupEnd > aDomainItemNo) { vGroupBeg = aDomainItemNo; } else { vGroupBeg = vGroupEnd; vGroupEnd = aDomainItemNo; } HC._SaveFileFormatAndVersion(aStream); this.Style.SaveToStream(aStream); SaveItemToStream(aStream, vGroupBeg + 1, 0, vGroupEnd - 1, GetItemOffsetAfter(vGroupEnd - 1)); }
public void SaveItemToStreamAlone(Stream aStream, HCCustomItem aItem) { HC._SaveFileFormatAndVersion(aStream); Style.SaveToStream(aStream); aItem.SaveToStream(aStream); }
protected void Copy() { if (FData.SelectExists()) { MemoryStream vStream = new MemoryStream(); try { HC._SaveFileFormatAndVersion(vStream); // 保存文件格式和版本 _DeleteUnUsedStyle(); FStyle.SaveToStream(vStream); FData.GetTopLevelData().SaveSelectToStream(vStream); byte[] vBuffer = new byte[0]; IntPtr vMemExt = (IntPtr)Kernel.GlobalAlloc(Kernel.GMEM_MOVEABLE | Kernel.GMEM_DDESHARE, (int)vStream.Length); try { if (vMemExt == IntPtr.Zero) { throw new Exception(HC.HCS_EXCEPTION_MEMORYLESS); } IntPtr vPtr = (IntPtr)Kernel.GlobalLock(vMemExt); try { vStream.Position = 0; vBuffer = vStream.ToArray(); System.Runtime.InteropServices.Marshal.Copy(vBuffer, 0, vPtr, vBuffer.Length); } finally { Kernel.GlobalUnlock(vMemExt); } } catch { Kernel.GlobalFree(vMemExt); return; } vBuffer = System.Text.Encoding.Unicode.GetBytes(FData.GetTopLevelData().SaveSelectToText()); IntPtr vMem = (IntPtr)Kernel.GlobalAlloc(Kernel.GMEM_MOVEABLE | Kernel.GMEM_DDESHARE, vBuffer.Length + 1); try { if (vMem == IntPtr.Zero) { throw new Exception(HC.HCS_EXCEPTION_MEMORYLESS); } IntPtr vPtr = (IntPtr)Kernel.GlobalLock(vMem); try { System.Runtime.InteropServices.Marshal.Copy(vBuffer, 0, vPtr, vBuffer.Length); } finally { Kernel.GlobalUnlock(vMem); } } catch { Kernel.GlobalFree(vMem); return; } User.OpenClipboard(IntPtr.Zero); try { User.EmptyClipboard(); User.SetClipboardData(FHCExtFormat.Id, vMemExt); User.SetClipboardData(User.CF_TEXT, vMem); // 文本格式 } finally { User.CloseClipboard(); } } finally { vStream.Close(); vStream.Dispose(); } } }
protected void DataSaveLiteStream(Stream stream, HCProcedure proc) { HC._SaveFileFormatAndVersion(stream); FStyle.SaveToStream(stream); proc(); }