From 79cae21fecfc7d126608760e415863918a7f325e Mon Sep 17 00:00:00 2001 From: Yarosalv Maslov <148754748+Yar04ek@users.noreply.github.com> Date: Mon, 22 Jan 2024 10:56:05 +0100 Subject: [PATCH] [7.6.0][CDE] ApiStroke.ToJSON check (#1010) * feature: ApiStroke.ToJSON * ref: ApiStroke.ToJSON * feature: ApiStroke.ToJSON * feature: ApiStroke.ToJSON * ref: ApiStroke.ToJSON * ref: ApiStroke.ToJSON * ref: ApiStroke.ToJSON * ref: ApiStroke.ToJSON * ref: ApiStroke.ToJSON * ref: ApiStroke.ToJSON * ref: ApiStroke.ToJSON --- js/docx/smoke/api_stroke/to_json.js | 40 +++++++++++++++++++++++++++++ spec/docx/smoke/api_stroke_spec.rb | 9 +++++++ spec/test_data.rb | 6 +++++ 3 files changed, 55 insertions(+) create mode 100644 js/docx/smoke/api_stroke/to_json.js diff --git a/js/docx/smoke/api_stroke/to_json.js b/js/docx/smoke/api_stroke/to_json.js new file mode 100644 index 000000000..776cbc35b --- /dev/null +++ b/js/docx/smoke/api_stroke/to_json.js @@ -0,0 +1,40 @@ +builder.CreateFile("docx"); + 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"); + 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 a594cd3d8..4cdabcf04 100644 --- a/spec/docx/smoke/api_stroke_spec.rb +++ b/spec/docx/smoke/api_stroke_spec.rb @@ -6,4 +6,13 @@ docx = builder.build_and_parse('js/docx/smoke/api_stroke/get_class_type.js') expect(docx.elements[1].nonempty_runs.first.text).to eq('Class Type = stroke') end + + it 'ApiStroke | ToJSON method' do + docx = builder.build_and_parse('js/docx/smoke/api_stroke/to_json.js') + 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..400a16502 100644 --- a/spec/test_data.rb +++ b/spec/test_data.rb @@ -18,6 +18,12 @@ def self.number_formats '0.00E+00'].freeze end + # CDE fill types + # @return [Array] + def self.fill_types + %w[blipFill solid gradFill noFill pattFill gradFill] + end + # @return [Array] def self.libs %w[DjVuFile.dll