@@ -44,9 +44,9 @@ This file is part of the iText (R) project.
44
44
package com .itextpdf .layout .renderer ;
45
45
46
46
47
- import com .itextpdf .io .logs .IoLogMessageConstant ;
48
- import com .itextpdf .io .font .constants .StandardFonts ;
49
47
import com .itextpdf .commons .utils .MessageFormatUtil ;
48
+ import com .itextpdf .io .font .constants .StandardFonts ;
49
+ import com .itextpdf .io .logs .IoLogMessageConstant ;
50
50
import com .itextpdf .io .util .TextUtil ;
51
51
import com .itextpdf .kernel .font .PdfFontFactory ;
52
52
import com .itextpdf .kernel .geom .Rectangle ;
@@ -68,6 +68,7 @@ This file is part of the iText (R) project.
68
68
import com .itextpdf .layout .properties .Property ;
69
69
import com .itextpdf .layout .properties .UnitValue ;
70
70
import com .itextpdf .layout .tagging .LayoutTaggingHelper ;
71
+
71
72
import java .io .IOException ;
72
73
import java .util .ArrayList ;
73
74
import java .util .List ;
@@ -231,6 +232,7 @@ private IRenderer createListSymbolRenderer(int index, IRenderer renderer) {
231
232
} else if (defaultListSymbol instanceof IListSymbolFactory ) {
232
233
return surroundTextBullet (((IListSymbolFactory ) defaultListSymbol ).createSymbol (index , this , renderer ).createRendererSubTree ());
233
234
} else if (defaultListSymbol == null ) {
235
+
234
236
return null ;
235
237
} else {
236
238
throw new IllegalStateException ();
@@ -269,7 +271,8 @@ private LineRenderer surroundTextBullet(IRenderer bulletRenderer) {
269
271
* @param occupiedArea the area occupied by layout before correction
270
272
* @return corrected {@link com.itextpdf.layout.layout.LayoutResult layout result}
271
273
*/
272
- private LayoutResult correctListSplitting (IRenderer splitRenderer , IRenderer overflowRenderer , IRenderer causeOfNothing , LayoutArea occupiedArea ) {
274
+ private LayoutResult correctListSplitting (IRenderer splitRenderer , IRenderer overflowRenderer ,
275
+ IRenderer causeOfNothing , LayoutArea occupiedArea ) {
273
276
// the first not rendered child
274
277
int firstNotRendered = splitRenderer .getChildRenderers ().get (0 ).getChildRenderers ().indexOf (causeOfNothing );
275
278
@@ -278,25 +281,31 @@ private LayoutResult correctListSplitting(IRenderer splitRenderer, IRenderer ove
278
281
occupiedArea , splitRenderer , overflowRenderer , this );
279
282
}
280
283
281
- // Notice that placed item is a son of the first ListItemRenderer (otherwise there would be now FORCED_PLACEMENT applied)
284
+ // Notice that placed item is a son of the first ListItemRenderer (otherwise there would be now
285
+ // FORCED_PLACEMENT applied)
282
286
IRenderer firstListItemRenderer = splitRenderer .getChildRenderers ().get (0 );
283
287
284
288
ListRenderer newOverflowRenderer = (ListRenderer ) createOverflowRenderer (LayoutResult .PARTIAL );
285
289
newOverflowRenderer .deleteOwnProperty (Property .FORCED_PLACEMENT );
286
290
// ListItemRenderer for not rendered children of firstListItemRenderer
287
- newOverflowRenderer .childRenderers .add (((ListItemRenderer ) firstListItemRenderer ).createOverflowRenderer (LayoutResult .PARTIAL ));
288
- newOverflowRenderer .childRenderers .addAll (splitRenderer .getChildRenderers ().subList (1 , splitRenderer .getChildRenderers ().size ()));
291
+ newOverflowRenderer .childRenderers .
292
+ add (((ListItemRenderer ) firstListItemRenderer ).createOverflowRenderer (LayoutResult .PARTIAL ));
293
+ newOverflowRenderer .childRenderers .
294
+ addAll (splitRenderer .getChildRenderers ().subList (1 , splitRenderer .getChildRenderers ().size ()));
289
295
290
296
List <IRenderer > childrenStillRemainingToRender =
291
- new ArrayList <>(firstListItemRenderer .getChildRenderers ().subList (firstNotRendered + 1 , firstListItemRenderer .getChildRenderers ().size ()));
297
+ new ArrayList <>(firstListItemRenderer .getChildRenderers ().
298
+ subList (firstNotRendered + 1 , firstListItemRenderer .getChildRenderers ().size ()));
292
299
293
300
// 'this' renderer will become split renderer
294
- splitRenderer .getChildRenderers ().removeAll (splitRenderer .getChildRenderers ().subList (1 , splitRenderer .getChildRenderers ().size ()));
301
+ splitRenderer .getChildRenderers ().removeAll (splitRenderer .getChildRenderers ().
302
+ subList (1 , splitRenderer .getChildRenderers ().size ()));
295
303
296
304
if (0 != childrenStillRemainingToRender .size ()) {
297
305
newOverflowRenderer .getChildRenderers ().get (0 ).getChildRenderers ().addAll (childrenStillRemainingToRender );
298
306
splitRenderer .getChildRenderers ().get (0 ).getChildRenderers ().removeAll (childrenStillRemainingToRender );
299
- newOverflowRenderer .getChildRenderers ().get (0 ).setProperty (Property .MARGIN_LEFT , splitRenderer .getChildRenderers ().get (0 ).<UnitValue >getProperty (Property .MARGIN_LEFT ));
307
+ newOverflowRenderer .getChildRenderers ().get (0 ).setProperty (Property .MARGIN_LEFT ,
308
+ splitRenderer .getChildRenderers ().get (0 ).<UnitValue >getProperty (Property .MARGIN_LEFT ));
300
309
} else {
301
310
newOverflowRenderer .childRenderers .remove (0 );
302
311
}
@@ -318,9 +327,12 @@ private LayoutResult initializeListSymbols(LayoutContext layoutContext) {
318
327
int listItemNum = (int )this .<Integer >getProperty (Property .LIST_START , 1 );
319
328
for (int i = 0 ; i < childRenderers .size (); i ++) {
320
329
childRenderers .get (i ).setParent (this );
321
- listItemNum = (childRenderers .get (i ).<Integer >getProperty (Property .LIST_SYMBOL_ORDINAL_VALUE ) != null ) ? (int ) childRenderers .get (i ).<Integer >getProperty (Property .LIST_SYMBOL_ORDINAL_VALUE ) : listItemNum ;
330
+ listItemNum = (childRenderers .get (i ).<Integer >getProperty (Property .LIST_SYMBOL_ORDINAL_VALUE ) != null ) ?
331
+ (int ) childRenderers .get (i ).<Integer >getProperty (Property .LIST_SYMBOL_ORDINAL_VALUE ) :
332
+ listItemNum ;
322
333
IRenderer currentSymbolRenderer = makeListSymbolRenderer (listItemNum , childRenderers .get (i ));
323
- if (BaseDirection .RIGHT_TO_LEFT .equals (this .<BaseDirection >getProperty (Property .BASE_DIRECTION ))) {
334
+ if (currentSymbolRenderer != null &&
335
+ BaseDirection .RIGHT_TO_LEFT == this .<BaseDirection >getProperty (Property .BASE_DIRECTION )) {
324
336
currentSymbolRenderer .setProperty (Property .BASE_DIRECTION , BaseDirection .RIGHT_TO_LEFT );
325
337
}
326
338
LayoutResult listSymbolLayoutResult = null ;
@@ -332,14 +344,16 @@ private LayoutResult initializeListSymbols(LayoutContext layoutContext) {
332
344
}
333
345
childRenderers .get (i ).setParent (null );
334
346
boolean isForcedPlacement = Boolean .TRUE .equals (getPropertyAsBoolean (Property .FORCED_PLACEMENT ));
335
- boolean listSymbolNotFit = listSymbolLayoutResult != null && listSymbolLayoutResult .getStatus () != LayoutResult .FULL ;
347
+ boolean listSymbolNotFit = listSymbolLayoutResult != null &&
348
+ listSymbolLayoutResult .getStatus () != LayoutResult .FULL ;
336
349
// TODO DEVSIX-1655: partially not fitting list symbol not shown at all, however this might be improved
337
350
if (listSymbolNotFit && isForcedPlacement ) {
338
351
currentSymbolRenderer = null ;
339
352
}
340
353
symbolRenderers .add (currentSymbolRenderer );
341
354
if (listSymbolNotFit && !isForcedPlacement ) {
342
- return new LayoutResult (LayoutResult .NOTHING , null , null , this , listSymbolLayoutResult .getCauseOfNothing ());
355
+ return new LayoutResult (LayoutResult .NOTHING , null , null , this ,
356
+ listSymbolLayoutResult .getCauseOfNothing ());
343
357
}
344
358
}
345
359
@@ -348,8 +362,10 @@ private LayoutResult initializeListSymbols(LayoutContext layoutContext) {
348
362
IRenderer symbolRenderer = symbolRenderers .get (i );
349
363
if (symbolRenderer != null ) {
350
364
IRenderer listItemRenderer = childRenderers .get (i );
351
- if ((ListSymbolPosition ) getListItemOrListProperty (listItemRenderer , this , Property .LIST_SYMBOL_POSITION ) != ListSymbolPosition .INSIDE ) {
352
- maxSymbolWidth = Math .max (maxSymbolWidth , symbolRenderer .getOccupiedArea ().getBBox ().getWidth ());
365
+ if ((ListSymbolPosition ) getListItemOrListProperty (listItemRenderer , this ,
366
+ Property .LIST_SYMBOL_POSITION ) != ListSymbolPosition .INSIDE ) {
367
+ maxSymbolWidth = Math .max (maxSymbolWidth ,
368
+ symbolRenderer .getOccupiedArea ().getBBox ().getWidth ());
353
369
}
354
370
}
355
371
}
@@ -373,7 +389,8 @@ private LayoutResult initializeListSymbols(LayoutContext layoutContext) {
373
389
marginToSet ));
374
390
}
375
391
float calculatedMargin = marginToSetUV .getValue ();
376
- if ((ListSymbolPosition ) getListItemOrListProperty (childRenderer , this , Property .LIST_SYMBOL_POSITION ) == ListSymbolPosition .DEFAULT ) {
392
+ if ((ListSymbolPosition ) getListItemOrListProperty (childRenderer , this , Property .LIST_SYMBOL_POSITION )
393
+ == ListSymbolPosition .DEFAULT ) {
377
394
calculatedMargin += maxSymbolWidth + (float ) (symbolIndent != null ? symbolIndent : 0f );
378
395
}
379
396
childRenderer .setProperty (marginToSet , UnitValue .createPointValue (calculatedMargin ));
0 commit comments