public void TestChildAnchorFromScratch() { HSSFChildAnchor anchor = new HSSFChildAnchor(); EscherChildAnchorRecord escher = (EscherChildAnchorRecord)HSSFTestHelper.GetEscherAnchor(anchor); anchor.SetAnchor(11, 12, 13, 14); Assert.AreEqual(anchor.Dx1, 11); Assert.AreEqual(escher.Dx1, 11); Assert.AreEqual(anchor.Dx2, 13); Assert.AreEqual(escher.Dx2, 13); Assert.AreEqual(anchor.Dy1, 12); Assert.AreEqual(escher.Dy1, 12); Assert.AreEqual(anchor.Dy2, 14); Assert.AreEqual(escher.Dy2, 14); anchor.Dx1 = (115); Assert.AreEqual(anchor.Dx1, 115); Assert.AreEqual(escher.Dx1, 115); anchor.Dx2 = (116); Assert.AreEqual(anchor.Dx2, 116); Assert.AreEqual(escher.Dx2, 116); anchor.Dy1 = (117); Assert.AreEqual(anchor.Dy1, 117); Assert.AreEqual(escher.Dy1, 117); anchor.Dy2 = (118); Assert.AreEqual(anchor.Dy2, 118); Assert.AreEqual(escher.Dy2, 118); }
/// <summary> /// Creates the anchor. /// </summary> /// <param name="userAnchor">The user anchor.</param> /// <returns></returns> public static EscherRecord CreateAnchor(HSSFAnchor userAnchor) { if (userAnchor is HSSFClientAnchor) { HSSFClientAnchor a = (HSSFClientAnchor)userAnchor; EscherClientAnchorRecord anchor = new EscherClientAnchorRecord(); anchor.RecordId = EscherClientAnchorRecord.RECORD_ID; anchor.Options = (short)0x0000; anchor.Flag = (short)a.AnchorType; anchor.Col1 = (short)Math.Min(a.Col1, a.Col2); anchor.Dx1 = (short)a.Dx1; anchor.Row1 = (short)Math.Min(a.Row1, a.Row2); anchor.Dy1 = (short)a.Dy1; anchor.Col2 = (short)Math.Max(a.Col1, a.Col2); anchor.Dx2 = (short)a.Dx2; anchor.Row2 = (short)Math.Max(a.Row1, a.Row2); anchor.Dy2 = (short)a.Dy2; return(anchor); } else { HSSFChildAnchor a = (HSSFChildAnchor)userAnchor; EscherChildAnchorRecord anchor = new EscherChildAnchorRecord(); anchor.RecordId = EscherChildAnchorRecord.RECORD_ID; anchor.Options = (short)0x0000; anchor.Dx1 = (short)Math.Min(a.Dx1, a.Dx2); anchor.Dy1 = (short)Math.Min(a.Dy1, a.Dy2); anchor.Dx2 = (short)Math.Max(a.Dx2, a.Dx1); anchor.Dy2 = (short)Math.Max(a.Dy2, a.Dy1); return(anchor); } }
private EscherChildAnchorRecord CreateRecord() { EscherChildAnchorRecord r = new EscherChildAnchorRecord(); r.RecordId = EscherChildAnchorRecord.RECORD_ID; r.Options = (short)0x0001; r.Dx1 = 1; r.Dy1 = 2; r.Dx2 = 3; r.Dy2 = 4; return(r); }
public void TestSerialize() { EscherChildAnchorRecord r = CreateRecord(); byte[] data = new byte[8 + 16]; int bytesWritten = r.Serialize(0, data); Assert.AreEqual(24, bytesWritten); Assert.AreEqual("[01, 00, " + "0F, F0, " + "10, 00, 00, 00, " + "01, 00, 00, 00, " + "02, 00, 00, 00, " + "03, 00, 00, 00, " + "04, 00, 00, 00, ]", HexDump.ToHex(data)); }
/** * Create a new Shape * * @param isChild <code>true</code> if the Line is inside a group, <code>false</code> otherwise * @return the record Container which holds this shape */ protected EscherContainerRecord CreateSpContainer(bool IsChild) { _escherContainer = new EscherContainerRecord(); _escherContainer.SetRecordId(EscherContainerRecord.SP_CONTAINER); _escherContainer.SetOptions((short)15); EscherSpRecord sp = new EscherSpRecord(); int flags = EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE; if (isChild) { flags |= EscherSpRecord.FLAG_CHILD; } sp.SetFlags(flags); _escherContainer.AddChildRecord(sp); EscherOptRecord opt = new EscherOptRecord(); opt.SetRecordId(EscherOptRecord.RECORD_ID); _escherContainer.AddChildRecord(opt); EscherRecord anchor; if (isChild) { anchor = new EscherChildAnchorRecord(); } else { anchor = new EscherClientAnchorRecord(); //hack. internal variable EscherClientAnchorRecord.shortRecord can be //Initialized only in FillFields(). We need to Set shortRecord=false; byte[] header = new byte[16]; LittleEndian.PutUshort(header, 0, 0); LittleEndian.PutUshort(header, 2, 0); LittleEndian.PutInt(header, 4, 8); anchor.FillFields(header, 0, null); } _escherContainer.AddChildRecord(anchor); return(_escherContainer); }
public void TestChildAnchorFromEscher() { EscherChildAnchorRecord escher = new EscherChildAnchorRecord(); escher.Dx1 = ((short)15); escher.Dx2 = ((short)16); escher.Dy1 = ((short)17); escher.Dy2 = ((short)18); HSSFChildAnchor anchor = new HSSFChildAnchor(escher); Assert.AreEqual(anchor.Dx1, 15); Assert.AreEqual(escher.Dx1, 15); Assert.AreEqual(anchor.Dx2, 16); Assert.AreEqual(escher.Dx2, 16); Assert.AreEqual(anchor.Dy1, 17); Assert.AreEqual(escher.Dy1, 17); Assert.AreEqual(anchor.Dy2, 18); Assert.AreEqual(escher.Dy2, 18); }
public void TestFillFields() { String hexData = "01 00 " + "0F F0 " + "10 00 00 00 " + "01 00 00 00 " + "02 00 00 00 " + "03 00 00 00 " + "04 00 00 00 "; byte[] data = HexRead.ReadFromString(hexData); EscherChildAnchorRecord r = new EscherChildAnchorRecord(); int bytesWritten = r.FillFields(data, new DefaultEscherRecordFactory()); Assert.AreEqual(24, bytesWritten); Assert.AreEqual(1, r.Dx1); Assert.AreEqual(2, r.Dy1); Assert.AreEqual(3, r.Dx2); Assert.AreEqual(4, r.Dy2); Assert.AreEqual((short)0x0001, r.Options); }
public void TestCreateChildAnchorFromContainer() { EscherContainerRecord container = new EscherContainerRecord(); EscherChildAnchorRecord escher = new EscherChildAnchorRecord(); escher.Dx1 = ((short)15); escher.Dx2 = ((short)16); escher.Dy1 = ((short)17); escher.Dy2 = ((short)18); container.AddChildRecord(escher); HSSFChildAnchor anchor = (HSSFChildAnchor)HSSFAnchor.CreateAnchorFromEscher(container); Assert.AreEqual(anchor.Dx1, 15); Assert.AreEqual(escher.Dx1, 15); Assert.AreEqual(anchor.Dx2, 16); Assert.AreEqual(escher.Dx2, 16); Assert.AreEqual(anchor.Dy1, 17); Assert.AreEqual(escher.Dy1, 17); Assert.AreEqual(anchor.Dy2, 18); Assert.AreEqual(escher.Dy2, 18); }
/** * Sets the anchor (the bounding box rectangle) of this shape. * All coordinates should be expressed in points (72 dpi). * * @param anchor new anchor */ public void SetAnchor(Rectangle anchor) { EscherSpRecord spRecord = _escherContainer.GetChildById(EscherSpRecord.RECORD_ID); int flags = spRecord.Flags; if ((flags & EscherSpRecord.FLAG_CHILD) != 0) { EscherChildAnchorRecord rec = (EscherChildAnchorRecord)GetEscherChild(_escherContainer, EscherChildAnchorRecord.RECORD_ID); rec.Dx1 = ((int)(anchor.X * MASTER_DPI / POINT_DPI)); rec.Dy1 = ((int)(anchor.Y * MASTER_DPI / POINT_DPI)); rec.Dx2 = ((int)((anchor.Width + anchor.X) * MASTER_DPI / POINT_DPI)); rec.Dy2 = ((int)((anchor.Height + anchor.Y) * MASTER_DPI / POINT_DPI)); } else { EscherClientAnchorRecord rec = (EscherClientAnchorRecord)GetEscherChild(_escherContainer, EscherClientAnchorRecord.RECORD_ID); rec.Flag = ((short)(anchor.Y * MASTER_DPI / POINT_DPI)); rec.Col1 = ((short)(anchor.X * MASTER_DPI / POINT_DPI)); rec.Dx1 = ((short)(((anchor.Width + anchor.X) * MASTER_DPI / POINT_DPI))); rec.Row1 = ((short)(((anchor.Height + anchor.Y) * MASTER_DPI / POINT_DPI))); } }
/** * Returns the anchor (the bounding box rectangle) of this shape. * All coordinates are expressed in points (72 dpi). * * @return the anchor of this shape */ //public Rectangle GetAnchor() //{ // Rectangle anchor2d = GetAnchor2D(); // return anchor2d.Bounds; //} /** * Returns the anchor (the bounding box rectangle) of this shape. * All coordinates are expressed in points (72 dpi). * * @return the anchor of this shape */ public Rectangle GetAnchor2D() { EscherSpRecord spRecord = _escherContainer.GetChildById(EscherSpRecord.RECORD_ID); int flags = spRecord.Flags; Rectangle anchor; if ((flags & EscherSpRecord.FLAG_CHILD) != 0) { EscherChildAnchorRecord rec = (EscherChildAnchorRecord)GetEscherChild(_escherContainer, EscherChildAnchorRecord.RECORD_ID); anchor = new Rectangle(); if (rec == null) { logger.Log(POILogger.WARN, "EscherSpRecord.FLAG_CHILD is Set but EscherChildAnchorRecord was not found"); EscherClientAnchorRecord clrec = (EscherClientAnchorRecord)GetEscherChild(_escherContainer, EscherClientAnchorRecord.RECORD_ID); anchor = new Rectangle(); anchor.X = clrec.Col1 * POINT_DPI / MASTER_DPI; anchor.Y = clrec.Flag * POINT_DPI / MASTER_DPI; anchor.Width = (clrec.Dx1 - clrec.Col1) * POINT_DPI / MASTER_DPI; anchor.Height = (clrec.Row1 - clrec.Flag) * POINT_DPI / MASTER_DPI; } else { anchor.X = rec.Dx1 * POINT_DPI / MASTER_DPI; anchor.Y = rec.Dy1 * POINT_DPI / MASTER_DPI; anchor.Width = (rec.Dx2 - rec.Dx1) * POINT_DPI / MASTER_DPI; anchor.Height = (rec.Dy2 - rec.Dy1) * POINT_DPI / MASTER_DPI; } } else { EscherClientAnchorRecord rec = (EscherClientAnchorRecord)GetEscherChild(_escherContainer, EscherClientAnchorRecord.RECORD_ID); anchor = new Rectangle(); anchor.X = rec.Col1 * POINT_DPI / MASTER_DPI; anchor.Y = rec.Flag * POINT_DPI / MASTER_DPI; anchor.Width = (rec.Dx1 - rec.Col1) * POINT_DPI / MASTER_DPI; anchor.Height = (rec.Row1 - rec.Flag) * POINT_DPI / MASTER_DPI; } return(anchor); }
public HSSFChildAnchor() { _escherChildAnchor = new EscherChildAnchorRecord(); }
/** * create anchor from existing file * @param escherChildAnchorRecord */ public HSSFChildAnchor(EscherChildAnchorRecord escherChildAnchorRecord) { this._escherChildAnchor = escherChildAnchorRecord; }
protected override void CreateEscherAnchor() { _escherChildAnchor = new EscherChildAnchorRecord(); }