/// <summary> /// This will create new Balloon object based from Balloon information. /// </summary> /// <param name="balloon">Original from what new should be created</param> /// <param name="page">Current page</param> /// <param name="parentBalloon">parent balloon that is generated</param> /// <param name="isStatic">If new balloon should be created as StaticBalloon</param> /// <param name="level">level of recursion, for logging purposes</param> /// <returns></returns> Balloon CreateNewBalloon(Balloon balloon, ReportPage page, Balloon parentBalloon, bool isStatic) { if (isStatic) { StaticBalloon newStaticBalloon = new StaticBalloon(); newStaticBalloon.TemplateBalloon = balloon; newStaticBalloon.LocationInUnitsX = balloon.LocationInUnitsX; newStaticBalloon.LocationInUnitsY = balloon.LocationInUnitsY; newStaticBalloon.WidthInPixels = balloon.GetFitToContentWidthInPixels(); newStaticBalloon.HeightInPixels = balloon.GetFitToContentHeightInPixels(); newStaticBalloon.zoomLevel = balloon.zoomLevel; newStaticBalloon.sourceBallon = balloon; newStaticBalloon.Disabled = true; newStaticBalloon.CanGrow = balloon.DockPosition == EditorItem.DockingPosition.DOCK_BOTTOM ? false : balloon.CanGrow; newStaticBalloon.Borders = balloon.Borders; newStaticBalloon.FillCapacity = balloon.FillCapacity; newStaticBalloon.AvailableOnEveryPage = balloon.AvailableOnEveryPage; newStaticBalloon.FillingGeneratesNew = balloon.FillingGeneratesNew; newStaticBalloon.FitToContent = balloon.FitToContent; newStaticBalloon.FillColor = balloon.FillColor; newStaticBalloon.MeasureUnit = balloon.MeasureUnit; float relLocationX = balloon.LocationInPixelsX; //unitConverter.ConvertUnit(balloon.LocationInUnitsX, balloon.MeasureUnit, MeasureUnits.point); float relLocationY = balloon.LocationInPixelsY; //unitConverter.ConvertUnit(balloon.LocationInUnitsY, balloon.MeasureUnit, MeasureUnits.point); float width = balloon.GetFitToContentWidthInPixels(); float height = balloon.GetFitToContentHeightInPixels(); newStaticBalloon.containerRect.left = relLocationX; newStaticBalloon.containerRect.bottom = relLocationY + height; newStaticBalloon.containerRect.right = relLocationX + width; newStaticBalloon.containerRect.top = relLocationY; newStaticBalloon.positionRect.top = relLocationY; newStaticBalloon.positionRect.left = relLocationX; return(newStaticBalloon); } else { DynamicBalloon newDynamicBalloon = new DynamicBalloon(); newDynamicBalloon.FillColor = balloon.FillColor; newDynamicBalloon.TemplateBalloon = balloon; newDynamicBalloon.LocationInUnitsX = balloon.LocationInUnitsX; newDynamicBalloon.LocationInUnitsY = balloon.LocationInUnitsY; newDynamicBalloon.zoomLevel = balloon.zoomLevel; newDynamicBalloon.sourceBallon = balloon; newDynamicBalloon.Disabled = true; newDynamicBalloon.FitToContent = balloon.FitToContent; newDynamicBalloon.CanGrow = balloon.CanGrow; newDynamicBalloon.Borders = balloon.Borders; newDynamicBalloon.FillCapacity = balloon.FillCapacity; newDynamicBalloon.AvailableOnEveryPage = balloon.AvailableOnEveryPage; newDynamicBalloon.FillingGeneratesNew = balloon.FillingGeneratesNew; newDynamicBalloon.MeasureUnit = balloon.MeasureUnit; newDynamicBalloon.WidthInPixels = balloon.GetFitToContentWidthInPixels(); newDynamicBalloon.HeightInPixels = balloon.GetFitToContentHeightInPixels(); newDynamicBalloon.positionRect.top = balloon.LocationInPixelsY; newDynamicBalloon.positionRect.left = balloon.LocationInPixelsX; return(newDynamicBalloon); } return(null); }