Skip to content

Commit

Permalink
ref: ApiStroke.ToJSON
Browse files Browse the repository at this point in the history
  • Loading branch information
Yar04ek authored and askonev committed Jan 19, 2024
1 parent f1b8c5e commit 013e012
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 34 deletions.
52 changes: 32 additions & 20 deletions js/docx/smoke/api_stroke/to_json.js
Original file line number Diff line number Diff line change
@@ -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();

19 changes: 5 additions & 14 deletions spec/docx/smoke/api_stroke_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 4 additions & 0 deletions spec/test_data.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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<String (frozen)>]
def self.libs
%w[DjVuFile.dll
Expand Down

0 comments on commit 013e012

Please sign in to comment.