Skip to content

Commit bc159f0

Browse files
committed
Support column flex direction
DEVSIX-7619
1 parent e767c93 commit bc159f0

File tree

353 files changed

+3665
-334
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

353 files changed

+3665
-334
lines changed

src/main/java/com/itextpdf/html2pdf/css/apply/util/FlexApplierUtil.java

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -79,29 +79,19 @@ public static void applyFlexItemProperties(Map<String, String> cssProps, Process
7979
}
8080

8181
final String flexBasis = cssProps.get(CommonCssConstants.FLEX_BASIS);
82-
if (flexBasis == null || CommonCssConstants.AUTO.equals(flexBasis)) {
83-
// TODO DEVSIX-5003 use height as the main size if flex-direction: column.
84-
// we use main size property as a flex-basis value (when flex-basis: auto) in
85-
// corresponding with documentation https://www.w3.org/TR/css-flexbox-1/#valdef-flex-flex-basis
86-
final String flexElementWidth = cssProps.get(CommonCssConstants.WIDTH);
87-
if (flexElementWidth != null) {
82+
if (flexBasis != null && !CommonCssConstants.AUTO.equals(flexBasis)) {
83+
if (!CommonCssConstants.CONTENT.equals(flexBasis)) {
8884
final float em = CssDimensionParsingUtils.parseAbsoluteLength(cssProps.get(CssConstants.FONT_SIZE));
8985
final float rem = context.getCssContext().getRootFontSize();
90-
final UnitValue flexElementWidthAbsoluteLength = CssDimensionParsingUtils
91-
.parseLengthValueToPt(flexElementWidth, em, rem);
92-
element.setProperty(Property.FLEX_BASIS, flexElementWidthAbsoluteLength);
86+
final UnitValue flexBasisAbsoluteLength = CssDimensionParsingUtils
87+
.parseLengthValueToPt(flexBasis, em, rem);
88+
element.setProperty(Property.FLEX_BASIS, flexBasisAbsoluteLength);
89+
} else {
90+
// The case when we don't set the flex-basis property should be identified
91+
// as flex-basis: content
92+
LOGGER.warn(MessageFormatUtil.format(Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET,
93+
CommonCssConstants.FLEX_BASIS, CommonCssConstants.CONTENT));
9394
}
94-
} else if (!CommonCssConstants.CONTENT.equals(flexBasis)) {
95-
final float em = CssDimensionParsingUtils.parseAbsoluteLength(cssProps.get(CssConstants.FONT_SIZE));
96-
final float rem = context.getCssContext().getRootFontSize();
97-
final UnitValue flexBasisAbsoluteLength = CssDimensionParsingUtils
98-
.parseLengthValueToPt(flexBasis, em, rem);
99-
element.setProperty(Property.FLEX_BASIS, flexBasisAbsoluteLength);
100-
} else {
101-
// The case when we don't set the flex-basis property should be identified
102-
// as flex-basis: content
103-
LOGGER.warn(MessageFormatUtil.format(Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET,
104-
CommonCssConstants.FLEX_BASIS, CommonCssConstants.CONTENT));
10595
}
10696
}
10797

@@ -152,6 +142,12 @@ private static void applyDirection(Map<String, String> cssProps, IPropertyContai
152142
case CommonCssConstants.ROW_REVERSE:
153143
direction = FlexDirectionPropertyValue.ROW_REVERSE;
154144
break;
145+
case CommonCssConstants.COLUMN:
146+
direction = FlexDirectionPropertyValue.COLUMN;
147+
break;
148+
case CommonCssConstants.COLUMN_REVERSE:
149+
direction = FlexDirectionPropertyValue.COLUMN_REVERSE;
150+
break;
155151
default:
156152
direction = FlexDirectionPropertyValue.ROW;
157153
break;
@@ -285,6 +281,9 @@ private static Map<String, Set<String>> createSupportedFlexContainerPropertiesAn
285281
supportedFlexDirectionValues.add(CommonCssConstants.ROW);
286282
supportedFlexDirectionValues.add(CommonCssConstants.ROW_REVERSE);
287283

284+
supportedFlexDirectionValues.add(CommonCssConstants.COLUMN);
285+
supportedFlexDirectionValues.add(CommonCssConstants.COLUMN_REVERSE);
286+
288287
supportedPairs.put(CommonCssConstants.FLEX_DIRECTION, supportedFlexDirectionValues);
289288

290289
final Set<String> supportedAlignContentValues = new HashSet<>();
@@ -306,3 +305,4 @@ private static Map<String, Set<String>> createSupportedFlexContainerPropertiesAn
306305
return supportedPairs;
307306
}
308307
}
308+

src/test/java/com/itextpdf/html2pdf/css/DisplayFlexTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,22 @@ public void splitWrappedFlexContainersTest9() throws IOException, InterruptedExc
566566
public void splitWrappedFlexContainersTest10() throws IOException, InterruptedException {
567567
convertToPdfAndCompare("wrappedRowRtlFlexStartSplit", SOURCE_FOLDER, DESTINATION_FOLDER);
568568
}
569+
570+
@Test
571+
public void endlessColumnFlexContainerWithPercentFlexBasisTest() throws IOException, InterruptedException {
572+
convertToPdfAndCompare("endlessColumnFlexContainerWithPercentFlexBasis", SOURCE_FOLDER, DESTINATION_FOLDER);
573+
}
574+
575+
@Test
576+
public void definiteMainSizeColumnFlexContainerWithPercentFlexBasisTest() throws IOException, InterruptedException {
577+
convertToPdfAndCompare("definiteMainSizeColumnFlexContainerWithPercentFlexBasis", SOURCE_FOLDER, DESTINATION_FOLDER);
578+
}
579+
580+
@Test
581+
public void imageStretchColumnFlexContainerTest() throws IOException, InterruptedException {
582+
convertToPdfAndCompare("imageStretchColumnFlexContainer", SOURCE_FOLDER, DESTINATION_FOLDER);
583+
}
584+
569585
private static List<IElement> convertToElements(String name) throws IOException {
570586
String sourceHtml = SOURCE_FOLDER + name + ".html";
571587
ConverterProperties converterProperties = new ConverterProperties().setBaseUri(SOURCE_FOLDER);

src/test/java/com/itextpdf/html2pdf/css/FlexAlgoTest.java

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ This file is part of the iText (R) project.
2323
package com.itextpdf.html2pdf.css;
2424

2525
import com.itextpdf.html2pdf.ExtendedHtmlConversionITextTest;
26-
import com.itextpdf.html2pdf.logs.Html2PdfLogMessageConstant;
27-
import com.itextpdf.test.annotations.LogMessage;
28-
import com.itextpdf.test.annotations.LogMessages;
2926
import com.itextpdf.test.annotations.type.IntegrationTest;
3027

3128
import java.io.IOException;
@@ -65,157 +62,131 @@ public void item1BasisGtWidthGrow0Shrink01Test01() throws IOException, Interrupt
6562
}
6663

6764
@Test
68-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
6965
public void basis100Grow0Shrink0ColumnTest() throws IOException, InterruptedException {
7066
convertToPdfAndCompare("basis100Grow0Shrink0ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
7167
}
7268

7369
@Test
74-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
7570
public void basis100Grow1Shrink0ColumnTest() throws IOException, InterruptedException {
7671
convertToPdfAndCompare("basis100Grow1Shrink0ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
7772
}
7873

7974
@Test
80-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
8175
public void basis100Grow01Shrink0ColumnTest() throws IOException, InterruptedException {
8276
convertToPdfAndCompare("basis100Grow01Shrink0ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
8377
}
8478

8579
@Test
86-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
8780
public void basis200Grow0Shrink1ColumnTest() throws IOException, InterruptedException {
8881
convertToPdfAndCompare("basis200Grow0Shrink1ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
8982
}
9083

9184
@Test
92-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
9385
public void basis100Grow0CustomShrinkContainerHeight50ColumnTest() throws IOException, InterruptedException {
9486
convertToPdfAndCompare("basis100Grow0CustomShrinkContainerHeight50ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
9587
}
9688

9789
@Test
98-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
9990
public void basis200Grow0CustomShrinkColumnTest1() throws IOException, InterruptedException {
10091
convertToPdfAndCompare("basis200Grow0CustomShrinkColumnTest1", SOURCE_FOLDER, DESTINATION_FOLDER);
10192
}
10293

10394
@Test
104-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
10595
public void basis200Grow0Shrink01ColumnTest() throws IOException, InterruptedException {
10696
convertToPdfAndCompare("basis200Grow0Shrink01ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
10797
}
10898

10999
@Test
110-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
111100
public void basis200Height150Grow0Shrink1ColumnTest() throws IOException, InterruptedException {
112101
convertToPdfAndCompare("basis200Height150Grow0Shrink1ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
113102
}
114103

115104
@Test
116-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
117105
public void basis100Height150Grow1Shrink0ColumnTest() throws IOException, InterruptedException {
118106
convertToPdfAndCompare("basis100Height150Grow1Shrink0ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
119107
}
120108

121109
@Test
122-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
123110
public void basis100Height50Grow1Shrink0ColumnTest() throws IOException, InterruptedException {
124111
convertToPdfAndCompare("basis100Height50Grow1Shrink0ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
125112
}
126113

127114
@Test
128-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
129115
public void basis100MaxHeight100Grow1Shrink0ColumnTest() throws IOException, InterruptedException {
130116
convertToPdfAndCompare("basis100MaxHeight100Grow1Shrink0ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
131117
}
132118

133119
@Test
134-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
135120
public void basis200MinHeight150Grow0Shrink1ColumnTest() throws IOException, InterruptedException {
136121
convertToPdfAndCompare("basis200MinHeight150Grow0Shrink1ColumnTest", SOURCE_FOLDER, DESTINATION_FOLDER);
137122
}
138123

139124
@Test
140-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
141125
public void usualDirectionColumnWithDefiniteWidthTest() throws IOException, InterruptedException {
142126
convertToPdfAndCompare("usualDirectionColumnWithDefiniteWidthTest", SOURCE_FOLDER, DESTINATION_FOLDER);
143127
}
144128

145129
@Test
146-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
147130
public void usualDirectionColumnWithDefiniteMaxWidthTest() throws IOException, InterruptedException {
148131
convertToPdfAndCompare("usualDirectionColumnWithDefiniteMaxWidthTest", SOURCE_FOLDER, DESTINATION_FOLDER);
149132
}
150133

151134
@Test
152-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
153135
public void usualDirectionColumnWithDefiniteMinWidthTest() throws IOException, InterruptedException {
154136
convertToPdfAndCompare("usualDirectionColumnWithDefiniteMinWidthTest", SOURCE_FOLDER, DESTINATION_FOLDER);
155137
}
156138

157139
@Test
158-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
159140
public void directionColumnWithoutBasisWithDefiniteHeightTest() throws IOException, InterruptedException {
160141
convertToPdfAndCompare("directionColumnWithoutBasisWithDefiniteHeightTest", SOURCE_FOLDER, DESTINATION_FOLDER);
161142
}
162143

163144
@Test
164-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
165145
public void directionColumnWithWrapElementsToGrowTest() throws IOException, InterruptedException {
166146
convertToPdfAndCompare("directionColumnWithWrapElementsToGrowTest", SOURCE_FOLDER, DESTINATION_FOLDER);
167147
}
168148

169149
@Test
170-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
171150
public void directionColumnWithWrapElementsNotToGrowTest() throws IOException, InterruptedException {
172151
convertToPdfAndCompare("directionColumnWithWrapElementsNotToGrowTest", SOURCE_FOLDER, DESTINATION_FOLDER);
173152
}
174153

175154
@Test
176-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
177155
public void directionColumnWithWrapElementsToShrinkTest() throws IOException, InterruptedException {
178156
convertToPdfAndCompare("directionColumnWithWrapElementsToShrinkTest", SOURCE_FOLDER, DESTINATION_FOLDER);
179157
}
180158

181159
@Test
182-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
183160
public void directionColumnWithWrapElementsNotToShrinkTest() throws IOException, InterruptedException {
184161
convertToPdfAndCompare("directionColumnWithWrapElementsNotToShrinkTest", SOURCE_FOLDER, DESTINATION_FOLDER);
185162
}
186163

187164
@Test
188-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
189165
public void directionColumnWithWrapDefiniteWidthAndHeightTest() throws IOException, InterruptedException {
190166
convertToPdfAndCompare("directionColumnWithWrapDefiniteWidthAndHeightTest", SOURCE_FOLDER, DESTINATION_FOLDER);
191167
}
192168

193169
@Test
194-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
195170
public void directionColumnWithWrapWithAlignItemsAndJustifyContentTest() throws IOException, InterruptedException {
196171
convertToPdfAndCompare("directionColumnWithWrapWithAlignItemsAndJustifyContentTest", SOURCE_FOLDER, DESTINATION_FOLDER);
197172
}
198173

199174
@Test
200-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
201175
public void directionColumnWithAlignItemsAndJustifyContentTest1() throws IOException, InterruptedException {
202176
convertToPdfAndCompare("directionColumnWithAlignItemsAndJustifyContentTest1", SOURCE_FOLDER, DESTINATION_FOLDER);
203177
}
204178

205179
@Test
206-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
207180
public void directionColumnWithAlignItemsAndJustifyContentTest2() throws IOException, InterruptedException {
208181
convertToPdfAndCompare("directionColumnWithAlignItemsAndJustifyContentTest2", SOURCE_FOLDER, DESTINATION_FOLDER);
209182
}
210183

211184
@Test
212-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
213185
public void directionColumnWithAlignItemsAndJustifyContentTest3() throws IOException, InterruptedException {
214186
convertToPdfAndCompare("directionColumnWithAlignItemsAndJustifyContentTest3", SOURCE_FOLDER, DESTINATION_FOLDER);
215187
}
216188

217189
@Test
218-
@LogMessages(messages = @LogMessage(messageTemplate = Html2PdfLogMessageConstant.FLEX_PROPERTY_IS_NOT_SUPPORTED_YET))
219190
public void imgAsFlexItemTest01() throws IOException, InterruptedException {
220191
convertToPdfAndCompare("imgAsFlexItemTest01", SOURCE_FOLDER, DESTINATION_FOLDER);
221192
}

0 commit comments

Comments
 (0)