Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
onlyoffice_core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boris Kocherov
onlyoffice_core
Commits
202b58fb
Commit
202b58fb
authored
Apr 28, 2017
by
ElenaSubbotina
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
OdfFormatWriter - fix after testing
parent
b2211507
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
333 additions
and
182 deletions
+333
-182
ASCOfficeOdfFileW/source/OdfFormat/Shapes/odf_shape_mapping.h
...fficeOdfFileW/source/OdfFormat/Shapes/odf_shape_mapping.h
+1
-1
ASCOfficeOdfFileW/source/OdfFormat/Shapes/oox_shapeArrows.h
ASCOfficeOdfFileW/source/OdfFormat/Shapes/oox_shapeArrows.h
+221
-150
ASCOfficeOdfFileW/source/OdfFormat/Shapes/oox_shapePrimitives.h
...iceOdfFileW/source/OdfFormat/Shapes/oox_shapePrimitives.h
+54
-1
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
+22
-14
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.h
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.h
+1
-2
ASCOfficeOdfFileW/source/OdfFormat/oox_shape_defines.cpp
ASCOfficeOdfFileW/source/OdfFormat/oox_shape_defines.cpp
+1
-1
ASCOfficeOdfFileW/source/OdfFormat/oox_shape_defines.h
ASCOfficeOdfFileW/source/OdfFormat/oox_shape_defines.h
+4
-1
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
+24
-7
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
+4
-4
X2tConverter/build/Qt/X2tConverter.pri
X2tConverter/build/Qt/X2tConverter.pri
+1
-1
No files found.
ASCOfficeOdfFileW/source/OdfFormat/Shapes/odf_shape_mapping.h
View file @
202b58fb
...
...
@@ -174,7 +174,7 @@ static const _sh_typ Shape_Types_Mapping[] = // index === OOX::Drawing::EShapeTy
{
L"octagon"
,
7
},
// shapetypeOctagon,
{
L"parallelogram"
,
7
},
// shapetypeParallelogram,
{
L"pentagon"
,
7
},
// shapetypePentagon,
{
L"
mso-spt100"
,
7
},
// shapetypePie,
{
L"
"
,
7
},
// shapetypePie,
{
L""
,
7
},
// shapetypePieWedge,
{
L""
,
7
},
// shapetypePlaque,
{
L""
,
7
},
// shapetypePlaqueTabs,
...
...
ASCOfficeOdfFileW/source/OdfFormat/Shapes/oox_shapeArrows.h
View file @
202b58fb
...
...
@@ -204,158 +204,229 @@ public:
{
odf_type_name
=
L"ooxml-circularArrow"
;
enhanced_path
=
L"M 832838 101692 A ?f91 ?f92 ?f93 ?f94 832838 101692 ?f88 ?f90 W ?f95 ?f96 ?f97 ?f98 832838 101692 ?f88 ?f90 L 1755675 1929758 1616897 1879250 1618409 1725100 1657499 1783381 A ?f138 ?f139 ?f140 ?f141 1657499 1783381 ?f135 ?f137 W ?f142 ?f143 ?f144 ?f145 1657499 1783381 ?f135 ?f137 Z N"
;
text_areas
=
L"?f48 ?f50 ?f49 ?f51"
;
glue_points
=
L"?f40 ?f41 ?f42 ?f43 ?f44 ?f45 ?f46 ?f47"
;
view_box
=
L"0 0 2165070 2165070"
;
enhanced_path
=
L"M ?f60 ?f61 L ?f172 ?f173 ?f54 ?f55 ?f174 ?f175 ?f159 ?f160 Z N"
;
text_areas
=
L"?f193 ?f195 ?f194 ?f196"
;
modifiers
=
L"5085 327528 8671970 1800502 5932"
;
add
(
L"f0"
,
L"10800000"
);
add
(
L"f1"
,
L"5400000"
);
add
(
L"f2"
,
L"left"
);
add
(
L"f3"
,
L"right"
);
add
(
L"f4"
,
L"top"
);
add
(
L"f5"
,
L"bottom"
);
add
(
L"f6"
,
L"?f5 - ?f4"
);
add
(
L"f7"
,
L"?f3 - ?f2"
);
add
(
L"f8"
,
L"5419351 / 1725033"
);
add
(
L"f9"
,
L"180"
);
add
(
L"f10"
,
L"?f7 / 2165070"
);
add
(
L"f11"
,
L"?f6 / 2165070"
);
add
(
L"f12"
,
L"1616897 - 1082535"
);
add
(
L"f13"
,
L"1879250 - 1082535"
);
add
(
L"f14"
,
L"sqrt(?f12 * ?f12 + ?f13 * ?f13 + 0 * 0)"
);
add
(
L"f15"
,
L"atan2(?f12, ?f13)"
);
add
(
L"f16"
,
L"?f15 + ?f1"
);
add
(
L"f17"
,
L"?f16 * ?f9 / ?f0"
);
add
(
L"f18"
,
L"0 - ?f17"
);
add
(
L"f19"
,
L"832838 - 1082535"
);
add
(
L"f20"
,
L"101692 - 1082535"
);
add
(
L"f21"
,
L"sqrt(?f19 * ?f19 + ?f20 * ?f20 + 0 * 0)"
);
add
(
L"f22"
,
L"atan2(?f19, ?f20)"
);
add
(
L"f23"
,
L"?f22 + ?f1"
);
add
(
L"f24"
,
L"?f23 * ?f9 / ?f0"
);
add
(
L"f25"
,
L"0 - ?f24"
);
add
(
L"f26"
,
L"1716572 - 1082535"
);
add
(
L"f27"
,
L"1871457 - 1082535"
);
add
(
L"f28"
,
L"sqrt(?f26 * ?f26 + ?f27 * ?f27 + 0 * 0)"
);
add
(
L"f29"
,
L"atan2(?f26, ?f27)"
);
add
(
L"f30"
,
L"?f29 + ?f1"
);
add
(
L"f31"
,
L"?f30 * ?f9 / ?f0"
);
add
(
L"f32"
,
L"0 - ?f31"
);
add
(
L"f33"
,
L"1618409 - 1082535"
);
add
(
L"f34"
,
L"1725100 - 1082535"
);
add
(
L"f35"
,
L"sqrt(?f33 * ?f33 + ?f34 * ?f34 + 0 * 0)"
);
add
(
L"f36"
,
L"atan2(?f33, ?f34)"
);
add
(
L"f37"
,
L"?f36 + ?f1"
);
add
(
L"f38"
,
L"?f37 * ?f9 / ?f0"
);
add
(
L"f39"
,
L"0 - ?f38"
);
add
(
L"f40"
,
L"845866 / ?f10"
);
add
(
L"f41"
,
L"152866 / ?f11"
);
add
(
L"f42"
,
L"1755675 / ?f10"
);
add
(
L"f43"
,
L"1929758 / ?f11"
);
add
(
L"f44"
,
L"1616897 / ?f10"
);
add
(
L"f45"
,
L"1879250 / ?f11"
);
add
(
L"f46"
,
L"1618409 / ?f10"
);
add
(
L"f47"
,
L"1725100 / ?f11"
);
add
(
L"f48"
,
L"366853 / ?f10"
);
add
(
L"f49"
,
L"1798217 / ?f10"
);
add
(
L"f50"
,
L"366853 / ?f11"
);
add
(
L"f51"
,
L"1798217 / ?f11"
);
add
(
L"f52"
,
L"21550000 - 9329679"
);
add
(
L"f53"
,
L"if(?f52, 9329679, 21550000)"
);
add
(
L"f54"
,
L"-21550000 - ?f53"
);
add
(
L"f55"
,
L"if(?f54, -21550000, ?f53)"
);
add
(
L"f56"
,
L"15343043 + ?f55"
);
add
(
L"f57"
,
L"15343043 + ?f1"
);
add
(
L"f58"
,
L"?f57 * ?f8 / ?f0"
);
add
(
L"f59"
,
L"0 - ?f58"
);
add
(
L"f60"
,
L"cos(?f59)"
);
add
(
L"f61"
,
L"0 - ?f60"
);
add
(
L"f62"
,
L"?f61 * 1012127"
);
add
(
L"f63"
,
L"sin(?f59)"
);
add
(
L"f64"
,
L"0 - ?f63"
);
add
(
L"f65"
,
L"?f64 * 1012127"
);
add
(
L"f66"
,
L"sqrt(?f62 * ?f62 + ?f65 * ?f65 + 0 * 0)"
);
add
(
L"f67"
,
L"1012127 * 1012127 / ?f66"
);
add
(
L"f68"
,
L"?f64 * ?f67"
);
add
(
L"f69"
,
L"832838 - ?f68"
);
add
(
L"f70"
,
L"?f61 * ?f67"
);
add
(
L"f71"
,
L"101692 - ?f70"
);
add
(
L"f72"
,
L"?f69 - 1012127"
);
add
(
L"f73"
,
L"?f71 - 1012127"
);
add
(
L"f74"
,
L"?f69 + 1012127"
);
add
(
L"f75"
,
L"?f71 + 1012127"
);
add
(
L"f76"
,
L"?f56 + ?f1"
);
add
(
L"f77"
,
L"?f76 * ?f8 / ?f0"
);
add
(
L"f78"
,
L"0 - ?f77"
);
add
(
L"f79"
,
L"cos(?f78)"
);
add
(
L"f80"
,
L"0 - ?f79"
);
add
(
L"f81"
,
L"?f80 * 1012127"
);
add
(
L"f82"
,
L"sin(?f78)"
);
add
(
L"f83"
,
L"0 - ?f82"
);
add
(
L"f84"
,
L"?f83 * 1012127"
);
add
(
L"f85"
,
L"sqrt(?f81 * ?f81 + ?f84 * ?f84 + 0 * 0)"
);
add
(
L"f86"
,
L"1012127 * 1012127 / ?f85"
);
add
(
L"f87"
,
L"?f83 * ?f86"
);
add
(
L"f88"
,
L"?f69 + ?f87"
);
add
(
L"f89"
,
L"?f80 * ?f86"
);
add
(
L"f90"
,
L"?f71 + ?f89"
);
add
(
L"f91"
,
L"if(?f55, 832838, ?f72)"
);
add
(
L"f92"
,
L"if(?f55, 101692, ?f73)"
);
add
(
L"f93"
,
L"if(?f55, 832838, ?f74)"
);
add
(
L"f94"
,
L"if(?f55, 101692, ?f75)"
);
add
(
L"f95"
,
L"if(?f55, ?f72, ?f88)"
);
add
(
L"f96"
,
L"if(?f55, ?f73, ?f90)"
);
add
(
L"f97"
,
L"if(?f55, ?f74, ?f88)"
);
add
(
L"f98"
,
L"if(?f55, ?f75, ?f90)"
);
add
(
L"f99"
,
L"21550000 - -9295060"
);
add
(
L"f100"
,
L"if(?f99, -9295060, 21550000)"
);
add
(
L"f101"
,
L"-21550000 - ?f100"
);
add
(
L"f102"
,
L"if(?f101, -21550000, ?f100)"
);
add
(
L"f103"
,
L"3038103 + ?f102"
);
add
(
L"f104"
,
L"3038103 + ?f1"
);
add
(
L"f105"
,
L"?f104 * ?f8 / ?f0"
);
add
(
L"f106"
,
L"0 - ?f105"
);
add
(
L"f107"
,
L"cos(?f106)"
);
add
(
L"f108"
,
L"0 - ?f107"
);
add
(
L"f109"
,
L"?f108 * 906515"
);
add
(
L"f110"
,
L"sin(?f106)"
);
add
(
L"f111"
,
L"0 - ?f110"
);
add
(
L"f112"
,
L"?f111 * 906515"
);
add
(
L"f113"
,
L"sqrt(?f109 * ?f109 + ?f112 * ?f112 + 0 * 0)"
);
add
(
L"f114"
,
L"906515 * 906515 / ?f113"
);
add
(
L"f115"
,
L"?f111 * ?f114"
);
add
(
L"f116"
,
L"1657499 - ?f115"
);
add
(
L"f117"
,
L"?f108 * ?f114"
);
add
(
L"f118"
,
L"1783381 - ?f117"
);
add
(
L"f119"
,
L"?f116 - 906515"
);
add
(
L"f120"
,
L"?f118 - 906515"
);
add
(
L"f121"
,
L"?f116 + 906515"
);
add
(
L"f122"
,
L"?f118 + 906515"
);
add
(
L"f123"
,
L"?f103 + ?f1"
);
add
(
L"f124"
,
L"?f123 * ?f8 / ?f0"
);
add
(
L"f125"
,
L"0 - ?f124"
);
add
(
L"f126"
,
L"cos(?f125)"
);
add
(
L"f127"
,
L"0 - ?f126"
);
add
(
L"f128"
,
L"?f127 * 906515"
);
add
(
L"f129"
,
L"sin(?f125)"
);
add
(
L"f130"
,
L"0 - ?f129"
);
add
(
L"f131"
,
L"?f130 * 906515"
);
add
(
L"f132"
,
L"sqrt(?f128 * ?f128 + ?f131 * ?f131 + 0 * 0)"
);
add
(
L"f133"
,
L"906515 * 906515 / ?f132"
);
add
(
L"f134"
,
L"?f130 * ?f133"
);
add
(
L"f135"
,
L"?f116 + ?f134"
);
add
(
L"f136"
,
L"?f127 * ?f133"
);
add
(
L"f137"
,
L"?f118 + ?f136"
);
add
(
L"f138"
,
L"if(?f102, 1657499, ?f119)"
);
add
(
L"f139"
,
L"if(?f102, 1783381, ?f120)"
);
add
(
L"f140"
,
L"if(?f102, 1657499, ?f121)"
);
add
(
L"f141"
,
L"if(?f102, 1783381, ?f122)"
);
add
(
L"f142"
,
L"if(?f102, ?f119, ?f135)"
);
add
(
L"f143"
,
L"if(?f102, ?f120, ?f137)"
);
add
(
L"f144"
,
L"if(?f102, ?f121, ?f135)"
);
add
(
L"f145"
,
L"if(?f102, ?f122, ?f137)"
);
add
(
L"f0"
,
L"if(0-$4 ,0,if(25000-$4 ,$4 ,25000))"
);
add
(
L"f1"
,
L"?f0 *2/1"
);
add
(
L"f2"
,
L"if(0-$0 ,0,if(?f1 -$0 ,$0 ,?f1 ))"
);
add
(
L"f3"
,
L"if(1-$2 ,1,if(21599999-$2 ,$2 ,21599999))"
);
add
(
L"f4"
,
L"if(0-$3 ,0,if(21599999-$3 ,$3 ,21599999))"
);
add
(
L"f5"
,
L"min(logwidth,logheight)"
);
add
(
L"f6"
,
L"?f5 *?f2 /100000"
);
add
(
L"f7"
,
L"?f5 *?f0 /100000"
);
add
(
L"f8"
,
L"?f6 *1/2"
);
add
(
L"f9"
,
L"logwidth/2"
);
add
(
L"f10"
,
L"?f9 +?f8 -?f7 "
);
add
(
L"f11"
,
L"logheight/2"
);
add
(
L"f12"
,
L"?f11 +?f8 -?f7 "
);
add
(
L"f13"
,
L"?f10 +0-?f6 "
);
add
(
L"f14"
,
L"?f12 +0-?f6 "
);
add
(
L"f15"
,
L"?f13 +?f8 -0"
);
add
(
L"f16"
,
L"?f14 +?f8 -0"
);
add
(
L"f17"
,
L"?f15 *sin(pi*(?f3 )/10800000)"
);
add
(
L"f18"
,
L"?f16 *cos(pi*(?f3 )/10800000)"
);
add
(
L"f19"
,
L"?f15 *(cos(atan2(?f17 ,?f18 )))"
);
add
(
L"f20"
,
L"?f16 *(sin(atan2(?f17 ,?f18 )))"
);
add
(
L"f21"
,
L"logwidth/2"
);
add
(
L"f22"
,
L"?f21 +?f19 -0"
);
add
(
L"f23"
,
L"logheight/2"
);
add
(
L"f24"
,
L"?f23 +?f20 -0"
);
add
(
L"f25"
,
L"min(?f13 ,?f14 )"
);
add
(
L"f26"
,
L"?f19 *?f19 /1"
);
add
(
L"f27"
,
L"?f20 *?f20 /1"
);
add
(
L"f28"
,
L"?f25 *?f25 /1"
);
add
(
L"f29"
,
L"?f26 +0-?f28 "
);
add
(
L"f30"
,
L"?f27 +0-?f28 "
);
add
(
L"f31"
,
L"?f29 *?f30 /?f26 "
);
add
(
L"f32"
,
L"?f31 *1/?f27 "
);
add
(
L"f33"
,
L"1+0-?f32 "
);
add
(
L"f34"
,
L"sqrt(?f33 )"
);
add
(
L"f35"
,
L"?f29 *1/?f19 "
);
add
(
L"f36"
,
L"?f35 *1/?f20 "
);
add
(
L"f37"
,
L"(1+?f34 )/?f36 "
);
add
(
L"f38"
,
L"(10800000*atan2(?f37 ,1))/pi"
);
add
(
L"f39"
,
L"?f38 +21600000-0"
);
add
(
L"f40"
,
L"if(?f38 ,?f38 ,?f39 )"
);
add
(
L"f41"
,
L"?f40 +0-?f3 "
);
add
(
L"f42"
,
L"?f41 +21600000-0"
);
add
(
L"f43"
,
L"if(?f41 ,?f41 ,?f42 )"
);
add
(
L"f44"
,
L"?f43 +0-10800000"
);
add
(
L"f45"
,
L"?f43 +0-21600000"
);
add
(
L"f46"
,
L"if(?f44 ,?f45 ,?f43 )"
);
add
(
L"f47"
,
L"abs(?f46 )"
);
add
(
L"f48"
,
L"if(0-$1 ,0,if(?f47 -$1 ,$1 ,?f47 ))"
);
add
(
L"f49"
,
L"?f3 +?f48 -0"
);
add
(
L"f50"
,
L"?f15 *sin(pi*(?f49 )/10800000)"
);
add
(
L"f51"
,
L"?f16 *cos(pi*(?f49 )/10800000)"
);
add
(
L"f52"
,
L"?f15 *(cos(atan2(?f50 ,?f51 )))"
);
add
(
L"f53"
,
L"?f16 *(sin(atan2(?f50 ,?f51 )))"
);
add
(
L"f54"
,
L"?f21 +?f52 -0"
);
add
(
L"f55"
,
L"?f23 +?f53 -0"
);
add
(
L"f56"
,
L"?f10 *sin(pi*(?f4 )/10800000)"
);
add
(
L"f57"
,
L"?f12 *cos(pi*(?f4 )/10800000)"
);
add
(
L"f58"
,
L"?f10 *(cos(atan2(?f56 ,?f57 )))"
);
add
(
L"f59"
,
L"?f12 *(sin(atan2(?f56 ,?f57 )))"
);
add
(
L"f60"
,
L"?f21 +?f58 -0"
);
add
(
L"f61"
,
L"?f23 +?f59 -0"
);
add
(
L"f62"
,
L"?f7 *cos(pi*(?f49 )/10800000)"
);
add
(
L"f63"
,
L"?f7 *sin(pi*(?f49 )/10800000)"
);
add
(
L"f64"
,
L"?f22 +?f62 -0"
);
add
(
L"f65"
,
L"?f24 +?f63 -0"
);
add
(
L"f66"
,
L"?f7 *cos(pi*(?f49 )/10800000)"
);
add
(
L"f67"
,
L"?f7 *sin(pi*(?f49 )/10800000)"
);
add
(
L"f68"
,
L"?f22 +0-?f66 "
);
add
(
L"f69"
,
L"?f24 +0-?f67 "
);
add
(
L"f70"
,
L"?f68 +0-?f21 "
);
add
(
L"f71"
,
L"?f69 +0-?f23 "
);
add
(
L"f72"
,
L"?f64 +0-?f21 "
);
add
(
L"f73"
,
L"?f65 +0-?f23 "
);
add
(
L"f74"
,
L"min(?f10 ,?f12 )"
);
add
(
L"f75"
,
L"?f70 *?f74 /?f10 "
);
add
(
L"f76"
,
L"?f71 *?f74 /?f12 "
);
add
(
L"f77"
,
L"?f72 *?f74 /?f10 "
);
add
(
L"f78"
,
L"?f73 *?f74 /?f12 "
);
add
(
L"f79"
,
L"?f77 +0-?f75 "
);
add
(
L"f80"
,
L"?f78 +0-?f76 "
);
add
(
L"f81"
,
L"sqrt(?f79 *?f79 +?f80 *?f80 +0*0)"
);
add
(
L"f82"
,
L"?f75 *?f78 /1"
);
add
(
L"f83"
,
L"?f77 *?f76 /1"
);
add
(
L"f84"
,
L"?f82 +0-?f83 "
);
add
(
L"f85"
,
L"?f74 *?f74 /1"
);
add
(
L"f86"
,
L"?f81 *?f81 /1"
);
add
(
L"f87"
,
L"?f85 *?f86 /1"
);
add
(
L"f88"
,
L"?f84 *?f84 /1"
);
add
(
L"f89"
,
L"?f87 +0-?f88 "
);
add
(
L"f90"
,
L"max(?f89 ,0)"
);
add
(
L"f91"
,
L"sqrt(?f90 )"
);
add
(
L"f92"
,
L"?f80 *-1/1"
);
add
(
L"f93"
,
L"if(?f92 ,-1,1)"
);
add
(
L"f94"
,
L"?f93 *?f79 /1"
);
add
(
L"f95"
,
L"?f94 *?f91 /1"
);
add
(
L"f96"
,
L"?f84 *?f80 /1"
);
add
(
L"f97"
,
L"(?f96 +?f95 )/?f86 "
);
add
(
L"f98"
,
L"?f96 +0-?f95 "
);
add
(
L"f99"
,
L"?f98 *1/?f86 "
);
add
(
L"f100"
,
L"abs(?f80 )"
);
add
(
L"f101"
,
L"?f100 *?f91 /1"
);
add
(
L"f102"
,
L"?f84 *?f79 /-1"
);
add
(
L"f103"
,
L"(?f102 +?f101 )/?f86 "
);
add
(
L"f104"
,
L"?f102 +0-?f101 "
);
add
(
L"f105"
,
L"?f104 *1/?f86 "
);
add
(
L"f106"
,
L"?f77 +0-?f97 "
);
add
(
L"f107"
,
L"?f77 +0-?f99 "
);
add
(
L"f108"
,
L"?f78 +0-?f103 "
);
add
(
L"f109"
,
L"?f78 +0-?f105 "
);
add
(
L"f110"
,
L"sqrt(?f106 *?f106 +?f108 *?f108 +0*0)"
);
add
(
L"f111"
,
L"sqrt(?f107 *?f107 +?f109 *?f109 +0*0)"
);
add
(
L"f112"
,
L"?f111 +0-?f110 "
);
add
(
L"f113"
,
L"if(?f112 ,?f97 ,?f99 )"
);
add
(
L"f114"
,
L"if(?f112 ,?f103 ,?f105 )"
);
add
(
L"f115"
,
L"?f113 *?f10 /?f74 "
);
add
(
L"f116"
,
L"?f114 *?f12 /?f74 "
);
add
(
L"f117"
,
L"?f21 +?f115 -0"
);
add
(
L"f118"
,
L"?f23 +?f116 -0"
);
add
(
L"f119"
,
L"?f70 *?f25 /?f13 "
);
add
(
L"f120"
,
L"?f71 *?f25 /?f14 "
);
add
(
L"f121"
,
L"?f72 *?f25 /?f13 "
);
add
(
L"f122"
,
L"?f73 *?f25 /?f14 "
);
add
(
L"f123"
,
L"?f121 +0-?f119 "
);
add
(
L"f124"
,
L"?f122 +0-?f120 "
);
add
(
L"f125"
,
L"sqrt(?f123 *?f123 +?f124 *?f124 +0*0)"
);
add
(
L"f126"
,
L"?f119 *?f122 /1"
);
add
(
L"f127"
,
L"?f121 *?f120 /1"
);
add
(
L"f128"
,
L"?f126 +0-?f127 "
);
add
(
L"f129"
,
L"?f25 *?f25 /1"
);
add
(
L"f130"
,
L"?f125 *?f125 /1"
);
add
(
L"f131"
,
L"?f129 *?f130 /1"
);
add
(
L"f132"
,
L"?f128 *?f128 /1"
);
add
(
L"f133"
,
L"?f131 +0-?f132 "
);
add
(
L"f134"
,
L"max(?f133 ,0)"
);
add
(
L"f135"
,
L"sqrt(?f134 )"
);
add
(
L"f136"
,
L"?f93 *?f123 /1"
);
add
(
L"f137"
,
L"?f136 *?f135 /1"
);
add
(
L"f138"
,
L"?f128 *?f124 /1"
);
add
(
L"f139"
,
L"(?f138 +?f137 )/?f130 "
);
add
(
L"f140"
,
L"?f138 +0-?f137 "
);
add
(
L"f141"
,
L"?f140 *1/?f130 "
);
add
(
L"f142"
,
L"abs(?f124 )"
);
add
(
L"f143"
,
L"?f142 *?f135 /1"
);
add
(
L"f144"
,
L"?f128 *?f123 /-1"
);
add
(
L"f145"
,
L"(?f144 +?f143 )/?f130 "
);
add
(
L"f146"
,
L"?f144 +0-?f143 "
);
add
(
L"f147"
,
L"?f146 *1/?f130 "
);
add
(
L"f148"
,
L"?f119 +0-?f139 "
);
add
(
L"f149"
,
L"?f119 +0-?f141 "
);
add
(
L"f150"
,
L"?f120 +0-?f145 "
);
add
(
L"f151"
,
L"?f120 +0-?f147 "
);
add
(
L"f152"
,
L"sqrt(?f148 *?f148 +?f150 *?f150 +0*0)"
);
add
(
L"f153"
,
L"sqrt(?f149 *?f149 +?f151 *?f151 +0*0)"
);
add
(
L"f154"
,
L"?f153 +0-?f152 "
);
add
(
L"f155"
,
L"if(?f154 ,?f139 ,?f141 )"
);
add
(
L"f156"
,
L"if(?f154 ,?f145 ,?f147 )"
);
add
(
L"f157"
,
L"?f155 *?f13 /?f25 "
);
add
(
L"f158"
,
L"?f156 *?f14 /?f25 "
);
add
(
L"f159"
,
L"?f21 +?f157 -0"
);
add
(
L"f160"
,
L"?f23 +?f158 -0"
);
add
(
L"f161"
,
L"(10800000*atan2(?f158 ,?f157 ))/pi"
);
add
(
L"f162"
,
L"?f161 +21600000-0"
);
add
(
L"f163"
,
L"if(?f161 ,?f161 ,?f162 )"
);
add
(
L"f164"
,
L"?f4 +0-?f163 "
);
add
(
L"f165"
,
L"?f164 +0-21600000"
);
add
(
L"f166"
,
L"if(?f164 ,?f165 ,?f164 )"
);
add
(
L"f167"
,
L"?f117 +0-?f159 "
);
add
(
L"f168"
,
L"?f118 +0-?f160 "
);
add
(
L"f169"
,
L"sqrt(?f167 *?f167 +?f168 *?f168 +0*0)"
);
add
(
L"f170"
,
L"?f169 *1/2"
);
add
(
L"f171"
,
L"?f170 +0-?f7 "
);
add
(
L"f172"
,
L"if(?f171 ,?f117 ,?f64 )"
);
add
(
L"f173"
,
L"if(?f171 ,?f118 ,?f65 )"
);
add
(
L"f174"
,
L"if(?f171 ,?f159 ,?f68 )"
);
add
(
L"f175"
,
L"if(?f171 ,?f160 ,?f69 )"
);
add
(
L"f176"
,
L"(10800000*atan2(?f116 ,?f115 ))/pi"
);
add
(
L"f177"
,
L"?f176 +21600000-0"
);
add
(
L"f178"
,
L"if(?f176 ,?f176 ,?f177 )"
);
add
(
L"f179"
,
L"?f178 +0-?f4 "
);
add
(
L"f180"
,
L"?f179 +21600000-0"
);
add
(
L"f181"
,
L"if(?f179 ,?f179 ,?f180 )"
);
add
(
L"f182"
,
L"?f15 *sin(pi*(?f4 )/10800000)"
);
add
(
L"f183"
,
L"?f16 *cos(pi*(?f4 )/10800000)"
);
add
(
L"f184"
,
L"?f15 *(cos(atan2(?f182 ,?f183 )))"
);
add
(
L"f185"
,
L"?f16 *(sin(atan2(?f182 ,?f183 )))"
);
add
(
L"f186"
,
L"?f21 +?f184 -0"
);
add
(
L"f187"
,
L"?f23 +?f185 -0"
);
add
(
L"f188"
,
L"?f4 +0-5400000"
);
add
(
L"f189"
,
L"?f49 +5400000-0"
);
add
(
L"f190"
,
L"?f49 +10800000-0"
);
add
(
L"f191"
,
L"?f10 *cos(pi*(2700000)/10800000)"
);
add
(
L"f192"
,
L"?f12 *sin(pi*(2700000)/10800000)"
);
add
(
L"f193"
,
L"?f21 +0-?f191 "
);
add
(
L"f194"
,
L"?f21 +?f191 -0"
);
add
(
L"f195"
,
L"?f23 +0-?f192 "
);
add
(
L"f196"
,
L"?f23 +?f192 -0"
);
add
(
L"f197"
,
L"(?f4 )/60000.0"
);
add
(
L"f198"
,
L"(?f181 )/60000.0"
);
add
(
L"f199"
,
L"(?f163 )/60000.0"
);
add
(
L"f200"
,
L"(?f166 )/60000.0"
);
/////////////////////////////////////////////////////////
_handle
h
;
h
.
position
=
L"?f54 ?f55"
;
handles
.
push_back
(
h
);
h
.
position
=
L"?f60 ?f61"
;
handles
.
push_back
(
h
);
h
.
position
=
L"?f117 ?f118"
;
h
.
r_minimum
=
L"0"
;
h
.
r_maximum
=
L"?f1"
;
handles
.
push_back
(
h
);
h
.
position
=
L"?f68 ?f69"
;
h
.
r_minimum
=
L"0"
;
h
.
r_maximum
=
L"25000"
;
handles
.
push_back
(
h
);
}
};
}
\ No newline at end of file
ASCOfficeOdfFileW/source/OdfFormat/Shapes/oox_shapePrimitives.h
View file @
202b58fb
...
...
@@ -43,7 +43,7 @@
// shapetypeHalfFrame,
// shapetypeHeptagon,
// shapetypeNonIsoscelesTrapezoid,
// shapetypePie,
//
+
shapetypePie,
//+ shapetypePieWedge,
//+ shapetypePlaque,
// shapetypePlaqueTabs,
...
...
@@ -785,4 +785,57 @@ public:
/////////////////////////////////////////////////////////
}
};
class
oox_shape_Pie
:
public
oox_shape
{
public:
oox_shape_Pie
()
{
odf_type_name
=
L"ooxml-pie"
;
enhanced_path
=
L"M ?f12 ?f14 G ?f5 ?f7 ?f29 ?f30 L ?f11 ?f13 Z N"
;
text_areas
=
L"?f23 ?f24 ?f25 ?f26"
;
view_box
=
L"0 0 0 0"
;
modifiers
=
L"9000000 16200000"
;
add
(
L"f0"
,
L"if(0-$0 ,0,if(21599999-$0 ,$0 ,21599999))"
);
add
(
L"f1"
,
L"if(0-$1 ,0,if(21599999-$1 ,$1 ,21599999))"
);
add
(
L"f2"
,
L"?f1 +0-?f0 "
);
add
(
L"f3"
,
L"?f2 +21600000-0"
);
add
(
L"f4"
,
L"if(?f2 ,?f2 ,?f3 )"
);
add
(
L"f5"
,
L"logwidth/2"
);
add
(
L"f6"
,
L"?f5 *sin(pi*(?f0 )/10800000)"
);
add
(
L"f7"
,
L"logheight/2"
);
add
(
L"f8"
,
L"?f7 *cos(pi*(?f0 )/10800000)"
);
add
(
L"f9"
,
L"?f5 *(cos(atan2(?f6 ,?f8 )))"
);
add
(
L"f10"
,
L"?f7 *(sin(atan2(?f6 ,?f8 )))"
);
add
(
L"f11"
,
L"logwidth/2"
);
add
(
L"f12"
,
L"?f11 +?f9 -0"
);
add
(
L"f13"
,
L"logheight/2"
);
add
(
L"f14"
,
L"?f13 +?f10 -0"
);
add
(
L"f15"
,
L"?f5 *sin(pi*(?f1 )/10800000)"
);
add
(
L"f16"
,
L"?f7 *cos(pi*(?f1 )/10800000)"
);
add
(
L"f17"
,
L"?f5 *(cos(atan2(?f15 ,?f16 )))"
);
add
(
L"f18"
,
L"?f7 *(sin(atan2(?f15 ,?f16 )))"
);
add
(
L"f19"
,
L"?f11 +?f17 -0"
);
add
(
L"f20"
,
L"?f13 +?f18 -0"
);
add
(
L"f21"
,
L"?f5 *cos(pi*(2700000)/10800000)"
);
add
(
L"f22"
,
L"?f7 *sin(pi*(2700000)/10800000)"
);
add
(
L"f23"
,
L"?f11 +0-?f21 "
);
add
(
L"f24"
,
L"?f11 +?f21 -0"
);
add
(
L"f25"
,
L"?f13 +0-?f22 "
);
add
(
L"f26"
,
L"?f13 +?f22 -0"
);
add
(
L"f27"
,
L"logwidth"
);
add
(
L"f28"
,
L"logheight"
);
add
(
L"f29"
,
L"(?f0 )/60000.0"
);
add
(
L"f30"
,
L"(?f4 )/60000.0"
);
/////////////////////////////////////////////////////////
_handle
h
;
h
.
position
=
L"?f12 ?f14"
;
handles
.
push_back
(
h
);
h
.
position
=
L"?f19 ?f20"
;
handles
.
push_back
(
h
);
}
};
}
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
View file @
202b58fb
...
...
@@ -353,6 +353,10 @@ void odf_drawing_context::check_anchor()
set_vertical_pos
(
0
);
}
}
int
odf_drawing_context
::
get_group_level
()
{
return
impl_
->
current_level_
.
size
();
}
void
odf_drawing_context
::
start_group
()
{
office_element_ptr
group_elm
=
impl_
->
create_draw_element
(
5000
);
...
...
@@ -849,7 +853,7 @@ void odf_drawing_context::end_shape()
draw_path
*
path
=
dynamic_cast
<
draw_path
*>
(
impl_
->
current_drawing_state_
.
elements_
[
0
].
elm
.
get
());
if
(
path
)
{
if
(
impl_
->
current_drawing_state_
.
view_box_
.
length
()
<
1
&&
impl_
->
current_drawing_state_
.
svg_width_
&&
impl_
->
current_drawing_state_
.
svg_height_
)
if
(
impl_
->
current_drawing_state_
.
view_box_
.
empty
()
&&
impl_
->
current_drawing_state_
.
svg_width_
&&
impl_
->
current_drawing_state_
.
svg_height_
)
set_viewBox
(
impl_
->
current_drawing_state_
.
svg_width_
->
get_value_unit
(
length
::
cm
)
*
1000
,
impl_
->
current_drawing_state_
.
svg_height_
->
get_value_unit
(
length
::
cm
)
*
1000
);
...
...
@@ -958,7 +962,11 @@ void odf_drawing_context::end_shape()
if
(
shape_define
)
{
enhanced
->
svg_viewbox_
=
shape_define
->
view_box
;
if
(
impl_
->
current_drawing_state_
.
oox_shape_
&&
impl_
->
current_drawing_state_
.
oox_shape_
->
view_box
)
enhanced
->
svg_viewbox_
=
impl_
->
current_drawing_state_
.
oox_shape_
->
view_box
;
else
enhanced
->
svg_viewbox_
=
shape_define
->
view_box
;
enhanced
->
draw_enhanced_geometry_attlist_
.
draw_type_
=
shape_define
->
odf_type_name
;
enhanced
->
draw_enhanced_geometry_attlist_
.
draw_text_areas_
=
shape_define
->
text_areas
;
...
...
@@ -1004,6 +1012,9 @@ void odf_drawing_context::end_shape()
if
(
shape_define
->
handles
[
i
].
y_maximum
)
h
->
draw_handle_attlist_
.
draw_handle_range_y_maximum_
=
*
shape_define
->
handles
[
i
].
y_maximum
;
if
(
shape_define
->
handles
[
i
].
x_minimum
)
h
->
draw_handle_attlist_
.
draw_handle_range_x_minimum_
=
*
shape_define
->
handles
[
i
].
x_minimum
;
if
(
shape_define
->
handles
[
i
].
x_maximum
)
h
->
draw_handle_attlist_
.
draw_handle_range_x_maximum_
=
*
shape_define
->
handles
[
i
].
x_maximum
;
if
(
shape_define
->
handles
[
i
].
r_maximum
)
h
->
draw_handle_attlist_
.
draw_handle_radius_range_maximum_
=
*
shape_define
->
handles
[
i
].
r_maximum
;
if
(
shape_define
->
handles
[
i
].
r_minimum
)
h
->
draw_handle_attlist_
.
draw_handle_radius_range_minimum_
=
*
shape_define
->
handles
[
i
].
r_minimum
;
}
end_element
();
}
...
...
@@ -1509,6 +1520,8 @@ void odf_drawing_context::set_viewBox (double W, double H)
if
(
impl_
->
current_drawing_state_
.
oox_shape_
)
{
impl_
->
current_drawing_state_
.
oox_shape_
->
view_box
=
impl_
->
current_drawing_state_
.
view_box_
;
if
(
impl_
->
current_drawing_state_
.
oox_shape_
->
sub_view_size
)
impl_
->
current_drawing_state_
.
oox_shape_
->
sub_view_size
=
*
impl_
->
current_drawing_state_
.
oox_shape_
->
sub_view_size
+
L" "
+
std
::
to_wstring
((
int
)
W
)
+
L" "
+
std
::
to_wstring
((
int
)
H
);
else
...
...
@@ -2102,17 +2115,15 @@ void odf_drawing_context::set_textarea_wrap(bool Val)
impl_
->
current_graphic_properties
->
fo_wrap_option_
=
wrap_option
(
wrap_option
::
NoWrap
);
}
void
odf_drawing_context
::
set_textarea_font
(
std
::
wstring
&
latin
,
std
::
wstring
&
cs
,
std
::
wstring
&
ea
)
{
if
(
impl_
->
current_drawing_state_
.
elements_
.
empty
())
return
;
if
(
!
impl_
->
current_text_properties
)
odf_style_state_ptr
style_state
=
impl_
->
styles_context_
->
last_state
(
style_family
::
Paragraph
);
if
(
style_state
)
{
odf_style_state_ptr
style_state
=
impl_
->
styles_context_
->
last_state
(
style_family
::
Paragraph
);
if
(
style_state
)
{
impl_
->
current_text_properties
=
style_state
->
get_text_properties
();
}
impl_
->
current_text_properties
=
style_state
->
get_text_properties
();
}
if
(
!
impl_
->
current_text_properties
)
return
;
...
...
@@ -2126,13 +2137,10 @@ void odf_drawing_context::set_textarea_fontcolor(std::wstring hexColor)
{
if
(
impl_
->
current_drawing_state_
.
elements_
.
empty
())
return
;
if
(
!
impl_
->
current_text_properties
)
odf_style_state_ptr
style_state
=
impl_
->
styles_context_
->
last_state
(
style_family
::
Paragraph
);
if
(
style_state
)
{
odf_style_state_ptr
style_state
=
impl_
->
styles_context_
->
last_state
(
style_family
::
Paragraph
);
if
(
style_state
)
{
impl_
->
current_text_properties
=
style_state
->
get_text_properties
();
}
impl_
->
current_text_properties
=
style_state
->
get_text_properties
();
}
if
(
!
impl_
->
current_text_properties
)
return
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.h
View file @
202b58fb
...
...
@@ -104,6 +104,7 @@ public:
void
end_drawing
();
void
end_drawing_background
(
odf_types
::
common_draw_fill_attlist
&
common_draw_attlist
);
int
get_group_level
();
void
start_group
();
void
set_group_flip_H
(
bool
bVal
);
void
set_group_flip_V
(
bool
bVal
);
...
...
@@ -166,8 +167,6 @@ public:
void
finalize
(
office_element_ptr
&
root_elm
);
///////////////////////////////////////////////////////////////////////////////////////
void
get_position
(
_CP_OPT
(
double
)
&
x_pt
,
_CP_OPT
(
double
)
&
y_pt
);
void
set_position
(
_CP_OPT
(
double
)
&
x_pt
,
_CP_OPT
(
double
)
&
y_pt
);
void
set_position_line
(
_CP_OPT
(
double
)
&
x_pt
,
_CP_OPT
(
double
)
&
y_pt
,
_CP_OPT
(
double
)
&
x1_pt
,
_CP_OPT
(
double
)
&
y1_pt
);
...
...
ASCOfficeOdfFileW/source/OdfFormat/oox_shape_defines.cpp
View file @
202b58fb
...
...
@@ -53,7 +53,6 @@ namespace cpdoccore
oox_shape
::
oox_shape
()
{
odf_type_name
=
L"ooxml-non-primitive"
;
view_box
=
L"0 0 0 0"
;
}
oox_shape_ptr
oox_shape
::
create
(
int
ooxPrstGeomType
)
...
...
@@ -86,6 +85,7 @@ oox_shape_ptr oox_shape::create(int ooxPrstGeomType)
case
SimpleTypes
:
:
shapetypePlaque
:
return
boost
::
make_shared
<
oox_shape_Plaque
>
();
case
SimpleTypes
:
:
shapetypeDoubleWave
:
return
boost
::
make_shared
<
oox_shape_DoubleWave
>
();
case
SimpleTypes
:
:
shapetypePieWedge
:
return
boost
::
make_shared
<
oox_shape_PieWedge
>
();
case
SimpleTypes
:
:
shapetypePie
:
return
boost
::
make_shared
<
oox_shape_Pie
>
();
...
...
ASCOfficeOdfFileW/source/OdfFormat/oox_shape_defines.h
View file @
202b58fb
...
...
@@ -64,6 +64,8 @@ namespace cpdoccore
_CP_OPT
(
std
::
wstring
)
y_maximum
;
_CP_OPT
(
std
::
wstring
)
x_minimum
;
_CP_OPT
(
std
::
wstring
)
x_maximum
;
_CP_OPT
(
std
::
wstring
)
r_minimum
;
_CP_OPT
(
std
::
wstring
)
r_maximum
;
};
void
add
(
std
::
wstring
name
,
std
::
wstring
frmla
)
...
...
@@ -78,7 +80,8 @@ namespace cpdoccore
std
::
wstring
enhanced_path
;
std
::
wstring
modifiers
;
std
::
wstring
text_areas
;
std
::
wstring
view_box
;
_CP_OPT
(
std
::
wstring
)
view_box
;
_CP_OPT
(
std
::
wstring
)
sub_view_size
;
_CP_OPT
(
std
::
wstring
)
glue_points
;
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
View file @
202b58fb
...
...
@@ -358,7 +358,7 @@ void OoxConverter::convert(PPTX::Logic::GrpSpPr *oox_grpSpPr)
odf_context
()
->
drawing_context
()
->
set_group_size
(
cx
,
cy
,
ch_cx
,
ch_cy
);
_CP_OPT
(
double
)
x
,
y
,
ch_x
,
ch_y
;
_CP_OPT
(
double
)
x
,
y
,
ch_x
,
ch_y
,
ext_x
,
ext_y
;
if
(
oox_grpSpPr
->
xfrm
->
offX
.
IsInit
())
x
=
oox_grpSpPr
->
xfrm
->
offX
.
get
()
/
12700.
;
...
...
@@ -370,6 +370,16 @@ void OoxConverter::convert(PPTX::Logic::GrpSpPr *oox_grpSpPr)
if
(
oox_grpSpPr
->
xfrm
->
chOffY
.
IsInit
())
ch_y
=
oox_grpSpPr
->
xfrm
->
chOffY
.
get
()
/
12700.
;
int
group_level
=
odf_context
()
->
drawing_context
()
->
get_group_level
();
odf_context
()
->
drawing_context
()
->
get_position
(
ext_x
,
ext_y
);
if
(
ext_x
&&
ext_y
&&
group_level
<
2
)
{
x
=
ext_x
;
y
=
ext_y
;
}
odf_context
()
->
drawing_context
()
->
set_group_position
(
x
,
y
,
ch_x
,
ch_y
);
if
(
oox_grpSpPr
->
xfrm
->
rot
.
IsInit
())
...
...
@@ -484,14 +494,21 @@ void OoxConverter::convert(PPTX::Logic::Shape *oox_shape)
DocxConverter
*
docx_converter
=
dynamic_cast
<
DocxConverter
*>
(
this
);
if
(
docx_converter
)
{
odf_context
()
->
start_text_context
();
docx_converter
->
convert
(
oox_shape
->
oTextBoxShape
.
GetPointer
());
odf_context
()
->
start_text_context
();
//docx_converter->convert(oox_shape->oTextBoxShape.GetPointer());
for
(
size_t
i
=
0
;
i
<
oox_shape
->
oTextBoxShape
->
m_arrItems
.
size
();
i
++
)
{
docx_converter
->
convert
(
oox_shape
->
oTextBoxShape
->
m_arrItems
[
i
]);
convert
(
oox_shape
->
oTextBoxBodyPr
.
GetPointer
());
if
(
oox_shape
->
style
.
IsInit
())
convert
(
&
oox_shape
->
style
->
fontRef
);
}
odf_context
()
->
drawing_context
()
->
set_text
(
odf_context
()
->
text_context
());
convert
(
oox_shape
->
oTextBoxBodyPr
.
GetPointer
());
if
(
oox_shape
->
style
.
IsInit
())
convert
(
&
oox_shape
->
style
->
fontRef
);
odf_context
()
->
end_text_context
();
}
}
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
View file @
202b58fb
...
...
@@ -1293,13 +1293,13 @@ void DocxConverter::convert(OOX::Logic::CParagraphProperty *oox_paragraph_pr, cp
}
if
(
odt_context
->
notes_context
()
->
is_started
())
if
(
odt_context
->
notes_context
()
->
is_started
()
&&
!
paragraph_properties
->
content_
.
fo_margin_left_
&&
!
paragraph_properties
->
content_
.
fo_text_indent_
)
{
paragraph_properties
->
content_
.
fo_margin_left_
=
odf_types
::
length
(
0.
5
,
odf_types
::
length
::
cm
);
paragraph_properties
->
content_
.
fo_text_indent_
=
odf_types
::
length
(
-
0.
5
,
odf_types
::
length
::
cm
);
paragraph_properties
->
content_
.
fo_margin_left_
=
odf_types
::
length
(
0.
2
,
odf_types
::
length
::
cm
);
paragraph_properties
->
content_
.
fo_text_indent_
=
odf_types
::
length
(
-
0.
2
,
odf_types
::
length
::
cm
);
paragraph_properties
->
content_
.
fo_line_height_
=
odf_types
::
percent
(
100.
);
paragraph_properties
->
content_
.
style_auto_text_indent_
=
false
;
//loext:contextual-spacing="false"
}
if
(
oox_paragraph_pr
->
m_oTabs
.
IsInit
())
...
...
X2tConverter/build/Qt/X2tConverter.pri
View file @
202b58fb
...
...
@@ -7,7 +7,7 @@
QT -= core
QT -= gui
VERSION = 2.4.45
3
.0
VERSION = 2.4.45
4
.0
DEFINES += INTVER=$$VERSION
TARGET = x2t
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment