예제 #1
0
        /// <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;
        }