diff --git a/js/docx/smoke/api_stroke/to_json.js b/js/docx/smoke/api_stroke/to_json.js index a383c1d79..776cbc35b 100644 --- a/js/docx/smoke/api_stroke/to_json.js +++ b/js/docx/smoke/api_stroke/to_json.js @@ -1,28 +1,40 @@ builder.CreateFile("docx"); - let oDocument = Api.GetDocument(); - let oParagraph = oDocument.GetElement(0); - let oRGBColor = Api.CreateRGBColor(255, 111, 61); - let oStroke = Api.CreateStroke(5 * 36000, Api.CreateSolidFill(Api.CreateRGBColor(51, 51, 51))); - let jsonStroke = oStroke.ToJSON(); - oParagraph.AddText(jsonStroke); - GlobalVariable["JSON_Stroke"] = jsonStroke; + var oGs1 = Api.CreateGradientStop(Api.CreateRGBColor(255, 213, 191), 0); + var oGs2 = Api.CreateGradientStop(Api.CreateRGBColor(255, 111, 61), 100000); + var arr = [] + arr.push(Api.CreateBlipFill("https://api.onlyoffice.com/content/img/docbuilder/examples/icon_DocumentEditors.png", "tile")); + arr.push(Api.CreateSolidFill(Api.CreateRGBColor(102, 0, 204))) + arr.push(Api.CreateLinearGradientFill([oGs1, oGs2], 5400000)) + arr.push(Api.CreateNoFill()) + arr.push(Api.CreatePatternFill("cross", Api.CreateRGBColor(255, 111, 61), Api.CreateRGBColor(51, 51, 51))) + arr.push(Api.CreateRadialGradientFill([oGs1, oGs2])) + arr = arr.map((fill) => { + var oStroke = Api.CreateStroke(10 * 36000, fill); + return oStroke.ToJSON() + }) + GlobalVariable["arrStroke"] = arr; builder.CloseFile(); ////////////////////// builder.CreateFile("docx"); - let oDocument = Api.GetDocument(); - let oParagraph = oDocument.GetElement(0); - let jsonStroke = GlobalVariable["JSON_Stroke"]; - let oRGBColor2 = Api.CreateRGBColor(255, 213, 191); - let oFill = Api.CreateSolidFill(oRGBColor2); - let oStrokeFromJSON = Api.FromJSON(jsonStroke); - let oDrawing = Api.CreateShape("roundRect", 5930900, 395605, oFill, oStrokeFromJSON); - oParagraph.AddDrawing(oDrawing); - let oParagraph2 = Api.CreateParagraph(); - let jsonDrawing = oDrawing.ToJSON(false, true); - oParagraph2.AddText(jsonDrawing); - oDocument.Push(oParagraph2); + var arrStroke = GlobalVariable["arrStroke"]; + arrStroke.forEach((stroke) => { + var odoc = Api.GetDocument(); + var opar = Api.CreateParagraph(); + opar.AddText(stroke) + odoc.Push(opar) + }) + arrStroke.forEach((stroke) => { + var oStroke = Api.FromJSON(stroke); + var odoc = Api.GetDocument(); + var opar = Api.CreateParagraph(); + var oGs1 = Api.CreateGradientStop(Api.CreateRGBColor(255, 213, 191), 0); + var oGs2 = Api.CreateGradientStop(Api.CreateRGBColor(255, 111, 61), 100000); + var oFill = Api.CreateRadialGradientFill([oGs1, oGs2]); + var oDrawing = Api.CreateShape("star10", 10000 * 593, 10000 * 590, oFill, oStroke); + opar.AddDrawing(oDrawing); + odoc.Push(opar); + }); builder.SaveFile("docx", "StrokeToJson.docx"); builder.CloseFile(); - diff --git a/spec/docx/smoke/api_stroke_spec.rb b/spec/docx/smoke/api_stroke_spec.rb index e0cc4701c..4cdabcf04 100644 --- a/spec/docx/smoke/api_stroke_spec.rb +++ b/spec/docx/smoke/api_stroke_spec.rb @@ -9,19 +9,10 @@ it 'ApiStroke | ToJSON method' do docx = builder.build_and_parse('js/docx/smoke/api_stroke/to_json.js') - expect(docx.elements.first.nonempty_runs.first.alternate_content.office2010_content.graphic.data.text_body.elements.first.character_style_array.size).to eq(2) - expect(docx.elements.first.nonempty_runs.first.alternate_content.office2010_content.graphic.type).to eq(:shape) - expect(docx.elements[1].nonempty_runs.first.text).to include('"type":"stroke"') - stroke = JSON.parse(docx.elements[1].nonempty_runs.first.text)['graphic']['spPr']['ln'] - expect(stroke['w']).to be_a(Integer) - expect(stroke['algn']).to be_nil - expect(stroke['fill']['fill']['color']['color']['rgba']['red']).to eq(51) - expect(stroke['fill']['fill']['color']['color']['rgba']['green']).to eq(51) - expect(stroke['fill']['fill']['color']['color']['rgba']['blue']).to eq(51) - expect(stroke['fill']['fill']['color']['color']['rgba']['alpha']).to eq(255) - expect(stroke['fill']['fill']['type']).to eq('solid') - expect(stroke['fill']['transparent']).to be_nil - expect(stroke['transparent']).to be_nil - expect(stroke['type']).to eq('stroke') + type = TestData.fill_types + docx.elements[1..6].each_with_index do |el, i| + json = JSON.parse(el.nonempty_runs.first.text) + expect(type[i]).to eq(json['fill']['fill']['type']) + end end end diff --git a/spec/test_data.rb b/spec/test_data.rb index f32ba3e74..a1212f4c8 100644 --- a/spec/test_data.rb +++ b/spec/test_data.rb @@ -18,6 +18,10 @@ def self.number_formats '0.00E+00'].freeze end + def self.fill_types + %w[blipFill solid gradFill noFill pattFill gradFill] + end + # @return [Array] def self.libs %w[DjVuFile.dll