Exemplo n.º 1
0
        public override LayoutResult Layout(LayoutContext layoutContext)
        {
            LayoutArea area   = layoutContext.GetArea();
            float?     width  = RetrieveWidth(area.GetBBox().GetWidth());
            float?     height = this.GetPropertyAsFloat(Property.HEIGHT);

            occupiedArea = new LayoutArea(area.GetPageNumber(), new Rectangle(area.GetBBox().GetX(), area.GetBBox().GetY
                                                                                  () + area.GetBBox().GetHeight(), (float)width, (float)height));
            return(new LayoutResult(LayoutResult.FULL, occupiedArea, null, null));
        }
        public void LayoutAreaAdminService_DeleteArea_DeletesThePassedArea()
        {
            var layoutArea = new LayoutArea();

            Session.Transact(session => session.Save(layoutArea));

            _layoutAreaAdminService.DeleteArea(layoutArea);

            Session.QueryOver <LayoutArea>().RowCount().Should().Be(0);
        }
        public void LayoutAreaAdminService_GetArea_ShouldReturnLayoutAreaForValidId()
        {
            var layoutArea = new LayoutArea();

            Session.Transact(session => session.SaveOrUpdate(layoutArea));
            var layoutAreaService = _layoutAreaAdminService;

            var loadedLayoutArea = layoutAreaService.GetArea(layoutArea.Id);

            loadedLayoutArea.Should().BeSameAs(layoutArea);
        }
Exemplo n.º 4
0
        public PartialViewResult Add(LayoutArea layoutArea, int pageId = 0, string returnUrl = null)
        {
            TempData["returnUrl"] = returnUrl;
            var model = new AddWidgetModel
            {
                LayoutArea = layoutArea,
                Webpage    = _documentService.GetDocument <Webpage>(pageId)
            };

            return(PartialView(model));
        }
Exemplo n.º 5
0
            protected override LayoutArea UpdateCurrentArea(LayoutResult overflowResult)
            {
                LayoutArea area = base.UpdateCurrentArea(overflowResult);

                if (area.GetPageNumber() == 1)
                {
                    area.GetBBox().DecreaseHeight(266);
                }

                return(area);
            }
Exemplo n.º 6
0
        public PartialViewResult Add(LayoutArea layoutArea, int pageId = 0, string returnUrl = null)
        {
            TempData["returnUrl"] = returnUrl;
            var model = new AddWidgetModel
            {
                LayoutArea = layoutArea,
                Webpage    = _webpageRepository.Get(pageId)
            };

            return(PartialView(model));
        }
Exemplo n.º 7
0
        public override LayoutResult Layout(LayoutContext layoutContext)
        {
            // Resolve width here in case it's relative, while parent width is still intact.
            // If it's inline-block context, relative width is already resolved.
            float?width = RetrieveWidth(layoutContext.GetArea().GetBBox().GetWidth());

            if (width != null)
            {
                UpdateWidth(UnitValue.CreatePointValue((float)width));
            }
            float      childrenMaxWidth = GetMinMaxWidth().GetMaxWidth();
            LayoutArea area             = layoutContext.GetArea().Clone();

            area.GetBBox().MoveDown(INF - area.GetBBox().GetHeight()).SetHeight(INF).SetWidth(childrenMaxWidth + EPS);
            LayoutResult layoutResult = base.Layout(new LayoutContext(area, layoutContext.GetMarginsCollapseInfo(), layoutContext
                                                                      .GetFloatRendererAreas(), layoutContext.IsClippedHeight()));

            if (layoutResult.GetStatus() != LayoutResult.FULL)
            {
                if (true.Equals(GetPropertyAsBoolean(Property.FORCED_PLACEMENT)))
                {
                    layoutResult = MakeLayoutResultFull(layoutContext.GetArea(), layoutResult);
                }
                else
                {
                    return(new LayoutResult(LayoutResult.NOTHING, null, null, this, this));
                }
            }
            float     availableHeight = layoutContext.GetArea().GetBBox().GetHeight();
            bool      isClippedHeight = layoutContext.IsClippedHeight();
            Rectangle dummy           = new Rectangle(0, 0);

            ApplyMargins(dummy, true);
            ApplyBorderBox(dummy, true);
            ApplyPaddings(dummy, true);
            float additionalHeight = dummy.GetHeight();

            availableHeight -= additionalHeight;
            availableHeight  = Math.Max(availableHeight, 0);
            float actualHeight           = GetOccupiedArea().GetBBox().GetHeight() - additionalHeight;
            float finalSelectFieldHeight = GetFinalSelectFieldHeight(availableHeight, actualHeight, isClippedHeight);

            if (finalSelectFieldHeight < 0)
            {
                return(new LayoutResult(LayoutResult.NOTHING, null, null, this, this));
            }
            float delta = finalSelectFieldHeight - actualHeight;

            if (Math.Abs(delta) > EPS)
            {
                GetOccupiedArea().GetBBox().IncreaseHeight(delta).MoveDown(delta);
            }
            return(layoutResult);
        }
Exemplo n.º 8
0
        public ActionResult ResetSorting(LayoutArea area, int pageId, string returnUrl = null)
        {
            _layoutAreaAdminService.ResetSorting(area, pageId);

            if (!string.IsNullOrEmpty(returnUrl))
            {
                return(Redirect(returnUrl));
            }

            return(RedirectToAction("Edit", "Webpage", new { id = pageId }));
        }
        public void LayoutAreaAdminService_SaveArea_IfLayoutIsSetAddLayoutAreaToLayoutAreasList()
        {
            var layout     = new Layout();
            var layoutArea = new LayoutArea {
                Layout = layout
            };

            _layoutAreaAdminService.SaveArea(layoutArea);

            layout.LayoutAreas.Should().Contain(layoutArea);
        }
Exemplo n.º 10
0
 protected internal AbstractRenderer(iText.Layout.Renderer.AbstractRenderer other
                                     )
 {
     this.childRenderers      = other.childRenderers;
     this.positionedRenderers = other.positionedRenderers;
     this.modelElement        = other.modelElement;
     this.flushed             = other.flushed;
     this.occupiedArea        = other.occupiedArea.Clone();
     this.parent = other.parent;
     this.properties.AddAll(other.properties);
     this.isLastRendererForModelElement = other.isLastRendererForModelElement;
 }
Exemplo n.º 11
0
        private LayoutResult MakeLayoutResultFull(LayoutArea layoutArea, LayoutResult layoutResult)
        {
            IRenderer splitRenderer = layoutResult.GetSplitRenderer() != null?layoutResult.GetSplitRenderer() : this;

            if (occupiedArea == null)
            {
                occupiedArea = new LayoutArea(layoutArea.GetPageNumber(), new Rectangle(layoutArea.GetBBox().GetLeft(), layoutArea
                                                                                        .GetBBox().GetTop(), 0, 0));
            }
            layoutResult = new LayoutResult(LayoutResult.FULL, occupiedArea, splitRenderer, null);
            return(layoutResult);
        }
        public void LayoutAreaController_DeletePost_ShouldCallDeleteAreaForThePassedArea()
        {
            var layoutArea = new LayoutArea {
                Layout = new Layout {
                    Id = 1
                }
            };

            _layoutAreaController.Delete(layoutArea);

            A.CallTo(() => _layoutAreaAdminService.DeleteArea(layoutArea)).MustHaveHappened();
        }
Exemplo n.º 13
0
        /// <summary>
        /// <p>
        /// Corrects split and overflow renderers when
        /// <see cref="iText.Layout.Properties.Property.FORCED_PLACEMENT"/>
        /// is applied.
        /// We assume that
        /// <see cref="iText.Layout.Properties.Property.FORCED_PLACEMENT"/>
        /// is applied when the first
        /// <see cref="ListItemRenderer"/>
        /// cannot be fully layouted.
        /// This means that the problem has occurred in one of first list item renderer's child.
        /// We consider the right solution to force placement of all first item renderer's childs before the one,
        /// which was the cause of
        /// <see cref="iText.Layout.Layout.LayoutResult.NOTHING"/>
        /// , including this child.
        /// </p>
        /// <p>
        /// Notice that we do not expect
        /// <see cref="iText.Layout.Properties.Property.FORCED_PLACEMENT"/>
        /// to be applied
        /// if we can render the first item renderer and strongly recommend not to set
        /// <see cref="iText.Layout.Properties.Property.FORCED_PLACEMENT"/>
        /// manually.
        /// </p>
        /// </summary>
        /// <param name="splitRenderer">
        /// the
        /// <see cref="IRenderer">split renderer</see>
        /// before correction
        /// </param>
        /// <param name="overflowRenderer">
        /// the
        /// <see cref="IRenderer">overflow renderer</see>
        /// before correction
        /// </param>
        /// <param name="causeOfNothing">
        /// the
        /// <see cref="com.itextpdf.layout.layout.LayoutResult#causeOfNothing">cause of nothing renderer</see>
        /// </param>
        /// <param name="occupiedArea">the area occupied by layouting before correction</param>
        /// <returns>
        /// corrected
        /// <see cref="iText.Layout.Layout.LayoutResult">layout result</see>
        /// </returns>
        private LayoutResult CorrectListSplitting(IRenderer splitRenderer, IRenderer overflowRenderer, IRenderer causeOfNothing
                                                  , LayoutArea occupiedArea)
        {
            // the first not rendered child
            int firstNotRendered = splitRenderer.GetChildRenderers()[0].GetChildRenderers().IndexOf(causeOfNothing);

            if (-1 == firstNotRendered)
            {
                return(new LayoutResult(null == overflowRenderer ? LayoutResult.FULL : LayoutResult.PARTIAL, occupiedArea,
                                        splitRenderer, overflowRenderer, this));
            }
            // Notice that placed item is a son of the first ListItemRenderer (otherwise there would be now FORCED_PLACEMENT applied)
            IRenderer firstListItemRenderer = splitRenderer.GetChildRenderers()[0];

            iText.Layout.Renderer.ListRenderer newOverflowRenderer = (iText.Layout.Renderer.ListRenderer)CreateOverflowRenderer
                                                                         (LayoutResult.PARTIAL);
            newOverflowRenderer.DeleteOwnProperty(Property.FORCED_PLACEMENT);
            // ListItemRenderer for not rendered children of firstListItemRenderer
            newOverflowRenderer.childRenderers.Add(((ListItemRenderer)firstListItemRenderer).CreateOverflowRenderer(LayoutResult
                                                                                                                    .PARTIAL));
            newOverflowRenderer.childRenderers.AddAll(splitRenderer.GetChildRenderers().SubList(1, splitRenderer.GetChildRenderers
                                                                                                    ().Count));
            IList <IRenderer> childrenStillRemainingToRender = new List <IRenderer>(firstListItemRenderer.GetChildRenderers
                                                                                        ().SubList(firstNotRendered + 1, firstListItemRenderer.GetChildRenderers().Count));

            // 'this' renderer will become split renderer
            splitRenderer.GetChildRenderers().RemoveAll(splitRenderer.GetChildRenderers().SubList(1, splitRenderer.GetChildRenderers
                                                                                                      ().Count));
            if (0 != childrenStillRemainingToRender.Count)
            {
                newOverflowRenderer.GetChildRenderers()[0].GetChildRenderers().AddAll(childrenStillRemainingToRender);
                splitRenderer.GetChildRenderers()[0].GetChildRenderers().RemoveAll(childrenStillRemainingToRender);
                newOverflowRenderer.GetChildRenderers()[0].SetProperty(Property.MARGIN_LEFT, splitRenderer.GetChildRenderers
                                                                           ()[0].GetProperty <UnitValue>(Property.MARGIN_LEFT));
            }
            else
            {
                newOverflowRenderer.childRenderers.JRemoveAt(0);
            }
            if (null != overflowRenderer)
            {
                newOverflowRenderer.childRenderers.AddAll(overflowRenderer.GetChildRenderers());
            }
            if (0 != newOverflowRenderer.childRenderers.Count)
            {
                return(new LayoutResult(LayoutResult.PARTIAL, occupiedArea, splitRenderer, newOverflowRenderer, this));
            }
            else
            {
                return(new LayoutResult(LayoutResult.FULL, occupiedArea, null, null, this));
            }
        }
        public void LayoutAreaController_EditPost_ShouldCallLayoutServicesSaveArea()
        {
            var layoutArea = new LayoutArea();
            var layout     = new Layout {
                Id = 1
            };

            layoutArea.Layout = layout;

            _layoutAreaController.Edit(layoutArea);

            A.CallTo(() => _layoutAreaAdminService.Update(layoutArea)).MustHaveHappened();
        }
        public void LayoutAreaController_AddPost_ShouldCallSaveArea()
        {
            var layoutArea = new LayoutArea();
            var layout     = new Layout {
                Id = 1
            };

            layoutArea.Layout = layout;

            _layoutAreaController.Add(layoutArea);

            A.CallTo(() => _layoutAreaAdminService.Add(layoutArea)).MustHaveHappened();
        }
Exemplo n.º 16
0
 protected internal override LayoutArea UpdateCurrentArea(LayoutResult overflowResult)
 {
     if (currentArea == null)
     {
         currentArea = new LayoutArea(0, canvas.GetRootArea().Clone());
     }
     else
     {
         SetProperty(Property.FULL, true);
         currentArea = null;
     }
     return(currentArea);
 }
Exemplo n.º 17
0
        public void LayoutAreaAdminService_DeleteArea_AreaIsRemovedFromLayoutsLayoutAreaList()
        {
            var layout     = new Layout();
            var layoutArea = new LayoutArea {
                Layout = layout
            };

            layout.LayoutAreas.Add(layoutArea);

            _layoutAreaAdminService.DeleteArea(layoutArea);

            layout.LayoutAreas.Should().NotContain(layoutArea);
        }
            public override IList <Rectangle> InitElementAreas(LayoutArea area)
            {
                List <Rectangle> areas      = new List <Rectangle>();
                Rectangle        firstArea  = area.GetBBox().Clone();
                Rectangle        secondArea = area.GetBBox().Clone();

                firstArea.SetWidth(firstArea.GetWidth() / 2 - 5);
                secondArea.SetX(secondArea.GetX() + secondArea.GetWidth() / 2 + 5);
                secondArea.SetWidth(firstArea.GetWidth());

                areas.Add(firstArea);
                areas.Add(secondArea);
                return(areas);
            }
 protected internal override LayoutArea UpdateCurrentArea(LayoutResult overflowResult)
 {
     if (overflowResult != null && overflowResult.GetAreaBreak() != null && overflowResult.GetAreaBreak().GetAreaType
             () != AreaBreakType.NEXT_AREA)
     {
         nextAreaNumber = 0;
     }
     if (nextAreaNumber % columns.Length == 0)
     {
         base.UpdateCurrentArea(overflowResult);
     }
     return(currentArea = new LayoutArea(currentPageNumber, columns[nextAreaNumber++ % columns.Length].Clone()
                                         ));
 }
Exemplo n.º 20
0
        public virtual void NoNeedToSplitTextRendererOnLineSplit()
        {
            PdfDocument pdfDocument = new PdfDocument(new PdfWriter(new MemoryStream()));
            Document    document    = new Document(pdfDocument);
            PdfFont     pdfFont     = PdfFontFactory.CreateFont(REGULAR_FONT, PdfEncodings.IDENTITY_H);
            // หากอากาศอากาศ - first 3 glyphs are an unbreakable placeholder in the first renderer so that text.start != 0;
            // the next 5 glyphs are an unbreakable part of first renderer that're supposed to fully fit on the first line,
            // the last 5 glyphs are an unbreakable part of the second renderer that could fit only partially, hence fully overflowed
            String       thai = "\u0E2B\u0E32\u0E01" + THAI_WORD + THAI_WORD;
            TextRenderer textRendererFirst = new TextRenderer(new Text(""));

            textRendererFirst.SetProperty(Property.FONT, pdfFont);
            textRendererFirst.SetText(thai.JSubstring(0, 8));
            textRendererFirst.text.start = 3;
            textRendererFirst.SetSpecialScriptsWordBreakPoints(new List <int>(JavaUtil.ArraysAsList(3, 8)));
            textRendererFirst.SetParent(document.GetRenderer());
            float        longestWordLength  = textRendererFirst.GetMinMaxWidth().GetMaxWidth();
            TextRenderer textRendererSecond = new TextRenderer(new Text(thai.Substring(8)));

            textRendererSecond.SetProperty(Property.FONT, pdfFont);
            textRendererSecond.SetSpecialScriptsWordBreakPoints(new List <int>(JavaUtil.ArraysAsList(5)));
            LayoutArea   layoutArea   = new LayoutArea(1, new Rectangle(longestWordLength * 1.5f, AbstractRenderer.INF));
            LineRenderer lineRenderer = new LineRenderer();

            lineRenderer.SetParent(document.GetRenderer());
            lineRenderer.AddChild(textRendererFirst);
            lineRenderer.AddChild(textRendererSecond);
            LayoutResult result = lineRenderer.Layout(new LayoutContext(layoutArea));

            NUnit.Framework.Assert.AreEqual(LayoutResult.PARTIAL, result.GetStatus());
            IRenderer splitRenderer = result.GetSplitRenderer();

            NUnit.Framework.Assert.IsNotNull(splitRenderer);
            IList <IRenderer> splitChildren = splitRenderer.GetChildRenderers();

            NUnit.Framework.Assert.IsNotNull(splitChildren);
            NUnit.Framework.Assert.AreEqual(1, splitChildren.Count);
            IRenderer overflowRenderer = result.GetOverflowRenderer();

            NUnit.Framework.Assert.IsNotNull(overflowRenderer);
            IList <IRenderer> overflowChildren = overflowRenderer.GetChildRenderers();

            NUnit.Framework.Assert.IsNotNull(overflowChildren);
            NUnit.Framework.Assert.AreEqual(1, overflowChildren.Count);
            TextRenderer splitChild    = (TextRenderer)splitChildren[0];
            TextRenderer overflowChild = (TextRenderer)overflowChildren[0];

            NUnit.Framework.Assert.AreEqual(splitChild.text, overflowChild.text);
        }
        public void LayoutAreaController_AddPost_ShouldRedirectToEditLayout()
        {
            var layoutArea = new LayoutArea();
            var layout     = new Layout {
                Id = 1
            };

            layoutArea.Layout = layout;

            ActionResult actionResult = _layoutAreaController.Add(layoutArea);

            actionResult.As <RedirectToRouteResult>().RouteValues["action"].Should().Be("Edit");
            actionResult.As <RedirectToRouteResult>().RouteValues["controller"].Should().Be("Layout");
            actionResult.As <RedirectToRouteResult>().RouteValues["id"].Should().Be(1);
        }
        public void LayoutAreaController_EditPost_ShouldRedirectBackToTheLayoutOnceDone()
        {
            var layoutArea = new LayoutArea();
            var layout     = new Layout {
                Id = 1
            };

            layoutArea.Layout = layout;

            ActionResult actionResult = _layoutAreaController.Edit(layoutArea);

            actionResult.As <RedirectToRouteResult>().RouteValues["action"].Should().Be("Edit");
            actionResult.As <RedirectToRouteResult>().RouteValues["controller"].Should().Be("Layout");
            actionResult.As <RedirectToRouteResult>().RouteValues["id"].Should().Be(1);
        }
Exemplo n.º 23
0
    public override void InitializeAgent()
    {
        // layoutAcademy = GameObject.FindObjectOfType<Academy>().GetComponent<LayoutAcademy>();
        layoutArea = transform.parent.GetComponent <LayoutArea>();

        //transform.position = layoutAcademy.agentPosition[agentNumber];
        transform.position = layoutArea.agentPosition[agentNumber];

        //gridSize = layoutAcademy.gridSize;
        gridSize    = layoutArea.gridSize;
        x_Ex        = layoutArea.x_Ex;
        y_Ex        = layoutArea.y_Ex;
        shape       = layoutArea.shape;
        offsetShape = layoutArea.offsetShape;
    }
Exemplo n.º 24
0
        protected internal virtual iText.Layout.Renderer.ImageRenderer AutoScale(LayoutArea layoutArea)
        {
            Rectangle area = layoutArea.GetBBox().Clone();

            ApplyMargins(area, false);
            ApplyBorderBox(area, false);
            // if rotation was applied, width would be equal to the width of rectangle bounding the rotated image
            float angleScaleCoef = imageWidth / (float)width;

            if (width > angleScaleCoef * area.GetWidth())
            {
                UpdateHeight(UnitValue.CreatePointValue(area.GetWidth() / (float)width * imageHeight));
                UpdateWidth(UnitValue.CreatePointValue(angleScaleCoef * area.GetWidth()));
            }
            return(this);
        }
Exemplo n.º 25
0
 protected internal virtual iText.Layout.Renderer.ImageRenderer AutoScale(LayoutArea area)
 {
     if (width > area.GetBBox().GetWidth())
     {
         SetProperty(Property.HEIGHT, area.GetBBox().GetWidth() / width * imageHeight);
         SetProperty(Property.WIDTH, UnitValue.CreatePointValue(area.GetBBox().GetWidth()));
         // if still image is not scaled properly
         if (this.GetPropertyAsFloat(Property.HEIGHT) > area.GetBBox().GetHeight())
         {
             SetProperty(Property.WIDTH, UnitValue.CreatePointValue(area.GetBBox().GetHeight() / (float)this.GetPropertyAsFloat
                                                                        (Property.HEIGHT) * (this.GetProperty <UnitValue>(Property.WIDTH)).GetValue()));
             SetProperty(Property.HEIGHT, UnitValue.CreatePointValue(area.GetBBox().GetHeight()));
         }
     }
     return(this);
 }
Exemplo n.º 26
0
        public virtual void CurWidthLayoutResultPartial()
        {
            float        widthOfNewPartialResult = 500;
            LayoutArea   oldOccupiedArea         = new LayoutArea(1, new Rectangle(0, 0, widthOfNewPartialResult, 0));
            LayoutResult oldResult       = new LayoutResult(LayoutResult.FULL, oldOccupiedArea, null, null);
            float        simpleWidth     = 200;
            LayoutResult simpleDecrement = new LayoutResult(LayoutResult.FULL, new LayoutArea(1, new Rectangle(0, 0, simpleWidth
                                                                                                               , 0)), null, null);
            IDictionary <int, LayoutResult> specialScriptLayoutResults = new Dictionary <int, LayoutResult>();

            specialScriptLayoutResults.Put(0, oldResult);
            // leave specialScriptLayoutResults.get(1) null, as if childRenderers.get(1) is floating
            specialScriptLayoutResults.Put(2, simpleDecrement);
            float decrement = LineRenderer.GetCurWidthSpecialScriptsDecrement(3, 0, specialScriptLayoutResults);

            NUnit.Framework.Assert.AreEqual(widthOfNewPartialResult + simpleWidth, decrement, 0.00001);
        }
Exemplo n.º 27
0
        public virtual void ForcedSplitOnTooNarrowArea()
        {
            PdfDocument  pdfDocument  = new PdfDocument(new PdfWriter(new MemoryStream()));
            Document     document     = new Document(pdfDocument);
            TextRenderer textRenderer = new TextRenderer(new Text(THAI_WORD));

            textRenderer.SetProperty(Property.FONT, PdfFontFactory.CreateFont(THAI_FONT, PdfEncodings.IDENTITY_H));
            textRenderer.SetSpecialScriptsWordBreakPoints(new List <int>(JavaUtil.ArraysAsList(5)));
            LineRenderer lineRenderer = new LineRenderer();

            lineRenderer.SetParent(document.GetRenderer());
            lineRenderer.AddChild(textRenderer);
            float        minWidth     = lineRenderer.GetMinMaxWidth().GetMinWidth();
            LayoutArea   layoutArea   = new LayoutArea(1, new Rectangle(minWidth / 2, 100));
            LayoutResult layoutResult = lineRenderer.Layout(new LayoutContext(layoutArea));

            NUnit.Framework.Assert.IsTrue(layoutResult.GetStatus() == LayoutResult.PARTIAL);
        }
Exemplo n.º 28
0
        public virtual void WordWrappingUnavailableWithNoCalligraph()
        {
            PdfDocument  pdfDocument  = new PdfDocument(new PdfWriter(new MemoryStream()));
            Document     document     = new Document(pdfDocument);
            TextRenderer textRenderer = new TextRenderer(new iText.Layout.Element.Text(THAI_TEXT));

            textRenderer.SetProperty(Property.FONT, PdfFontFactory.CreateFont(THAI_FONT, PdfEncodings.IDENTITY_H));
            LineRenderer lineRenderer = new LineRenderer();

            lineRenderer.SetParent(document.GetRenderer());
            lineRenderer.AddChild(textRenderer);
            float      maxWidth   = lineRenderer.GetMinMaxWidth().GetMaxWidth();
            LayoutArea layoutArea = new LayoutArea(1, new Rectangle(maxWidth / 2, 100));

            lineRenderer.Layout(new LayoutContext(layoutArea));
            NUnit.Framework.Assert.IsNull(((TextRenderer)lineRenderer.GetChildRenderers()[0]).GetSpecialScriptsWordBreakPoints
                                              ());
        }
Exemplo n.º 29
0
        public virtual void TrailingRightSideSpacesGetIndexAndLayoutResult()
        {
            PdfDocument  pdfDocument  = new PdfDocument(new PdfWriter(new MemoryStream()));
            Document     document     = new Document(pdfDocument);
            LineRenderer lineRenderer = new LineRenderer();

            lineRenderer.SetParent(document.GetRenderer());
            PdfFont font = PdfFontFactory.CreateFont(THAI_FONT, PdfEncodings.IDENTITY_H);
            IDictionary <int, LayoutResult> specialScriptLayoutResults = new Dictionary <int, LayoutResult>();

            for (int i = 0; i < THAI_WORD.Length; i++)
            {
                TextRenderer textRenderer = new TextRenderer(new Text(""));
                textRenderer.SetProperty(Property.FONT, font);
                if (i == THAI_WORD.Length - 1)
                {
                    textRenderer.SetText(new String(new char[] { THAI_WORD[i], ' ', ' ', ' ' }));
                    textRenderer.SetSpecialScriptsWordBreakPoints(new List <int>(JavaUtil.ArraysAsList(4)));
                }
                else
                {
                    textRenderer.SetText(new String(new char[] { THAI_WORD[i] }));
                    textRenderer.SetSpecialScriptsWordBreakPoints(new List <int>(JavaUtil.ArraysAsList(-1)));
                }
                lineRenderer.AddChild(textRenderer);
                LayoutArea layoutArea = new LayoutArea(1, new Rectangle(0, 0, i * 100, 100));
                if (i == THAI_WORD.Length - 1)
                {
                    textRenderer.occupiedArea = layoutArea;
                    TextRenderer[] split = textRenderer.Split(1);
                    specialScriptLayoutResults.Put(i, new LayoutResult(LayoutResult.PARTIAL, layoutArea, split[0], split[1]));
                }
                else
                {
                    specialScriptLayoutResults.Put(i, new LayoutResult(LayoutResult.FULL, layoutArea, null, null));
                }
            }
            LineRenderer.LastFittingChildRendererData lastFittingChildRendererData = lineRenderer.GetIndexAndLayoutResultOfTheLastRendererToRemainOnTheLine
                                                                                         (THAI_WORD.Length - 1, specialScriptLayoutResults, false, new List <IRenderer>());
            NUnit.Framework.Assert.AreEqual(THAI_WORD.Length - 1, lastFittingChildRendererData.childIndex);
            NUnit.Framework.Assert.AreEqual(specialScriptLayoutResults.Get(THAI_WORD.Length - 1), lastFittingChildRendererData
                                            .childLayoutResult);
        }
Exemplo n.º 30
0
        public virtual void OneThaiWordSplitAcrossMultipleRenderersGetIndexAndLayoutResult()
        {
            PdfDocument  pdfDocument  = new PdfDocument(new PdfWriter(new MemoryStream()));
            Document     document     = new Document(pdfDocument);
            LineRenderer lineRenderer = new LineRenderer();

            lineRenderer.SetParent(document.GetRenderer());
            String  twoWords = THAI_WORD + "\u0E14\u0E35";
            PdfFont font     = PdfFontFactory.CreateFont(THAI_FONT, PdfEncodings.IDENTITY_H);
            IDictionary <int, LayoutResult> specialScriptLayoutResults = new Dictionary <int, LayoutResult>();

            for (int i = 0; i < twoWords.Length; i++)
            {
                TextRenderer textRenderer = new TextRenderer(new Text(""));
                textRenderer.SetProperty(Property.FONT, font);
                textRenderer.SetText(new String(new char[] { twoWords[i] }));
                if (i == THAI_WORD.Length - 1 || i == twoWords.Length - 1)
                {
                    textRenderer.SetSpecialScriptsWordBreakPoints(new List <int>(JavaUtil.ArraysAsList(1)));
                }
                else
                {
                    textRenderer.SetSpecialScriptsWordBreakPoints(new List <int>(JavaUtil.ArraysAsList(-1)));
                }
                lineRenderer.AddChild(textRenderer);
                LayoutArea layoutArea = new LayoutArea(1, new Rectangle(0, 0, i * 100, 100));
                if (i == twoWords.Length - 1)
                {
                    specialScriptLayoutResults.Put(i, new LayoutResult(LayoutResult.NOTHING, layoutArea, null, null));
                }
                else
                {
                    specialScriptLayoutResults.Put(i, new LayoutResult(LayoutResult.FULL, layoutArea, null, null));
                }
            }
            LineRenderer.LastFittingChildRendererData lastFittingChildRendererData = lineRenderer.GetIndexAndLayoutResultOfTheLastRendererToRemainOnTheLine
                                                                                         (THAI_WORD.Length + 1, specialScriptLayoutResults, false, new List <IRenderer>());
            NUnit.Framework.Assert.AreEqual(5, lastFittingChildRendererData.childIndex);
            NUnit.Framework.Assert.AreEqual(LayoutResult.NOTHING, lastFittingChildRendererData.childLayoutResult.GetStatus
                                                ());
            NUnit.Framework.Assert.IsNull(lastFittingChildRendererData.childLayoutResult.GetOccupiedArea());
        }