@@ -207,8 +207,8 @@ public void endChildMarginsHandling(Rectangle layoutBox) {
207
207
}
208
208
209
209
public void startMarginsCollapse (Rectangle parentBBox ) {
210
- collapseInfo .getCollapseBefore ().joinMargin (getModelTopMargin (renderer ));
211
- collapseInfo .getCollapseAfter ().joinMargin (getModelBottomMargin (renderer ));
210
+ collapseInfo .getCollapseBefore ().joinMargin (defineTopMarginValueForCollapse (renderer ));
211
+ collapseInfo .getCollapseAfter ().joinMargin (defineBottomMarginValueForCollapse (renderer ));
212
212
213
213
if (!firstChildMarginAdjoinedToParent (renderer )) {
214
214
float topIndent = collapseInfo .getCollapseBefore ().getCollapsedMarginsSize ();
@@ -253,7 +253,7 @@ public void endMarginsCollapse(Rectangle layoutBox) {
253
253
} else {
254
254
ownCollapseAfter = new MarginsCollapse ();
255
255
}
256
- ownCollapseAfter .joinMargin (getModelBottomMargin (renderer ));
256
+ ownCollapseAfter .joinMargin (defineBottomMarginValueForCollapse (renderer ));
257
257
collapseInfo .setOwnCollapseAfter (ownCollapseAfter );
258
258
259
259
if (collapseInfo .isSelfCollapsing ()) {
@@ -544,33 +544,19 @@ private static boolean hasPositiveHeight(IRenderer renderer) {
544
544
}
545
545
546
546
private static boolean hasTopPadding (IRenderer renderer ) {
547
- UnitValue padding = renderer .getModelElement ().<UnitValue >getProperty (Property .PADDING_TOP );
548
- if (null != padding && !padding .isPointValue ()) {
549
- Logger logger = LoggerFactory .getLogger (MarginsCollapseHandler .class );
550
- logger .error (MessageFormatUtil .format (IoLogMessageConstant .PROPERTY_IN_PERCENTS_NOT_SUPPORTED ,
551
- Property .PADDING_TOP ));
552
- }
553
- return padding != null && padding .getValue () > 0 ;
547
+ return MarginsCollapseHandler .hasPadding (renderer , Property .PADDING_TOP );
554
548
}
555
549
556
550
private static boolean hasBottomPadding (IRenderer renderer ) {
557
- UnitValue padding = renderer .getModelElement ().<UnitValue >getProperty (Property .PADDING_BOTTOM );
558
- if (null != padding && !padding .isPointValue ()) {
559
- Logger logger = LoggerFactory .getLogger (MarginsCollapseHandler .class );
560
- logger .error (MessageFormatUtil .format (IoLogMessageConstant .PROPERTY_IN_PERCENTS_NOT_SUPPORTED ,
561
- Property .PADDING_BOTTOM ));
562
- }
563
- return padding != null && padding .getValue () > 0 ;
551
+ return MarginsCollapseHandler .hasPadding (renderer , Property .PADDING_BOTTOM );
564
552
}
565
553
566
554
private static boolean hasTopBorders (IRenderer renderer ) {
567
- IPropertyContainer modelElement = renderer .getModelElement ();
568
- return modelElement .hasProperty (Property .BORDER_TOP ) || modelElement .hasProperty (Property .BORDER );
555
+ return MarginsCollapseHandler .hasBorders (renderer , Property .BORDER_TOP );
569
556
}
570
557
571
558
private static boolean hasBottomBorders (IRenderer renderer ) {
572
- IPropertyContainer modelElement = renderer .getModelElement ();
573
- return modelElement .hasProperty (Property .BORDER_BOTTOM ) || modelElement .hasProperty (Property .BORDER );
559
+ return MarginsCollapseHandler .hasBorders (renderer , Property .BORDER_BOTTOM );
574
560
}
575
561
576
562
private static boolean rendererIsFloated (IRenderer renderer ) {
@@ -581,41 +567,56 @@ private static boolean rendererIsFloated(IRenderer renderer) {
581
567
return floatPropertyValue != null && !floatPropertyValue .equals (FloatPropertyValue .NONE );
582
568
}
583
569
584
- private static float getModelTopMargin (IRenderer renderer ) {
585
- UnitValue marginUV = renderer .getModelElement ().<UnitValue >getProperty (Property .MARGIN_TOP );
586
- if (null != marginUV && !marginUV .isPointValue ()) {
587
- Logger logger = LoggerFactory .getLogger (MarginsCollapseHandler .class );
588
- logger .error (MessageFormatUtil .format (IoLogMessageConstant .PROPERTY_IN_PERCENTS_NOT_SUPPORTED ,
589
- Property .MARGIN_TOP ));
590
- }
591
- // TODO Concerning "renderer instanceof CellRenderer" check: may be try to apply more general solution in future
592
- return marginUV != null && !(renderer instanceof CellRenderer ) ? marginUV .getValue () : 0 ;
570
+ private static float defineTopMarginValueForCollapse (IRenderer renderer ) {
571
+ return MarginsCollapseHandler .defineMarginValueForCollapse (renderer , Property .MARGIN_TOP );
593
572
}
594
573
595
574
private static void ignoreModelTopMargin (IRenderer renderer ) {
596
- renderer . setProperty ( Property . MARGIN_TOP , UnitValue . createPointValue ( 0f ) );
575
+ MarginsCollapseHandler . overrideModelTopMargin ( renderer , 0f );
597
576
}
598
577
599
578
private static void overrideModelTopMargin (IRenderer renderer , float collapsedMargins ) {
600
- renderer . setProperty ( Property .MARGIN_TOP , UnitValue . createPointValue ( collapsedMargins ) );
579
+ MarginsCollapseHandler . overrideModelMargin ( renderer , Property .MARGIN_TOP , collapsedMargins );
601
580
}
602
581
603
- private static float getModelBottomMargin (IRenderer renderer ) {
604
- UnitValue marginUV = renderer .getModelElement ().<UnitValue >getProperty (Property .MARGIN_BOTTOM );
582
+ private static float defineBottomMarginValueForCollapse (IRenderer renderer ) {
583
+ return MarginsCollapseHandler .defineMarginValueForCollapse (renderer , Property .MARGIN_BOTTOM );
584
+ }
585
+
586
+ private static void ignoreModelBottomMargin (IRenderer renderer ) {
587
+ MarginsCollapseHandler .overrideModelBottomMargin (renderer , 0f );
588
+ }
589
+
590
+ private static void overrideModelBottomMargin (IRenderer renderer , float collapsedMargins ) {
591
+ MarginsCollapseHandler .overrideModelMargin (renderer , Property .MARGIN_BOTTOM , collapsedMargins );
592
+ }
593
+
594
+ private static float defineMarginValueForCollapse (IRenderer renderer , int property ) {
595
+ UnitValue marginUV = renderer .getModelElement ().<UnitValue >getProperty (property );
605
596
if (null != marginUV && !marginUV .isPointValue ()) {
606
597
Logger logger = LoggerFactory .getLogger (MarginsCollapseHandler .class );
607
598
logger .error (MessageFormatUtil .format (IoLogMessageConstant .PROPERTY_IN_PERCENTS_NOT_SUPPORTED ,
608
- Property . MARGIN_TOP ));
599
+ property ));
609
600
}
610
- // TODO Concerning "renderer instanceof CellRenderer" check: may be try to apply more general solution in future
611
601
return marginUV != null && !(renderer instanceof CellRenderer ) ? marginUV .getValue () : 0 ;
612
602
}
613
603
614
- private static void ignoreModelBottomMargin (IRenderer renderer ) {
615
- renderer .setProperty (Property . MARGIN_BOTTOM , UnitValue .createPointValue (0f ));
604
+ private static void overrideModelMargin (IRenderer renderer , int property , float collapsedMargins ) {
605
+ renderer .setProperty (property , UnitValue .createPointValue (collapsedMargins ));
616
606
}
617
607
618
- private static void overrideModelBottomMargin (IRenderer renderer , float collapsedMargins ) {
619
- renderer .setProperty (Property .MARGIN_BOTTOM , UnitValue .createPointValue (collapsedMargins ));
608
+ private static boolean hasPadding (IRenderer renderer , int property ) {
609
+ UnitValue padding = renderer .getModelElement ().<UnitValue >getProperty (property );
610
+ if (null != padding && !padding .isPointValue ()) {
611
+ Logger logger = LoggerFactory .getLogger (MarginsCollapseHandler .class );
612
+ logger .error (MessageFormatUtil .format (IoLogMessageConstant .PROPERTY_IN_PERCENTS_NOT_SUPPORTED ,
613
+ property ));
614
+ }
615
+ return padding != null && padding .getValue () > 0 ;
616
+ }
617
+
618
+ private static boolean hasBorders (IRenderer renderer , int property ) {
619
+ IPropertyContainer modelElement = renderer .getModelElement ();
620
+ return modelElement .hasProperty (property ) || modelElement .hasProperty (Property .BORDER );
620
621
}
621
622
}
0 commit comments