diff --git a/docs/assets/examples/barcodegrid/v2/main.go b/docs/assets/examples/barcodegrid/v2/main.go index ad4216a0..29caae0e 100644 --- a/docs/assets/examples/barcodegrid/v2/main.go +++ b/docs/assets/examples/barcodegrid/v2/main.go @@ -110,5 +110,20 @@ func GetMaroto() core.Maroto { }), ) + m.AddAutoRow( + code.NewBarCol(2, "123456789123", props.Barcode{ + Center: true, + Type: barcode.EAN, + }), + code.NewBarCol(4, "123456789123", props.Barcode{ + Center: true, + Type: barcode.EAN, + }), + code.NewBarCol(6, "123456789123", props.Barcode{ + Center: true, + Type: barcode.EAN, + }), + ) + return m } diff --git a/docs/assets/examples/datamatrixgrid/v2/main.go b/docs/assets/examples/datamatrixgrid/v2/main.go index 2ca4735f..b296f688 100644 --- a/docs/assets/examples/datamatrixgrid/v2/main.go +++ b/docs/assets/examples/datamatrixgrid/v2/main.go @@ -93,5 +93,22 @@ func GetMaroto() core.Maroto { }), ) + m.AddAutoRow( + code.NewMatrixCol(6, "https://github.com/johnfercher/maroto", props.Rect{ + Center: true, + Percent: 20, + JustReferenceWidth: true, + }), + code.NewMatrixCol(4, "https://github.com/johnfercher/maroto", props.Rect{ + Center: true, + Percent: 75, + JustReferenceWidth: true, + }), + code.NewMatrixCol(2, "https://github.com/johnfercher/maroto", props.Rect{ + Center: true, + Percent: 100, + JustReferenceWidth: true, + }), + ) return m } diff --git a/docs/assets/examples/imagegrid/v2/main.go b/docs/assets/examples/imagegrid/v2/main.go index b8fe6daa..0ec13790 100644 --- a/docs/assets/examples/imagegrid/v2/main.go +++ b/docs/assets/examples/imagegrid/v2/main.go @@ -128,6 +128,39 @@ func GetMaroto() core.Maroto { Percent: 80, }), ) + m.AddAutoRow( + image.NewFromFileCol(4, "docs/assets/images/frontpage.png", props.Rect{ + Center: true, + Percent: 20, + JustReferenceWidth: true, + }), + image.NewFromFileCol(8, "docs/assets/images/frontpage.png", props.Rect{ + Center: true, + Percent: 30, + JustReferenceWidth: true, + }), + ) + m.AddAutoRow( + image.NewFromFileCol(2, "docs/assets/images/biplane.jpg", props.Rect{ + Center: false, + Percent: 50, + Left: 10, + JustReferenceWidth: true, + }), + image.NewFromFileCol(4, "docs/assets/images/biplane.jpg", props.Rect{ + Center: false, + Percent: 50, + Top: 10, + JustReferenceWidth: true, + }), + image.NewFromFileCol(6, "docs/assets/images/biplane.jpg", props.Rect{ + Center: false, + Percent: 50, + Left: 15, + Top: 15, + JustReferenceWidth: true, + }), + ) return m } diff --git a/docs/assets/examples/line/v2/main.go b/docs/assets/examples/line/v2/main.go index c1fac3d2..c3a9a75e 100644 --- a/docs/assets/examples/line/v2/main.go +++ b/docs/assets/examples/line/v2/main.go @@ -71,5 +71,10 @@ func GetMaroto() core.Maroto { line.NewCol(6, props.Line{Color: &props.RedColor, Style: linestyle.Dashed, Thickness: 0.8, Orientation: orientation.Horizontal, OffsetPercent: 40, SizePercent: 40}), ) + m.AddAutoRow( + line.NewCol(2, props.Line{Style: linestyle.Dashed}), + line.NewCol(4, props.Line{Color: &props.RedColor, Style: linestyle.Dashed, Thickness: 0.8, Orientation: orientation.Vertical, OffsetPercent: 70, SizePercent: 70}), + line.NewCol(6, props.Line{Color: &props.RedColor, Style: linestyle.Dashed, Thickness: 0.8, Orientation: orientation.Horizontal, OffsetPercent: 40, SizePercent: 40}), + ) return m } diff --git a/docs/assets/examples/qrgrid/v2/main.go b/docs/assets/examples/qrgrid/v2/main.go index 9adb980f..5fa1cfdb 100644 --- a/docs/assets/examples/qrgrid/v2/main.go +++ b/docs/assets/examples/qrgrid/v2/main.go @@ -93,5 +93,22 @@ func GetMaroto() core.Maroto { }), ) + m.AddAutoRow( + code.NewQrCol(6, "https://github.com/johnfercher/maroto", props.Rect{ + Center: true, + Percent: 30, + JustReferenceWidth: true, + }), + code.NewQrCol(4, "https://github.com/johnfercher/maroto", props.Rect{ + Center: true, + Percent: 75, + JustReferenceWidth: true, + }), + code.NewQrCol(2, "https://github.com/johnfercher/maroto", props.Rect{ + Center: true, + Percent: 100, + JustReferenceWidth: true, + }), + ) return m } diff --git a/docs/assets/examples/signaturegrid/v2/main.go b/docs/assets/examples/signaturegrid/v2/main.go index 525ca543..2079099a 100644 --- a/docs/assets/examples/signaturegrid/v2/main.go +++ b/docs/assets/examples/signaturegrid/v2/main.go @@ -61,5 +61,11 @@ func GetMaroto() core.Maroto { signature.NewCol(4, "Signature 9", props.Signature{LineThickness: 0.5}), ) + m.AddAutoRow( + signature.NewCol(4, "Signature 7", props.Signature{LineColor: &props.RedColor}), + signature.NewCol(4, "Signature 8", props.Signature{LineStyle: linestyle.Dashed}), + signature.NewCol(4, "Signature 9", props.Signature{LineThickness: 0.5}), + ) + return m } diff --git a/docs/assets/examples/textgrid/v2/main.go b/docs/assets/examples/textgrid/v2/main.go index 09993305..6ea765a8 100644 --- a/docs/assets/examples/textgrid/v2/main.go +++ b/docs/assets/examples/textgrid/v2/main.go @@ -95,5 +95,14 @@ func GetMaroto() core.Maroto { ) m.AddRows(text.NewRow(10, "Justify-aligned text", props.Text{Align: align.Justify})) + m.AddAutoRow( + text.NewCol(2, longText, props.Text{Top: 0, Left: 3, Right: 3, Align: align.Justify, BreakLineStrategy: breakline.DashStrategy}), + text.NewCol(4, longText+" "+longText, props.Text{Top: 0, Left: 3, Right: 3, Align: align.Justify}), + text.NewCol(6, longText+" "+longText+" "+longText, props.Text{Hyperlink: &google, Top: 0, Left: 10, Right: 10, Align: align.Justify}), + ) + + m.AddAutoRow( + text.NewCol(12, longText+" "+longText+" "+longText, props.Text{Top: 15, Left: 3, Right: 3, Align: align.Justify, BreakLineStrategy: breakline.EmptySpaceStrategy}), + ) return m } diff --git a/docs/assets/pdf/barcodegridv2.pdf b/docs/assets/pdf/barcodegridv2.pdf index 74e5bc68..7330db64 100644 Binary files a/docs/assets/pdf/barcodegridv2.pdf and b/docs/assets/pdf/barcodegridv2.pdf differ diff --git a/docs/assets/pdf/datamatrixgridv2.pdf b/docs/assets/pdf/datamatrixgridv2.pdf index a04ef1b1..42ee1a2f 100644 Binary files a/docs/assets/pdf/datamatrixgridv2.pdf and b/docs/assets/pdf/datamatrixgridv2.pdf differ diff --git a/docs/assets/pdf/imagegridv2.pdf b/docs/assets/pdf/imagegridv2.pdf index bf3f9b11..6ce97cb9 100644 Binary files a/docs/assets/pdf/imagegridv2.pdf and b/docs/assets/pdf/imagegridv2.pdf differ diff --git a/docs/assets/pdf/linegridv2.pdf b/docs/assets/pdf/linegridv2.pdf index 3f8843b5..b5f64b63 100644 Binary files a/docs/assets/pdf/linegridv2.pdf and b/docs/assets/pdf/linegridv2.pdf differ diff --git a/docs/assets/pdf/qrgridv2.pdf b/docs/assets/pdf/qrgridv2.pdf index caf3f2b6..483ddca3 100644 Binary files a/docs/assets/pdf/qrgridv2.pdf and b/docs/assets/pdf/qrgridv2.pdf differ diff --git a/docs/assets/pdf/signaturegridv2.pdf b/docs/assets/pdf/signaturegridv2.pdf index 9442e160..a8555ada 100644 Binary files a/docs/assets/pdf/signaturegridv2.pdf and b/docs/assets/pdf/signaturegridv2.pdf differ diff --git a/docs/assets/pdf/textgridv2.pdf b/docs/assets/pdf/textgridv2.pdf index 84bcbcf9..b48bd52a 100644 Binary files a/docs/assets/pdf/textgridv2.pdf and b/docs/assets/pdf/textgridv2.pdf differ diff --git a/docs/assets/text/barcodegridv2.txt b/docs/assets/text/barcodegridv2.txt index afdbddd0..1e122c90 100644 --- a/docs/assets/text/barcodegridv2.txt +++ b/docs/assets/text/barcodegridv2.txt @@ -1,3 +1,3 @@ -generate -> avg: 8.15ms, executions: [8.15ms] -add_row -> avg: 895.60ns, executions: [2.03μs, 0.62μs, 0.69μs, 0.44μs, 0.69μs] -file_size -> 16.01Kb +generate -> avg: 6.84ms, executions: [6.84ms] +add_row -> avg: 1122.20ns, executions: [2.65μs, 0.81μs, 0.80μs, 0.53μs, 0.82μs] +file_size -> 16.54Kb diff --git a/docs/assets/text/datamatrixgridv2.txt b/docs/assets/text/datamatrixgridv2.txt index dc776486..e6e728fe 100644 --- a/docs/assets/text/datamatrixgridv2.txt +++ b/docs/assets/text/datamatrixgridv2.txt @@ -1,3 +1,3 @@ -generate -> avg: 2.42ms, executions: [2.42ms] -add_row -> avg: 1197.50ns, executions: [2.60μs, 0.78μs, 0.77μs, 0.63μs] -file_size -> 4.58Kb +generate -> avg: 535.83μs, executions: [535.83μs] +add_row -> avg: 819.00ns, executions: [1.95μs, 0.51μs, 0.49μs, 0.32μs] +file_size -> 5.27Kb diff --git a/docs/assets/text/imagegridv2.txt b/docs/assets/text/imagegridv2.txt index d07b0a95..07baf9fa 100644 --- a/docs/assets/text/imagegridv2.txt +++ b/docs/assets/text/imagegridv2.txt @@ -1,3 +1,3 @@ -generate -> avg: 11.10ms, executions: [11.10ms] -add_row -> avg: 606.00ns, executions: [1.52μs, 0.48μs, 0.49μs, 0.31μs, 0.54μs, 0.29μs] -file_size -> 222.72Kb +generate -> avg: 15.02ms, executions: [15.02ms] +add_row -> avg: 938.83ns, executions: [2.50μs, 0.75μs, 0.77μs, 0.47μs, 0.71μs, 0.42μs] +file_size -> 224.21Kb diff --git a/docs/assets/text/linegridv2.txt b/docs/assets/text/linegridv2.txt index 21656f62..c455d59d 100644 --- a/docs/assets/text/linegridv2.txt +++ b/docs/assets/text/linegridv2.txt @@ -1,3 +1,3 @@ -generate -> avg: 948.67μs, executions: [948.67μs] -add_row -> avg: 845.40ns, executions: [1.72μs, 0.71μs, 0.60μs, 0.46μs, 0.73μs] -file_size -> 2.48Kb +generate -> avg: 827.33μs, executions: [827.33μs] +add_row -> avg: 887.00ns, executions: [2.02μs, 0.65μs, 0.66μs, 0.43μs, 0.67μs] +file_size -> 2.89Kb diff --git a/docs/assets/text/qrgridv2.txt b/docs/assets/text/qrgridv2.txt index 650fd1ee..fb760a6a 100644 --- a/docs/assets/text/qrgridv2.txt +++ b/docs/assets/text/qrgridv2.txt @@ -1,3 +1,3 @@ -generate -> avg: 6.85ms, executions: [6.85ms] -add_row -> avg: 881.50ns, executions: [1.91μs, 0.62μs, 0.58μs, 0.41μs] -file_size -> 4.65Kb +generate -> avg: 432.17μs, executions: [432.17μs] +add_row -> avg: 1224.75ns, executions: [2.75μs, 0.89μs, 0.77μs, 0.48μs] +file_size -> 5.34Kb diff --git a/docs/assets/text/signaturegridv2.txt b/docs/assets/text/signaturegridv2.txt index a6a942ae..442b4879 100644 --- a/docs/assets/text/signaturegridv2.txt +++ b/docs/assets/text/signaturegridv2.txt @@ -1,3 +1,3 @@ -generate -> avg: 8.37ms, executions: [8.37ms] -add_row -> avg: 665.00ns, executions: [1.13μs, 0.43μs, 0.43μs] -file_size -> 4.99Kb +generate -> avg: 13.45ms, executions: [13.45ms] +add_row -> avg: 1295.67ns, executions: [2.56μs, 0.72μs, 0.60μs] +file_size -> 6.27Kb diff --git a/docs/assets/text/textgridv2.txt b/docs/assets/text/textgridv2.txt index 24bf612b..4b6a8090 100644 --- a/docs/assets/text/textgridv2.txt +++ b/docs/assets/text/textgridv2.txt @@ -1,4 +1,4 @@ -generate -> avg: 16.01ms, executions: [16.01ms] -add_row -> avg: 755.00ns, executions: [1.49μs, 0.51μs, 0.37μs, 0.35μs, 0.33μs, 1.49μs] -add_rows -> avg: 261.67ns, executions: [323.00ns, 322.00ns, 143.00ns, 364.00ns, 144.00ns, 274.00ns] -file_size -> 16.45Kb +generate -> avg: 35.46ms, executions: [35.46ms] +add_row -> avg: 1743.00ns, executions: [4.08μs, 1.14μs, 0.74μs, 0.68μs, 0.70μs, 3.12μs] +add_rows -> avg: 485.83ns, executions: [641.00ns, 561.00ns, 280.00ns, 621.00ns, 211.00ns, 601.00ns] +file_size -> 28.15Kb diff --git a/internal/math/math.go b/internal/math/math.go index 5cf8b0fa..98e6a212 100644 --- a/internal/math/math.go +++ b/internal/math/math.go @@ -2,7 +2,6 @@ package math import ( "github.com/johnfercher/maroto/v2/pkg/core/entity" - "github.com/johnfercher/maroto/v2/pkg/props" ) type math struct{} @@ -12,68 +11,46 @@ func New() *math { return &math{} } -// GetInnerCenterCell define a inner cell formatted inside outer cell centered. -func (s *math) GetInnerCenterCell(inner *entity.Dimensions, outer *entity.Dimensions, percent float64) *entity.Cell { +// Resize adjusts the internal dimension of an element to occupy a percentage of the available space +// - inner: The inner dimensions of the element +// - outer: The outer dimensions of the element +// - percent: The percentage of the external dimension that can be occupied +// - justReferenceWidth: Indicates whether resizing should be done only in relation to width or in relation to width and height +func (s *math) Resize(inner *entity.Dimensions, outer *entity.Dimensions, percent float64, justReferenceWidth bool) *entity.Dimensions { percent /= 100.0 innerProportion := inner.Height / inner.Width outerProportion := outer.Height / outer.Width - innerCell := &entity.Cell{} - if innerProportion > outerProportion { - newInnerWidth := outer.Height / innerProportion * percent - newInnerHeight := newInnerWidth * innerProportion - - widthCorrection := s.GetCenterCorrection(outer.Width, newInnerWidth) - heightCorrection := s.GetCenterCorrection(outer.Height, newInnerHeight) + newInnerWidth := 0.0 - innerCell.X = widthCorrection - innerCell.Y = heightCorrection - innerCell.Width = newInnerWidth - innerCell.Height = newInnerHeight + if innerProportion > outerProportion && !justReferenceWidth { + newInnerWidth = outer.Height / innerProportion * percent } else { - newInnerWidth := outer.Width * percent - newInnerHeight := newInnerWidth * innerProportion + newInnerWidth = outer.Width * percent + } - widthCorrection := s.GetCenterCorrection(outer.Width, newInnerWidth) - heightCorrection := s.GetCenterCorrection(outer.Height, newInnerHeight) + newInnerHeight := newInnerWidth * innerProportion - innerCell.X = widthCorrection - innerCell.Y = heightCorrection - innerCell.Width = newInnerWidth - innerCell.Height = newInnerHeight + if justReferenceWidth && newInnerHeight > outer.Height { + newInnerWidth = outer.Height / innerProportion * 1 + newInnerHeight = newInnerWidth * innerProportion } - return innerCell + return &entity.Dimensions{Width: newInnerWidth, Height: newInnerHeight} } -// GetInnerNonCenterCell define a inner cell formatted inside outer cell non centered. -func (s *math) GetInnerNonCenterCell(inner *entity.Dimensions, outer *entity.Dimensions, prop *props.Rect) *entity.Cell { - percent := prop.Percent / 100.0 - - innerProportion := inner.Height / inner.Width - outerProportion := outer.Height / outer.Width - - innerCell := &entity.Cell{} - if innerProportion > outerProportion { - newInnerWidth := outer.Height / innerProportion * percent - newInnerHeight := newInnerWidth * innerProportion - - innerCell.X = prop.Left - innerCell.Y = prop.Top - innerCell.Width = newInnerWidth - innerCell.Height = newInnerHeight - } else { - newInnerWidth := outer.Width * percent - newInnerHeight := newInnerWidth * innerProportion - - innerCell.X = prop.Left - innerCell.Y = prop.Top - innerCell.Width = newInnerWidth - innerCell.Height = newInnerHeight +// GetInnerCenterCell define a inner cell formatted inside outer cell centered. +func (s *math) GetInnerCenterCell(inner *entity.Dimensions, outer *entity.Dimensions) *entity.Cell { + widthCorrection := s.GetCenterCorrection(outer.Width, inner.Width) + heightCorrection := s.GetCenterCorrection(outer.Height, inner.Height) + + return &entity.Cell{ + X: widthCorrection, + Y: heightCorrection, + Width: inner.Width, + Height: inner.Height, } - - return innerCell } // GetCenterCorrection return the correction of space in X or Y to diff --git a/internal/math/math_test.go b/internal/math/math_test.go index 4b3f887c..8e25c495 100644 --- a/internal/math/math_test.go +++ b/internal/math/math_test.go @@ -6,8 +6,6 @@ import ( "github.com/johnfercher/maroto/v2/pkg/core/entity" - "github.com/johnfercher/maroto/v2/pkg/props" - "github.com/johnfercher/maroto/v2/internal/math" "github.com/stretchr/testify/assert" ) @@ -29,22 +27,296 @@ func TestMath_GetCenterCorrection(t *testing.T) { // Act correction := sut.GetCenterCorrection(outerSize, innerSize) - // Assert + // Assertcenter assert.Equal(t, 25.0, correction) }) } +func TestMath_Resize(t *testing.T) { + t.Run("When inner and outer have the same size and 100% is set, inner should be returned with 100 percent of outer", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 100.0 + inner := &entity.Dimensions{Width: 100, Height: 100} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 100.0, cell.Width) + assert.Equal(t, 100.0, cell.Height) + }) + + t.Run("When inner and outer have the same size and 75% is set, inner should be returned with '75%' of outer", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 75.0 + inner := &entity.Dimensions{Width: 100, Height: 100} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 75.0, cell.Width) + assert.Equal(t, 75.0, cell.Height) + }) + + t.Run("When inner is smaller and has the same proportion as outer and 100% is set, inner should be returned with '100%' of outer", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 100.0 + inner := &entity.Dimensions{Width: 80, Height: 80} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 100.0, cell.Width) + assert.Equal(t, 100.0, cell.Height) + }) + + t.Run("When inner is smaller and has the same proportion as outer and 75% is set, inner should be returned with '75%' of outer", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 75.0 + inner := &entity.Dimensions{Width: 80, Height: 80} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 75.0, cell.Width) + assert.Equal(t, 75.0, cell.Height) + }) + + t.Run("When inner is greater and has the same proportion as outer and 100% is set, inner should be returned with '100%' of outer", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 100.0 + inner := &entity.Dimensions{Width: 120, Height: 120} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 100.0, cell.Width) + assert.Equal(t, 100.0, cell.Height) + }) + + t.Run("When inner is greater and has the same proportion as outer and 75% is set, inner should be returned with '75%' of outer", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 75.0 + inner := &entity.Dimensions{Width: 120, Height: 120} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 75.0, cell.Width) + assert.Equal(t, 75.0, cell.Height) + }) + + t.Run("when height and internal proportion are smaller with '100%' sent, should return internal with '100%'", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 100.0 + outer := &entity.Dimensions{Width: 100, Height: 100} + inner := &entity.Dimensions{Width: 100, Height: 80} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 100.0, cell.Width) + assert.Equal(t, 80.0, cell.Height) + }) + + t.Run("when height and internal proportion are smaller with '75%' sent, should return internal with '75%' of the external", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 75.0 + outer := &entity.Dimensions{Width: 100, Height: 100} + inner := &entity.Dimensions{Width: 100, Height: 80} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 75.0, cell.Width) + assert.Equal(t, 60.0, cell.Height) + }) + + t.Run("When internal width is smaller and proportion is greater with '100%' sent, should return internal with '100%' of the external", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 100.0 + inner := &entity.Dimensions{Width: 80, Height: 100} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 80.0, cell.Width) + assert.Equal(t, 100.0, cell.Height) + }) + + t.Run("When internal width is smaller and proportion is greater with '75%' sent, should return internal with '75%' of the external", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 75.0 + inner := &entity.Dimensions{Width: 80, Height: 100} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 60.0, cell.Width) + assert.Equal(t, 75.0, cell.Height) + }) + + t.Run("When internal height is greater and proportion is greater with '100%' sent, should return internal with '100%' of the external", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 100.0 + inner := &entity.Dimensions{Width: 100, Height: 125} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 80.0, cell.Width) + assert.Equal(t, 100.0, cell.Height) + }) + + t.Run("When internal height is greater and proportion is greater with '75%' sent, should return internal with '75%' of the external", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 75.0 + inner := &entity.Dimensions{Width: 100, Height: 125} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 60.0, cell.Width) + assert.Equal(t, 75.0, cell.Height) + }) + + t.Run("When internal width is greater and proportion is smaller with '100%' sent, should return internal with '100%' of the external", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 100.0 + inner := &entity.Dimensions{Width: 125, Height: 100} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 100.0, cell.Width) + assert.Equal(t, 80.0, cell.Height) + }) + + t.Run("When internal width is greater and proportion is smaller with '75%' sent, should return internal with '75%' of the external", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 75.0 + inner := &entity.Dimensions{Width: 125, Height: 100} + outer := &entity.Dimensions{Width: 100, Height: 100} + + // Act + cell := sut.Resize(inner, outer, percent, false) + + // Assert + assert.Equal(t, 75.0, cell.Width) + assert.Equal(t, 60.0, cell.Height) + }) + + t.Run("when justReferenceWidth is true and inner extrapolates external height, it should resize image based on available height", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 100.0 + justReferenceWidth := true + inner := &entity.Dimensions{Width: 50, Height: 50} + outer := &entity.Dimensions{Width: 100, Height: 50} + + // Act + cell := sut.Resize(inner, outer, percent, justReferenceWidth) + + // Assert + assert.Equal(t, 50.0, cell.Width) + assert.Equal(t, 50.0, cell.Height) + }) + t.Run("when justReferenceWidth is true and inner does not extrapolate external height, should resize the image based on the width", + func(t *testing.T) { + // Arrange + sut := math.New() + + percent := 75.0 + justReferenceWidth := true + inner := &entity.Dimensions{Width: 100, Height: 55} + outer := &entity.Dimensions{Width: 100, Height: 40.99999999999999} + + // Act + cell := sut.Resize(inner, outer, percent, justReferenceWidth) + + // Assert + assert.Equal(t, 74.54545454545453, cell.Width) + assert.Equal(t, 40.99999999999999, cell.Height) + }) +} + func TestMath_GetInnerCenterCell(t *testing.T) { t.Run("there is not side-effect", func(t *testing.T) { // Arrange sut := math.New() - percent := 100.0 inner := &entity.Dimensions{Width: 100, Height: 100} outer := &entity.Dimensions{Width: 100, Height: 100} // Act - _ = sut.GetInnerCenterCell(inner, outer, percent) + _ = sut.GetInnerCenterCell(inner, outer) // Assert assert.Equal(t, 100.0, inner.Width) @@ -52,564 +324,96 @@ func TestMath_GetInnerCenterCell(t *testing.T) { assert.Equal(t, 100.0, outer.Width) assert.Equal(t, 100.0, outer.Height) }) - t.Run("inner same size, inner same proportion, inner 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - percent := 100.0 - inner := &entity.Dimensions{Width: 100, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner same size, inner same proportion, inner 75%", func(t *testing.T) { + t.Run("when inner and outer have the same size, should return the center", func(t *testing.T) { // Arrange sut := math.New() - percent := 75.0 inner := &entity.Dimensions{Width: 100, Height: 100} outer := &entity.Dimensions{Width: 100, Height: 100} // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) - - // Assert - assert.Equal(t, 12.5, cell.X) - assert.Equal(t, 12.5, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) - }) - t.Run("inner smaller, inner same proportion, inner 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - percent := 100.0 - inner := &entity.Dimensions{Width: 80, Height: 80} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner smaller, inner same proportion, inner 75%", func(t *testing.T) { - // Arrange - sut := math.New() - - percent := 75.0 - inner := &entity.Dimensions{Width: 80, Height: 80} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) - - // Assert - assert.Equal(t, 12.5, cell.X) - assert.Equal(t, 12.5, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) - }) - t.Run("inner greater, inner same proportion, inner 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - percent := 100.0 - inner := &entity.Dimensions{Width: 120, Height: 120} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) + cell := sut.GetInnerCenterCell(inner, outer) // Assert assert.Equal(t, 0.0, cell.X) assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner greater, inner same proportion, inner 75%", func(t *testing.T) { - // Arrange - sut := math.New() - - percent := 75.0 - inner := &entity.Dimensions{Width: 120, Height: 120} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) - - // Assert - assert.Equal(t, 12.5, cell.X) - assert.Equal(t, 12.5, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) }) - t.Run("inner smaller, inner width proportion greater, 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - percent := 100.0 - outer := &entity.Dimensions{Width: 100, Height: 100} - inner := &entity.Dimensions{Width: 100, Height: 80} - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) - - // Assert - assert.InDelta(t, 0.0, cell.X, 0.1) - assert.InDelta(t, 10.0, cell.Y, 0.1) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 80.0, cell.Height) - }) - t.Run("inner smaller, inner width proportion greater, 75%", func(t *testing.T) { + t.Run("when inner is smaller than outer and has equal proportion, the center of the cell must be returned", func(t *testing.T) { // Arrange sut := math.New() - percent := 75.0 + inner := &entity.Dimensions{Width: 80, Height: 80} outer := &entity.Dimensions{Width: 100, Height: 100} - inner := &entity.Dimensions{Width: 100, Height: 80} // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) + cell := sut.GetInnerCenterCell(inner, outer) // Assert - assert.Equal(t, 12.5, cell.X) - assert.Equal(t, 20.0, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 60.0, cell.Height) + assert.Equal(t, 10.0, cell.X) + assert.Equal(t, 10.0, cell.Y) }) - t.Run("inner smaller, inner height proportion greater, 100%", func(t *testing.T) { - // Arrange - sut := math.New() - percent := 100.0 - inner := &entity.Dimensions{Width: 80, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} + t.Run("when the internal one has a smaller height and smaller proportion than the external one, the center of the cell must be returned", + func(t *testing.T) { + // Arrange + sut := math.New() - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) + outer := &entity.Dimensions{Width: 100, Height: 100} + inner := &entity.Dimensions{Width: 75.0, Height: 60.0} - // Assert - assert.Equal(t, 10.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 80.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner smaller, inner height proportion greater, 75%", func(t *testing.T) { - // Arrange - sut := math.New() + // Act + cell := sut.GetInnerCenterCell(inner, outer) - percent := 75.0 - inner := &entity.Dimensions{Width: 80, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} + // Assert + assert.Equal(t, 12.5, cell.X) + assert.Equal(t, 20.0, cell.Y) + }) - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) + t.Run("when internal has a smaller width and greater proportion than external, the center of the cell must be returned", + func(t *testing.T) { + // Arrange + sut := math.New() - // Assert - assert.Equal(t, 20.0, cell.X) - assert.Equal(t, 12.5, cell.Y) - assert.Equal(t, 60.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) - }) - t.Run("inner greater, inner height proportion greater, 100%", func(t *testing.T) { - // Arrange - sut := math.New() + inner := &entity.Dimensions{Width: 80.0, Height: 100} + outer := &entity.Dimensions{Width: 100, Height: 100} - percent := 100.0 - inner := &entity.Dimensions{Width: 100, Height: 125} - outer := &entity.Dimensions{Width: 100, Height: 100} + // Act + cell := sut.GetInnerCenterCell(inner, outer) - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) + // Assert + assert.Equal(t, 10.0, cell.X) + assert.Equal(t, 0.0, cell.Y) + }) - // Assert - assert.Equal(t, 10.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 80.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner greater, inner height proportion greater, 75%", func(t *testing.T) { + t.Run("when internal has greater height and proportion than external, the center of the cell must be returned", func(t *testing.T) { // Arrange sut := math.New() - percent := 75.0 - inner := &entity.Dimensions{Width: 100, Height: 125} + inner := &entity.Dimensions{Width: 60.0, Height: 75.0} outer := &entity.Dimensions{Width: 100, Height: 100} // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) + cell := sut.GetInnerCenterCell(inner, outer) // Assert assert.Equal(t, 20.0, cell.X) assert.Equal(t, 12.5, cell.Y) - assert.Equal(t, 60.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) - }) - t.Run("inner greater, inner width proportion greater, 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - percent := 100.0 - inner := &entity.Dimensions{Width: 125, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) - - // Assert - assert.InDelta(t, 0.0, cell.X, 0.1) - assert.InDelta(t, 10.0, cell.Y, 0.1) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 80.0, cell.Height) - }) - t.Run("inner greater, inner width proportion greater, 75%", func(t *testing.T) { - // Arrange - sut := math.New() - - percent := 75.0 - inner := &entity.Dimensions{Width: 125, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerCenterCell(inner, outer, percent) - - // Assert - assert.Equal(t, 12.5, cell.X) - assert.Equal(t, 20.0, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 60.0, cell.Height) - }) -} - -func TestMath_GetInnerNonCenterCell(t *testing.T) { - t.Run("there is not side-effect", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{} - rect.MakeValid() - inner := &entity.Dimensions{Width: 100, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - _ = sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 100.0, inner.Width) - assert.Equal(t, 100.0, inner.Height) - assert.Equal(t, 100.0, outer.Width) - assert.Equal(t, 100.0, outer.Height) - }) - t.Run("top and left works", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 50, - Top: 15, - Left: 10, - } - inner := &entity.Dimensions{Width: 100, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 10.0, cell.X) - assert.Equal(t, 15.0, cell.Y) - assert.Equal(t, 50.0, cell.Width) - assert.Equal(t, 50.0, cell.Height) - }) - t.Run("inner same size, inner same proportion, inner 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 100, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 100, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner same size, inner same proportion, inner 75%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 75, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 100, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) - }) - t.Run("inner smaller, inner same proportion, inner 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 100, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 80, Height: 80} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner smaller, inner same proportion, inner 75%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 75, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 80, Height: 80} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) - }) - t.Run("inner greater, inner same proportion, inner 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 100, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 120, Height: 120} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner greater, inner same proportion, inner 75%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 75, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 120, Height: 120} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) }) - t.Run("inner smaller, inner width proportion greater, 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 100, - } - rect.MakeValid() - outer := &entity.Dimensions{Width: 100, Height: 100} - inner := &entity.Dimensions{Width: 100, Height: 80} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 80.0, cell.Height) - }) - t.Run("inner smaller, inner width proportion greater, 75%", func(t *testing.T) { + t.Run("quando interno tiver largura maior e proporção menor que externa, the center of the cell must be returned", func(t *testing.T) { // Arrange sut := math.New() - rect := &props.Rect{ - Percent: 75, - } - rect.MakeValid() - outer := &entity.Dimensions{Width: 100, Height: 100} inner := &entity.Dimensions{Width: 100, Height: 80} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 60.0, cell.Height) - }) - t.Run("inner smaller, inner height proportion greater, 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 100, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 80, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 80.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner smaller, inner height proportion greater, 75%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 75, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 80, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 60.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) - }) - t.Run("inner greater, inner height proportion greater, 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 100, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 100, Height: 125} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 80.0, cell.Width) - assert.Equal(t, 100.0, cell.Height) - }) - t.Run("inner greater, inner height proportion greater, 75%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 75, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 100, Height: 125} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 60.0, cell.Width) - assert.Equal(t, 75.0, cell.Height) - }) - t.Run("inner greater, inner width proportion greater, 100%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 100, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 125, Height: 100} - outer := &entity.Dimensions{Width: 100, Height: 100} - - // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) - - // Assert - assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 100.0, cell.Width) - assert.Equal(t, 80.0, cell.Height) - }) - t.Run("inner greater, inner width proportion greater, 75%", func(t *testing.T) { - // Arrange - sut := math.New() - - rect := &props.Rect{ - Percent: 75, - } - rect.MakeValid() - inner := &entity.Dimensions{Width: 125, Height: 100} outer := &entity.Dimensions{Width: 100, Height: 100} // Act - cell := sut.GetInnerNonCenterCell(inner, outer, rect) + cell := sut.GetInnerCenterCell(inner, outer) // Assert assert.Equal(t, 0.0, cell.X) - assert.Equal(t, 0.0, cell.Y) - assert.Equal(t, 75.0, cell.Width) - assert.Equal(t, 60.0, cell.Height) + assert.Equal(t, 10.0, cell.Y) }) } diff --git a/internal/providers/gofpdf/image.go b/internal/providers/gofpdf/image.go index 97811e69..d7f7fa96 100644 --- a/internal/providers/gofpdf/image.go +++ b/internal/providers/gofpdf/image.go @@ -27,6 +27,21 @@ func NewImage(pdf gofpdfwrapper.Fpdf, math core.Math) *image { } } +// GetImageInfo is responsible for loading the image in PDF and returning its information +func (s image) GetImageInfo(img *entity.Image, extension extension.Type) (*gofpdf.ImageInfoType, uuid.UUID) { + imageID, _ := uuid.NewRandom() + + info := s.pdf.RegisterImageOptionsReader( + imageID.String(), + gofpdf.ImageOptions{ + ReadDpi: false, + ImageType: string(extension), + }, + bytes.NewReader(img.Bytes), + ) + return info, imageID +} + // Add use a byte array to add image to PDF. func (s *image) Add(img *entity.Image, cell *entity.Cell, margins *entity.Margins, prop *props.Rect, extension extension.Type, flow bool, @@ -53,14 +68,17 @@ func (s *image) Add(img *entity.Image, cell *entity.Cell, margins *entity.Margin func (s *image) addImageToPdf(imageLabel string, info *gofpdf.ImageInfoType, cell *entity.Cell, margins *entity.Margins, prop *props.Rect, flow bool, ) { - rectCell := &entity.Cell{} - dimensions := &entity.Dimensions{Width: info.Width(), Height: info.Height()} + dimensions := s.math.Resize(&entity.Dimensions{ + Width: info.Width(), + Height: info.Height(), + }, cell.GetDimensions(), prop.Percent, prop.JustReferenceWidth) + + rectCell := &entity.Cell{X: prop.Left, Y: prop.Top, Width: dimensions.Width, Height: dimensions.Height} if prop.Center { - rectCell = s.math.GetInnerCenterCell(dimensions, cell.GetDimensions(), prop.Percent) - } else { - rectCell = s.math.GetInnerNonCenterCell(dimensions, cell.GetDimensions(), prop) + rectCell = s.math.GetInnerCenterCell(dimensions, cell.GetDimensions()) } + s.pdf.Image(imageLabel, cell.X+rectCell.X+margins.Left, cell.Y+rectCell.Y+margins.Top, rectCell.Width, rectCell.Height, flow, "", 0, "") } diff --git a/internal/providers/gofpdf/image_test.go b/internal/providers/gofpdf/image_test.go index 662d2a43..2d9cf249 100644 --- a/internal/providers/gofpdf/image_test.go +++ b/internal/providers/gofpdf/image_test.go @@ -98,3 +98,45 @@ func TestImage_Add(t *testing.T) { assert.Nil(t, err) }) } + +func TestImage_GetImageInfo(t *testing.T) { + t.Run("when RegisterImageOptionsReader return nil, should return nil", func(t *testing.T) { + // Arrange + img := fixture.ImageEntity() + options := gofpdf.ImageOptions{ + ReadDpi: false, + ImageType: string(img.Extension), + } + + pdf := mocks.NewFpdf(t) + pdf.EXPECT().RegisterImageOptionsReader(mock.Anything, options, bytes.NewReader(img.Bytes)).Return(nil) + + image := gofpdf2.NewImage(pdf, mocks.NewMath(t)) + + // Act + info, _ := image.GetImageInfo(&img, img.Extension) + + // Assert + assert.Nil(t, info) + }) + + t.Run("when RegisterImageOptionsReader return info, should return info", func(t *testing.T) { + // Arrange + img := fixture.ImageEntity() + options := gofpdf.ImageOptions{ + ReadDpi: false, + ImageType: string(img.Extension), + } + + pdf := mocks.NewFpdf(t) + pdf.EXPECT().RegisterImageOptionsReader(mock.Anything, options, bytes.NewReader(img.Bytes)).Return(&gofpdf.ImageInfoType{}) + + image := gofpdf2.NewImage(pdf, mocks.NewMath(t)) + + // Act + info, _ := image.GetImageInfo(&img, img.Extension) + + // Assert + assert.NotNil(t, info) + }) +} diff --git a/internal/providers/gofpdf/provider.go b/internal/providers/gofpdf/provider.go index 5fd77798..a41f52e1 100644 --- a/internal/providers/gofpdf/provider.go +++ b/internal/providers/gofpdf/provider.go @@ -2,6 +2,7 @@ package gofpdf import ( "bytes" + "errors" "path/filepath" "strings" @@ -48,6 +49,10 @@ func (g *provider) AddText(text string, cell *entity.Cell, prop *props.Text) { g.text.Add(text, cell, prop) } +func (g *provider) GetLinesQuantity(text string, textProp *props.Text, colWidth float64) int { + return g.text.GetLinesQuantity(text, textProp, colWidth) +} + func (g *provider) GetTextHeight(prop *props.Font) float64 { return g.font.GetHeight(prop.Family, prop.Style, prop.Size) } @@ -57,17 +62,13 @@ func (g *provider) AddLine(cell *entity.Cell, prop *props.Line) { } func (g *provider) AddMatrixCode(code string, cell *entity.Cell, prop *props.Rect) { - image, err := g.cache.GetImage(code, extension.Jpg) - if err != nil { - image, err = g.code.GenDataMatrix(code) - } + img, err := g.loadCode(code, g.code.GenDataMatrix) if err != nil { g.text.Add("could not generate matrixcode", cell, merror.DefaultErrorText) return } - g.cache.AddImage(code, image) - err = g.image.Add(image, cell, g.cfg.Margins, prop, extension.Jpg, false) + err = g.image.Add(img, cell, g.cfg.Margins, prop, extension.Jpg, false) if err != nil { g.fpdf.ClearError() g.text.Add("could not add matrixcode to document", cell, merror.DefaultErrorText) @@ -75,17 +76,13 @@ func (g *provider) AddMatrixCode(code string, cell *entity.Cell, prop *props.Rec } func (g *provider) AddQrCode(code string, cell *entity.Cell, prop *props.Rect) { - image, err := g.cache.GetImage(code, extension.Jpg) - if err != nil { - image, err = g.code.GenQr(code) - } + img, err := g.loadCode(code, g.code.GenQr) if err != nil { g.text.Add("could not generate qrcode", cell, merror.DefaultErrorText) return } - g.cache.AddImage(code, image) - err = g.image.Add(image, cell, g.cfg.Margins, prop, extension.Jpg, false) + err = g.image.Add(img, cell, g.cfg.Margins, prop, extension.Jpg, false) if err != nil { g.fpdf.ClearError() g.text.Add("could not add qrcode to document", cell, merror.DefaultErrorText) @@ -112,20 +109,7 @@ func (g *provider) AddBarCode(code string, cell *entity.Cell, prop *props.Barcod func (g *provider) AddImageFromFile(file string, cell *entity.Cell, prop *props.Rect) { extensionStr := strings.ToLower(strings.TrimPrefix(filepath.Ext(file), ".")) - image, err := g.cache.GetImage(file, extension.Type(extensionStr)) - if err != nil { - err = g.cache.LoadImage(file, extension.Type(extensionStr)) - } else { - g.AddImageFromBytes(image.Bytes, cell, prop, extension.Type(extensionStr)) - return - } - - if err != nil { - g.text.Add("could not load image", cell, merror.DefaultErrorText) - return - } - - image, err = g.cache.GetImage(file, extension.Type(extensionStr)) + image, err := g.loadImage(file, extensionStr) if err != nil { g.text.Add("could not load image", cell, merror.DefaultErrorText) return @@ -205,6 +189,69 @@ func (g *provider) SetMetadata(metadata *entity.Metadata) { } } +// GetDimensionsByImage is responsible for obtaining the dimensions of an image +// If the image cannot be loaded, an error is returned +func (g *provider) GetDimensionsByImage(file string) (*entity.Dimensions, error) { + extensionStr := strings.ToLower(strings.TrimPrefix(filepath.Ext(file), ".")) + img, err := g.loadImage(file, extensionStr) + if err != nil { + return nil, err + } + + imgInfo, _ := g.image.GetImageInfo(img, extension.Type(extensionStr)) + + if imgInfo == nil { + return nil, errors.New("could not read image options, maybe path/name is wrong") + } + return &entity.Dimensions{Width: imgInfo.Width(), Height: imgInfo.Height()}, nil +} + +// GetDimensionsByImageByte is responsible for obtaining the dimensions of an image +// If the image cannot be loaded, an error is returned +func (g *provider) GetDimensionsByImageByte(bytes []byte, extension extension.Type) (*entity.Dimensions, error) { + img, err := FromBytes(bytes, extension) + if err != nil { + return nil, err + } + + imgInfo, _ := g.image.GetImageInfo(img, extension) + if imgInfo == nil { + return nil, errors.New("could not read image options, maybe path/name is wrong") + } + return &entity.Dimensions{Width: imgInfo.Width(), Height: imgInfo.Height()}, nil +} + +// GetDimensionsByMatrixCode is responsible for obtaining the dimensions of an MatrixCode +// If the image cannot be loaded, an error is returned +func (g *provider) GetDimensionsByMatrixCode(code string) (*entity.Dimensions, error) { + img, err := g.loadCode(code, g.code.GenDataMatrix) + if err != nil { + return nil, err + } + + imgInfo, _ := g.image.GetImageInfo(img, extension.Jpg) + + if imgInfo == nil { + return nil, errors.New("could not read image options, maybe path/name is wrong") + } + return &entity.Dimensions{Width: imgInfo.Width(), Height: imgInfo.Height()}, nil +} + +// GetDimensionsByQrCode is responsible for obtaining the dimensions of an QrCode +// If the image cannot be loaded, an error is returned +func (g *provider) GetDimensionsByQrCode(code string) (*entity.Dimensions, error) { + img, err := g.loadCode(code, g.code.GenQr) + if err != nil { + return nil, err + } + + imgInfo, _ := g.image.GetImageInfo(img, extension.Jpg) + if imgInfo == nil { + return nil, errors.New("could not read image options, maybe path/name is wrong") + } + return &entity.Dimensions{Width: imgInfo.Width(), Height: imgInfo.Height()}, nil +} + func (g *provider) GenerateBytes() ([]byte, error) { var buffer bytes.Buffer err := g.fpdf.Output(&buffer) @@ -227,3 +274,34 @@ func (g *provider) getBarcodeImageName(code string, prop *props.Barcode) string return code + string(prop.Type) } + +// loadImage is responsible for loading an codes +func (g *provider) loadCode(code string, generate func(code string) (*entity.Image, error)) (*entity.Image, error) { + image, err := g.cache.GetImage(code, extension.Jpg) + if err != nil { + image, err = generate(code) + } else { + return image, nil + } + if err != nil { + return nil, err + } + g.cache.AddImage(code, image) + + return image, nil +} + +// loadImage is responsible for loading an image +func (g *provider) loadImage(file, extensionStr string) (*entity.Image, error) { + image, err := g.cache.GetImage(file, extension.Type(extensionStr)) + + if err == nil { + return image, err + } + + if err = g.cache.LoadImage(file, extension.Type(extensionStr)); err != nil { + return nil, err + } + + return g.cache.GetImage(file, extension.Type(extensionStr)) +} diff --git a/internal/providers/gofpdf/provider_test.go b/internal/providers/gofpdf/provider_test.go index d3a1ba2e..b711254e 100644 --- a/internal/providers/gofpdf/provider_test.go +++ b/internal/providers/gofpdf/provider_test.go @@ -6,6 +6,7 @@ import ( "testing" "time" + "github.com/google/uuid" "github.com/johnfercher/maroto/v2/pkg/consts/barcode" "github.com/johnfercher/maroto/v2/internal/fixture" @@ -16,6 +17,7 @@ import ( "github.com/stretchr/testify/mock" "github.com/johnfercher/maroto/v2/internal/providers/gofpdf" + gpdf "github.com/jung-kurt/gofpdf" "github.com/johnfercher/maroto/v2/pkg/core/entity" "github.com/stretchr/testify/assert" @@ -128,6 +130,7 @@ func TestProvider_AddMatrixCode(t *testing.T) { code.AssertNumberOfCalls(t, "GenDataMatrix", 1) text.AssertNumberOfCalls(t, "Add", 1) }) + t.Run("when can find image on cache but cannot add image, should apply error message", func(t *testing.T) { // Arrange cell := &entity.Cell{} @@ -137,7 +140,8 @@ func TestProvider_AddMatrixCode(t *testing.T) { cache := mocks.NewCache(t) cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(img, nil) - cache.EXPECT().AddImage(codeContent, img) + + code := mocks.NewCode(t) text := mocks.NewText(t) text.EXPECT().Add("could not add matrixcode to document", cell, merror.DefaultErrorText) @@ -163,6 +167,7 @@ func TestProvider_AddMatrixCode(t *testing.T) { Image: image, Fpdf: fpdf, Cfg: cfg, + Code: code, } sut := gofpdf.New(dep) @@ -172,10 +177,11 @@ func TestProvider_AddMatrixCode(t *testing.T) { // Assert cache.AssertNumberOfCalls(t, "GetImage", 1) - cache.AssertNumberOfCalls(t, "AddImage", 1) + cache.AssertNumberOfCalls(t, "AddImage", 0) image.AssertNumberOfCalls(t, "Add", 1) text.AssertNumberOfCalls(t, "Add", 1) }) + t.Run("when can find image on cache and can add image, should not apply error message", func(t *testing.T) { // Arrange cell := &entity.Cell{} @@ -185,7 +191,8 @@ func TestProvider_AddMatrixCode(t *testing.T) { cache := mocks.NewCache(t) cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(img, nil) - cache.EXPECT().AddImage(codeContent, img) + + code := mocks.NewCode(t) cfg := &entity.Config{ Margins: &entity.Margins{ @@ -203,6 +210,7 @@ func TestProvider_AddMatrixCode(t *testing.T) { Cache: cache, Image: image, Cfg: cfg, + Code: code, } sut := gofpdf.New(dep) @@ -212,7 +220,7 @@ func TestProvider_AddMatrixCode(t *testing.T) { // Assert cache.AssertNumberOfCalls(t, "GetImage", 1) - cache.AssertNumberOfCalls(t, "AddImage", 1) + cache.AssertNumberOfCalls(t, "AddImage", 0) image.AssertNumberOfCalls(t, "Add", 1) }) } @@ -249,6 +257,7 @@ func TestProvider_AddQrCode(t *testing.T) { code.AssertNumberOfCalls(t, "GenQr", 1) text.AssertNumberOfCalls(t, "Add", 1) }) + t.Run("when can find image on cache but cannot add image, should apply error message", func(t *testing.T) { // Arrange cell := &entity.Cell{} @@ -258,7 +267,8 @@ func TestProvider_AddQrCode(t *testing.T) { cache := mocks.NewCache(t) cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(img, nil) - cache.EXPECT().AddImage(codeContent, img) + + code := mocks.NewCode(t) text := mocks.NewText(t) text.EXPECT().Add("could not add qrcode to document", cell, merror.DefaultErrorText) @@ -284,6 +294,7 @@ func TestProvider_AddQrCode(t *testing.T) { Image: image, Fpdf: fpdf, Cfg: cfg, + Code: code, } sut := gofpdf.New(dep) @@ -293,10 +304,11 @@ func TestProvider_AddQrCode(t *testing.T) { // Assert cache.AssertNumberOfCalls(t, "GetImage", 1) - cache.AssertNumberOfCalls(t, "AddImage", 1) + cache.AssertNumberOfCalls(t, "AddImage", 0) image.AssertNumberOfCalls(t, "Add", 1) text.AssertNumberOfCalls(t, "Add", 1) }) + t.Run("when can find image on cache and can add image, should not apply error message", func(t *testing.T) { // Arrange cell := &entity.Cell{} @@ -306,7 +318,8 @@ func TestProvider_AddQrCode(t *testing.T) { cache := mocks.NewCache(t) cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(img, nil) - cache.EXPECT().AddImage(codeContent, img) + + code := mocks.NewCode(t) cfg := &entity.Config{ Margins: &entity.Margins{ @@ -324,6 +337,7 @@ func TestProvider_AddQrCode(t *testing.T) { Cache: cache, Image: image, Cfg: cfg, + Code: code, } sut := gofpdf.New(dep) @@ -333,7 +347,7 @@ func TestProvider_AddQrCode(t *testing.T) { // Assert cache.AssertNumberOfCalls(t, "GetImage", 1) - cache.AssertNumberOfCalls(t, "AddImage", 1) + cache.AssertNumberOfCalls(t, "AddImage", 0) image.AssertNumberOfCalls(t, "Add", 1) }) } @@ -884,6 +898,312 @@ func TestProvider_AddBackgroundImageFromBytes(t *testing.T) { }) } +// nolint: dupl +func TestProvider_GetDimensionsByMatrixCode(t *testing.T) { + t.Run("when cannot find image on cache and cannot generate data matrix, should return error", func(t *testing.T) { + // Arrange + + cache := mocks.NewCache(t) + cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(nil, errors.New("anyError1")) + + code := mocks.NewCode(t) + code.EXPECT().GenDataMatrix(codeContent).Return(nil, errors.New("anyError2")) + + dep := &gofpdf.Dependencies{ + Cache: cache, + Code: code, + } + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByMatrixCode(codeContent) + + // Assert + cache.AssertNumberOfCalls(t, "GetImage", 1) + code.AssertNumberOfCalls(t, "GenDataMatrix", 1) + assert.Nil(t, dimensions) + assert.NotNil(t, err) + }) + + t.Run("when cannot find image on cache but can generate data matrix, should return dimension", func(t *testing.T) { + // Arrange + img := &entity.Image{Bytes: []byte{1, 2, 3}} + + cache := mocks.NewCache(t) + cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(nil, errors.New("anyError1")) + cache.EXPECT().AddImage(codeContent, img) + + code := mocks.NewCode(t) + code.EXPECT().GenDataMatrix(codeContent).Return(img, nil) + + cfg := &entity.Config{ + Margins: &entity.Margins{ + Left: 10, + Top: 10, + Right: 10, + Bottom: 10, + }, + } + + image := mocks.NewImage(t) + image.EXPECT().GetImageInfo(img, extension.Jpg).Return(&gpdf.ImageInfoType{}, uuid.UUID{}) + + dep := &gofpdf.Dependencies{ + Cache: cache, + Image: image, + Cfg: cfg, + Code: code, + } + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByMatrixCode(codeContent) + + // Assert + cache.AssertNumberOfCalls(t, "GetImage", 1) + code.AssertNumberOfCalls(t, "GenDataMatrix", 1) + assert.NotNil(t, dimensions) + assert.Nil(t, err) + }) + + t.Run("when can find matrix on cache, should return dimension", func(t *testing.T) { + img := &entity.Image{Bytes: []byte{1, 2, 3}} + + cache := mocks.NewCache(t) + cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(img, nil) + + code := mocks.NewCode(t) + + cfg := &entity.Config{Margins: &entity.Margins{Left: 10, Top: 10, Right: 10, Bottom: 10}} + + image := mocks.NewImage(t) + image.EXPECT().GetImageInfo(img, extension.Jpg).Return(&gpdf.ImageInfoType{}, uuid.UUID{}) + + dep := &gofpdf.Dependencies{ + Cache: cache, + Image: image, + Cfg: cfg, + Code: code, + } + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByMatrixCode(codeContent) + + // Assert + cache.AssertNumberOfCalls(t, "GetImage", 1) + code.AssertNumberOfCalls(t, "GenDataMatrix", 0) + assert.NotNil(t, dimensions) + assert.Nil(t, err) + }) +} + +// nolint: dupl +func TestProvider_GetDimensionsByQrCode(t *testing.T) { + t.Run("when cannot find image on cache and cannot generate qrCode, should return error", func(t *testing.T) { + // Arrange + + cache := mocks.NewCache(t) + cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(nil, errors.New("anyError1")) + + code := mocks.NewCode(t) + code.EXPECT().GenQr(codeContent).Return(nil, errors.New("anyError2")) + + dep := &gofpdf.Dependencies{ + Cache: cache, + Code: code, + } + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByQrCode(codeContent) + + // Assert + cache.AssertNumberOfCalls(t, "GetImage", 1) + code.AssertNumberOfCalls(t, "GenQr", 1) + assert.Nil(t, dimensions) + assert.NotNil(t, err) + }) + + t.Run("when cannot find image on cache but can generate qrCode, should return dimension", func(t *testing.T) { + // Arrange + img := &entity.Image{Bytes: []byte{1, 2, 3}} + + cache := mocks.NewCache(t) + cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(nil, errors.New("anyError1")) + cache.EXPECT().AddImage(codeContent, img) + + code := mocks.NewCode(t) + code.EXPECT().GenQr(codeContent).Return(img, nil) + + cfg := &entity.Config{ + Margins: &entity.Margins{ + Left: 10, + Top: 10, + Right: 10, + Bottom: 10, + }, + } + + image := mocks.NewImage(t) + image.EXPECT().GetImageInfo(img, extension.Jpg).Return(&gpdf.ImageInfoType{}, uuid.UUID{}) + + dep := &gofpdf.Dependencies{ + Cache: cache, + Image: image, + Cfg: cfg, + Code: code, + } + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByQrCode(codeContent) + + // Assert + cache.AssertNumberOfCalls(t, "GetImage", 1) + code.AssertNumberOfCalls(t, "GenQr", 1) + assert.NotNil(t, dimensions) + assert.Nil(t, err) + }) + + t.Run("when can find qrCode on cache, should return dimension", func(t *testing.T) { + img := &entity.Image{Bytes: []byte{1, 2, 3}} + + cache := mocks.NewCache(t) + cache.EXPECT().GetImage(codeContent, extension.Jpg).Return(img, nil) + + code := mocks.NewCode(t) + + cfg := &entity.Config{ + Margins: &entity.Margins{ + Left: 10, + Top: 10, + Right: 10, + Bottom: 10, + }, + } + + image := mocks.NewImage(t) + image.EXPECT().GetImageInfo(img, extension.Jpg).Return(&gpdf.ImageInfoType{}, uuid.UUID{}) + + dep := &gofpdf.Dependencies{ + Cache: cache, + Image: image, + Cfg: cfg, + Code: code, + } + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByQrCode(codeContent) + + // Assert + cache.AssertNumberOfCalls(t, "GetImage", 1) + assert.NotNil(t, dimensions) + assert.Nil(t, err) + }) +} + +// nolint: dupl +func TestProvider_GetDimensionsByImage(t *testing.T) { + t.Run("when cannot find image on cache and cannot load image, should return error", func(t *testing.T) { + // Arrange + + cache := mocks.NewCache(t) + cache.EXPECT().GetImage("docs/assets/images/biplane.jpg", extension.Jpg).Return(nil, errors.New("anyError1")) + cache.EXPECT().LoadImage("docs/assets/images/biplane.jpg", extension.Jpg).Return(errors.New("anyError1")) + + dep := &gofpdf.Dependencies{ + Cache: cache, + } + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByImage("docs/assets/images/biplane.jpg") + + // Assert + cache.AssertNumberOfCalls(t, "GetImage", 1) + cache.AssertNumberOfCalls(t, "LoadImage", 1) + assert.Nil(t, dimensions) + assert.NotNil(t, err) + }) + + t.Run("when can find image on cache, should return dimension", func(t *testing.T) { + img := &entity.Image{Bytes: []byte{1, 2, 3}} + + // Arrange + + cache := mocks.NewCache(t) + cache.EXPECT().GetImage("docs/assets/images/biplane.jpg", extension.Jpg).Return(img, nil) + + image := mocks.NewImage(t) + image.EXPECT().GetImageInfo(img, extension.Jpg).Return(&gpdf.ImageInfoType{}, uuid.UUID{}) + + dep := &gofpdf.Dependencies{ + Cache: cache, + Image: image, + } + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByImage("docs/assets/images/biplane.jpg") + + // Assert + cache.AssertNumberOfCalls(t, "GetImage", 1) + cache.AssertNumberOfCalls(t, "LoadImage", 0) + assert.Nil(t, err) + assert.NotNil(t, dimensions) + }) +} + +// nolint: dupl +func TestProvider_GetDimensionsByImageByte(t *testing.T) { + t.Run("when invalid format is sent, should return an error", func(t *testing.T) { + // Arrange + dep := &gofpdf.Dependencies{} + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByImageByte([]byte{1, 2, 3}, "jj") + + // Assert + assert.Nil(t, dimensions) + assert.NotNil(t, err) + }) + + t.Run("when bytes are sent, should return dimension", func(t *testing.T) { + img := fixture.ImageEntity() + + // Arrange + + image := mocks.NewImage(t) + image.EXPECT().GetImageInfo(&img, extension.Png).Return(&gpdf.ImageInfoType{}, uuid.UUID{}) + + dep := &gofpdf.Dependencies{ + Image: image, + } + + sut := gofpdf.New(dep) + + // Act + dimensions, err := sut.GetDimensionsByImageByte(img.Bytes, extension.Png) + + // Assert + image.AssertNumberOfCalls(t, "GetImageInfo", 1) + assert.Nil(t, err) + assert.NotNil(t, dimensions) + }) +} + /*func TestProvider_AddImageFromFile(t *testing.T) { t.Run("when cannot find image in cache and cannot load image, should apply error message", func(t *testing.T) { // Arrange diff --git a/internal/providers/gofpdf/text.go b/internal/providers/gofpdf/text.go index 5417dde8..dee6a5ad 100644 --- a/internal/providers/gofpdf/text.go +++ b/internal/providers/gofpdf/text.go @@ -103,23 +103,16 @@ func (s *text) Add(text string, cell *entity.Cell, textProp *props.Text) { } // GetLinesQuantity retrieve the quantity of lines which a text will occupy to avoid that text to extrapolate a cell. -func (s *text) GetLinesQuantity(text string, textProp props.Text, colWidth float64) int { - translator := s.pdf.UnicodeTranslatorFromDescriptor("") +func (s *text) GetLinesQuantity(text string, textProp *props.Text, colWidth float64) int { s.font.SetFont(textProp.Family, textProp.Style, textProp.Size) - // Apply Unicode. - textTranslated := translator(text) + textTranslated := s.textToUnicode(text, textProp) - stringWidth := s.pdf.GetStringWidth(textTranslated) - words := strings.Split(textTranslated, " ") - - // If should add one line. - if stringWidth < colWidth || len(words) == 1 { - return 1 + if textProp.BreakLineStrategy == breakline.DashStrategy { + return len(s.getLinesBreakingLineWithDash(text, colWidth)) + } else { + return len(s.getLinesBreakingLineFromSpace(strings.Split(textTranslated, " "), colWidth)) } - - lines := s.getLinesBreakingLineFromSpace(words, colWidth) - return len(lines) } func (s *text) getLinesBreakingLineFromSpace(words []string, colWidth float64) []string { diff --git a/internal/providers/gofpdf/text_test.go b/internal/providers/gofpdf/text_test.go index 7ab9f391..2271654f 100644 --- a/internal/providers/gofpdf/text_test.go +++ b/internal/providers/gofpdf/text_test.go @@ -5,6 +5,10 @@ import ( "testing" "github.com/johnfercher/maroto/v2/internal/providers/gofpdf" + "github.com/johnfercher/maroto/v2/pkg/consts/breakline" + "github.com/johnfercher/maroto/v2/pkg/consts/fontfamily" + "github.com/johnfercher/maroto/v2/pkg/consts/fontstyle" + "github.com/johnfercher/maroto/v2/pkg/props" "github.com/johnfercher/maroto/v2/mocks" "github.com/stretchr/testify/assert" @@ -16,3 +20,43 @@ func TestNewText(t *testing.T) { assert.NotNil(t, text) assert.Equal(t, fmt.Sprintf("%T", text), "*gofpdf.text") } + +func TestGetLinesheight(t *testing.T) { + t.Run("when a text that occupies two lines is sent with EmptySpaceStrategy, should two is returned", func(t *testing.T) { + textProp := &props.Text{} + textProp.MakeValid(&props.Font{Family: fontfamily.Arial, Size: 10, Style: fontstyle.Normal}) + + font := mocks.NewFont(t) + font.EXPECT().SetFont(textProp.Family, textProp.Style, textProp.Size) + + pdf := mocks.NewFpdf(t) + pdf.EXPECT().GetStringWidth("text ").Return(5) + pdf.EXPECT().UnicodeTranslatorFromDescriptor("").Return(func(s string) string { return s }) + + text := gofpdf.NewText(pdf, mocks.NewMath(t), font) + + height := text.GetLinesQuantity("text text text text", textProp, 11) + + assert.Equal(t, 2, height) + }) + + t.Run("When a text that occupies two lines is sent with EmptySpaceStrategy, should two is returned", func(t *testing.T) { + textProp := &props.Text{BreakLineStrategy: breakline.DashStrategy} + textProp.MakeValid(&props.Font{Family: fontfamily.Arial, Size: 10, Style: fontstyle.Normal}) + + font := mocks.NewFont(t) + font.EXPECT().SetFont(textProp.Family, textProp.Style, textProp.Size) + + pdf := mocks.NewFpdf(t) + pdf.EXPECT().GetStringWidth("t").Return(1) + pdf.EXPECT().GetStringWidth(" ").Return(1) + pdf.EXPECT().GetStringWidth(" - ").Return(1) + pdf.EXPECT().UnicodeTranslatorFromDescriptor("").Return(func(s string) string { return s }) + + text := gofpdf.NewText(pdf, mocks.NewMath(t), font) + + height := text.GetLinesQuantity("tttt tttt tttt tttt", textProp, 11) + + assert.Equal(t, 2, height) + }) +} diff --git a/maroto.go b/maroto.go index 5a84916b..5f765c75 100644 --- a/maroto.go +++ b/maroto.go @@ -112,6 +112,15 @@ func (m *Maroto) AddRow(rowHeight float64, cols ...core.Col) core.Row { return r } +// AddAutoRow is responsible for adding a line with automatic height to the +// current document. +// The row height will be calculated based on its content. +func (m *Maroto) AddAutoRow(cols ...core.Col) core.Row { + r := row.New().Add(cols...) + m.addRow(r) + return r +} + // FitlnCurrentPage is responsible to validating whether a line fits on // the current page. func (m *Maroto) FitlnCurrentPage(heightNewLine float64) bool { @@ -207,7 +216,8 @@ func (m *Maroto) addRow(r core.Row) { maxHeight := m.cell.Height - rowHeight := r.GetHeight() + r.SetConfig(m.config) + rowHeight := r.GetHeight(m.provider, &m.cell) sumHeight := rowHeight + m.currentHeight + m.footerHeight // Row smaller than the remain space on page @@ -230,7 +240,7 @@ func (m *Maroto) addRow(r core.Row) { func (m *Maroto) addHeader() { for _, headerRow := range m.header { - m.currentHeight += headerRow.GetHeight() + m.currentHeight += headerRow.GetHeight(m.provider, &m.cell) m.rows = append(m.rows, headerRow) } } @@ -252,6 +262,7 @@ func (m *Maroto) fillPageToAddNew() { p = page.New() } + p.SetConfig(m.config) p.Add(m.rows...) m.pages = append(m.pages, p) @@ -364,7 +375,7 @@ func (m *Maroto) processPage(pages []core.Page) ([]byte, error) { func (m *Maroto) getRowsHeight(rows ...core.Row) float64 { var height float64 for _, r := range rows { - height += r.GetHeight() + height += r.GetHeight(m.provider, &m.cell) } return height diff --git a/metricsdecorator.go b/metricsdecorator.go index fdb6b6fd..5c424f0b 100644 --- a/metricsdecorator.go +++ b/metricsdecorator.go @@ -9,14 +9,15 @@ import ( ) type MetricsDecorator struct { - addRowsTime []*metrics.Time - addRowTime []*metrics.Time - addPageTime []*metrics.Time - headerTime *metrics.Time - footerTime *metrics.Time - generateTime *metrics.Time - structureTime *metrics.Time - inner core.Maroto + addRowsTime []*metrics.Time + addRowTime []*metrics.Time + addAutoRowTime []*metrics.Time + addPageTime []*metrics.Time + headerTime *metrics.Time + footerTime *metrics.Time + generateTime *metrics.Time + structureTime *metrics.Time + inner core.Maroto } // NewMetricsDecorator is responsible to create the metrics decorator @@ -87,6 +88,17 @@ func (m *MetricsDecorator) AddRow(rowHeight float64, cols ...core.Col) core.Row return r } +// AddRow decorates the AddRow method of maroto instance. +func (m *MetricsDecorator) AddAutoRow(cols ...core.Col) core.Row { + var r core.Row + timeSpent := time.GetTimeSpent(func() { + r = m.inner.AddAutoRow(cols...) + }) + + m.addAutoRowTime = append(m.addAutoRowTime, timeSpent) + return r +} + // RegisterHeader decorates the RegisterHeader method of maroto instance. func (m *MetricsDecorator) RegisterHeader(rows ...core.Row) error { var err error diff --git a/mocks/Builder.go b/mocks/Builder.go index 191f66ee..883f7968 100644 --- a/mocks/Builder.go +++ b/mocks/Builder.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Cache.go b/mocks/Cache.go index 52756753..25ebce39 100644 --- a/mocks/Cache.go +++ b/mocks/Cache.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/CellWriter.go b/mocks/CellWriter.go index 21acbd63..7d47e029 100644 --- a/mocks/CellWriter.go +++ b/mocks/CellWriter.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Code.go b/mocks/Code.go index 69aa681a..747d5bc4 100644 --- a/mocks/Code.go +++ b/mocks/Code.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Col.go b/mocks/Col.go index 84713246..dc4a7276 100644 --- a/mocks/Col.go +++ b/mocks/Col.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks @@ -87,6 +87,53 @@ func (_c *Col_Add_Call) RunAndReturn(run func(...core.Component) core.Col) *Col_ return _c } +// GetHeight provides a mock function with given fields: provider, cell +func (_m *Col) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + ret := _m.Called(provider, cell) + + if len(ret) == 0 { + panic("no return value specified for GetHeight") + } + + var r0 float64 + if rf, ok := ret.Get(0).(func(core.Provider, *entity.Cell) float64); ok { + r0 = rf(provider, cell) + } else { + r0 = ret.Get(0).(float64) + } + + return r0 +} + +// Col_GetHeight_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetHeight' +type Col_GetHeight_Call struct { + *mock.Call +} + +// GetHeight is a helper method to define mock.On call +// - provider core.Provider +// - cell *entity.Cell +func (_e *Col_Expecter) GetHeight(provider interface{}, cell interface{}) *Col_GetHeight_Call { + return &Col_GetHeight_Call{Call: _e.mock.On("GetHeight", provider, cell)} +} + +func (_c *Col_GetHeight_Call) Run(run func(provider core.Provider, cell *entity.Cell)) *Col_GetHeight_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(core.Provider), args[1].(*entity.Cell)) + }) + return _c +} + +func (_c *Col_GetHeight_Call) Return(_a0 float64) *Col_GetHeight_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *Col_GetHeight_Call) RunAndReturn(run func(core.Provider, *entity.Cell) float64) *Col_GetHeight_Call { + _c.Call.Return(run) + return _c +} + // GetSize provides a mock function with given fields: func (_m *Col) GetSize() int { ret := _m.Called() diff --git a/mocks/Component.go b/mocks/Component.go index 2f6c48af..5b096b9a 100644 --- a/mocks/Component.go +++ b/mocks/Component.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks @@ -24,6 +24,53 @@ func (_m *Component) EXPECT() *Component_Expecter { return &Component_Expecter{mock: &_m.Mock} } +// GetHeight provides a mock function with given fields: provider, cell +func (_m *Component) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + ret := _m.Called(provider, cell) + + if len(ret) == 0 { + panic("no return value specified for GetHeight") + } + + var r0 float64 + if rf, ok := ret.Get(0).(func(core.Provider, *entity.Cell) float64); ok { + r0 = rf(provider, cell) + } else { + r0 = ret.Get(0).(float64) + } + + return r0 +} + +// Component_GetHeight_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetHeight' +type Component_GetHeight_Call struct { + *mock.Call +} + +// GetHeight is a helper method to define mock.On call +// - provider core.Provider +// - cell *entity.Cell +func (_e *Component_Expecter) GetHeight(provider interface{}, cell interface{}) *Component_GetHeight_Call { + return &Component_GetHeight_Call{Call: _e.mock.On("GetHeight", provider, cell)} +} + +func (_c *Component_GetHeight_Call) Run(run func(provider core.Provider, cell *entity.Cell)) *Component_GetHeight_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(core.Provider), args[1].(*entity.Cell)) + }) + return _c +} + +func (_c *Component_GetHeight_Call) Return(_a0 float64) *Component_GetHeight_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *Component_GetHeight_Call) RunAndReturn(run func(core.Provider, *entity.Cell) float64) *Component_GetHeight_Call { + _c.Call.Return(run) + return _c +} + // GetStructure provides a mock function with given fields: func (_m *Component) GetStructure() *node.Node[core.Structure] { ret := _m.Called() diff --git a/mocks/Document.go b/mocks/Document.go index 338e75f8..c1a675cc 100644 --- a/mocks/Document.go +++ b/mocks/Document.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Font.go b/mocks/Font.go index f5de680e..3c394374 100644 --- a/mocks/Font.go +++ b/mocks/Font.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Fpdf.go b/mocks/Fpdf.go index 410b2b11..2b89935f 100644 --- a/mocks/Fpdf.go +++ b/mocks/Fpdf.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Image.go b/mocks/Image.go index 6223110d..fa0bebda 100644 --- a/mocks/Image.go +++ b/mocks/Image.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks @@ -6,9 +6,13 @@ import ( extension "github.com/johnfercher/maroto/v2/pkg/consts/extension" entity "github.com/johnfercher/maroto/v2/pkg/core/entity" + gofpdf "github.com/jung-kurt/gofpdf" + mock "github.com/stretchr/testify/mock" props "github.com/johnfercher/maroto/v2/pkg/props" + + uuid "github.com/google/uuid" ) // Image is an autogenerated mock type for the Image type @@ -75,6 +79,67 @@ func (_c *Image_Add_Call) RunAndReturn(run func(*entity.Image, *entity.Cell, *en return _c } +// GetImageInfo provides a mock function with given fields: img, _a1 +func (_m *Image) GetImageInfo(img *entity.Image, _a1 extension.Type) (*gofpdf.ImageInfoType, uuid.UUID) { + ret := _m.Called(img, _a1) + + if len(ret) == 0 { + panic("no return value specified for GetImageInfo") + } + + var r0 *gofpdf.ImageInfoType + var r1 uuid.UUID + if rf, ok := ret.Get(0).(func(*entity.Image, extension.Type) (*gofpdf.ImageInfoType, uuid.UUID)); ok { + return rf(img, _a1) + } + if rf, ok := ret.Get(0).(func(*entity.Image, extension.Type) *gofpdf.ImageInfoType); ok { + r0 = rf(img, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gofpdf.ImageInfoType) + } + } + + if rf, ok := ret.Get(1).(func(*entity.Image, extension.Type) uuid.UUID); ok { + r1 = rf(img, _a1) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(uuid.UUID) + } + } + + return r0, r1 +} + +// Image_GetImageInfo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetImageInfo' +type Image_GetImageInfo_Call struct { + *mock.Call +} + +// GetImageInfo is a helper method to define mock.On call +// - img *entity.Image +// - _a1 extension.Type +func (_e *Image_Expecter) GetImageInfo(img interface{}, _a1 interface{}) *Image_GetImageInfo_Call { + return &Image_GetImageInfo_Call{Call: _e.mock.On("GetImageInfo", img, _a1)} +} + +func (_c *Image_GetImageInfo_Call) Run(run func(img *entity.Image, _a1 extension.Type)) *Image_GetImageInfo_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(*entity.Image), args[1].(extension.Type)) + }) + return _c +} + +func (_c *Image_GetImageInfo_Call) Return(_a0 *gofpdf.ImageInfoType, _a1 uuid.UUID) *Image_GetImageInfo_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *Image_GetImageInfo_Call) RunAndReturn(run func(*entity.Image, extension.Type) (*gofpdf.ImageInfoType, uuid.UUID)) *Image_GetImageInfo_Call { + _c.Call.Return(run) + return _c +} + // NewImage creates a new instance of Image. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewImage(t interface { diff --git a/mocks/Line.go b/mocks/Line.go index 5379c58b..080731fc 100644 --- a/mocks/Line.go +++ b/mocks/Line.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Listable.go b/mocks/Listable.go index a515d739..d9d28d9f 100644 --- a/mocks/Listable.go +++ b/mocks/Listable.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Maroto.go b/mocks/Maroto.go index 75ab5ae8..90fb026b 100644 --- a/mocks/Maroto.go +++ b/mocks/Maroto.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks @@ -24,6 +24,67 @@ func (_m *Maroto) EXPECT() *Maroto_Expecter { return &Maroto_Expecter{mock: &_m.Mock} } +// AddAutoRow provides a mock function with given fields: cols +func (_m *Maroto) AddAutoRow(cols ...core.Col) core.Row { + _va := make([]interface{}, len(cols)) + for _i := range cols { + _va[_i] = cols[_i] + } + var _ca []interface{} + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for AddAutoRow") + } + + var r0 core.Row + if rf, ok := ret.Get(0).(func(...core.Col) core.Row); ok { + r0 = rf(cols...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(core.Row) + } + } + + return r0 +} + +// Maroto_AddAutoRow_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'AddAutoRow' +type Maroto_AddAutoRow_Call struct { + *mock.Call +} + +// AddAutoRow is a helper method to define mock.On call +// - cols ...core.Col +func (_e *Maroto_Expecter) AddAutoRow(cols ...interface{}) *Maroto_AddAutoRow_Call { + return &Maroto_AddAutoRow_Call{Call: _e.mock.On("AddAutoRow", + append([]interface{}{}, cols...)...)} +} + +func (_c *Maroto_AddAutoRow_Call) Run(run func(cols ...core.Col)) *Maroto_AddAutoRow_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]core.Col, len(args)-0) + for i, a := range args[0:] { + if a != nil { + variadicArgs[i] = a.(core.Col) + } + } + run(variadicArgs...) + }) + return _c +} + +func (_c *Maroto_AddAutoRow_Call) Return(_a0 core.Row) *Maroto_AddAutoRow_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *Maroto_AddAutoRow_Call) RunAndReturn(run func(...core.Col) core.Row) *Maroto_AddAutoRow_Call { + _c.Call.Return(run) + return _c +} + // AddPages provides a mock function with given fields: pages func (_m *Maroto) AddPages(pages ...core.Page) { _va := make([]interface{}, len(pages)) diff --git a/mocks/Math.go b/mocks/Math.go index 84d05d58..fad2cbf5 100644 --- a/mocks/Math.go +++ b/mocks/Math.go @@ -1,12 +1,10 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks import ( entity "github.com/johnfercher/maroto/v2/pkg/core/entity" mock "github.com/stretchr/testify/mock" - - props "github.com/johnfercher/maroto/v2/pkg/props" ) // Math is an autogenerated mock type for the Math type @@ -22,17 +20,17 @@ func (_m *Math) EXPECT() *Math_Expecter { return &Math_Expecter{mock: &_m.Mock} } -// GetInnerCenterCell provides a mock function with given fields: inner, outer, percent -func (_m *Math) GetInnerCenterCell(inner *entity.Dimensions, outer *entity.Dimensions, percent float64) *entity.Cell { - ret := _m.Called(inner, outer, percent) +// GetInnerCenterCell provides a mock function with given fields: inner, outer +func (_m *Math) GetInnerCenterCell(inner *entity.Dimensions, outer *entity.Dimensions) *entity.Cell { + ret := _m.Called(inner, outer) if len(ret) == 0 { panic("no return value specified for GetInnerCenterCell") } var r0 *entity.Cell - if rf, ok := ret.Get(0).(func(*entity.Dimensions, *entity.Dimensions, float64) *entity.Cell); ok { - r0 = rf(inner, outer, percent) + if rf, ok := ret.Get(0).(func(*entity.Dimensions, *entity.Dimensions) *entity.Cell); ok { + r0 = rf(inner, outer) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(*entity.Cell) @@ -50,14 +48,13 @@ type Math_GetInnerCenterCell_Call struct { // GetInnerCenterCell is a helper method to define mock.On call // - inner *entity.Dimensions // - outer *entity.Dimensions -// - percent float64 -func (_e *Math_Expecter) GetInnerCenterCell(inner interface{}, outer interface{}, percent interface{}) *Math_GetInnerCenterCell_Call { - return &Math_GetInnerCenterCell_Call{Call: _e.mock.On("GetInnerCenterCell", inner, outer, percent)} +func (_e *Math_Expecter) GetInnerCenterCell(inner interface{}, outer interface{}) *Math_GetInnerCenterCell_Call { + return &Math_GetInnerCenterCell_Call{Call: _e.mock.On("GetInnerCenterCell", inner, outer)} } -func (_c *Math_GetInnerCenterCell_Call) Run(run func(inner *entity.Dimensions, outer *entity.Dimensions, percent float64)) *Math_GetInnerCenterCell_Call { +func (_c *Math_GetInnerCenterCell_Call) Run(run func(inner *entity.Dimensions, outer *entity.Dimensions)) *Math_GetInnerCenterCell_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(*entity.Dimensions), args[1].(*entity.Dimensions), args[2].(float64)) + run(args[0].(*entity.Dimensions), args[1].(*entity.Dimensions)) }) return _c } @@ -67,57 +64,58 @@ func (_c *Math_GetInnerCenterCell_Call) Return(_a0 *entity.Cell) *Math_GetInnerC return _c } -func (_c *Math_GetInnerCenterCell_Call) RunAndReturn(run func(*entity.Dimensions, *entity.Dimensions, float64) *entity.Cell) *Math_GetInnerCenterCell_Call { +func (_c *Math_GetInnerCenterCell_Call) RunAndReturn(run func(*entity.Dimensions, *entity.Dimensions) *entity.Cell) *Math_GetInnerCenterCell_Call { _c.Call.Return(run) return _c } -// GetInnerNonCenterCell provides a mock function with given fields: inner, outer, prop -func (_m *Math) GetInnerNonCenterCell(inner *entity.Dimensions, outer *entity.Dimensions, prop *props.Rect) *entity.Cell { - ret := _m.Called(inner, outer, prop) +// Resize provides a mock function with given fields: inner, outer, percent, justReferenceWidth +func (_m *Math) Resize(inner *entity.Dimensions, outer *entity.Dimensions, percent float64, justReferenceWidth bool) *entity.Dimensions { + ret := _m.Called(inner, outer, percent, justReferenceWidth) if len(ret) == 0 { - panic("no return value specified for GetInnerNonCenterCell") + panic("no return value specified for Resize") } - var r0 *entity.Cell - if rf, ok := ret.Get(0).(func(*entity.Dimensions, *entity.Dimensions, *props.Rect) *entity.Cell); ok { - r0 = rf(inner, outer, prop) + var r0 *entity.Dimensions + if rf, ok := ret.Get(0).(func(*entity.Dimensions, *entity.Dimensions, float64, bool) *entity.Dimensions); ok { + r0 = rf(inner, outer, percent, justReferenceWidth) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*entity.Cell) + r0 = ret.Get(0).(*entity.Dimensions) } } return r0 } -// Math_GetInnerNonCenterCell_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetInnerNonCenterCell' -type Math_GetInnerNonCenterCell_Call struct { +// Math_Resize_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Resize' +type Math_Resize_Call struct { *mock.Call } -// GetInnerNonCenterCell is a helper method to define mock.On call +// Resize is a helper method to define mock.On call // - inner *entity.Dimensions // - outer *entity.Dimensions -// - prop *props.Rect -func (_e *Math_Expecter) GetInnerNonCenterCell(inner interface{}, outer interface{}, prop interface{}) *Math_GetInnerNonCenterCell_Call { - return &Math_GetInnerNonCenterCell_Call{Call: _e.mock.On("GetInnerNonCenterCell", inner, outer, prop)} +// - percent float64 +// - justReferenceWidth bool +func (_e *Math_Expecter) Resize(inner interface{}, outer interface{}, percent interface{}, justReferenceWidth interface{}) *Math_Resize_Call { + return &Math_Resize_Call{Call: _e.mock.On("Resize", inner, outer, percent, justReferenceWidth)} } -func (_c *Math_GetInnerNonCenterCell_Call) Run(run func(inner *entity.Dimensions, outer *entity.Dimensions, prop *props.Rect)) *Math_GetInnerNonCenterCell_Call { +func (_c *Math_Resize_Call) Run(run func(inner *entity.Dimensions, outer *entity.Dimensions, percent float64, justReferenceWidth bool)) *Math_Resize_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(*entity.Dimensions), args[1].(*entity.Dimensions), args[2].(*props.Rect)) + run(args[0].(*entity.Dimensions), args[1].(*entity.Dimensions), args[2].(float64), args[3].(bool)) }) return _c } -func (_c *Math_GetInnerNonCenterCell_Call) Return(_a0 *entity.Cell) *Math_GetInnerNonCenterCell_Call { +func (_c *Math_Resize_Call) Return(_a0 *entity.Dimensions) *Math_Resize_Call { _c.Call.Return(_a0) return _c } -func (_c *Math_GetInnerNonCenterCell_Call) RunAndReturn(run func(*entity.Dimensions, *entity.Dimensions, *props.Rect) *entity.Cell) *Math_GetInnerNonCenterCell_Call { +func (_c *Math_Resize_Call) RunAndReturn(run func(*entity.Dimensions, *entity.Dimensions, float64, bool) *entity.Dimensions) *Math_Resize_Call { _c.Call.Return(run) return _c } diff --git a/mocks/Node.go b/mocks/Node.go index 73147522..29bf2a8d 100644 --- a/mocks/Node.go +++ b/mocks/Node.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Page.go b/mocks/Page.go index 1ad5d693..da968dc0 100644 --- a/mocks/Page.go +++ b/mocks/Page.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Provider.go b/mocks/Provider.go index 7e41ddc6..c3c65807 100644 --- a/mocks/Provider.go +++ b/mocks/Provider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks @@ -431,6 +431,287 @@ func (_c *Provider_GenerateBytes_Call) RunAndReturn(run func() ([]byte, error)) return _c } +// GetDimensionsByImage provides a mock function with given fields: file +func (_m *Provider) GetDimensionsByImage(file string) (*entity.Dimensions, error) { + ret := _m.Called(file) + + if len(ret) == 0 { + panic("no return value specified for GetDimensionsByImage") + } + + var r0 *entity.Dimensions + var r1 error + if rf, ok := ret.Get(0).(func(string) (*entity.Dimensions, error)); ok { + return rf(file) + } + if rf, ok := ret.Get(0).(func(string) *entity.Dimensions); ok { + r0 = rf(file) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*entity.Dimensions) + } + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(file) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Provider_GetDimensionsByImage_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetDimensionsByImage' +type Provider_GetDimensionsByImage_Call struct { + *mock.Call +} + +// GetDimensionsByImage is a helper method to define mock.On call +// - file string +func (_e *Provider_Expecter) GetDimensionsByImage(file interface{}) *Provider_GetDimensionsByImage_Call { + return &Provider_GetDimensionsByImage_Call{Call: _e.mock.On("GetDimensionsByImage", file)} +} + +func (_c *Provider_GetDimensionsByImage_Call) Run(run func(file string)) *Provider_GetDimensionsByImage_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *Provider_GetDimensionsByImage_Call) Return(_a0 *entity.Dimensions, _a1 error) *Provider_GetDimensionsByImage_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *Provider_GetDimensionsByImage_Call) RunAndReturn(run func(string) (*entity.Dimensions, error)) *Provider_GetDimensionsByImage_Call { + _c.Call.Return(run) + return _c +} + +// GetDimensionsByImageByte provides a mock function with given fields: bytes, _a1 +func (_m *Provider) GetDimensionsByImageByte(bytes []byte, _a1 extension.Type) (*entity.Dimensions, error) { + ret := _m.Called(bytes, _a1) + + if len(ret) == 0 { + panic("no return value specified for GetDimensionsByImageByte") + } + + var r0 *entity.Dimensions + var r1 error + if rf, ok := ret.Get(0).(func([]byte, extension.Type) (*entity.Dimensions, error)); ok { + return rf(bytes, _a1) + } + if rf, ok := ret.Get(0).(func([]byte, extension.Type) *entity.Dimensions); ok { + r0 = rf(bytes, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*entity.Dimensions) + } + } + + if rf, ok := ret.Get(1).(func([]byte, extension.Type) error); ok { + r1 = rf(bytes, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Provider_GetDimensionsByImageByte_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetDimensionsByImageByte' +type Provider_GetDimensionsByImageByte_Call struct { + *mock.Call +} + +// GetDimensionsByImageByte is a helper method to define mock.On call +// - bytes []byte +// - _a1 extension.Type +func (_e *Provider_Expecter) GetDimensionsByImageByte(bytes interface{}, _a1 interface{}) *Provider_GetDimensionsByImageByte_Call { + return &Provider_GetDimensionsByImageByte_Call{Call: _e.mock.On("GetDimensionsByImageByte", bytes, _a1)} +} + +func (_c *Provider_GetDimensionsByImageByte_Call) Run(run func(bytes []byte, _a1 extension.Type)) *Provider_GetDimensionsByImageByte_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].([]byte), args[1].(extension.Type)) + }) + return _c +} + +func (_c *Provider_GetDimensionsByImageByte_Call) Return(_a0 *entity.Dimensions, _a1 error) *Provider_GetDimensionsByImageByte_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *Provider_GetDimensionsByImageByte_Call) RunAndReturn(run func([]byte, extension.Type) (*entity.Dimensions, error)) *Provider_GetDimensionsByImageByte_Call { + _c.Call.Return(run) + return _c +} + +// GetDimensionsByMatrixCode provides a mock function with given fields: code +func (_m *Provider) GetDimensionsByMatrixCode(code string) (*entity.Dimensions, error) { + ret := _m.Called(code) + + if len(ret) == 0 { + panic("no return value specified for GetDimensionsByMatrixCode") + } + + var r0 *entity.Dimensions + var r1 error + if rf, ok := ret.Get(0).(func(string) (*entity.Dimensions, error)); ok { + return rf(code) + } + if rf, ok := ret.Get(0).(func(string) *entity.Dimensions); ok { + r0 = rf(code) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*entity.Dimensions) + } + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(code) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Provider_GetDimensionsByMatrixCode_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetDimensionsByMatrixCode' +type Provider_GetDimensionsByMatrixCode_Call struct { + *mock.Call +} + +// GetDimensionsByMatrixCode is a helper method to define mock.On call +// - code string +func (_e *Provider_Expecter) GetDimensionsByMatrixCode(code interface{}) *Provider_GetDimensionsByMatrixCode_Call { + return &Provider_GetDimensionsByMatrixCode_Call{Call: _e.mock.On("GetDimensionsByMatrixCode", code)} +} + +func (_c *Provider_GetDimensionsByMatrixCode_Call) Run(run func(code string)) *Provider_GetDimensionsByMatrixCode_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *Provider_GetDimensionsByMatrixCode_Call) Return(_a0 *entity.Dimensions, _a1 error) *Provider_GetDimensionsByMatrixCode_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *Provider_GetDimensionsByMatrixCode_Call) RunAndReturn(run func(string) (*entity.Dimensions, error)) *Provider_GetDimensionsByMatrixCode_Call { + _c.Call.Return(run) + return _c +} + +// GetDimensionsByQrCode provides a mock function with given fields: code +func (_m *Provider) GetDimensionsByQrCode(code string) (*entity.Dimensions, error) { + ret := _m.Called(code) + + if len(ret) == 0 { + panic("no return value specified for GetDimensionsByQrCode") + } + + var r0 *entity.Dimensions + var r1 error + if rf, ok := ret.Get(0).(func(string) (*entity.Dimensions, error)); ok { + return rf(code) + } + if rf, ok := ret.Get(0).(func(string) *entity.Dimensions); ok { + r0 = rf(code) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*entity.Dimensions) + } + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(code) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Provider_GetDimensionsByQrCode_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetDimensionsByQrCode' +type Provider_GetDimensionsByQrCode_Call struct { + *mock.Call +} + +// GetDimensionsByQrCode is a helper method to define mock.On call +// - code string +func (_e *Provider_Expecter) GetDimensionsByQrCode(code interface{}) *Provider_GetDimensionsByQrCode_Call { + return &Provider_GetDimensionsByQrCode_Call{Call: _e.mock.On("GetDimensionsByQrCode", code)} +} + +func (_c *Provider_GetDimensionsByQrCode_Call) Run(run func(code string)) *Provider_GetDimensionsByQrCode_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string)) + }) + return _c +} + +func (_c *Provider_GetDimensionsByQrCode_Call) Return(_a0 *entity.Dimensions, _a1 error) *Provider_GetDimensionsByQrCode_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *Provider_GetDimensionsByQrCode_Call) RunAndReturn(run func(string) (*entity.Dimensions, error)) *Provider_GetDimensionsByQrCode_Call { + _c.Call.Return(run) + return _c +} + +// GetLinesQuantity provides a mock function with given fields: text, textProp, colWidth +func (_m *Provider) GetLinesQuantity(text string, textProp *props.Text, colWidth float64) int { + ret := _m.Called(text, textProp, colWidth) + + if len(ret) == 0 { + panic("no return value specified for GetLinesQuantity") + } + + var r0 int + if rf, ok := ret.Get(0).(func(string, *props.Text, float64) int); ok { + r0 = rf(text, textProp, colWidth) + } else { + r0 = ret.Get(0).(int) + } + + return r0 +} + +// Provider_GetLinesQuantity_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetLinesQuantity' +type Provider_GetLinesQuantity_Call struct { + *mock.Call +} + +// GetLinesQuantity is a helper method to define mock.On call +// - text string +// - textProp *props.Text +// - colWidth float64 +func (_e *Provider_Expecter) GetLinesQuantity(text interface{}, textProp interface{}, colWidth interface{}) *Provider_GetLinesQuantity_Call { + return &Provider_GetLinesQuantity_Call{Call: _e.mock.On("GetLinesQuantity", text, textProp, colWidth)} +} + +func (_c *Provider_GetLinesQuantity_Call) Run(run func(text string, textProp *props.Text, colWidth float64)) *Provider_GetLinesQuantity_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(string), args[1].(*props.Text), args[2].(float64)) + }) + return _c +} + +func (_c *Provider_GetLinesQuantity_Call) Return(_a0 int) *Provider_GetLinesQuantity_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *Provider_GetLinesQuantity_Call) RunAndReturn(run func(string, *props.Text, float64) int) *Provider_GetLinesQuantity_Call { + _c.Call.Return(run) + return _c +} + // GetTextHeight provides a mock function with given fields: prop func (_m *Provider) GetTextHeight(prop *props.Font) float64 { ret := _m.Called(prop) diff --git a/mocks/Repository.go b/mocks/Repository.go index a4e45bb8..3977c94e 100644 --- a/mocks/Repository.go +++ b/mocks/Repository.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks diff --git a/mocks/Row.go b/mocks/Row.go index a55e9d34..f8e8a69c 100644 --- a/mocks/Row.go +++ b/mocks/Row.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks @@ -134,17 +134,17 @@ func (_c *Row_GetColumns_Call) RunAndReturn(run func() []core.Col) *Row_GetColum return _c } -// GetHeight provides a mock function with given fields: -func (_m *Row) GetHeight() float64 { - ret := _m.Called() +// GetHeight provides a mock function with given fields: provider, cell +func (_m *Row) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + ret := _m.Called(provider, cell) if len(ret) == 0 { panic("no return value specified for GetHeight") } var r0 float64 - if rf, ok := ret.Get(0).(func() float64); ok { - r0 = rf() + if rf, ok := ret.Get(0).(func(core.Provider, *entity.Cell) float64); ok { + r0 = rf(provider, cell) } else { r0 = ret.Get(0).(float64) } @@ -158,13 +158,15 @@ type Row_GetHeight_Call struct { } // GetHeight is a helper method to define mock.On call -func (_e *Row_Expecter) GetHeight() *Row_GetHeight_Call { - return &Row_GetHeight_Call{Call: _e.mock.On("GetHeight")} +// - provider core.Provider +// - cell *entity.Cell +func (_e *Row_Expecter) GetHeight(provider interface{}, cell interface{}) *Row_GetHeight_Call { + return &Row_GetHeight_Call{Call: _e.mock.On("GetHeight", provider, cell)} } -func (_c *Row_GetHeight_Call) Run(run func()) *Row_GetHeight_Call { +func (_c *Row_GetHeight_Call) Run(run func(provider core.Provider, cell *entity.Cell)) *Row_GetHeight_Call { _c.Call.Run(func(args mock.Arguments) { - run() + run(args[0].(core.Provider), args[1].(*entity.Cell)) }) return _c } @@ -174,7 +176,7 @@ func (_c *Row_GetHeight_Call) Return(_a0 float64) *Row_GetHeight_Call { return _c } -func (_c *Row_GetHeight_Call) RunAndReturn(run func() float64) *Row_GetHeight_Call { +func (_c *Row_GetHeight_Call) RunAndReturn(run func(core.Provider, *entity.Cell) float64) *Row_GetHeight_Call { _c.Call.Return(run) return _c } diff --git a/mocks/Text.go b/mocks/Text.go index d793e16c..781e9117 100644 --- a/mocks/Text.go +++ b/mocks/Text.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.1. DO NOT EDIT. +// Code generated by mockery v2.42.0. DO NOT EDIT. package mocks @@ -57,17 +57,17 @@ func (_c *Text_Add_Call) RunAndReturn(run func(string, *entity.Cell, *props.Text return _c } -// GetLinesQuantity provides a mock function with given fields: text, fontFamily, colWidth -func (_m *Text) GetLinesQuantity(text string, fontFamily props.Text, colWidth float64) int { - ret := _m.Called(text, fontFamily, colWidth) +// GetLinesQuantity provides a mock function with given fields: text, textProp, colWidth +func (_m *Text) GetLinesQuantity(text string, textProp *props.Text, colWidth float64) int { + ret := _m.Called(text, textProp, colWidth) if len(ret) == 0 { panic("no return value specified for GetLinesQuantity") } var r0 int - if rf, ok := ret.Get(0).(func(string, props.Text, float64) int); ok { - r0 = rf(text, fontFamily, colWidth) + if rf, ok := ret.Get(0).(func(string, *props.Text, float64) int); ok { + r0 = rf(text, textProp, colWidth) } else { r0 = ret.Get(0).(int) } @@ -82,15 +82,15 @@ type Text_GetLinesQuantity_Call struct { // GetLinesQuantity is a helper method to define mock.On call // - text string -// - fontFamily props.Text +// - textProp *props.Text // - colWidth float64 -func (_e *Text_Expecter) GetLinesQuantity(text interface{}, fontFamily interface{}, colWidth interface{}) *Text_GetLinesQuantity_Call { - return &Text_GetLinesQuantity_Call{Call: _e.mock.On("GetLinesQuantity", text, fontFamily, colWidth)} +func (_e *Text_Expecter) GetLinesQuantity(text interface{}, textProp interface{}, colWidth interface{}) *Text_GetLinesQuantity_Call { + return &Text_GetLinesQuantity_Call{Call: _e.mock.On("GetLinesQuantity", text, textProp, colWidth)} } -func (_c *Text_GetLinesQuantity_Call) Run(run func(text string, fontFamily props.Text, colWidth float64)) *Text_GetLinesQuantity_Call { +func (_c *Text_GetLinesQuantity_Call) Run(run func(text string, textProp *props.Text, colWidth float64)) *Text_GetLinesQuantity_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(string), args[1].(props.Text), args[2].(float64)) + run(args[0].(string), args[1].(*props.Text), args[2].(float64)) }) return _c } @@ -100,7 +100,7 @@ func (_c *Text_GetLinesQuantity_Call) Return(_a0 int) *Text_GetLinesQuantity_Cal return _c } -func (_c *Text_GetLinesQuantity_Call) RunAndReturn(run func(string, props.Text, float64) int) *Text_GetLinesQuantity_Call { +func (_c *Text_GetLinesQuantity_Call) RunAndReturn(run func(string, *props.Text, float64) int) *Text_GetLinesQuantity_Call { _c.Call.Return(run) return _c } diff --git a/pkg/components/code/barcode.go b/pkg/components/code/barcode.go index 820fd64d..dfcfd850 100644 --- a/pkg/components/code/barcode.go +++ b/pkg/components/code/barcode.go @@ -54,6 +54,16 @@ func NewBarRow(height float64, code string, ps ...props.Barcode) core.Row { return row.New(height).Add(c) } +// NewAutoBarRow is responsible to create an instance of a Barcode wrapped in a Row with automatic height. +// using this method the col size will be automatically set to the maximum value +// - code: The value that must be placed in the barcode +// - ps: A set of settings that must be applied to the barcode +func NewAutoBarRow(code string, ps ...props.Barcode) core.Row { + bar := NewBar(code, ps...) + c := col.New().Add(bar) + return row.New().Add(c) +} + // Render renders a Barcode into a PDF context. The maroto cal this methodo in process to // generate the pdf. // - provider: Is the creator provider used to generate the pdf @@ -73,6 +83,13 @@ func (b *Barcode) GetStructure() *node.Node[core.Structure] { return node.New(str) } +// GetHeight returns the height that the barcode will have in the PDF +func (b *Barcode) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + proportion := b.prop.Proportion.Height / b.prop.Proportion.Width + width := (b.prop.Percent / 100) * cell.Width + return proportion * width +} + // SetConfig sets the configuration of a Barcode. func (b *Barcode) SetConfig(config *entity.Config) { b.config = config diff --git a/pkg/components/code/barcode_test.go b/pkg/components/code/barcode_test.go index 48f4ebbb..65a3deeb 100644 --- a/pkg/components/code/barcode_test.go +++ b/pkg/components/code/barcode_test.go @@ -7,7 +7,9 @@ import ( "github.com/johnfercher/maroto/v2/internal/fixture" "github.com/johnfercher/maroto/v2/mocks" "github.com/johnfercher/maroto/v2/pkg/components/code" + "github.com/johnfercher/maroto/v2/pkg/props" "github.com/johnfercher/maroto/v2/pkg/test" + "github.com/stretchr/testify/assert" ) func TestNewBar(t *testing.T) { @@ -61,6 +63,23 @@ func TestNewBarRow(t *testing.T) { }) } +func TestAutoNewBarRow(t *testing.T) { + t.Run("when prop is not sent, should use default", func(t *testing.T) { + // Act + sut := code.NewAutoBarRow("code") + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/codes/new_auto_bar_row_default_prop.json") + }) + t.Run("when prop is sent, should use the provided", func(t *testing.T) { + // Act + sut := code.NewAutoBarRow("code", fixture.BarcodeProp()) + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/codes/new_auto_bar_row_custom_prop.json") + }) +} + func TestBarcode_Render(t *testing.T) { t.Run("should call provider correctly", func(t *testing.T) { // Arrange @@ -89,3 +108,17 @@ func TestBarcode_SetConfig(t *testing.T) { sut.SetConfig(nil) }) } + +func TestBarcode_GetHeight(t *testing.T) { + t.Run("When the barcode height is '20%' of the width, it should return '20%' of the cell width", func(t *testing.T) { + cell := fixture.CellEntity() + + provider := mocks.NewProvider(t) + + sut := code.NewBar("code", props.Barcode{Proportion: props.Proportion{Width: 10.0, Height: 2.0}, Percent: 100.0}) + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, height, cell.Width*0.2) + }) +} diff --git a/pkg/components/code/matrixcode.go b/pkg/components/code/matrixcode.go index c5f93172..5fff005c 100644 --- a/pkg/components/code/matrixcode.go +++ b/pkg/components/code/matrixcode.go @@ -38,6 +38,15 @@ func NewMatrixCol(size int, code string, ps ...props.Rect) core.Col { return col.New(size).Add(matrixCode) } +// NewAutoMatrixRow is responsible to create an instance of a Matrix code wrapped in a Row with automatic height. +// - code: The value that must be placed in the matrixcode +// - ps: A set of settings that must be applied to the matrixcode +func NewAutoMatrixRow(code string, ps ...props.Rect) core.Row { + matrixCode := NewMatrix(code, ps...) + c := col.New().Add(matrixCode) + return row.New().Add(c) +} + // NewMatrixRow is responsible to create an instance of a MatrixCode wrapped in a Row. func NewMatrixRow(height float64, code string, ps ...props.Rect) core.Row { matrixCode := NewMatrix(code, ps...) @@ -61,6 +70,17 @@ func (m *MatrixCode) GetStructure() *node.Node[core.Structure] { return node.New(str) } +// GetHeight returns the height that the code will have in the PDF +func (m *MatrixCode) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + dimensions, err := provider.GetDimensionsByMatrixCode(m.code) + if err != nil { + return 0 + } + proportion := dimensions.Height / dimensions.Width + width := (m.prop.Percent / 100) * cell.Width + return proportion * width +} + // SetConfig sets the configuration of a MatrixCode. func (m *MatrixCode) SetConfig(config *entity.Config) { m.config = config diff --git a/pkg/components/code/matrixcode_test.go b/pkg/components/code/matrixcode_test.go index bca9287b..89d872da 100644 --- a/pkg/components/code/matrixcode_test.go +++ b/pkg/components/code/matrixcode_test.go @@ -2,12 +2,15 @@ package code_test import ( + "errors" "testing" "github.com/johnfercher/maroto/v2/internal/fixture" "github.com/johnfercher/maroto/v2/mocks" "github.com/johnfercher/maroto/v2/pkg/components/code" + "github.com/johnfercher/maroto/v2/pkg/core/entity" "github.com/johnfercher/maroto/v2/pkg/test" + "github.com/stretchr/testify/assert" ) func TestNewMatrix(t *testing.T) { @@ -61,6 +64,23 @@ func TestNewMatrixRow(t *testing.T) { }) } +func TestAutoNewMatrixRow(t *testing.T) { + t.Run("when prop is not sent, should use default", func(t *testing.T) { + // Act + sut := code.NewAutoMatrixRow("code") + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/codes/new_auto_matrix_row_default_prop.json") + }) + t.Run("when prop is sent, should use the provided", func(t *testing.T) { + // Act + sut := code.NewAutoMatrixRow("code", fixture.RectProp()) + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/codes/new_auto_matrix_row_custom_prop.json") + }) +} + func TestMatrixCode_Render(t *testing.T) { t.Run("should call provider correctly", func(t *testing.T) { // Arrange @@ -89,3 +109,31 @@ func TestMatrixCode_SetConfig(t *testing.T) { sut.SetConfig(nil) }) } + +func TestMatrixCode_GetHeight(t *testing.T) { + t.Run("When it is not possible to know the dimensions of the matrix code, should return height 0", func(t *testing.T) { + cell := fixture.CellEntity() + + provider := mocks.NewProvider(t) + provider.EXPECT().GetDimensionsByMatrixCode("code").Return(nil, errors.New("anyError2")) + + sut := code.NewMatrix("code") + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, height, 0.0) + }) + + t.Run("When the height of the matrix code is half the width, should return half the width of the cell", func(t *testing.T) { + cell := fixture.CellEntity() + + provider := mocks.NewProvider(t) + provider.EXPECT().GetDimensionsByMatrixCode("code").Return(&entity.Dimensions{Width: 10, Height: 5}, nil) + + sut := code.NewMatrix("code") + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, height, cell.Width/2) + }) +} diff --git a/pkg/components/code/qrcode.go b/pkg/components/code/qrcode.go index 69147221..205141d6 100644 --- a/pkg/components/code/qrcode.go +++ b/pkg/components/code/qrcode.go @@ -38,6 +38,15 @@ func NewQrCol(size int, code string, ps ...props.Rect) core.Col { return col.New(size).Add(qrCode) } +// NewAutoMatrixRow is responsible to create an instance of a qrcode wrapped in a Row with automatic height. +// - code: The value that must be placed in the qrcode +// - ps: A set of settings that must be applied to the qrcode +func NewAutoQrRow(code string, ps ...props.Rect) core.Row { + qrCode := NewQr(code, ps...) + c := col.New().Add(qrCode) + return row.New().Add(c) +} + // NewQrRow is responsible to create an instance of a QrCode wrapped in a Row. func NewQrRow(height float64, code string, ps ...props.Rect) core.Row { qrCode := NewQr(code, ps...) @@ -61,6 +70,17 @@ func (q *QrCode) GetStructure() *node.Node[core.Structure] { return node.New(str) } +// GetHeight returns the height that the QrCode will have in the PDF +func (q *QrCode) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + dimensions, err := provider.GetDimensionsByQrCode(q.code) + if err != nil { + return 0 + } + proportion := dimensions.Height / dimensions.Width + width := (q.prop.Percent / 100) * cell.Width + return proportion * width +} + // SetConfig set the config for the component. func (q *QrCode) SetConfig(config *entity.Config) { q.config = config diff --git a/pkg/components/code/qrcode_test.go b/pkg/components/code/qrcode_test.go index f6b0ee92..da304da7 100644 --- a/pkg/components/code/qrcode_test.go +++ b/pkg/components/code/qrcode_test.go @@ -2,12 +2,15 @@ package code_test import ( + "errors" "testing" "github.com/johnfercher/maroto/v2/internal/fixture" "github.com/johnfercher/maroto/v2/mocks" "github.com/johnfercher/maroto/v2/pkg/components/code" + "github.com/johnfercher/maroto/v2/pkg/core/entity" "github.com/johnfercher/maroto/v2/pkg/test" + "github.com/stretchr/testify/assert" ) func TestNewQr(t *testing.T) { @@ -61,6 +64,23 @@ func TestNewQrRow(t *testing.T) { }) } +func TestNewAutoQrRow(t *testing.T) { + t.Run("when prop is not sent, should use default", func(t *testing.T) { + // Act + sut := code.NewAutoQrRow("code") + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/codes/new_auto_qr_row_default_prop.json") + }) + t.Run("when prop is sent, should use the provided", func(t *testing.T) { + // Act + sut := code.NewAutoQrRow("code", fixture.RectProp()) + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/codes/new_auto_qr_row_custom_prop.json") + }) +} + func TestQrCode_Render(t *testing.T) { t.Run("should call provider correctly", func(t *testing.T) { // Arrange @@ -89,3 +109,31 @@ func TestQrCode_SetConfig(t *testing.T) { sut.SetConfig(nil) }) } + +func TestQrCode_GetHeight(t *testing.T) { + t.Run("When it is not possible to know the dimensions of the qrcode, should return height 0", func(t *testing.T) { + cell := fixture.CellEntity() + + provider := mocks.NewProvider(t) + provider.EXPECT().GetDimensionsByQrCode("code").Return(nil, errors.New("anyError2")) + + sut := code.NewQr("code") + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, height, 0.0) + }) + + t.Run("When the height of the qr code is half the width, should return half the width of the cell", func(t *testing.T) { + cell := fixture.CellEntity() + + provider := mocks.NewProvider(t) + provider.EXPECT().GetDimensionsByQrCode("code").Return(&entity.Dimensions{Width: 10, Height: 5}, nil) + + sut := code.NewQr("code") + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, height, cell.Width/2) + }) +} diff --git a/pkg/components/col/col.go b/pkg/components/col/col.go index 8b2614b4..e0587f16 100644 --- a/pkg/components/col/col.go +++ b/pkg/components/col/col.go @@ -90,3 +90,19 @@ func (c *Col) WithStyle(style *props.Cell) core.Col { c.style = style return c } + +// GetHeight returns the height of the column content +func (c *Col) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + innerCell := cell.Copy() + percent := float64(c.GetSize()) / float64(c.config.MaxGridSize) + innerCell.Width *= percent + + greaterHeight := 0.0 + for _, component := range c.components { + height := component.GetHeight(provider, &innerCell) + if greaterHeight < height { + greaterHeight = height + } + } + return greaterHeight +} diff --git a/pkg/components/col/col_test.go b/pkg/components/col/col_test.go index d1332688..acf4cc65 100644 --- a/pkg/components/col/col_test.go +++ b/pkg/components/col/col_test.go @@ -120,3 +120,31 @@ func TestCol_Render(t *testing.T) { component.AssertNumberOfCalls(t, "SetConfig", 1) }) } + +func TestCol_GetHeight(t *testing.T) { + t.Run("when column has two components, should return the largest", func(t *testing.T) { + // Arrange + cell := fixture.CellEntity() + cfg := &entity.Config{MaxGridSize: 12} + + provider := mocks.NewProvider(t) + + component := mocks.NewComponent(t) + component.EXPECT().GetHeight(provider, &cell).Return(10.0) + component.EXPECT().SetConfig(cfg) + + component2 := mocks.NewComponent(t) + component2.EXPECT().GetHeight(provider, &cell).Return(15.0) + component2.EXPECT().SetConfig(cfg) + + sut := col.New(12).Add(component, component2) + sut.SetConfig(cfg) + // Act + height := sut.GetHeight(provider, &cell) + + // Assert + + component.AssertNumberOfCalls(t, "GetHeight", 1) + assert.Equal(t, height, 15.0) + }) +} diff --git a/pkg/components/image/bytesimage.go b/pkg/components/image/bytesimage.go index 6a47eeff..518b2485 100644 --- a/pkg/components/image/bytesimage.go +++ b/pkg/components/image/bytesimage.go @@ -47,6 +47,13 @@ func NewFromBytesRow(height float64, bytes []byte, extension extension.Type, ps return row.New(height).Add(c) } +// NewAutoFromBytesRow is responsible to create an instance of an Image wrapped in a automatic row. +func NewAutoFromBytesRow(bytes []byte, extension extension.Type, ps ...props.Rect) core.Row { + image := NewFromBytes(bytes, extension, ps...) + c := col.New().Add(image) + return row.New().Add(c) +} + // Render renders an Image into a PDF context. func (b *BytesImage) Render(provider core.Provider, cell *entity.Cell) { provider.AddImageFromBytes(b.bytes, cell, &b.prop, b.extension) @@ -71,6 +78,17 @@ func (b *BytesImage) GetStructure() *node.Node[core.Structure] { return node.New(str) } +// GetHeight returns the height that the image will have in the PDF +func (b *BytesImage) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + dimensions, err := provider.GetDimensionsByImageByte(b.bytes, b.extension) + if err != nil { + return 0 + } + proportion := dimensions.Height / dimensions.Width + width := (b.prop.Percent / 100) * cell.Width + return proportion * width +} + // SetConfig sets the pdf config. func (b *BytesImage) SetConfig(config *entity.Config) { b.config = config diff --git a/pkg/components/image/bytesimage_test.go b/pkg/components/image/bytesimage_test.go index 938fa6f6..7c293024 100644 --- a/pkg/components/image/bytesimage_test.go +++ b/pkg/components/image/bytesimage_test.go @@ -1,13 +1,16 @@ package image_test import ( + "errors" "testing" "github.com/johnfercher/maroto/v2/internal/fixture" "github.com/johnfercher/maroto/v2/mocks" "github.com/johnfercher/maroto/v2/pkg/components/image" "github.com/johnfercher/maroto/v2/pkg/consts/extension" + "github.com/johnfercher/maroto/v2/pkg/core/entity" "github.com/johnfercher/maroto/v2/pkg/test" + "github.com/stretchr/testify/assert" ) func TestNewFromBytes(t *testing.T) { @@ -61,6 +64,23 @@ func TestNewFromBytesRow(t *testing.T) { }) } +func TestNewAutoFromBytesRow(t *testing.T) { + t.Run("when prop is not sent, should use default", func(t *testing.T) { + // Act + sut := image.NewAutoFromBytesRow([]byte{1, 2, 3}, extension.Jpg) + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/images/new_image_from_bytes_auto_row_default_prop.json") + }) + t.Run("when prop is sent, should use the provided", func(t *testing.T) { + // Act + sut := image.NewAutoFromBytesRow([]byte{1, 2, 3}, extension.Jpg, fixture.RectProp()) + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/images/new_image_from_bytes_auto_row_custom_prop.json") + }) +} + func TestBytesImage_Render(t *testing.T) { t.Run("should call provider correctly", func(t *testing.T) { // Arrange @@ -93,3 +113,33 @@ func TestBytesImage_SetConfig(t *testing.T) { sut.SetConfig(nil) }) } + +func TestBytesImage_GetHeight(t *testing.T) { + t.Run("When it is not possible to know the dimensions of the bytes image, should return height 0", func(t *testing.T) { + cell := fixture.CellEntity() + img := fixture.ImageEntity() + + provider := mocks.NewProvider(t) + provider.EXPECT().GetDimensionsByImageByte(img.Bytes, img.Extension).Return(nil, errors.New("anyError2")) + + sut := image.NewFromBytes(img.Bytes, img.Extension) + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, height, 0.0) + }) + + t.Run("When the height of the bytes image is half the width, should return half the width of the cell", func(t *testing.T) { + cell := fixture.CellEntity() + img := fixture.ImageEntity() + + provider := mocks.NewProvider(t) + provider.EXPECT().GetDimensionsByImageByte(img.Bytes, img.Extension).Return(&entity.Dimensions{Width: 10, Height: 5}, nil) + + sut := image.NewFromBytes(img.Bytes, img.Extension) + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, height, cell.Width/2) + }) +} diff --git a/pkg/components/image/fileimage.go b/pkg/components/image/fileimage.go index ed370621..66ed1112 100644 --- a/pkg/components/image/fileimage.go +++ b/pkg/components/image/fileimage.go @@ -44,6 +44,13 @@ func NewFromFileRow(height float64, path string, ps ...props.Rect) core.Row { return row.New(height).Add(c) } +// NewFromFileRow is responsible to create an instance of an Image wrapped in a automatic Row. +func NewAutoFromFileRow(path string, ps ...props.Rect) core.Row { + image := NewFromFile(path, ps...) + c := col.New().Add(image) + return row.New().Add(c) +} + // Render renders an Image into a PDF context. func (f *FileImage) Render(provider core.Provider, cell *entity.Cell) { provider.AddImageFromFile(f.path, cell, &f.prop) @@ -60,6 +67,17 @@ func (f *FileImage) GetStructure() *node.Node[core.Structure] { return node.New(str) } +// GetHeight returns the height that the image will have in the PDF +func (f *FileImage) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + dimensions, err := provider.GetDimensionsByImage(f.path) + if err != nil { + return 0.0 + } + proportion := dimensions.Height / dimensions.Width + width := (f.prop.Percent / 100) * cell.Width + return (proportion * width) + f.prop.Top +} + // SetConfig sets the pdf config. func (f *FileImage) SetConfig(config *entity.Config) { f.config = config diff --git a/pkg/components/image/fileimage_test.go b/pkg/components/image/fileimage_test.go index 29a12c34..4f834abe 100644 --- a/pkg/components/image/fileimage_test.go +++ b/pkg/components/image/fileimage_test.go @@ -1,11 +1,14 @@ package image_test import ( + "errors" "testing" "github.com/johnfercher/maroto/v2/internal/fixture" "github.com/johnfercher/maroto/v2/mocks" + "github.com/johnfercher/maroto/v2/pkg/core/entity" "github.com/johnfercher/maroto/v2/pkg/test" + "github.com/stretchr/testify/assert" "github.com/johnfercher/maroto/v2/pkg/components/image" ) @@ -61,6 +64,23 @@ func TestNewFromFileRow(t *testing.T) { }) } +func TestNewAutoFromFileRow(t *testing.T) { + t.Run("when prop is not sent, should use default", func(t *testing.T) { + // Act + sut := image.NewAutoFromFileRow("path") + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/images/new_image_from_file_auto_row_default_prop.json") + }) + t.Run("when prop is sent, should use the provided", func(t *testing.T) { + // Act + sut := image.NewAutoFromFileRow("path", fixture.RectProp()) + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/images/new_image_from_file_auto_row_custom_prop.json") + }) +} + func TestFileImage_Render(t *testing.T) { t.Run("should call provider correctly", func(t *testing.T) { // Arrange @@ -91,3 +111,31 @@ func TestFileImageSetConfig(t *testing.T) { sut.SetConfig(nil) }) } + +func TestFileImage_GetHeight(t *testing.T) { + t.Run("When it is not possible to know the dimensions of the file image, should return height 0", func(t *testing.T) { + cell := fixture.CellEntity() + + provider := mocks.NewProvider(t) + provider.EXPECT().GetDimensionsByImage("path").Return(nil, errors.New("anyError2")) + + sut := image.NewFromFile("path") + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, height, 0.0) + }) + + t.Run("When the height of the file image is half the width, should return half the width of the cell", func(t *testing.T) { + cell := fixture.CellEntity() + + provider := mocks.NewProvider(t) + provider.EXPECT().GetDimensionsByImage("path").Return(&entity.Dimensions{Width: 10, Height: 5}, nil) + + sut := image.NewFromFile("path") + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, height, cell.Width/2) + }) +} diff --git a/pkg/components/line/line.go b/pkg/components/line/line.go index bcdb5a18..3a7f5eff 100644 --- a/pkg/components/line/line.go +++ b/pkg/components/line/line.go @@ -42,6 +42,13 @@ func NewRow(height float64, ps ...props.Line) core.Row { return row.New(height).Add(c) } +// NewRow is responsible to create an instance of a Line wrapped in a automatic Row. +func NewAutoRow(ps ...props.Line) core.Row { + r := New(ps...) + c := col.New().Add(r) + return row.New().Add(c) +} + // GetStructure returns the Structure of a Line. func (l *Line) GetStructure() *node.Node[core.Structure] { str := core.Structure{ @@ -57,6 +64,11 @@ func (l *Line) SetConfig(config *entity.Config) { l.config = config } +// GetHeight returns the height that the line will have in the PDF +func (l *Line) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + return l.prop.Thickness +} + // Render renders a Line into a PDF context. func (l *Line) Render(provider core.Provider, cell *entity.Cell) { provider.AddLine(cell, &l.prop) diff --git a/pkg/components/line/line_test.go b/pkg/components/line/line_test.go index f08a0e61..42b5db41 100644 --- a/pkg/components/line/line_test.go +++ b/pkg/components/line/line_test.go @@ -61,6 +61,23 @@ func TestNewRow(t *testing.T) { }) } +func TestNewAutoRow(t *testing.T) { + t.Run("when prop is not sent, should use default", func(t *testing.T) { + // Act + sut := line.NewAutoRow() + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/lines/new_line_auto_row_default_prop.json") + }) + t.Run("when prop is sent, should use the provided", func(t *testing.T) { + // Act + sut := line.NewAutoRow(fixture.LineProp()) + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/lines/new_line_auto_row_custom_prop.json") + }) +} + func TestLine_Render(t *testing.T) { t.Run("should call provider correctly", func(t *testing.T) { // Arrange diff --git a/pkg/components/page/page.go b/pkg/components/page/page.go index 83110b63..15c3e188 100644 --- a/pkg/components/page/page.go +++ b/pkg/components/page/page.go @@ -42,7 +42,7 @@ func (p *Page) Render(provider core.Provider, cell entity.Cell) { for _, row := range p.rows { row.Render(provider, innerCell) - innerCell.Y += row.GetHeight() + innerCell.Y += row.GetHeight(provider, &innerCell) } if p.prop.Pattern != "" { diff --git a/pkg/components/page/page_test.go b/pkg/components/page/page_test.go index 93adfb7f..dd698754 100644 --- a/pkg/components/page/page_test.go +++ b/pkg/components/page/page_test.go @@ -53,7 +53,7 @@ func TestPage_Render(t *testing.T) { provider := mocks.NewProvider(t) row := mocks.NewRow(t) row.EXPECT().Render(provider, cell) - row.EXPECT().GetHeight().Return(10.0) + row.EXPECT().GetHeight(provider, &cell).Return(10.0) row.EXPECT().SetConfig(cfg) sut := page.New(prop) @@ -67,6 +67,7 @@ func TestPage_Render(t *testing.T) { row.AssertNumberOfCalls(t, "Render", 1) row.AssertNumberOfCalls(t, "GetHeight", 1) }) + t.Run("when there is background image and there is no page pattern, should call row render and provider correctly", func(t *testing.T) { // Arrange cell := fixture.CellEntity() @@ -86,7 +87,7 @@ func TestPage_Render(t *testing.T) { provider.EXPECT().AddBackgroundImageFromBytes(cfg.BackgroundImage.Bytes, &cell, rectProp, cfg.BackgroundImage.Extension) row := mocks.NewRow(t) row.EXPECT().Render(provider, cell) - row.EXPECT().GetHeight().Return(10.0) + row.EXPECT().GetHeight(provider, &cell).Return(10.0) row.EXPECT().SetConfig(cfg) sut := page.New(prop) @@ -120,7 +121,7 @@ func TestPage_Render(t *testing.T) { provider.EXPECT().AddText("0 / 0", &cell, prop.GetNumberTextProp(cell.Height)) row := mocks.NewRow(t) row.EXPECT().Render(provider, cell) - row.EXPECT().GetHeight().Return(10.0) + row.EXPECT().GetHeight(provider, &cell).Return(10.0) row.EXPECT().SetConfig(cfg) sut := page.New(prop) diff --git a/pkg/components/row/row.go b/pkg/components/row/row.go index b3d81e82..fe2823f1 100644 --- a/pkg/components/row/row.go +++ b/pkg/components/row/row.go @@ -11,17 +11,26 @@ import ( ) type Row struct { - height float64 - cols []core.Col - style *props.Cell - config *entity.Config + height float64 + autoHeight bool + cols []core.Col + style *props.Cell + config *entity.Config } // New is responsible to create a core.Row. -// height is defined in mm. -func New(height float64) core.Row { +// +// Height is an optional parameter that, if not sent, will be calculated automatically +// Height is defined in mm. +func New(height ...float64) core.Row { + autoHeight := false + if len(height) == 0 { + height = append(height, 0) + autoHeight = true + } return &Row{ - height: height, + height: height[0], + autoHeight: autoHeight, } } @@ -36,6 +45,9 @@ func (r *Row) SetConfig(config *entity.Config) { // Add is responsible to add one or more core.Col to a core.Row. func (r *Row) Add(cols ...core.Col) core.Row { r.cols = append(r.cols, cols...) + if r.autoHeight { + r.resetHeight() + } return r } @@ -44,8 +56,23 @@ func (r *Row) GetColumns() []core.Col { return r.cols } +// Returns the height of the row content +func (r *Row) getBiggestCol(provider core.Provider, cell *entity.Cell) float64 { + greaterHeight := 0.0 + for _, col := range r.cols { + height := col.GetHeight(provider, cell) + if greaterHeight < height { + greaterHeight = height + } + } + return greaterHeight +} + // GetHeight returns the height of a core.Row. -func (r *Row) GetHeight() float64 { +func (r *Row) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + if r.height == 0 { + r.height = r.getBiggestCol(provider, cell) + } return r.height } @@ -71,7 +98,7 @@ func (r *Row) GetStructure() *node.Node[core.Structure] { // Render renders a Row into a PDF context. func (r *Row) Render(provider core.Provider, cell entity.Cell) { - cell.Height = r.height + cell.Height = r.GetHeight(provider, &cell) innerCell := cell.Copy() if r.style != nil { @@ -99,3 +126,8 @@ func (r *Row) WithStyle(style *props.Cell) core.Row { r.style = style return r } + +// resetHeight resets the line height to 0 +func (r *Row) resetHeight() { + r.height = 0 +} diff --git a/pkg/components/row/row_test.go b/pkg/components/row/row_test.go index 77dcb530..fcd28033 100644 --- a/pkg/components/row/row_test.go +++ b/pkg/components/row/row_test.go @@ -39,12 +39,19 @@ func TestNew(t *testing.T) { } func TestRow_GetHeight(t *testing.T) { - t.Run("should return height correctly", func(t *testing.T) { + t.Run("When a row has a column with height 5, should return 5", func(t *testing.T) { + cell := fixture.CellEntity() + + provider := mocks.NewProvider(t) + + columns := mocks.NewCol(t) + columns.EXPECT().GetHeight(provider, &cell).Return(5) + // Act - r := row.New(10) + r := row.New().Add(columns) // Assert - assert.Equal(t, 10.0, r.GetHeight()) + assert.Equal(t, 5.0, r.GetHeight(provider, &cell)) }) } diff --git a/pkg/components/signature/signature.go b/pkg/components/signature/signature.go index c989b989..98d8fe15 100644 --- a/pkg/components/signature/signature.go +++ b/pkg/components/signature/signature.go @@ -46,11 +46,16 @@ func NewRow(height float64, value string, ps ...props.Signature) core.Row { return row.New(height).Add(c) } +// NewRow is responsible to create an instance of a Signature wrapped in a automatic Row. +func NewAutoRow(value string, ps ...props.Signature) core.Row { + signature := New(value, ps...) + c := col.New().Add(signature) + return row.New().Add(c) +} + // Render renders a Signature into a PDF context. func (s *Signature) Render(provider core.Provider, cell *entity.Cell) { - fontProp := s.prop.ToFontProp() - safePadding := 1.5 - fontSize := provider.GetTextHeight(fontProp) * safePadding + fontSize := provider.GetTextHeight(s.prop.ToFontProp()) * s.prop.SafePadding textProp := s.prop.ToTextProp(align.Center, cell.Height-fontSize, 0) @@ -71,6 +76,11 @@ func (s *Signature) GetStructure() *node.Node[core.Structure] { return node.New(str) } +// GetHeight returns the height that the signature will have in the PDF +func (s *Signature) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + return s.prop.LineThickness + provider.GetTextHeight(s.prop.ToFontProp())*s.prop.SafePadding +} + // SetConfig sets the config. func (s *Signature) SetConfig(config *entity.Config) { s.config = config diff --git a/pkg/components/signature/signature_test.go b/pkg/components/signature/signature_test.go index d12f9b6b..ec6e1447 100644 --- a/pkg/components/signature/signature_test.go +++ b/pkg/components/signature/signature_test.go @@ -6,7 +6,9 @@ import ( "github.com/johnfercher/maroto/v2/internal/fixture" "github.com/johnfercher/maroto/v2/mocks" "github.com/johnfercher/maroto/v2/pkg/components/signature" + "github.com/johnfercher/maroto/v2/pkg/props" "github.com/johnfercher/maroto/v2/pkg/test" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" ) @@ -61,6 +63,23 @@ func TestNewRow(t *testing.T) { }) } +func TestNewAutoRow(t *testing.T) { + t.Run("when prop is not sent, should use default", func(t *testing.T) { + // Act + sut := signature.NewAutoRow("signature") + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/signatures/new_signature_auto_row_default_prop.json") + }) + t.Run("when prop is sent, should use the provided", func(t *testing.T) { + // Act + sut := signature.NewAutoRow("signature", fixture.SignatureProp()) + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/signatures/new_signature_auto_row_custom_prop.json") + }) +} + func TestSignature_Render(t *testing.T) { t.Run("should call provider correctly", func(t *testing.T) { // Arrange @@ -94,3 +113,26 @@ func TestSignature_SetConfig(t *testing.T) { sut.SetConfig(nil) }) } + +func TestSignature_GetHeight(t *testing.T) { + t.Run("When signature has a height of 10, should return 10", func(t *testing.T) { + cell := fixture.CellEntity() + font := fixture.FontProp() + + sut := signature.New("signature", + props.Signature{ + SafePadding: 1, + FontFamily: font.Family, + FontStyle: font.Style, + FontSize: font.Size, FontColor: font.Color, + LineThickness: 2, + }) + + provider := mocks.NewProvider(t) + provider.EXPECT().GetTextHeight(&font).Return(5.0) + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, 7.0, height) + }) +} diff --git a/pkg/components/text/text.go b/pkg/components/text/text.go index 9f2956e9..a8d2393e 100644 --- a/pkg/components/text/text.go +++ b/pkg/components/text/text.go @@ -36,6 +36,13 @@ func NewCol(size int, value string, ps ...props.Text) core.Col { return col.New(size).Add(text) } +// NewAutoRow is responsible for creating an instance of Text grouped in a Line with automatic height. +func NewAutoRow(value string, ps ...props.Text) core.Row { + r := New(value, ps...) + c := col.New().Add(r) + return row.New().Add(c) +} + // NewRow is responsible to create an instance of a Text wrapped in a Row. func NewRow(height float64, value string, ps ...props.Text) core.Row { r := New(value, ps...) @@ -54,6 +61,13 @@ func (t *Text) GetStructure() *node.Node[core.Structure] { return node.New(str) } +// GetHeight returns the height that the text will have in the PDF +func (t *Text) GetHeight(provider core.Provider, cell *entity.Cell) float64 { + lines := provider.GetLinesQuantity(t.value, &t.prop, cell.Width-t.prop.Left-t.prop.Right) + height := provider.GetTextHeight(&props.Font{Family: t.prop.Family, Style: t.prop.Style, Size: t.prop.Size, Color: t.prop.Color}) + return (float64(lines) * height) + t.prop.Top +} + // SetConfig sets the config. func (t *Text) SetConfig(config *entity.Config) { t.config = config diff --git a/pkg/components/text/text_test.go b/pkg/components/text/text_test.go index d751a812..40b1a05e 100644 --- a/pkg/components/text/text_test.go +++ b/pkg/components/text/text_test.go @@ -7,7 +7,9 @@ import ( "github.com/johnfercher/maroto/v2/mocks" "github.com/johnfercher/maroto/v2/pkg/components/text" "github.com/johnfercher/maroto/v2/pkg/core/entity" + "github.com/johnfercher/maroto/v2/pkg/props" "github.com/johnfercher/maroto/v2/pkg/test" + "github.com/stretchr/testify/assert" ) func TestNew(t *testing.T) { @@ -61,6 +63,23 @@ func TestNewRow(t *testing.T) { }) } +func TestNewAutoRow(t *testing.T) { + t.Run("when prop is not sent, should use default", func(t *testing.T) { + // Act + sut := text.NewAutoRow("code") + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/texts/new_text_auto_row_default_prop.json") + }) + t.Run("when prop is sent, should use the provided", func(t *testing.T) { + // Act + sut := text.NewAutoRow("code", fixture.TextProp()) + + // Assert + test.New(t).Assert(sut.GetStructure()).Equals("components/texts/new_text_auto_row_custom_prop.json") + }) +} + func TestText_Render(t *testing.T) { t.Run("should call provider correctly", func(t *testing.T) { // Arrange @@ -94,3 +113,21 @@ func TestText_SetConfig(t *testing.T) { sut.SetConfig(cfg) }) } + +func TestText_GetHeight(t *testing.T) { + t.Run("When text has a height of 22, should return 22", func(t *testing.T) { + cell := fixture.CellEntity() + textProp := fixture.TextProp() + font := props.Font{Family: textProp.Family, Style: textProp.Style, Size: textProp.Size, Color: textProp.Color} + + sut := text.New("text", textProp) + + provider := mocks.NewProvider(t) + provider.EXPECT().GetLinesQuantity("text", &textProp, 97.0).Return(5.0) + provider.EXPECT().GetTextHeight(&font).Return(2.0) + + // Act + height := sut.GetHeight(provider, &cell) + assert.Equal(t, 22.0, height) + }) +} diff --git a/pkg/core/components.go b/pkg/core/components.go index 82e5c253..f24cd6f1 100644 --- a/pkg/core/components.go +++ b/pkg/core/components.go @@ -1,16 +1,18 @@ package core import ( + "github.com/google/uuid" "github.com/johnfercher/maroto/v2/pkg/consts/extension" "github.com/johnfercher/maroto/v2/pkg/consts/fontstyle" "github.com/johnfercher/maroto/v2/pkg/core/entity" "github.com/johnfercher/maroto/v2/pkg/props" + "github.com/jung-kurt/gofpdf" ) // Math is the abstraction which deals with useful calc. type Math interface { - GetInnerCenterCell(inner *entity.Dimensions, outer *entity.Dimensions, percent float64) *entity.Cell - GetInnerNonCenterCell(inner *entity.Dimensions, outer *entity.Dimensions, prop *props.Rect) *entity.Cell + GetInnerCenterCell(inner *entity.Dimensions, outer *entity.Dimensions) *entity.Cell + Resize(inner *entity.Dimensions, outer *entity.Dimensions, percent float64, justReferenceWidth bool) *entity.Dimensions } // Code is the abstraction which deals of how to add QrCodes or Barcode in a PDF. @@ -23,6 +25,7 @@ type Code interface { // Image is the abstraction which deals of how to add images in a PDF. type Image interface { Add(img *entity.Image, cell *entity.Cell, margins *entity.Margins, prop *props.Rect, extension extension.Type, flow bool) error + GetImageInfo(img *entity.Image, extension extension.Type) (*gofpdf.ImageInfoType, uuid.UUID) } type Line interface { @@ -32,7 +35,7 @@ type Line interface { // Text is the abstraction which deals of how to add text inside PDF. type Text interface { Add(text string, cell *entity.Cell, textProp *props.Text) - GetLinesQuantity(text string, fontFamily props.Text, colWidth float64) int + GetLinesQuantity(text string, textProp *props.Text, colWidth float64) int } // Font is the abstraction which deals of how to set fontstyle configurations. diff --git a/pkg/core/core.go b/pkg/core/core.go index 709dcf0f..274e9b32 100644 --- a/pkg/core/core.go +++ b/pkg/core/core.go @@ -15,6 +15,7 @@ type Maroto interface { RegisterFooter(rows ...Row) error AddRows(rows ...Row) AddRow(rowHeight float64, cols ...Col) Row + AddAutoRow(cols ...Col) Row FitlnCurrentPage(heightNewLine float64) bool GetCurrentConfig() *entity.Config AddPages(pages ...Page) @@ -41,6 +42,7 @@ type Node interface { type Component interface { Node Render(provider Provider, cell *entity.Cell) + GetHeight(provider Provider, cell *entity.Cell) float64 } // Col is the interface that wraps the basic methods of a col. @@ -48,6 +50,7 @@ type Col interface { Node Add(components ...Component) Col GetSize() int + GetHeight(provider Provider, cell *entity.Cell) float64 WithStyle(style *props.Cell) Col Render(provider Provider, cell entity.Cell, createCell bool) } @@ -56,7 +59,7 @@ type Col interface { type Row interface { Node Add(cols ...Col) Row - GetHeight() float64 + GetHeight(provider Provider, cell *entity.Cell) float64 GetColumns() []Col WithStyle(style *props.Cell) Row Render(provider Provider, cell entity.Cell) diff --git a/pkg/core/provider.go b/pkg/core/provider.go index f8a6d9c9..8354f6d6 100644 --- a/pkg/core/provider.go +++ b/pkg/core/provider.go @@ -16,9 +16,14 @@ type Provider interface { AddLine(cell *entity.Cell, prop *props.Line) AddText(text string, cell *entity.Cell, prop *props.Text) GetTextHeight(prop *props.Font) float64 + GetLinesQuantity(text string, textProp *props.Text, colWidth float64) int AddMatrixCode(code string, cell *entity.Cell, prop *props.Rect) AddQrCode(code string, cell *entity.Cell, rect *props.Rect) AddBarCode(code string, cell *entity.Cell, prop *props.Barcode) + GetDimensionsByMatrixCode(code string) (*entity.Dimensions, error) + GetDimensionsByImageByte(bytes []byte, extension extension.Type) (*entity.Dimensions, error) + GetDimensionsByImage(file string) (*entity.Dimensions, error) + GetDimensionsByQrCode(code string) (*entity.Dimensions, error) AddImageFromFile(value string, cell *entity.Cell, prop *props.Rect) AddImageFromBytes(bytes []byte, cell *entity.Cell, prop *props.Rect, extension extension.Type) AddBackgroundImageFromBytes(bytes []byte, cell *entity.Cell, prop *props.Rect, extension extension.Type) diff --git a/pkg/props/rect.go b/pkg/props/rect.go index eff04017..8dbe8330 100644 --- a/pkg/props/rect.go +++ b/pkg/props/rect.go @@ -10,6 +10,9 @@ type Rect struct { // ex 100%: The rectangle will fulfill the entire cell // ex 50%: The greater side from the rectangle will have half the size of the cell. Percent float64 + // indicate whether only the width should be used as a reference to calculate the component size, disregarding the height + // ex true: The component will be scaled only based on the available width, disregarding the available height + JustReferenceWidth bool // Center define that the barcode will be vertically and horizontally centralized. Center bool } @@ -34,6 +37,9 @@ func (r *Rect) ToMap() map[string]interface{} { m["prop_center"] = r.Center } + if r.JustReferenceWidth { + m["prop_just_reference_Width"] = r.JustReferenceWidth + } return m } diff --git a/pkg/props/signature.go b/pkg/props/signature.go index 6e0bb0f6..9475321e 100644 --- a/pkg/props/signature.go +++ b/pkg/props/signature.go @@ -22,6 +22,8 @@ type Signature struct { LineStyle linestyle.Type // LineThickness define the line thickness. LineThickness float64 + + SafePadding float64 } // ToMap returns a map with the Signature fields. @@ -84,6 +86,9 @@ func (s *Signature) MakeValid(defaultFontFamily string) { if s.LineThickness == 0 { s.LineThickness = linestyle.DefaultLineThickness } + if s.SafePadding <= 0 { + s.SafePadding = 1.5 + } } // ToLineProp from Signature return a Line based on Signature. diff --git a/test/maroto/components/codes/new_auto_bar_row_custom_prop.json b/test/maroto/components/codes/new_auto_bar_row_custom_prop.json new file mode 100755 index 00000000..4f1f0656 --- /dev/null +++ b/test/maroto/components/codes/new_auto_bar_row_custom_prop.json @@ -0,0 +1,26 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "code", + "type": "barcode", + "details": { + "prop_left": 10, + "prop_percent": 98, + "prop_proportion_height": 3.2, + "prop_proportion_width": 16, + "prop_top": 10 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/codes/new_auto_bar_row_default_prop.json b/test/maroto/components/codes/new_auto_bar_row_default_prop.json new file mode 100755 index 00000000..b3a4f753 --- /dev/null +++ b/test/maroto/components/codes/new_auto_bar_row_default_prop.json @@ -0,0 +1,24 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "code", + "type": "barcode", + "details": { + "prop_percent": 100, + "prop_proportion_height": 0.2, + "prop_proportion_width": 1 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/codes/new_auto_matrix_row_custom_prop.json b/test/maroto/components/codes/new_auto_matrix_row_custom_prop.json new file mode 100755 index 00000000..8f91699a --- /dev/null +++ b/test/maroto/components/codes/new_auto_matrix_row_custom_prop.json @@ -0,0 +1,24 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "code", + "type": "matrixcode", + "details": { + "prop_left": 10, + "prop_percent": 98, + "prop_top": 10 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/codes/new_auto_matrix_row_default_prop.json b/test/maroto/components/codes/new_auto_matrix_row_default_prop.json new file mode 100755 index 00000000..9d15e7db --- /dev/null +++ b/test/maroto/components/codes/new_auto_matrix_row_default_prop.json @@ -0,0 +1,22 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "code", + "type": "matrixcode", + "details": { + "prop_percent": 100 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/codes/new_auto_qr_row_custom_prop.json b/test/maroto/components/codes/new_auto_qr_row_custom_prop.json new file mode 100755 index 00000000..d07a61f2 --- /dev/null +++ b/test/maroto/components/codes/new_auto_qr_row_custom_prop.json @@ -0,0 +1,24 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "code", + "type": "qrcode", + "details": { + "prop_left": 10, + "prop_percent": 98, + "prop_top": 10 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/codes/new_auto_qr_row_default_prop.json b/test/maroto/components/codes/new_auto_qr_row_default_prop.json new file mode 100755 index 00000000..8f21c675 --- /dev/null +++ b/test/maroto/components/codes/new_auto_qr_row_default_prop.json @@ -0,0 +1,22 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "code", + "type": "qrcode", + "details": { + "prop_percent": 100 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/images/new_image_from_bytes_auto_row_custom_prop.json b/test/maroto/components/images/new_image_from_bytes_auto_row_custom_prop.json new file mode 100755 index 00000000..2a27cdba --- /dev/null +++ b/test/maroto/components/images/new_image_from_bytes_auto_row_custom_prop.json @@ -0,0 +1,26 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "AQID", + "type": "bytesImage", + "details": { + "bytes_size": 3, + "extension": "jpg", + "prop_left": 10, + "prop_percent": 98, + "prop_top": 10 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/images/new_image_from_bytes_auto_row_default_prop.json b/test/maroto/components/images/new_image_from_bytes_auto_row_default_prop.json new file mode 100755 index 00000000..35fe2601 --- /dev/null +++ b/test/maroto/components/images/new_image_from_bytes_auto_row_default_prop.json @@ -0,0 +1,24 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "AQID", + "type": "bytesImage", + "details": { + "bytes_size": 3, + "extension": "jpg", + "prop_percent": 100 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/images/new_image_from_file_auto_row_custom_prop.json b/test/maroto/components/images/new_image_from_file_auto_row_custom_prop.json new file mode 100755 index 00000000..aac7dcd3 --- /dev/null +++ b/test/maroto/components/images/new_image_from_file_auto_row_custom_prop.json @@ -0,0 +1,24 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "path", + "type": "fileImage", + "details": { + "prop_left": 10, + "prop_percent": 98, + "prop_top": 10 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/images/new_image_from_file_auto_row_default_prop.json b/test/maroto/components/images/new_image_from_file_auto_row_default_prop.json new file mode 100755 index 00000000..5da92827 --- /dev/null +++ b/test/maroto/components/images/new_image_from_file_auto_row_default_prop.json @@ -0,0 +1,22 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "path", + "type": "fileImage", + "details": { + "prop_percent": 100 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/lines/new_line_auto_row_custom_prop.json b/test/maroto/components/lines/new_line_auto_row_custom_prop.json new file mode 100755 index 00000000..03a7531b --- /dev/null +++ b/test/maroto/components/lines/new_line_auto_row_custom_prop.json @@ -0,0 +1,26 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "type": "line", + "details": { + "prop_color": "RGB(100, 50, 200)", + "prop_offset_percent": 50, + "prop_orientation": "vertical", + "prop_size_percent": 20, + "prop_style": "dashed", + "prop_thickness": 1.1 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/lines/new_line_auto_row_default_prop.json b/test/maroto/components/lines/new_line_auto_row_default_prop.json new file mode 100755 index 00000000..bc53a132 --- /dev/null +++ b/test/maroto/components/lines/new_line_auto_row_default_prop.json @@ -0,0 +1,25 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "type": "line", + "details": { + "prop_offset_percent": 5, + "prop_orientation": "horizontal", + "prop_size_percent": 90, + "prop_style": "solid", + "prop_thickness": 0.2 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/signatures/new_signature_auto_row_custom_prop.json b/test/maroto/components/signatures/new_signature_auto_row_custom_prop.json new file mode 100755 index 00000000..90bd1f79 --- /dev/null +++ b/test/maroto/components/signatures/new_signature_auto_row_custom_prop.json @@ -0,0 +1,28 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "signature", + "type": "signature", + "details": { + "prop_font_color": "RGB(100, 50, 200)", + "prop_font_family": "helvetica", + "prop_font_size": 14, + "prop_font_style": "B", + "prop_line_color": "RGB(100, 50, 200)", + "prop_line_style": "dashed", + "prop_line_thickness": 1.1 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/signatures/new_signature_auto_row_default_prop.json b/test/maroto/components/signatures/new_signature_auto_row_default_prop.json new file mode 100755 index 00000000..d4f68422 --- /dev/null +++ b/test/maroto/components/signatures/new_signature_auto_row_default_prop.json @@ -0,0 +1,26 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "signature", + "type": "signature", + "details": { + "prop_font_family": "arial", + "prop_font_size": 8, + "prop_font_style": "B", + "prop_line_style": "solid", + "prop_line_thickness": 0.2 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/texts/new_text_auto_row_custom_prop.json b/test/maroto/components/texts/new_text_auto_row_custom_prop.json new file mode 100755 index 00000000..78382f06 --- /dev/null +++ b/test/maroto/components/texts/new_text_auto_row_custom_prop.json @@ -0,0 +1,31 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "code", + "type": "text", + "details": { + "prop_align": "R", + "prop_breakline_strategy": "dash_strategy", + "prop_color": "RGB(100, 50, 200)", + "prop_font_family": "helvetica", + "prop_font_size": 14, + "prop_font_style": "B", + "prop_hyperlink": "https://www.google.com", + "prop_left": 3, + "prop_top": 12, + "prop_vertical_padding": 20 + } + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/components/texts/new_text_auto_row_default_prop.json b/test/maroto/components/texts/new_text_auto_row_default_prop.json new file mode 100755 index 00000000..173a2c04 --- /dev/null +++ b/test/maroto/components/texts/new_text_auto_row_default_prop.json @@ -0,0 +1,19 @@ +{ + "value": 0, + "type": "row", + "nodes": [ + { + "value": 0, + "type": "col", + "details": { + "is_max": true + }, + "nodes": [ + { + "value": "code", + "type": "text" + } + ] + } + ] +} \ No newline at end of file diff --git a/test/maroto/example_unit_test.json b/test/maroto/example_unit_test.json index 6d04f2e7..16a126da 100755 --- a/test/maroto/example_unit_test.json +++ b/test/maroto/example_unit_test.json @@ -121,7 +121,14 @@ "nodes": [ { "value": "text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/addpage.json b/test/maroto/examples/addpage.json index 2f32f622..6d2ecf7e 100755 --- a/test/maroto/examples/addpage.json +++ b/test/maroto/examples/addpage.json @@ -38,7 +38,14 @@ "nodes": [ { "value": "page1 row1", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -57,7 +64,14 @@ "nodes": [ { "value": "page1 row2", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -76,7 +90,14 @@ "nodes": [ { "value": "page1 row3", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -95,7 +116,14 @@ "nodes": [ { "value": "page1 row4", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -114,7 +142,14 @@ "nodes": [ { "value": "page1 row5", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -133,7 +168,14 @@ "nodes": [ { "value": "page1 row6", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -152,7 +194,14 @@ "nodes": [ { "value": "page1 row7", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -171,7 +220,14 @@ "nodes": [ { "value": "page1 row8", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -205,7 +261,14 @@ "nodes": [ { "value": "page1 row9", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -239,7 +302,14 @@ "nodes": [ { "value": "page2 row1", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -273,7 +343,14 @@ "nodes": [ { "value": "page3 row1", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/background.json b/test/maroto/examples/background.json index 8f65a87a..499a80e5 100755 --- a/test/maroto/examples/background.json +++ b/test/maroto/examples/background.json @@ -47,6 +47,10 @@ "value": "O GDG-Petrópolis certifica que Fulano de Tal 123 participou do Evento Exemplo 123 no dia 2019-03-30.", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 18 } } @@ -135,6 +139,10 @@ "value": "O GDG-Petrópolis certifica que Fulano de Tal 123 participou do Evento Exemplo 123 no dia 2019-03-30.", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 18 } } @@ -223,6 +231,10 @@ "value": "O GDG-Petrópolis certifica que Fulano de Tal 123 participou do Evento Exemplo 123 no dia 2019-03-30.", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 18 } } @@ -311,6 +323,10 @@ "value": "O GDG-Petrópolis certifica que Fulano de Tal 123 participou do Evento Exemplo 123 no dia 2019-03-30.", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 18 } } @@ -399,6 +415,10 @@ "value": "O GDG-Petrópolis certifica que Fulano de Tal 123 participou do Evento Exemplo 123 no dia 2019-03-30.", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 18 } } diff --git a/test/maroto/examples/barcodegrid.json b/test/maroto/examples/barcodegrid.json index 644d3ee9..3fd71cdc 100755 --- a/test/maroto/examples/barcodegrid.json +++ b/test/maroto/examples/barcodegrid.json @@ -285,7 +285,61 @@ ] }, { - "value": 66.9975, + "value": 19, + "type": "row", + "nodes": [ + { + "value": 2, + "type": "col", + "nodes": [ + { + "value": "123456789123", + "type": "barcode", + "details": { + "prop_center": true, + "prop_percent": 100, + "prop_proportion_height": 0.2, + "prop_proportion_width": 1 + } + } + ] + }, + { + "value": 4, + "type": "col", + "nodes": [ + { + "value": "123456789123", + "type": "barcode", + "details": { + "prop_center": true, + "prop_percent": 100, + "prop_proportion_height": 0.2, + "prop_proportion_width": 1 + } + } + ] + }, + { + "value": 6, + "type": "col", + "nodes": [ + { + "value": "123456789123", + "type": "barcode", + "details": { + "prop_center": true, + "prop_percent": 100, + "prop_proportion_height": 0.2, + "prop_proportion_width": 1 + } + } + ] + } + ] + }, + { + "value": 47.9975, "type": "row", "nodes": [ { diff --git a/test/maroto/examples/billing.json b/test/maroto/examples/billing.json index 9daba773..f3f704d8 100755 --- a/test/maroto/examples/billing.json +++ b/test/maroto/examples/billing.json @@ -55,7 +55,9 @@ "type": "text", "details": { "prop_align": "R", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(150, 10, 10)", + "prop_font_family": "arial", "prop_font_size": 8 } }, @@ -64,7 +66,9 @@ "type": "text", "details": { "prop_align": "R", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(10, 10, 150)", + "prop_font_family": "arial", "prop_font_size": 8, "prop_font_style": "BI", "prop_top": 12 @@ -75,7 +79,9 @@ "type": "text", "details": { "prop_align": "R", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(10, 10, 150)", + "prop_font_family": "arial", "prop_font_size": 8, "prop_font_style": "BI", "prop_top": 15 @@ -101,6 +107,10 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_top": 3 } @@ -125,7 +135,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_font_style": "B", "prop_top": 1.5 @@ -152,6 +164,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_font_style": "B" } @@ -167,6 +182,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_font_style": "B" } @@ -182,6 +200,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_font_style": "B" } @@ -210,6 +231,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -224,6 +248,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -238,6 +265,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -262,6 +292,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -276,6 +309,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -290,6 +326,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -317,6 +356,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -331,6 +373,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -345,6 +390,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -369,6 +417,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -383,6 +434,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -397,6 +451,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -424,6 +481,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -438,6 +498,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -452,6 +515,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -476,6 +542,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -490,6 +559,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -504,6 +576,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -531,6 +606,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -545,6 +623,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -559,6 +640,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -583,6 +667,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -597,6 +684,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -611,6 +701,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -638,6 +731,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -652,6 +748,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -666,6 +765,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -690,6 +792,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -704,6 +809,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -718,6 +826,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -745,6 +856,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -759,6 +873,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -773,6 +890,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -797,6 +917,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -811,6 +934,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -825,6 +951,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -852,6 +981,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -866,6 +998,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -880,6 +1015,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -904,6 +1042,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -918,6 +1059,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -932,6 +1076,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -959,6 +1106,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -973,6 +1123,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -987,6 +1140,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1011,6 +1167,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1025,6 +1184,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1039,6 +1201,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1066,6 +1231,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1080,6 +1248,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1094,6 +1265,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1118,6 +1292,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1132,6 +1309,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1146,6 +1326,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1173,6 +1356,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1187,6 +1373,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1201,6 +1390,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1225,6 +1417,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1239,6 +1434,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1253,6 +1451,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1280,6 +1481,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1294,6 +1498,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1308,6 +1515,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1332,6 +1542,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1346,6 +1559,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1360,6 +1576,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1387,6 +1606,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1401,6 +1623,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1415,6 +1640,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1439,6 +1667,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1453,6 +1684,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1467,6 +1701,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1494,6 +1731,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1508,6 +1748,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1522,6 +1765,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1546,6 +1792,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1560,6 +1809,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1574,6 +1826,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1601,6 +1856,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1615,6 +1873,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1629,6 +1890,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1653,6 +1917,9 @@ "type": "text", "details": { "prop_align": "R", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8, "prop_font_style": "B", "prop_top": 5 @@ -1669,6 +1936,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8, "prop_font_style": "B", "prop_top": 5 @@ -1700,6 +1970,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_font_style": "B", "prop_top": 12 diff --git a/test/maroto/examples/cellstyle.json b/test/maroto/examples/cellstyle.json index 2df01770..b45ae2e6 100755 --- a/test/maroto/examples/cellstyle.json +++ b/test/maroto/examples/cellstyle.json @@ -39,7 +39,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -63,7 +65,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -87,7 +91,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -127,6 +133,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -143,6 +152,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -159,6 +171,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -201,7 +216,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -225,7 +242,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -249,7 +268,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -290,6 +311,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -306,6 +330,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -322,6 +349,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -364,7 +394,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -388,7 +420,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -412,7 +446,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -453,6 +489,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -469,6 +508,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -485,6 +527,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -527,7 +572,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -551,7 +598,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -575,7 +624,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -616,6 +667,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -632,6 +686,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -648,6 +705,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -690,7 +750,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -714,7 +776,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -738,7 +802,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -779,6 +845,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -795,6 +864,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -811,6 +883,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -853,7 +928,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -877,7 +954,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -901,7 +980,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -942,6 +1023,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -958,6 +1042,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -974,6 +1061,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1016,7 +1106,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1040,7 +1132,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1064,7 +1158,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1119,6 +1215,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1135,6 +1234,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1151,6 +1253,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1193,7 +1298,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1217,7 +1324,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1241,7 +1350,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1282,6 +1393,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1298,6 +1412,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1314,6 +1431,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1356,7 +1476,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1380,7 +1502,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1404,7 +1528,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1445,6 +1571,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1461,6 +1590,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1477,6 +1609,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1519,7 +1654,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1543,7 +1680,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1567,7 +1706,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1608,6 +1749,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1624,6 +1768,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1640,6 +1787,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1682,7 +1832,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1706,7 +1858,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1730,7 +1884,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1771,6 +1927,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1787,6 +1946,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1803,6 +1965,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1845,7 +2010,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1869,7 +2036,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1893,7 +2062,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1934,6 +2105,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1950,6 +2124,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -1966,6 +2143,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2008,7 +2188,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2032,7 +2214,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2056,7 +2240,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2096,6 +2282,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2112,6 +2301,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2128,6 +2320,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2185,7 +2380,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2209,7 +2406,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2233,7 +2432,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2274,6 +2475,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2290,6 +2494,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2306,6 +2513,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2348,7 +2558,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2372,7 +2584,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2396,7 +2610,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", "prop_color": "RGB(255, 255, 255)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2437,6 +2653,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2453,6 +2672,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 @@ -2469,6 +2691,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_font_style": "B", "prop_top": 2 diff --git a/test/maroto/examples/compression.json b/test/maroto/examples/compression.json index c879a47d..776aa00b 100755 --- a/test/maroto/examples/compression.json +++ b/test/maroto/examples/compression.json @@ -35,6 +35,10 @@ "value": "Main features", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 15, "prop_top": 6.5 } @@ -56,6 +60,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 15, "prop_top": 6 } @@ -93,6 +100,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 15, "prop_top": 6 } @@ -128,6 +138,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 15, "prop_top": 6 } @@ -163,6 +176,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 15, "prop_top": 6 } @@ -198,6 +214,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 15, "prop_top": 6 } @@ -235,6 +254,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 15, "prop_top": 6 } @@ -250,6 +272,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_top": 5 } @@ -271,6 +296,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 15, "prop_top": 17 } diff --git a/test/maroto/examples/customdimensions.json b/test/maroto/examples/customdimensions.json index ee2b38d8..ba12e5f7 100755 --- a/test/maroto/examples/customdimensions.json +++ b/test/maroto/examples/customdimensions.json @@ -46,6 +46,10 @@ "value": "Gopher International Shipping, Inc.", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_top": 12 } diff --git a/test/maroto/examples/customfont.json b/test/maroto/examples/customfont.json index fdba831f..9f2ce161 100755 --- a/test/maroto/examples/customfont.json +++ b/test/maroto/examples/customfont.json @@ -32,7 +32,10 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B" } } @@ -47,7 +50,10 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B" } } @@ -70,7 +76,11 @@ "value": "Africâner", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -83,7 +93,11 @@ "value": "Praat is goedkoop. Wys my die kode.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -102,7 +116,11 @@ "value": "Albanês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -115,7 +133,11 @@ "value": "Biseda është e lirë. Më trego kodin.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -137,7 +159,11 @@ "value": "Alemão", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -150,7 +176,11 @@ "value": "Reden ist billig. Zeig mir den Code.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -169,7 +199,11 @@ "value": "Amárico", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -182,7 +216,11 @@ "value": "ወሬ ርካሽ ነው ፡፡ ኮዱን አሳዩኝ ፡፡", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -204,7 +242,11 @@ "value": "Árabe", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -217,7 +259,11 @@ "value": "كلام رخيص. أرني الكود.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -236,7 +282,11 @@ "value": "Armênio", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -249,7 +299,11 @@ "value": "Խոսակցությունն էժան է: Showույց տվեք ինձ ծածկագիրը:", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -271,7 +325,11 @@ "value": "Azerbaijano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -284,7 +342,11 @@ "value": "Danışıq ucuzdur. Kodu göstərin.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -303,7 +365,11 @@ "value": "Basco", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -316,7 +382,11 @@ "value": "Eztabaida merkea da. Erakutsi kodea.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -338,7 +408,11 @@ "value": "Bengali", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -351,7 +425,11 @@ "value": "টক সস্তা। আমাকে কোডটি দেখান", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -370,7 +448,11 @@ "value": "Bielorusso", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -383,7 +465,11 @@ "value": "Размовы танныя. Пакажыце мне код.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -405,7 +491,11 @@ "value": "Birmanês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -418,7 +508,11 @@ "value": "ဟောပြောချက်ကစျေးပေါတယ် ကုဒ်ကိုပြပါ။", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -437,7 +531,11 @@ "value": "Bósnio", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -450,7 +548,11 @@ "value": "Govor je jeftin. Pokaži mi šifru.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -472,7 +574,11 @@ "value": "Búlgaro", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -485,7 +591,11 @@ "value": "Разговорите са евтини. Покажи ми кода.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -504,7 +614,11 @@ "value": "Canarim", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -517,7 +631,11 @@ "value": "ಮಾತುಕತೆ ಅಗ್ಗವಾಗಿದೆ. ನನಗೆ ಕೋಡ್ ತೋರಿಸಿ.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -539,7 +657,11 @@ "value": "Catalão", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -552,7 +674,11 @@ "value": "Parlar és barat. Mostra’m el codi.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -571,7 +697,11 @@ "value": "Cazeque", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -584,7 +714,11 @@ "value": "Сөйлесу арзан. Маған кодты көрсетіңіз.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -606,7 +740,11 @@ "value": "Cebuano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -619,7 +757,11 @@ "value": "Barato ra ang sulti. Ipakita kanako ang code.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -638,7 +780,11 @@ "value": "Chinês Simplificado", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -651,7 +797,11 @@ "value": "谈话很便宜。给我看代码。", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -673,7 +823,11 @@ "value": "Chinês Tradicional", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -686,7 +840,11 @@ "value": "談話很便宜。給我看代碼。", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -705,7 +863,11 @@ "value": "Cingalês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -718,7 +880,11 @@ "value": "කතාව ලාභයි. කේතය මට පෙන්වන්න.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -740,7 +906,11 @@ "value": "Coreano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -753,7 +923,11 @@ "value": "토크는 싸다. 코드를 보여주세요.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -772,7 +946,11 @@ "value": "Corso", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -785,7 +963,11 @@ "value": "Parlà hè bonu. Mostrami u codice.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -807,7 +989,11 @@ "value": "Croata", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -820,7 +1006,11 @@ "value": "Razgovor je jeftin. Pokaži mi šifru.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -839,7 +1029,11 @@ "value": "Curdo", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -852,7 +1046,11 @@ "value": "Axaftin erzan e. Kodê nîşanî min bidin.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -874,7 +1072,11 @@ "value": "Dinamarquês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -887,7 +1089,11 @@ "value": "Tal er billig. Vis mig koden.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -906,7 +1112,11 @@ "value": "Eslovaco", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -919,7 +1129,11 @@ "value": "Hovor je lacný. Ukáž mi kód.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -941,7 +1155,11 @@ "value": "Esloveno", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -954,7 +1172,11 @@ "value": "Pogovor je poceni. Pokaži mi kodo.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -973,7 +1195,11 @@ "value": "Espanhol", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -986,7 +1212,11 @@ "value": "Hablar es barato. Enséñame el código.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1008,7 +1238,11 @@ "value": "Esperanto", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1021,7 +1255,11 @@ "value": "Babilado estas malmultekosta. Montru al mi la kodon.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1040,7 +1278,11 @@ "value": "Estoniano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1053,7 +1295,11 @@ "value": "Rääkimine on odav. Näita mulle koodi.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1075,7 +1321,11 @@ "value": "Filipino", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1088,7 +1338,11 @@ "value": "Mura ang usapan. Ipakita sa akin ang code.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1107,7 +1361,11 @@ "value": "Finlandês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1120,7 +1378,11 @@ "value": "Puhe on halpaa. Näytä koodi.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1142,7 +1404,11 @@ "value": "Francês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1155,7 +1421,11 @@ "value": "Parler n'est pas cher. Montre-moi le code.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1174,7 +1444,11 @@ "value": "Frísio Ocidental", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1187,7 +1461,11 @@ "value": "Prate is goedkeap. Lit my de koade sjen.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1209,7 +1487,11 @@ "value": "Gaélico Escocês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1222,7 +1504,11 @@ "value": "Tha còmhradh saor. Seall dhomh an còd.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1241,7 +1527,11 @@ "value": "Galego", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1254,7 +1544,11 @@ "value": "Falar é barato. Móstrame o código.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1276,7 +1570,11 @@ "value": "Galês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1289,7 +1587,11 @@ "value": "Mae siarad yn rhad. Dangoswch y cod i mi.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1308,7 +1610,11 @@ "value": "Georgiano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1321,7 +1627,11 @@ "value": "აუბარი იაფია. მაჩვენე კოდი.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1343,7 +1653,11 @@ "value": "Grego", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1356,7 +1670,11 @@ "value": "Η συζήτηση είναι φθηνή. Δείξε μου τον κωδικό.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1375,7 +1693,11 @@ "value": "Guzerate", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1388,7 +1710,11 @@ "value": "વાતો કરવી સસ્તી છે. મને કોડ બતાવો.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1410,7 +1736,11 @@ "value": "Haitiano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1423,7 +1753,11 @@ "value": "Pale bon mache. Montre m kòd la.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1442,7 +1776,11 @@ "value": "Hauçá", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1455,7 +1793,11 @@ "value": "Magana tana da arha. Nuna min lambar.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1477,7 +1819,11 @@ "value": "Havaiano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1490,7 +1836,11 @@ "value": "Kūʻai ke kamaʻilio. E hōʻike mai iaʻu i ke pāʻālua.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1509,7 +1859,11 @@ "value": "Hebraico", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1522,7 +1876,11 @@ "value": "הדיבורים זולים. הראה לי את הקוד.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1544,7 +1902,11 @@ "value": "Híndi", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1557,7 +1919,11 @@ "value": "बोलना आसान है। मुझे कोड दिखाओ।", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1576,7 +1942,11 @@ "value": "Hmong", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1589,7 +1959,11 @@ "value": "Kev hais lus yog pheej yig. Qhia kuv cov code.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1611,7 +1985,11 @@ "value": "Holandês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1624,7 +2002,11 @@ "value": "Praten is goedkoop. Laat me de code zien.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1643,7 +2025,11 @@ "value": "Húngaro", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1656,7 +2042,11 @@ "value": "Beszélni olcsó. Mutasd meg a kódot.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1678,7 +2068,11 @@ "value": "Igbo", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1691,7 +2085,11 @@ "value": "Okwu dị ọnụ ala. Gosi m koodu.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1710,7 +2108,11 @@ "value": "Lídiche", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1723,7 +2125,11 @@ "value": "רעדן איז ביליק. ווייַזן מיר דעם קאָד.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1745,7 +2151,11 @@ "value": "Indonésio", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1758,7 +2168,11 @@ "value": "Berbicara itu murah. Tunjukkan kodenya.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1792,7 +2206,11 @@ "value": "Inglês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1805,7 +2223,11 @@ "value": "Talk is cheap. Show me the code.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1827,7 +2249,11 @@ "value": "Iorubá", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1840,7 +2266,11 @@ "value": "Ọrọ jẹ olowo poku. Fi koodu naa han mi.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1859,7 +2289,11 @@ "value": "Irlandês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1872,7 +2306,11 @@ "value": "Tá caint saor. Taispeáin dom an cód.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1894,7 +2332,11 @@ "value": "Islandês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1907,7 +2349,11 @@ "value": "Tal er ódýrt. Sýndu mér kóðann.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1926,7 +2372,11 @@ "value": "Italiano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1939,7 +2389,11 @@ "value": "Parlare è economico. Mostrami il codice.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1961,7 +2415,11 @@ "value": "Japonês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1974,7 +2432,11 @@ "value": "口で言うだけなら簡単です。コードを見せてください。", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -1993,7 +2455,11 @@ "value": "Javanês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2006,7 +2472,11 @@ "value": "Omongan iku murah. Tampilake kode kasebut.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2028,7 +2498,11 @@ "value": "Khmer", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2041,7 +2515,11 @@ "value": "ការនិយាយគឺថោក។ បង្ហាញលេខកូដមកខ្ញុំ", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2060,7 +2538,11 @@ "value": "Laosiano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2073,7 +2555,11 @@ "value": "ການສົນທະນາແມ່ນລາຄາຖືກ. ສະແດງລະຫັດໃຫ້ຂ້ອຍ.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2095,7 +2581,11 @@ "value": "Latim", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2108,7 +2598,11 @@ "value": "Disputatio vilis est. Ostende mihi codice.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2127,7 +2621,11 @@ "value": "Letão", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2140,7 +2638,11 @@ "value": "Saruna ir lēta. Parādiet man kodu.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2162,7 +2664,11 @@ "value": "Lituano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2175,7 +2681,11 @@ "value": "Kalbėti pigu. Parodyk man kodą.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2194,7 +2704,11 @@ "value": "Luxemburguês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2207,7 +2721,11 @@ "value": "Schwätzen ass bëlleg. Weist mir de Code.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2229,7 +2747,11 @@ "value": "Macedônio", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2242,7 +2764,11 @@ "value": "Зборувањето е ефтино. Покажи ми го кодот.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2261,7 +2787,11 @@ "value": "Malaiala", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2274,7 +2804,11 @@ "value": "സംസാരം വിലകുറഞ്ഞതാണ്. എനിക്ക് കോഡ് കാണിക്കുക.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2296,7 +2830,11 @@ "value": "Malaio", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2309,7 +2847,11 @@ "value": "Perbincangan murah. Tunjukkan kod saya.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2328,7 +2870,11 @@ "value": "Malgaxe", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2341,7 +2887,11 @@ "value": "Mora ny resaka. Asehoy ahy ny kaody.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2363,7 +2913,11 @@ "value": "Maltês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2376,7 +2930,11 @@ "value": "It-taħdita hija rħisa. Urini l-kodiċi.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2395,7 +2953,11 @@ "value": "Maori", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2408,7 +2970,11 @@ "value": "He iti te korero. Whakaatuhia mai te tohu.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2430,7 +2996,11 @@ "value": "Marati", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2443,7 +3013,11 @@ "value": "चर्चा स्वस्त आहे. मला कोड दाखवा.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2462,7 +3036,11 @@ "value": "Mongol", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2475,7 +3053,11 @@ "value": "Яриа хямд. Надад кодоо харуул.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2497,7 +3079,11 @@ "value": "Nepalês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2510,7 +3096,11 @@ "value": "कुरा सस्तो छ। मलाई कोड देखाउनुहोस्।", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2529,7 +3119,11 @@ "value": "Nianja", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2542,7 +3136,11 @@ "value": "Kulankhula ndikotsika mtengo. Ndiwonetseni nambala", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2564,7 +3162,11 @@ "value": "Norueguês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2577,7 +3179,11 @@ "value": "Snakk er billig. Vis meg koden.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2596,7 +3202,11 @@ "value": "Oriá", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2609,7 +3219,11 @@ "value": "କଥାବାର୍ତ୍ତା ଶସ୍ତା ଅଟେ | ମୋତେ କୋଡ୍ ଦେଖାନ୍ତୁ |", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2631,7 +3245,11 @@ "value": "Panjabi", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2644,7 +3262,11 @@ "value": "ਗੱਲ ਸਸਤਾ ਹੈ. ਮੈਨੂੰ ਕੋਡ ਦਿਖਾਓ.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2663,7 +3285,11 @@ "value": "Pashto", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2676,7 +3302,11 @@ "value": "خبرې ارزانه دي. ما ته کوډ وښایاست", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2698,7 +3328,11 @@ "value": "Persa", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2711,7 +3345,11 @@ "value": "بحث ارزان است. کد را به من نشان دهید", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2730,7 +3368,11 @@ "value": "Polonês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2743,7 +3385,11 @@ "value": "Rozmowa jest tania. Pokaż mi kod.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2765,7 +3411,11 @@ "value": "Português", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2778,7 +3428,11 @@ "value": "Falar é fácil. Mostre-me o código.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2797,7 +3451,11 @@ "value": "Quiniaruanda", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2810,7 +3468,11 @@ "value": "Ibiganiro birahendutse. Nyereka kode.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2832,7 +3494,11 @@ "value": "Quirguiz", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2845,7 +3511,11 @@ "value": "Сүйлөшүү арзан. Мага кодду көрсөтүңүз.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2864,7 +3534,11 @@ "value": "Romeno", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2877,7 +3551,11 @@ "value": "Vorbirea este ieftină. Arată-mi codul.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2899,7 +3577,11 @@ "value": "Russo", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2912,7 +3594,11 @@ "value": "Обсуждение дешево. Покажи мне код.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2931,7 +3617,11 @@ "value": "Samoano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2944,7 +3634,11 @@ "value": "E taugofie talanoaga. Faʻaali mai le code.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2966,7 +3660,11 @@ "value": "Sérvio", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2979,7 +3677,11 @@ "value": "Причање је јефтино. Покажи ми шифру.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -2998,7 +3700,11 @@ "value": "Sindi", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3011,7 +3717,11 @@ "value": "ڳالهه سستا آهي. مونکي ڪوڊ ڏيکاريو.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3033,7 +3743,11 @@ "value": "Somali", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3046,7 +3760,11 @@ "value": "Hadalku waa jaban yahay. I tus lambarka.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3065,7 +3783,11 @@ "value": "Soto do Sul", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3078,7 +3800,11 @@ "value": "Puo e theko e tlase. Mpontshe khoutu.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3100,7 +3826,11 @@ "value": "Suaíli", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3113,7 +3843,11 @@ "value": "Mazungumzo ni ya bei rahisi. Nionyeshe nambari.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3132,7 +3866,11 @@ "value": "Sueco", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3145,7 +3883,11 @@ "value": "Prat är billigt. Visa mig koden.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3167,7 +3909,11 @@ "value": "Sundanês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3180,7 +3926,11 @@ "value": "Omongan mirah. Tunjukkeun kode na.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3199,7 +3949,11 @@ "value": "Tadjique", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3212,7 +3966,11 @@ "value": "Сӯҳбат арзон аст. Рамзро ба ман нишон диҳед.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3234,7 +3992,11 @@ "value": "Tailandês", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3247,7 +4009,11 @@ "value": "พูดคุยราคาถูก แสดงรหัส", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3266,7 +4032,11 @@ "value": "Tâmil", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3279,7 +4049,11 @@ "value": "பேச்சு மலிவானது. குறியீட்டை எனக்குக் காட்டு.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3301,7 +4075,11 @@ "value": "Tártaro", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3314,7 +4092,11 @@ "value": "Сөйләшү арзан. Миңа код күрсәтегез.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3333,7 +4115,11 @@ "value": "Tcheco", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3346,7 +4132,11 @@ "value": "Mluvení je levné. Ukaž mi kód.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3368,7 +4158,11 @@ "value": "Télugo", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3381,7 +4175,11 @@ "value": "చర్చ చౌకగా ఉంటుంది. నాకు కోడ్ చూపించు.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3400,7 +4198,11 @@ "value": "Turco", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3413,7 +4215,11 @@ "value": "Konuşma ucuz. Bana kodu göster.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3435,7 +4241,11 @@ "value": "Turcomeno", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3448,7 +4258,11 @@ "value": "Gepleşik arzan. Kody görkez", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3467,7 +4281,11 @@ "value": "Ucraniano", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3480,7 +4298,11 @@ "value": "Розмова дешева. Покажи мені код.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3502,7 +4324,11 @@ "value": "Uigur", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3515,7 +4341,11 @@ "value": "پاراڭ ئەرزان. ماڭا كودنى كۆرسەت.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3534,7 +4364,11 @@ "value": "Urdu", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3547,7 +4381,11 @@ "value": "بات گھٹیا ہے. مجھے کوڈ دکھائیں۔", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3584,7 +4422,11 @@ "value": "Uzbeque", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3597,7 +4439,11 @@ "value": "Gapirish arzon. Menga kodni ko'rsating.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3616,7 +4462,11 @@ "value": "Vietnamita", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3629,7 +4479,11 @@ "value": "Nói chuyện là rẻ. Cho tôi xem mã.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3651,7 +4505,11 @@ "value": "Xhosa", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3664,7 +4522,11 @@ "value": "Ukuthetha akubizi. Ndibonise ikhowudi.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3683,7 +4545,11 @@ "value": "Xona", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3696,7 +4562,11 @@ "value": "Kutaura kwakachipa. Ndiratidze kodhi.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3718,7 +4588,11 @@ "value": "Zulu", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3731,7 +4605,11 @@ "value": "Ukukhuluma kushibhile. Ngikhombise ikhodi.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3753,7 +4631,11 @@ "value": "long text without spaces", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_top": 5 } @@ -3775,7 +4657,10 @@ "type": "text", "details": { "prop_align": "C", - "prop_breakline_strategy": "dash_strategy" + "prop_breakline_strategy": "dash_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3789,7 +4674,10 @@ "type": "text", "details": { "prop_align": "L", - "prop_breakline_strategy": "dash_strategy" + "prop_breakline_strategy": "dash_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] @@ -3803,7 +4691,10 @@ "type": "text", "details": { "prop_align": "R", - "prop_breakline_strategy": "dash_strategy" + "prop_breakline_strategy": "dash_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial-unicode-ms", + "prop_font_size": 10 } } ] diff --git a/test/maroto/examples/custompage.json b/test/maroto/examples/custompage.json index 90a9b8d9..718af3e7 100755 --- a/test/maroto/examples/custompage.json +++ b/test/maroto/examples/custompage.json @@ -46,6 +46,10 @@ "value": "Gopher International Shipping, Inc.", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_top": 12 } diff --git a/test/maroto/examples/datamatrixgrid.json b/test/maroto/examples/datamatrixgrid.json index f933f4c9..33855863 100755 --- a/test/maroto/examples/datamatrixgrid.json +++ b/test/maroto/examples/datamatrixgrid.json @@ -207,7 +207,58 @@ ] }, { - "value": 106.9975, + "value": 47.5, + "type": "row", + "nodes": [ + { + "value": 6, + "type": "col", + "nodes": [ + { + "value": "https://github.com/johnfercher/maroto", + "type": "matrixcode", + "details": { + "prop_center": true, + "prop_just_reference_Width": true, + "prop_percent": 20 + } + } + ] + }, + { + "value": 4, + "type": "col", + "nodes": [ + { + "value": "https://github.com/johnfercher/maroto", + "type": "matrixcode", + "details": { + "prop_center": true, + "prop_just_reference_Width": true, + "prop_percent": 75 + } + } + ] + }, + { + "value": 2, + "type": "col", + "nodes": [ + { + "value": "https://github.com/johnfercher/maroto", + "type": "matrixcode", + "details": { + "prop_center": true, + "prop_just_reference_Width": true, + "prop_percent": 100 + } + } + ] + } + ] + }, + { + "value": 59.4975, "type": "row", "nodes": [ { diff --git a/test/maroto/examples/footer.json b/test/maroto/examples/footer.json index 0c54fa10..f86e2fee 100755 --- a/test/maroto/examples/footer.json +++ b/test/maroto/examples/footer.json @@ -35,6 +35,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -57,6 +61,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -79,6 +87,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -101,6 +113,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -123,6 +139,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -145,6 +165,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -167,6 +191,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -189,6 +217,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -211,6 +243,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -233,6 +269,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -255,6 +295,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -277,6 +321,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -299,6 +347,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -321,6 +373,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -343,6 +399,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -365,6 +425,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -387,6 +451,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -409,6 +477,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -431,6 +503,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -453,6 +529,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -475,6 +555,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -497,6 +581,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -519,6 +607,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -541,6 +633,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -602,6 +698,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -624,6 +724,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -646,6 +750,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -668,6 +776,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -690,6 +802,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -712,6 +828,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -734,6 +854,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -756,6 +880,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -778,6 +906,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -800,6 +932,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -822,6 +958,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -844,6 +984,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -866,6 +1010,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -888,6 +1036,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -910,6 +1062,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -932,6 +1088,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -954,6 +1114,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -976,6 +1140,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -998,6 +1166,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1020,6 +1192,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1042,6 +1218,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1064,6 +1244,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1086,6 +1270,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1108,6 +1296,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1169,6 +1361,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1191,6 +1387,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } diff --git a/test/maroto/examples/header.json b/test/maroto/examples/header.json index 7b67580f..1adca6b2 100755 --- a/test/maroto/examples/header.json +++ b/test/maroto/examples/header.json @@ -36,6 +36,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 10, "prop_font_style": "B" } @@ -59,6 +62,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -81,6 +88,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -103,6 +114,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -125,6 +140,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -147,6 +166,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -169,6 +192,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -191,6 +218,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -213,6 +244,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -235,6 +270,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -257,6 +296,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -279,6 +322,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -301,6 +348,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -323,6 +374,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -345,6 +400,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -367,6 +426,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -389,6 +452,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -411,6 +478,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -433,6 +504,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -455,6 +530,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -477,6 +556,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -499,6 +582,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -521,6 +608,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -543,6 +634,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -565,6 +660,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -603,6 +702,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 10, "prop_font_style": "B" } @@ -626,6 +728,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -648,6 +754,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -670,6 +780,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -692,6 +806,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -714,6 +832,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -736,6 +858,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -758,6 +884,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -780,6 +910,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -802,6 +936,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -824,6 +962,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -846,6 +988,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -868,6 +1014,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -890,6 +1040,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -912,6 +1066,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -934,6 +1092,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -956,6 +1118,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -978,6 +1144,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1000,6 +1170,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1022,6 +1196,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1044,6 +1222,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1066,6 +1248,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1088,6 +1274,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1110,6 +1300,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1132,6 +1326,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1170,6 +1368,9 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 10, "prop_font_style": "B" } @@ -1193,6 +1394,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1215,6 +1420,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } diff --git a/test/maroto/examples/imagegrid.json b/test/maroto/examples/imagegrid.json index c3e618b5..807d6eaf 100755 --- a/test/maroto/examples/imagegrid.json +++ b/test/maroto/examples/imagegrid.json @@ -282,6 +282,94 @@ } ] }, + { + "value": 0, + "type": "row", + "nodes": [ + { + "value": 4, + "type": "col", + "nodes": [ + { + "value": "docs/assets/images/frontpage.png", + "type": "fileImage", + "details": { + "prop_center": true, + "prop_just_reference_Width": true, + "prop_percent": 20 + } + } + ] + }, + { + "value": 8, + "type": "col", + "nodes": [ + { + "value": "docs/assets/images/frontpage.png", + "type": "fileImage", + "details": { + "prop_center": true, + "prop_just_reference_Width": true, + "prop_percent": 30 + } + } + ] + } + ] + }, + { + "value": 0, + "type": "row", + "nodes": [ + { + "value": 2, + "type": "col", + "nodes": [ + { + "value": "docs/assets/images/biplane.jpg", + "type": "fileImage", + "details": { + "prop_just_reference_Width": true, + "prop_left": 10, + "prop_percent": 50 + } + } + ] + }, + { + "value": 4, + "type": "col", + "nodes": [ + { + "value": "docs/assets/images/biplane.jpg", + "type": "fileImage", + "details": { + "prop_just_reference_Width": true, + "prop_percent": 50, + "prop_top": 10 + } + } + ] + }, + { + "value": 6, + "type": "col", + "nodes": [ + { + "value": "docs/assets/images/biplane.jpg", + "type": "fileImage", + "details": { + "prop_just_reference_Width": true, + "prop_left": 15, + "prop_percent": 50, + "prop_top": 15 + } + } + ] + } + ] + }, { "value": 26.997500000000002, "type": "row", diff --git a/test/maroto/examples/line.json b/test/maroto/examples/line.json index 66967787..56e7da3e 100755 --- a/test/maroto/examples/line.json +++ b/test/maroto/examples/line.json @@ -294,7 +294,63 @@ ] }, { - "value": 66.9975, + "value": 0.8, + "type": "row", + "nodes": [ + { + "value": 2, + "type": "col", + "nodes": [ + { + "type": "line", + "details": { + "prop_offset_percent": 5, + "prop_orientation": "horizontal", + "prop_size_percent": 90, + "prop_style": "dashed", + "prop_thickness": 0.2 + } + } + ] + }, + { + "value": 4, + "type": "col", + "nodes": [ + { + "type": "line", + "details": { + "prop_color": "RGB(255, 0, 0)", + "prop_offset_percent": 70, + "prop_orientation": "vertical", + "prop_size_percent": 70, + "prop_style": "dashed", + "prop_thickness": 0.8 + } + } + ] + }, + { + "value": 6, + "type": "col", + "nodes": [ + { + "type": "line", + "details": { + "prop_color": "RGB(255, 0, 0)", + "prop_offset_percent": 40, + "prop_orientation": "horizontal", + "prop_size_percent": 40, + "prop_style": "dashed", + "prop_thickness": 0.8 + } + } + ] + } + ] + }, + { + "value": 66.19749999999999, "type": "row", "nodes": [ { diff --git a/test/maroto/examples/list.json b/test/maroto/examples/list.json index e452c8ff..06d2efb4 100755 --- a/test/maroto/examples/list.json +++ b/test/maroto/examples/list.json @@ -31,6 +31,11 @@ "value": "Key", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B" } } @@ -44,6 +49,11 @@ "value": "Bytes", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B" } } @@ -64,7 +74,14 @@ "nodes": [ { "value": "Key: 0", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -74,7 +91,14 @@ "nodes": [ { "value": "Bytes: 0", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -90,7 +114,14 @@ "nodes": [ { "value": "Key: 1", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -100,7 +131,14 @@ "nodes": [ { "value": "Bytes: 1", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -119,7 +157,14 @@ "nodes": [ { "value": "Key: 2", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -129,7 +174,14 @@ "nodes": [ { "value": "Bytes: 2", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -145,7 +197,14 @@ "nodes": [ { "value": "Key: 3", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -155,7 +214,14 @@ "nodes": [ { "value": "Bytes: 3", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -174,7 +240,14 @@ "nodes": [ { "value": "Key: 4", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -184,7 +257,14 @@ "nodes": [ { "value": "Bytes: 4", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -200,7 +280,14 @@ "nodes": [ { "value": "Key: 5", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -210,7 +297,14 @@ "nodes": [ { "value": "Bytes: 5", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -229,7 +323,14 @@ "nodes": [ { "value": "Key: 6", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -239,7 +340,14 @@ "nodes": [ { "value": "Bytes: 6", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -255,7 +363,14 @@ "nodes": [ { "value": "Key: 7", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -265,7 +380,14 @@ "nodes": [ { "value": "Bytes: 7", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -284,7 +406,14 @@ "nodes": [ { "value": "Key: 8", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -294,7 +423,14 @@ "nodes": [ { "value": "Bytes: 8", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -310,7 +446,14 @@ "nodes": [ { "value": "Key: 9", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -320,7 +463,14 @@ "nodes": [ { "value": "Bytes: 9", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -339,7 +489,14 @@ "nodes": [ { "value": "Key: 10", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -349,7 +506,14 @@ "nodes": [ { "value": "Bytes: 10", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -365,7 +529,14 @@ "nodes": [ { "value": "Key: 11", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -375,7 +546,14 @@ "nodes": [ { "value": "Bytes: 11", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -394,7 +572,14 @@ "nodes": [ { "value": "Key: 12", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -404,7 +589,14 @@ "nodes": [ { "value": "Bytes: 12", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -420,7 +612,14 @@ "nodes": [ { "value": "Key: 13", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -430,7 +629,14 @@ "nodes": [ { "value": "Bytes: 13", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -449,7 +655,14 @@ "nodes": [ { "value": "Key: 14", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -459,7 +672,14 @@ "nodes": [ { "value": "Bytes: 14", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -475,7 +695,14 @@ "nodes": [ { "value": "Key: 15", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -485,7 +712,14 @@ "nodes": [ { "value": "Bytes: 15", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -504,7 +738,14 @@ "nodes": [ { "value": "Key: 16", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -514,7 +755,14 @@ "nodes": [ { "value": "Bytes: 16", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -530,7 +778,14 @@ "nodes": [ { "value": "Key: 17", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -540,7 +795,14 @@ "nodes": [ { "value": "Bytes: 17", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -559,7 +821,14 @@ "nodes": [ { "value": "Key: 18", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -569,7 +838,14 @@ "nodes": [ { "value": "Bytes: 18", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -585,7 +861,14 @@ "nodes": [ { "value": "Key: 19", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -595,7 +878,14 @@ "nodes": [ { "value": "Bytes: 19", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -614,7 +904,14 @@ "nodes": [ { "value": "Key: 20", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -624,7 +921,14 @@ "nodes": [ { "value": "Bytes: 20", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -640,7 +944,14 @@ "nodes": [ { "value": "Key: 21", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -650,7 +961,14 @@ "nodes": [ { "value": "Bytes: 21", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -669,7 +987,14 @@ "nodes": [ { "value": "Key: 22", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -679,7 +1004,14 @@ "nodes": [ { "value": "Bytes: 22", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -695,7 +1027,14 @@ "nodes": [ { "value": "Key: 23", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -705,7 +1044,14 @@ "nodes": [ { "value": "Bytes: 23", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -724,7 +1070,14 @@ "nodes": [ { "value": "Key: 24", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -734,7 +1087,14 @@ "nodes": [ { "value": "Bytes: 24", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -750,7 +1110,14 @@ "nodes": [ { "value": "Key: 25", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -760,7 +1127,14 @@ "nodes": [ { "value": "Bytes: 25", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -779,7 +1153,14 @@ "nodes": [ { "value": "Key: 26", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -789,7 +1170,14 @@ "nodes": [ { "value": "Bytes: 26", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -805,7 +1193,14 @@ "nodes": [ { "value": "Key: 27", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -815,7 +1210,14 @@ "nodes": [ { "value": "Bytes: 27", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -834,7 +1236,14 @@ "nodes": [ { "value": "Key: 28", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -844,7 +1253,14 @@ "nodes": [ { "value": "Bytes: 28", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -860,7 +1276,14 @@ "nodes": [ { "value": "Key: 29", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -870,7 +1293,14 @@ "nodes": [ { "value": "Bytes: 29", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -889,7 +1319,14 @@ "nodes": [ { "value": "Key: 30", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -899,7 +1336,14 @@ "nodes": [ { "value": "Bytes: 30", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -915,7 +1359,14 @@ "nodes": [ { "value": "Key: 31", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -925,7 +1376,14 @@ "nodes": [ { "value": "Bytes: 31", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -944,7 +1402,14 @@ "nodes": [ { "value": "Key: 32", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -954,7 +1419,14 @@ "nodes": [ { "value": "Bytes: 32", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -970,7 +1442,14 @@ "nodes": [ { "value": "Key: 33", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -980,7 +1459,14 @@ "nodes": [ { "value": "Bytes: 33", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -999,7 +1485,14 @@ "nodes": [ { "value": "Key: 34", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1009,7 +1502,14 @@ "nodes": [ { "value": "Bytes: 34", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1025,7 +1525,14 @@ "nodes": [ { "value": "Key: 35", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1035,7 +1542,14 @@ "nodes": [ { "value": "Bytes: 35", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1054,7 +1568,14 @@ "nodes": [ { "value": "Key: 36", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1064,7 +1585,14 @@ "nodes": [ { "value": "Bytes: 36", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1080,7 +1608,14 @@ "nodes": [ { "value": "Key: 37", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1090,7 +1625,14 @@ "nodes": [ { "value": "Bytes: 37", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1109,7 +1651,14 @@ "nodes": [ { "value": "Key: 38", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1119,7 +1668,14 @@ "nodes": [ { "value": "Bytes: 38", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1135,7 +1691,14 @@ "nodes": [ { "value": "Key: 39", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1145,7 +1708,14 @@ "nodes": [ { "value": "Bytes: 39", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1164,7 +1734,14 @@ "nodes": [ { "value": "Key: 40", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1174,7 +1751,14 @@ "nodes": [ { "value": "Bytes: 40", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1190,7 +1774,14 @@ "nodes": [ { "value": "Key: 41", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1200,7 +1791,14 @@ "nodes": [ { "value": "Bytes: 41", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1219,7 +1817,14 @@ "nodes": [ { "value": "Key: 42", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1229,7 +1834,14 @@ "nodes": [ { "value": "Bytes: 42", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1245,7 +1857,14 @@ "nodes": [ { "value": "Key: 43", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1255,7 +1874,14 @@ "nodes": [ { "value": "Bytes: 43", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1274,7 +1900,14 @@ "nodes": [ { "value": "Key: 44", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1284,7 +1917,14 @@ "nodes": [ { "value": "Bytes: 44", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1300,7 +1940,14 @@ "nodes": [ { "value": "Key: 45", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1310,7 +1957,14 @@ "nodes": [ { "value": "Bytes: 45", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1329,7 +1983,14 @@ "nodes": [ { "value": "Key: 46", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1339,7 +2000,14 @@ "nodes": [ { "value": "Bytes: 46", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1355,7 +2023,14 @@ "nodes": [ { "value": "Key: 47", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1365,7 +2040,14 @@ "nodes": [ { "value": "Bytes: 47", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1384,7 +2066,14 @@ "nodes": [ { "value": "Key: 48", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1394,7 +2083,14 @@ "nodes": [ { "value": "Bytes: 48", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1410,7 +2106,14 @@ "nodes": [ { "value": "Key: 49", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1420,7 +2123,14 @@ "nodes": [ { "value": "Bytes: 49", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1439,7 +2149,14 @@ "nodes": [ { "value": "Key: 50", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1449,7 +2166,14 @@ "nodes": [ { "value": "Bytes: 50", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1480,7 +2204,14 @@ "nodes": [ { "value": "Key: 51", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1490,7 +2221,14 @@ "nodes": [ { "value": "Bytes: 51", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1509,7 +2247,14 @@ "nodes": [ { "value": "Key: 52", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1519,7 +2264,14 @@ "nodes": [ { "value": "Bytes: 52", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1535,7 +2287,14 @@ "nodes": [ { "value": "Key: 53", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1545,7 +2304,14 @@ "nodes": [ { "value": "Bytes: 53", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1564,7 +2330,14 @@ "nodes": [ { "value": "Key: 54", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1574,7 +2347,14 @@ "nodes": [ { "value": "Bytes: 54", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1590,7 +2370,14 @@ "nodes": [ { "value": "Key: 55", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1600,7 +2387,14 @@ "nodes": [ { "value": "Bytes: 55", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1619,7 +2413,14 @@ "nodes": [ { "value": "Key: 56", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1629,7 +2430,14 @@ "nodes": [ { "value": "Bytes: 56", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1645,7 +2453,14 @@ "nodes": [ { "value": "Key: 57", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1655,7 +2470,14 @@ "nodes": [ { "value": "Bytes: 57", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1674,7 +2496,14 @@ "nodes": [ { "value": "Key: 58", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1684,7 +2513,14 @@ "nodes": [ { "value": "Bytes: 58", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1700,7 +2536,14 @@ "nodes": [ { "value": "Key: 59", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1710,7 +2553,14 @@ "nodes": [ { "value": "Bytes: 59", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1729,7 +2579,14 @@ "nodes": [ { "value": "Key: 60", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1739,7 +2596,14 @@ "nodes": [ { "value": "Bytes: 60", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1755,7 +2619,14 @@ "nodes": [ { "value": "Key: 61", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1765,7 +2636,14 @@ "nodes": [ { "value": "Bytes: 61", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1784,7 +2662,14 @@ "nodes": [ { "value": "Key: 62", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1794,7 +2679,14 @@ "nodes": [ { "value": "Bytes: 62", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1810,7 +2702,14 @@ "nodes": [ { "value": "Key: 63", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1820,7 +2719,14 @@ "nodes": [ { "value": "Bytes: 63", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1839,7 +2745,14 @@ "nodes": [ { "value": "Key: 64", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1849,7 +2762,14 @@ "nodes": [ { "value": "Bytes: 64", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1865,7 +2785,14 @@ "nodes": [ { "value": "Key: 65", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1875,7 +2802,14 @@ "nodes": [ { "value": "Bytes: 65", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1894,7 +2828,14 @@ "nodes": [ { "value": "Key: 66", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1904,7 +2845,14 @@ "nodes": [ { "value": "Bytes: 66", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1920,7 +2868,14 @@ "nodes": [ { "value": "Key: 67", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1930,7 +2885,14 @@ "nodes": [ { "value": "Bytes: 67", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1949,7 +2911,14 @@ "nodes": [ { "value": "Key: 68", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1959,7 +2928,14 @@ "nodes": [ { "value": "Bytes: 68", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1975,7 +2951,14 @@ "nodes": [ { "value": "Key: 69", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -1985,7 +2968,14 @@ "nodes": [ { "value": "Bytes: 69", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2004,7 +2994,14 @@ "nodes": [ { "value": "Key: 70", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2014,7 +3011,14 @@ "nodes": [ { "value": "Bytes: 70", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2030,7 +3034,14 @@ "nodes": [ { "value": "Key: 71", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2040,7 +3051,14 @@ "nodes": [ { "value": "Bytes: 71", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2059,7 +3077,14 @@ "nodes": [ { "value": "Key: 72", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2069,7 +3094,14 @@ "nodes": [ { "value": "Bytes: 72", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2085,7 +3117,14 @@ "nodes": [ { "value": "Key: 73", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2095,7 +3134,14 @@ "nodes": [ { "value": "Bytes: 73", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2114,7 +3160,14 @@ "nodes": [ { "value": "Key: 74", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2124,7 +3177,14 @@ "nodes": [ { "value": "Bytes: 74", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2140,7 +3200,14 @@ "nodes": [ { "value": "Key: 75", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2150,7 +3217,14 @@ "nodes": [ { "value": "Bytes: 75", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2169,7 +3243,14 @@ "nodes": [ { "value": "Key: 76", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2179,7 +3260,14 @@ "nodes": [ { "value": "Bytes: 76", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2195,7 +3283,14 @@ "nodes": [ { "value": "Key: 77", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2205,7 +3300,14 @@ "nodes": [ { "value": "Bytes: 77", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2224,7 +3326,14 @@ "nodes": [ { "value": "Key: 78", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2234,7 +3343,14 @@ "nodes": [ { "value": "Bytes: 78", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2250,7 +3366,14 @@ "nodes": [ { "value": "Key: 79", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2260,7 +3383,14 @@ "nodes": [ { "value": "Bytes: 79", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2279,7 +3409,14 @@ "nodes": [ { "value": "Key: 80", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2289,7 +3426,14 @@ "nodes": [ { "value": "Bytes: 80", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2305,7 +3449,14 @@ "nodes": [ { "value": "Key: 81", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2315,7 +3466,14 @@ "nodes": [ { "value": "Bytes: 81", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2334,7 +3492,14 @@ "nodes": [ { "value": "Key: 82", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2344,7 +3509,14 @@ "nodes": [ { "value": "Bytes: 82", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2360,7 +3532,14 @@ "nodes": [ { "value": "Key: 83", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2370,7 +3549,14 @@ "nodes": [ { "value": "Bytes: 83", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2389,7 +3575,14 @@ "nodes": [ { "value": "Key: 84", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2399,7 +3592,14 @@ "nodes": [ { "value": "Bytes: 84", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2415,7 +3615,14 @@ "nodes": [ { "value": "Key: 85", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2425,7 +3632,14 @@ "nodes": [ { "value": "Bytes: 85", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2444,7 +3658,14 @@ "nodes": [ { "value": "Key: 86", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2454,7 +3675,14 @@ "nodes": [ { "value": "Bytes: 86", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2470,7 +3698,14 @@ "nodes": [ { "value": "Key: 87", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2480,7 +3715,14 @@ "nodes": [ { "value": "Bytes: 87", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2499,7 +3741,14 @@ "nodes": [ { "value": "Key: 88", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2509,7 +3758,14 @@ "nodes": [ { "value": "Bytes: 88", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2525,7 +3781,14 @@ "nodes": [ { "value": "Key: 89", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2535,7 +3798,14 @@ "nodes": [ { "value": "Bytes: 89", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2554,7 +3824,14 @@ "nodes": [ { "value": "Key: 90", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2564,7 +3841,14 @@ "nodes": [ { "value": "Bytes: 90", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2580,7 +3864,14 @@ "nodes": [ { "value": "Key: 91", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2590,7 +3881,14 @@ "nodes": [ { "value": "Bytes: 91", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2609,7 +3907,14 @@ "nodes": [ { "value": "Key: 92", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2619,7 +3924,14 @@ "nodes": [ { "value": "Bytes: 92", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2635,7 +3947,14 @@ "nodes": [ { "value": "Key: 93", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2645,7 +3964,14 @@ "nodes": [ { "value": "Bytes: 93", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2664,7 +3990,14 @@ "nodes": [ { "value": "Key: 94", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2674,7 +4007,14 @@ "nodes": [ { "value": "Bytes: 94", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2690,7 +4030,14 @@ "nodes": [ { "value": "Key: 95", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2700,7 +4047,14 @@ "nodes": [ { "value": "Bytes: 95", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2719,7 +4073,14 @@ "nodes": [ { "value": "Key: 96", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2729,7 +4090,14 @@ "nodes": [ { "value": "Bytes: 96", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2745,7 +4113,14 @@ "nodes": [ { "value": "Key: 97", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2755,7 +4130,14 @@ "nodes": [ { "value": "Bytes: 97", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2774,7 +4156,14 @@ "nodes": [ { "value": "Key: 98", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2784,7 +4173,14 @@ "nodes": [ { "value": "Bytes: 98", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -2800,7 +4196,14 @@ "nodes": [ { "value": "Key: 99", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -2810,7 +4213,14 @@ "nodes": [ { "value": "Bytes: 99", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/lowmemory.json b/test/maroto/examples/lowmemory.json index 7b360e0a..e66d976b 100755 --- a/test/maroto/examples/lowmemory.json +++ b/test/maroto/examples/lowmemory.json @@ -40,6 +40,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -62,6 +66,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -84,6 +92,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -106,6 +118,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -128,6 +144,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -150,6 +170,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -172,6 +196,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -194,6 +222,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -216,6 +248,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -238,6 +274,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -260,6 +300,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -282,6 +326,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -304,6 +352,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -326,6 +378,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -348,6 +404,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -370,6 +430,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -392,6 +456,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -414,6 +482,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -436,6 +508,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -458,6 +534,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -480,6 +560,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -502,6 +586,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -524,6 +612,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -546,6 +638,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -568,6 +664,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -590,6 +690,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -627,6 +731,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -649,6 +757,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -671,6 +783,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -693,6 +809,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -715,6 +835,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -737,6 +861,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -759,6 +887,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -781,6 +913,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -803,6 +939,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -825,6 +965,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -847,6 +991,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -869,6 +1017,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -891,6 +1043,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -913,6 +1069,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -935,6 +1095,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -957,6 +1121,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -979,6 +1147,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1001,6 +1173,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1023,6 +1199,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1045,6 +1225,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1067,6 +1251,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1089,6 +1277,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1111,6 +1303,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1133,6 +1329,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } diff --git a/test/maroto/examples/margins.json b/test/maroto/examples/margins.json index 309a8368..0cce3b4f 100755 --- a/test/maroto/examples/margins.json +++ b/test/maroto/examples/margins.json @@ -46,6 +46,10 @@ "value": "Margins Test", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_top": 12 } @@ -71,7 +75,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -90,7 +101,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -109,7 +127,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -128,7 +153,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -147,7 +179,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -166,7 +205,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -185,7 +231,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -232,6 +285,10 @@ "value": "Margins Test", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 12, "prop_top": 12 } @@ -257,7 +314,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -276,7 +340,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -295,7 +366,14 @@ "nodes": [ { "value": "any text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/maxgridsum.json b/test/maroto/examples/maxgridsum.json index cf38367e..3d6326d3 100755 --- a/test/maroto/examples/maxgridsum.json +++ b/test/maroto/examples/maxgridsum.json @@ -35,6 +35,11 @@ "value": "Table with 14 Columns", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B" } } @@ -54,6 +59,11 @@ "value": "H 0", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -69,6 +79,11 @@ "value": "H 1", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -84,6 +99,11 @@ "value": "H 2", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -99,6 +119,11 @@ "value": "H 3", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -114,6 +139,11 @@ "value": "H 4", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -129,6 +159,11 @@ "value": "H 5", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -144,6 +179,11 @@ "value": "H 6", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -159,6 +199,11 @@ "value": "H 7", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -174,6 +219,11 @@ "value": "H 8", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -189,6 +239,11 @@ "value": "H 9", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -204,6 +259,11 @@ "value": "H 10", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -219,6 +279,11 @@ "value": "H 11", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -234,6 +299,11 @@ "value": "H 12", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -249,6 +319,11 @@ "value": "H 13", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_font_style": "B", "prop_left": 1.5, "prop_top": 1.5 @@ -270,6 +345,10 @@ "value": "C 0", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -285,6 +364,10 @@ "value": "C 1", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -300,6 +383,10 @@ "value": "C 2", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -315,6 +402,10 @@ "value": "C 3", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -330,6 +421,10 @@ "value": "C 4", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -345,6 +440,10 @@ "value": "C 5", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -360,6 +459,10 @@ "value": "C 6", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -375,6 +478,10 @@ "value": "C 7", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -390,6 +497,10 @@ "value": "C 8", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -405,6 +516,10 @@ "value": "C 9", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -420,6 +535,10 @@ "value": "C 10", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -435,6 +554,10 @@ "value": "C 11", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -450,6 +573,10 @@ "value": "C 12", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 @@ -465,6 +592,10 @@ "value": "C 13", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 9, "prop_left": 1.5, "prop_top": 1 diff --git a/test/maroto/examples/mergepdf.json b/test/maroto/examples/mergepdf.json index 195a81c5..0d37b6e1 100755 --- a/test/maroto/examples/mergepdf.json +++ b/test/maroto/examples/mergepdf.json @@ -37,7 +37,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -56,7 +63,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -75,7 +89,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -94,7 +115,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -113,7 +141,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -132,7 +167,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -151,7 +193,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -170,7 +219,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -189,7 +245,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -208,7 +271,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -227,7 +297,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -246,7 +323,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -265,7 +349,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -299,7 +390,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -318,7 +416,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -337,7 +442,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -356,7 +468,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -375,7 +494,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -394,7 +520,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -413,7 +546,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -432,7 +572,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -451,7 +598,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -470,7 +624,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -489,7 +650,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -508,7 +676,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -527,7 +702,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -561,7 +743,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -580,7 +769,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -599,7 +795,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -618,7 +821,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -637,7 +847,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -656,7 +873,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -675,7 +899,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -694,7 +925,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -713,7 +951,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -732,7 +977,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -751,7 +1003,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -770,7 +1029,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -789,7 +1055,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -823,7 +1096,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -842,7 +1122,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -861,7 +1148,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -880,7 +1174,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -899,7 +1200,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -918,7 +1226,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -937,7 +1252,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -956,7 +1278,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -975,7 +1304,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -994,7 +1330,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -1013,7 +1356,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/metadatas.json b/test/maroto/examples/metadatas.json index f93f2bae..3bbef7b1 100755 --- a/test/maroto/examples/metadatas.json +++ b/test/maroto/examples/metadatas.json @@ -38,7 +38,14 @@ "nodes": [ { "value": "metadatas", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/orientation.json b/test/maroto/examples/orientation.json index 3960aba6..bfe3b012 100755 --- a/test/maroto/examples/orientation.json +++ b/test/maroto/examples/orientation.json @@ -33,7 +33,14 @@ "nodes": [ { "value": "content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/pagenumber.json b/test/maroto/examples/pagenumber.json index dcc87e77..35edbfb0 100755 --- a/test/maroto/examples/pagenumber.json +++ b/test/maroto/examples/pagenumber.json @@ -39,7 +39,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -58,7 +65,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -77,7 +91,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -96,7 +117,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -115,7 +143,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -134,7 +169,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -153,7 +195,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -172,7 +221,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -191,7 +247,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -210,7 +273,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -229,7 +299,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -248,7 +325,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -267,7 +351,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -301,7 +392,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -320,7 +418,14 @@ "nodes": [ { "value": "dummy text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/parallelism.json b/test/maroto/examples/parallelism.json index 6bf27060..295fb16c 100755 --- a/test/maroto/examples/parallelism.json +++ b/test/maroto/examples/parallelism.json @@ -40,6 +40,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -62,6 +66,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -84,6 +92,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -106,6 +118,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -128,6 +144,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -150,6 +170,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -172,6 +196,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -194,6 +222,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -216,6 +248,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -238,6 +274,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -260,6 +300,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -282,6 +326,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -304,6 +352,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -326,6 +378,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -348,6 +404,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -370,6 +430,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -392,6 +456,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -414,6 +482,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -436,6 +508,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -458,6 +534,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -480,6 +560,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -502,6 +586,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -524,6 +612,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -546,6 +638,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -568,6 +664,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -590,6 +690,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -627,6 +731,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -649,6 +757,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -671,6 +783,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -693,6 +809,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -715,6 +835,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -737,6 +861,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -759,6 +887,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -781,6 +913,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -803,6 +939,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -825,6 +965,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -847,6 +991,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -869,6 +1017,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -891,6 +1043,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -913,6 +1069,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -935,6 +1095,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -957,6 +1121,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -979,6 +1147,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1001,6 +1173,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1023,6 +1199,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1045,6 +1225,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1067,6 +1251,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1089,6 +1277,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1111,6 +1303,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } @@ -1133,6 +1329,10 @@ "value": "Dummy text", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", "prop_font_size": 8 } } diff --git a/test/maroto/examples/protection.json b/test/maroto/examples/protection.json index 4d57fcf6..3d393550 100755 --- a/test/maroto/examples/protection.json +++ b/test/maroto/examples/protection.json @@ -34,7 +34,14 @@ "nodes": [ { "value": "supersecret content", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/qrgrid.json b/test/maroto/examples/qrgrid.json index d05a8acd..cf6fb9d3 100755 --- a/test/maroto/examples/qrgrid.json +++ b/test/maroto/examples/qrgrid.json @@ -207,7 +207,58 @@ ] }, { - "value": 106.9975, + "value": 47.5, + "type": "row", + "nodes": [ + { + "value": 6, + "type": "col", + "nodes": [ + { + "value": "https://github.com/johnfercher/maroto", + "type": "qrcode", + "details": { + "prop_center": true, + "prop_just_reference_Width": true, + "prop_percent": 30 + } + } + ] + }, + { + "value": 4, + "type": "col", + "nodes": [ + { + "value": "https://github.com/johnfercher/maroto", + "type": "qrcode", + "details": { + "prop_center": true, + "prop_just_reference_Width": true, + "prop_percent": 75 + } + } + ] + }, + { + "value": 2, + "type": "col", + "nodes": [ + { + "value": "https://github.com/johnfercher/maroto", + "type": "qrcode", + "details": { + "prop_center": true, + "prop_just_reference_Width": true, + "prop_percent": 100 + } + } + ] + } + ] + }, + { + "value": 59.4975, "type": "row", "nodes": [ { diff --git a/test/maroto/examples/signaturegrid.json b/test/maroto/examples/signaturegrid.json index e26df483..894fe798 100755 --- a/test/maroto/examples/signaturegrid.json +++ b/test/maroto/examples/signaturegrid.json @@ -194,7 +194,65 @@ ] }, { - "value": 146.9975, + "value": 4.733333333333333, + "type": "row", + "nodes": [ + { + "value": 4, + "type": "col", + "nodes": [ + { + "value": "Signature 7", + "type": "signature", + "details": { + "prop_font_family": "arial", + "prop_font_size": 8, + "prop_font_style": "B", + "prop_line_color": "RGB(255, 0, 0)", + "prop_line_style": "solid", + "prop_line_thickness": 0.2 + } + } + ] + }, + { + "value": 4, + "type": "col", + "nodes": [ + { + "value": "Signature 8", + "type": "signature", + "details": { + "prop_font_family": "arial", + "prop_font_size": 8, + "prop_font_style": "B", + "prop_line_style": "dashed", + "prop_line_thickness": 0.2 + } + } + ] + }, + { + "value": 4, + "type": "col", + "nodes": [ + { + "value": "Signature 9", + "type": "signature", + "details": { + "prop_font_family": "arial", + "prop_font_size": 8, + "prop_font_style": "B", + "prop_line_style": "solid", + "prop_line_thickness": 0.5 + } + } + ] + } + ] + }, + { + "value": 142.26416666666665, "type": "row", "nodes": [ { diff --git a/test/maroto/examples/simplest.json b/test/maroto/examples/simplest.json index c858a94e..8a874e14 100755 --- a/test/maroto/examples/simplest.json +++ b/test/maroto/examples/simplest.json @@ -116,7 +116,14 @@ "nodes": [ { "value": "text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } diff --git a/test/maroto/examples/textgrid.json b/test/maroto/examples/textgrid.json index c609b0ed..14317e6e 100755 --- a/test/maroto/examples/textgrid.json +++ b/test/maroto/examples/textgrid.json @@ -32,7 +32,11 @@ "value": "Red text", "type": "text", "details": { - "prop_color": "RGB(255, 0, 0)" + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(255, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 } } ] @@ -45,7 +49,11 @@ "value": "Green text", "type": "text", "details": { - "prop_color": "RGB(0, 255, 0)" + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 255, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 } } ] @@ -58,7 +66,11 @@ "value": "Blue text", "type": "text", "details": { - "prop_color": "RGB(0, 0, 255)" + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 255)", + "prop_font_family": "arial", + "prop_font_size": 10 } } ] @@ -75,7 +87,14 @@ "nodes": [ { "value": "Left-aligned text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] }, @@ -87,7 +106,11 @@ "value": "Centered text", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 } } ] @@ -100,7 +123,11 @@ "value": "Right-aligned text", "type": "text", "details": { - "prop_align": "R" + "prop_align": "R", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 } } ] @@ -120,7 +147,14 @@ "nodes": [ { "value": "Aligned unindented text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -139,6 +173,10 @@ "type": "text", "details": { "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_left": 3, "prop_top": 3 } @@ -154,6 +192,10 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_top": 3 } } @@ -168,6 +210,10 @@ "type": "text", "details": { "prop_align": "R", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_right": 3, "prop_top": 3 } @@ -189,7 +235,14 @@ "nodes": [ { "value": "Aligned text with indentation", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -207,7 +260,11 @@ "value": "This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise.", "type": "text", "details": { - "prop_align": "L" + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 } } ] @@ -220,7 +277,11 @@ "value": "This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise.", "type": "text", "details": { - "prop_align": "C" + "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 } } ] @@ -233,7 +294,11 @@ "value": "This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise.", "type": "text", "details": { - "prop_align": "R" + "prop_align": "R", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 } } ] @@ -253,7 +318,14 @@ "nodes": [ { "value": "Multiline text", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -273,6 +345,9 @@ "details": { "prop_align": "L", "prop_breakline_strategy": "dash_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_left": 3, "prop_right": 3, "prop_top": 3 @@ -289,6 +364,10 @@ "type": "text", "details": { "prop_align": "C", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_left": 3, "prop_right": 3, "prop_top": 3 @@ -305,6 +384,10 @@ "type": "text", "details": { "prop_align": "R", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_left": 3, "prop_right": 3, "prop_top": 3 @@ -327,7 +410,14 @@ "nodes": [ { "value": "Multiline text with indentation", - "type": "text" + "type": "text", + "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } } ] } @@ -348,6 +438,11 @@ "value": "text with hyperlink", "type": "text", "details": { + "prop_align": "L", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_hyperlink": "https://google.com" } } @@ -384,6 +479,9 @@ "details": { "prop_align": "J", "prop_breakline_strategy": "dash_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_left": 3, "prop_right": 3, "prop_top": 3 @@ -400,6 +498,10 @@ "type": "text", "details": { "prop_align": "J", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_left": 3, "prop_right": 3, "prop_top": 10 @@ -416,6 +518,10 @@ "type": "text", "details": { "prop_align": "J", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, "prop_hyperlink": "https://google.com", "prop_left": 10, "prop_right": 10, @@ -438,17 +544,112 @@ }, "nodes": [ { - "value": "Justify-aligned text" , + "value": "Justify-aligned text", "type": "text", "details": { - "prop_align": "J" - } } + "prop_align": "J", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10 + } + } + ] + } + ] + }, + { + "value": 31.750000000000004, + "type": "row", + "nodes": [ + { + "value": 2, + "type": "col", + "nodes": [ + { + "value": "This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise.", + "type": "text", + "details": { + "prop_align": "J", + "prop_breakline_strategy": "dash_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, + "prop_left": 3, + "prop_right": 3 + } + } + ] + }, + { + "value": 4, + "type": "col", + "nodes": [ + { + "value": "This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise. This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise.", + "type": "text", + "details": { + "prop_align": "J", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, + "prop_left": 3, + "prop_right": 3 + } + } + ] + }, + { + "value": 6, + "type": "col", + "nodes": [ + { + "value": "This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise. This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise. This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise.", + "type": "text", + "details": { + "prop_align": "J", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, + "prop_hyperlink": "https://google.com", + "prop_left": 10, + "prop_right": 10 + } + } + ] + } + ] + }, + { + "value": 25.583333333333336, + "type": "row", + "nodes": [ + { + "value": 12, + "type": "col", + "nodes": [ + { + "value": "This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise. This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise. This is a longer sentence that will be broken into multiple lines as it does not fit into the column otherwise.", + "type": "text", + "details": { + "prop_align": "J", + "prop_breakline_strategy": "empty_space_strategy", + "prop_color": "RGB(0, 0, 0)", + "prop_font_family": "arial", + "prop_font_size": 10, + "prop_left": 3, + "prop_right": 3, + "prop_top": 15 + } + } ] } ] }, { - "value": 211.9975, + "value": 154.66416666666666, "type": "row", "nodes": [ {