/// <summary> /// Creates a simple shape. This includes such shapes as lines, rectangles, /// and ovals. /// </summary> /// <param name="anchor">the client anchor describes how this Group is attached /// to the sheet.</param> /// <returns>the newly created shape.</returns> public HSSFSimpleShape CreateSimpleShape(HSSFClientAnchor anchor) { HSSFSimpleShape shape = new HSSFSimpleShape(null, anchor); shape.Anchor = anchor; AddShape(shape); return(shape); }
/// <summary> /// Creates a new Group record stored Under this patriarch. /// </summary> /// <param name="anchor">the client anchor describes how this Group is attached /// to the sheet.</param> /// <returns>the newly created Group.</returns> public HSSFShapeGroup CreateGroup(HSSFClientAnchor anchor) { HSSFShapeGroup group = new HSSFShapeGroup(null, anchor); group.Anchor = anchor; AddShape(group); return(group); }
/// <summary> /// Calculate the preferred size for this picture. /// </summary> /// <param name="scale">the amount by which image dimensions are multiplied relative to the original size.</param> /// <returns>HSSFClientAnchor with the preferred size for this image</returns> public HSSFClientAnchor GetPreferredSize(double scale) { HSSFClientAnchor anchor = (HSSFClientAnchor)Anchor; Size size = GetImageDimension(); double scaledWidth = size.Width * scale; double scaledHeight = size.Height * scale; float w = 0; //space in the leftmost cell w += GetColumnWidthInPixels(anchor.Col1) * (1 - (float)anchor.Dx1 / 1024); short col2 = (short)(anchor.Col1 + 1); int dx2 = 0; while (w < scaledWidth) { w += GetColumnWidthInPixels(col2++); } if (w > scaledWidth) { //calculate dx2, offset in the rightmost cell col2--; double cw = GetColumnWidthInPixels(col2); double delta = w - scaledWidth; dx2 = (int)((cw - delta) / cw * 1024); } anchor.Col2 = col2; anchor.Dx2 = dx2; float h = 0; h += (1 - (float)anchor.Dy1 / 256) * GetRowHeightInPixels(anchor.Row1); int row2 = anchor.Row1 + 1; int dy2 = 0; while (h < scaledHeight) { h += GetRowHeightInPixels(row2++); } if (h > scaledHeight) { row2--; double ch = GetRowHeightInPixels(row2); double delta = h - scaledHeight; dy2 = (int)((ch - delta) / ch * 256); } anchor.Row2 = row2; anchor.Dy2 = dy2; return(anchor); }
/// <summary> /// Creates a picture. /// </summary> /// <param name="anchor">the client anchor describes how this Group is attached /// to the sheet.</param> /// <param name="pictureIndex">Index of the picture.</param> /// <returns>the newly created shape.</returns> public IPicture CreatePicture(HSSFClientAnchor anchor, int pictureIndex) { HSSFPicture shape = new HSSFPicture(null, (HSSFClientAnchor)anchor); shape.PictureIndex = pictureIndex; shape.Anchor = (HSSFClientAnchor)anchor; AddShape(shape); EscherBSERecord bse = (_sheet.Workbook as HSSFWorkbook).Workbook.GetBSERecord(pictureIndex); bse.Ref = (bse.Ref + 1); return(shape); }
/// <summary> /// Reset the image to the original size. /// </summary> public void Resize(double scale) { HSSFClientAnchor anchor = (HSSFClientAnchor)Anchor; anchor.AnchorType = 2; IClientAnchor pref = GetPreferredSize(scale); int row2 = anchor.Row1 + (pref.Row2 - pref.Row1); int col2 = anchor.Col1 + (pref.Col2 - pref.Col1); anchor.Col2 = col2; anchor.Dx1 = 0; anchor.Dx2 = pref.Dx2; anchor.Row2 = row2; anchor.Dy1 = 0; anchor.Dy2 = pref.Dy2; }