Compare commits

..
3 Commits
Author SHA1 Message Date
csh 16452c8362 improvement: 单位转换的调整 2025-08-06 18:16:15 +08:00
csh 9062457251 update README 2025-08-06 18:14:29 +08:00
csh 7a65e50157 feat: 支持clone方法
feat: 支持反序列化的缓存,第二次反序列化不会执行操作
feat: openxmlelement类支持Enable属性来控制节点是否生成
2025-08-06 18:14:09 +08:00
16 changed files with 21635 additions and 6952 deletions
+79
View File
@@ -146,6 +146,85 @@ ppr1.Jc.Val; // 得到"left"
ppr1.WordWrap.Val; // ppr1不存在wordWrap,但是ppr2存在wordWrap,所以回落到ppr2的wordWrap获取到"1" ppr1.WordWrap.Val; // ppr1不存在wordWrap,但是ppr2存在wordWrap,所以回落到ppr2的wordWrap获取到"1"
``` ```
### Copy
`copy`方法支持将其他的类属性和子节点的属性复制过来,注意:复数的类无法进行复制,因为不确定怎么进行复制
```xml
// pPr1
<w:pPr>
<w:jc w:val="left" />
<w:spacing w:after="160" />
</w:pPr>
// pPr2
<w:pPr>
<w:jc w:val="right" />
<w:wordWrap w:val="1" />
</w:pPr>
```
```go
// 假设要将ppr2的属性复制到ppr1
ppr1.Copy(ppr2);
```
```xml
// 复制完毕后ppr1 xml如下
// 因为ppr2没有w:spacing,所以保留ppr1的w:spacing
<w:pPr>
<w:jc w:val="right" />
<w:wordWrap w:val="1" />
<w:spacing w:after="160" />
</w:pPr>
```
```xml
// 这样是不能复制的,w:r是复数
<w:p>
<w:r w:rsidR="00CC4888">
<w:t>test</w:t>
</w:r>
<w:r w:rsidR="00CD1015">
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
</w:rPr>
<w:t></w:t>
</w:r>
</w:p>
获取r并不是p.r进行获取,而是p.Rs();
```
### Clone
`Clone`方法是克隆出一个一样的对象出来,但是`Parent``nil`
```xml
<w:p>
<w:pPr>
<w:jc w:val="right" />
<w:wordWrap w:val="1" />
<w:spacing w:after="160" />
</w:pPr>
<w:r w:rsidR="00CC4888">
<w:t>test</w:t>
</w:r>
<w:r w:rsidR="00CD1015">
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
</w:rPr>
<w:t></w:t>
</w:r>
</w:p>
```
```go
new_p := p.Clone(); // 与p的xml一致
echo new_p.Parent; // nil
document.InsertAfter(new_p, p); // 插入一样的段落在p之后,此时会自动设置new_p.Parent := document
```
## Unit 单元 ## Unit 单元
- `DocxML`包含 `docx`文件独有的 xml 节点对象,一般 xml 的命名空间是 `w`,如 `w:p` - `DocxML`包含 `docx`文件独有的 xml 节点对象,一般 xml 的命名空间是 `w`,如 `w:p`
+6886 -2813
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+8139 -1988
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+55 -37
View File
@@ -8,23 +8,25 @@ public
function Create(_parent: tslobj; _prefix: string; _local_name: string);overload; function Create(_parent: tslobj; _prefix: string; _local_name: string);overload;
function Init();override; function Init();override;
function Copy(_obj: SldLayoutId);override; function Copy(_obj: SldLayoutId);override;
function ConvertToPoint();override;
public public
// attributes property // attributes property
property Id read ReadXmlAttrId write WriteXmlAttrId; property Id read ReadXmlAttrId write WriteXmlAttrId;
property Id read ReadXmlAttrId write WriteXmlAttrId; property IdN read ReadXmlAttrIdN write WriteXmlAttrIdN;
property Id read ReadXmlAttrId write WriteXmlAttrId; property RId read ReadXmlAttrRId write WriteXmlAttrRId;
function ReadXmlAttrId(); function ReadXmlAttrId(_ns: string);
function WriteXmlAttrId(_value); function WriteXmlAttrId(_p1: any; _p2: any);
function ReadXmlAttrId(); function ReadXmlAttrIdN();
function WriteXmlAttrId(_value); function WriteXmlAttrIdN(_value: any);
function ReadXmlAttrId(); function ReadXmlAttrRId();
function WriteXmlAttrId(_value); function WriteXmlAttrRId(_value: any);
public public
// Attributes // Attributes
XmlAttrId: OpenXmlAttribute; XmlAttrId: OpenXmlAttribute;
XmlAttrId: OpenXmlAttribute; XmlAttrIdN: OpenXmlAttribute;
XmlAttrId: OpenXmlAttribute; XmlAttrRId: OpenXmlAttribute;
end; end;
@@ -37,13 +39,13 @@ end;
function SldLayoutId.Create(_node: XmlNode);overload; function SldLayoutId.Create(_node: XmlNode);overload;
begin begin
class(OpenXmlCompositeElement).Create(_node: XmlNode); inherited Create(_node);
end; end;
function SldLayoutId.Create(_parent: tslobj; _prefix: string; _local_name: string);overload; function SldLayoutId.Create(_parent: tslobj; _prefix: string; _local_name: string);overload;
begin begin
setsysparam(pn_calcctrlword(), getsysparam(pn_calcctrlword()) .| 0x200); setsysparam(pn_calcctrlword(), getsysparam(pn_calcctrlword()) .| 0x200);
class(OpenXmlCompositeElement).Create(_parent, _prefix, _local_name); inherited Create(_parent, _prefix, _local_name);
end; end;
function SldLayoutId.Init();override; function SldLayoutId.Init();override;
@@ -52,8 +54,8 @@ begin
attributes_ := array(); attributes_ := array();
attributes_pf_ := array( attributes_pf_ := array(
pre + "id": makeweakref(thisFunction(WriteXmlAttrId)), pre + "id": makeweakref(thisFunction(WriteXmlAttrId)),
"id": makeweakref(thisFunction(WriteXmlAttrId)), "id": makeweakref(thisFunction(WriteXmlAttrIdN)),
"r:id": makeweakref(thisFunction(WriteXmlAttrId)), "r:id": makeweakref(thisFunction(WriteXmlAttrRId)),
); );
sorted_child_ := array( sorted_child_ := array(
); );
@@ -67,56 +69,72 @@ begin
class(OpenXmlCompositeElement).Copy(_obj); class(OpenXmlCompositeElement).Copy(_obj);
if not ifnil(_obj.Id) then if not ifnil(_obj.Id) then
{self.}Id := _obj.Id; {self.}Id := _obj.Id;
if not ifnil(_obj.Id) then if not ifnil(_obj.IdN) then
{self.}Id := _obj.Id; {self.}IdN := _obj.IdN;
if not ifnil(_obj.Id) then if not ifnil(_obj.RId) then
{self.}Id := _obj.Id; {self.}RId := _obj.RId;
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function SldLayoutId.ReadXmlAttrId(); function SldLayoutId.ConvertToPoint();override;
begin begin
return {self.}XmlAttrId.Value;
end; end;
function SldLayoutId.WriteXmlAttrId(_value); function SldLayoutId.ReadXmlAttrId(_ns: string);
begin begin
if _ns = "" then
return {self.}ReadXmlAttrIdN();
if _ns = "r" then
return {self.}ReadXmlAttrRId();
return ifnil({self.}XmlAttrId.Value) ? fallback_.XmlAttrId.Value : {self.}XmlAttrId.Value;
end;
function SldLayoutId.WriteXmlAttrId(_p1: any; _p2: any);
begin
if realparamcount = 2 then
begin
if _p1 = "" then
return {self.}WriteXmlAttrIdN(_p2);
if _p1 = "r" then
return {self.}WriteXmlAttrRId(_p2);
end
if ifnil({self.}XmlAttrId) then if ifnil({self.}XmlAttrId) then
begin begin
{self.}XmlAttrId := new OpenXmlAttribute({self.}Prefix, "id", nil); {self.}XmlAttrId := new OpenXmlAttribute({self.}Prefix, "id", nil);
attributes_[length(attributes_)] := {self.}XmlAttrId; attributes_[{self.}Prefix ? {self.}Prefix + ":" + "id" : "id"] := {self.}XmlAttrId;
end end
{self.}XmlAttrId.Value := _value; {self.}XmlAttrId.Value := realparamcount = 1 ? _p1 : _p2;
end; end;
function SldLayoutId.ReadXmlAttrId(); function SldLayoutId.ReadXmlAttrIdN();
begin begin
return {self.}XmlAttrId.Value; return ifnil({self.}XmlAttrIdN.Value) ? fallback_.XmlAttrIdN.Value : {self.}XmlAttrIdN.Value;
end; end;
function SldLayoutId.WriteXmlAttrId(_value); function SldLayoutId.WriteXmlAttrIdN(_value: any);
begin begin
if ifnil({self.}XmlAttrId) then if ifnil({self.}XmlAttrIdN) then
begin begin
{self.}XmlAttrId := new OpenXmlAttribute("", "id", nil); {self.}XmlAttrIdN := new OpenXmlAttribute("", "id", nil);
attributes_[length(attributes_)] := {self.}XmlAttrId; attributes_["id"] := {self.}XmlAttrIdN;
end end
{self.}XmlAttrId.Value := _value; {self.}XmlAttrIdN.Value := _value;
end; end;
function SldLayoutId.ReadXmlAttrId(); function SldLayoutId.ReadXmlAttrRId();
begin begin
return {self.}XmlAttrId.Value; return ifnil({self.}XmlAttrRId.Value) ? fallback_.XmlAttrRId.Value : {self.}XmlAttrRId.Value;
end; end;
function SldLayoutId.WriteXmlAttrId(_value); function SldLayoutId.WriteXmlAttrRId(_value: any);
begin begin
if ifnil({self.}XmlAttrId) then if ifnil({self.}XmlAttrRId) then
begin begin
{self.}XmlAttrId := new OpenXmlAttribute("r", "id", nil); {self.}XmlAttrRId := new OpenXmlAttribute("r", "id", nil);
attributes_[length(attributes_)] := {self.}XmlAttrId; attributes_["r:id"] := {self.}XmlAttrRId;
end end
{self.}XmlAttrId.Value := _value; {self.}XmlAttrRId.Value := _value;
end; end;
end. end.
+4281 -813
View File
File diff suppressed because it is too large Load Diff
+114 -114
View File
@@ -4,7 +4,7 @@ uses SharedML, TSSafeUnitConverter;
type MathPrUnitDecorator = class(MathPr) type MathPrUnitDecorator = class(MathPr)
public public
function Create(_obj: MathPr); function create(_obj: MathPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -13,7 +13,7 @@ end;
type OMathParaUnitDecorator = class(OMathPara) type OMathParaUnitDecorator = class(OMathPara)
public public
function Create(_obj: OMathPara); function create(_obj: OMathPara);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -22,7 +22,7 @@ end;
type OMathParaPrUnitDecorator = class(OMathParaPr) type OMathParaPrUnitDecorator = class(OMathParaPr)
public public
function Create(_obj: OMathParaPr); function create(_obj: OMathParaPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -31,7 +31,7 @@ end;
type PureMValUnitDecorator = class(PureMVal) type PureMValUnitDecorator = class(PureMVal)
public public
function Create(_obj: PureMVal); function create(_obj: PureMVal);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -40,7 +40,7 @@ end;
type OMathUnitDecorator = class(OMath) type OMathUnitDecorator = class(OMath)
public public
function Create(_obj: OMath); function create(_obj: OMath);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -49,7 +49,7 @@ end;
type RUnitDecorator = class(R) type RUnitDecorator = class(R)
public public
function Create(_obj: R); function create(_obj: R);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -58,7 +58,7 @@ end;
type RPrUnitDecorator = class(RPr) type RPrUnitDecorator = class(RPr)
public public
function Create(_obj: RPr); function create(_obj: RPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -67,7 +67,7 @@ end;
type TUnitDecorator = class(T) type TUnitDecorator = class(T)
public public
function Create(_obj: T); function create(_obj: T);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -76,7 +76,7 @@ end;
type DUnitDecorator = class(D) type DUnitDecorator = class(D)
public public
function Create(_obj: D); function create(_obj: D);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -85,7 +85,7 @@ end;
type DPrUnitDecorator = class(DPr) type DPrUnitDecorator = class(DPr)
public public
function Create(_obj: DPr); function create(_obj: DPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -94,7 +94,7 @@ end;
type CtrlPrUnitDecorator = class(CtrlPr) type CtrlPrUnitDecorator = class(CtrlPr)
public public
function Create(_obj: CtrlPr); function create(_obj: CtrlPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -103,7 +103,7 @@ end;
type SSupUnitDecorator = class(SSup) type SSupUnitDecorator = class(SSup)
public public
function Create(_obj: SSup); function create(_obj: SSup);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -112,7 +112,7 @@ end;
type SSupPrUnitDecorator = class(SSupPr) type SSupPrUnitDecorator = class(SSupPr)
public public
function Create(_obj: SSupPr); function create(_obj: SSupPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -121,7 +121,7 @@ end;
type FUnitDecorator = class(F) type FUnitDecorator = class(F)
public public
function Create(_obj: F); function create(_obj: F);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -130,7 +130,7 @@ end;
type FPrUnitDecorator = class(FPr) type FPrUnitDecorator = class(FPr)
public public
function Create(_obj: FPr); function create(_obj: FPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -139,7 +139,7 @@ end;
type RadUnitDecorator = class(Rad) type RadUnitDecorator = class(Rad)
public public
function Create(_obj: Rad); function create(_obj: Rad);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -148,7 +148,7 @@ end;
type RadPrUnitDecorator = class(RadPr) type RadPrUnitDecorator = class(RadPr)
public public
function Create(_obj: RadPr); function create(_obj: RadPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -157,7 +157,7 @@ end;
type SSubUnitDecorator = class(SSub) type SSubUnitDecorator = class(SSub)
public public
function Create(_obj: SSub); function create(_obj: SSub);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -166,7 +166,7 @@ end;
type SSubPrUnitDecorator = class(SSubPr) type SSubPrUnitDecorator = class(SSubPr)
public public
function Create(_obj: SSubPr); function create(_obj: SSubPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -175,7 +175,7 @@ end;
type NaryUnitDecorator = class(Nary) type NaryUnitDecorator = class(Nary)
public public
function Create(_obj: Nary); function create(_obj: Nary);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -184,7 +184,7 @@ end;
type NaryPrUnitDecorator = class(NaryPr) type NaryPrUnitDecorator = class(NaryPr)
public public
function Create(_obj: NaryPr); function create(_obj: NaryPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -193,7 +193,7 @@ end;
type FuncUnitDecorator = class(Func) type FuncUnitDecorator = class(Func)
public public
function Create(_obj: Func); function create(_obj: Func);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -202,7 +202,7 @@ end;
type FNameUnitDecorator = class(FName) type FNameUnitDecorator = class(FName)
public public
function Create(_obj: FName); function create(_obj: FName);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -211,7 +211,7 @@ end;
type FuncPrUnitDecorator = class(FuncPr) type FuncPrUnitDecorator = class(FuncPr)
public public
function Create(_obj: FuncPr); function create(_obj: FuncPr);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -220,7 +220,7 @@ end;
type CorePropertiesUnitDecorator = class(CoreProperties) type CorePropertiesUnitDecorator = class(CoreProperties)
public public
function Create(_obj: CoreProperties); function create(_obj: CoreProperties);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -229,7 +229,7 @@ end;
type CreatedUnitDecorator = class(Created) type CreatedUnitDecorator = class(Created)
public public
function Create(_obj: Created); function create(_obj: Created);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -238,7 +238,7 @@ end;
type ModifiedUnitDecorator = class(Modified) type ModifiedUnitDecorator = class(Modified)
public public
function Create(_obj: Modified); function create(_obj: Modified);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -247,7 +247,7 @@ end;
type RelationshipsUnitDecorator = class(Relationships) type RelationshipsUnitDecorator = class(Relationships)
public public
function Create(_obj: Relationships); function create(_obj: Relationships);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -256,7 +256,7 @@ end;
type RelationshipUnitDecorator = class(Relationship) type RelationshipUnitDecorator = class(Relationship)
public public
function Create(_obj: Relationship); function create(_obj: Relationship);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -265,7 +265,7 @@ end;
type TypesUnitDecorator = class(Types) type TypesUnitDecorator = class(Types)
public public
function Create(_obj: Types); function create(_obj: Types);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -274,7 +274,7 @@ end;
type DefaultUnitDecorator = class(Default) type DefaultUnitDecorator = class(Default)
public public
function Create(_obj: Default); function create(_obj: Default);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -283,7 +283,7 @@ end;
type _OverrideUnitDecorator = class(_Override) type _OverrideUnitDecorator = class(_Override)
public public
function Create(_obj: _Override); function create(_obj: _Override);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -292,7 +292,7 @@ end;
type NumUnitDecorator = class(Num) type NumUnitDecorator = class(Num)
public public
function Create(_obj: Num); function create(_obj: Num);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -301,7 +301,7 @@ end;
type DegUnitDecorator = class(Deg) type DegUnitDecorator = class(Deg)
public public
function Create(_obj: Deg); function create(_obj: Deg);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -310,7 +310,7 @@ end;
type EUnitDecorator = class(E) type EUnitDecorator = class(E)
public public
function Create(_obj: E); function create(_obj: E);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -319,7 +319,7 @@ end;
type SupUnitDecorator = class(Sup) type SupUnitDecorator = class(Sup)
public public
function Create(_obj: Sup); function create(_obj: Sup);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -328,7 +328,7 @@ end;
type DenUnitDecorator = class(Den) type DenUnitDecorator = class(Den)
public public
function Create(_obj: Den); function create(_obj: Den);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -337,7 +337,7 @@ end;
type SubUnitDecorator = class(Sub) type SubUnitDecorator = class(Sub)
public public
function Create(_obj: Sub); function create(_obj: Sub);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -346,9 +346,9 @@ end;
implementation implementation
function MathPrUnitDecorator.Create(_obj: MathPr); function MathPrUnitDecorator.create(_obj: MathPr);
begin begin
class(MathPr).Create(); class(MathPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -387,9 +387,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function OMathParaUnitDecorator.Create(_obj: OMathPara); function OMathParaUnitDecorator.create(_obj: OMathPara);
begin begin
class(OMathPara).Create(); class(OMathPara).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -410,9 +410,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function OMathParaPrUnitDecorator.Create(_obj: OMathParaPr); function OMathParaPrUnitDecorator.create(_obj: OMathParaPr);
begin begin
class(OMathParaPr).Create(); class(OMathParaPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -431,9 +431,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function PureMValUnitDecorator.Create(_obj: PureMVal); function PureMValUnitDecorator.create(_obj: PureMVal);
begin begin
class(PureMVal).Create(); class(PureMVal).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -452,9 +452,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function OMathUnitDecorator.Create(_obj: OMath); function OMathUnitDecorator.create(_obj: OMath);
begin begin
class(OMath).Create(); class(OMath).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -495,9 +495,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function RUnitDecorator.Create(_obj: R); function RUnitDecorator.create(_obj: R);
begin begin
class(R).Create(); class(R).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -522,9 +522,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function RPrUnitDecorator.Create(_obj: RPr); function RPrUnitDecorator.create(_obj: RPr);
begin begin
class(RPr).Create(); class(RPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -543,9 +543,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function TUnitDecorator.Create(_obj: T); function TUnitDecorator.create(_obj: T);
begin begin
class(T).Create(); class(T).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -564,9 +564,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function DUnitDecorator.Create(_obj: D); function DUnitDecorator.create(_obj: D);
begin begin
class(D).Create(); class(D).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -587,9 +587,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function DPrUnitDecorator.Create(_obj: DPr); function DPrUnitDecorator.create(_obj: DPr);
begin begin
class(DPr).Create(); class(DPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -620,9 +620,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function CtrlPrUnitDecorator.Create(_obj: CtrlPr); function CtrlPrUnitDecorator.create(_obj: CtrlPr);
begin begin
class(CtrlPr).Create(); class(CtrlPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -643,9 +643,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function SSupUnitDecorator.Create(_obj: SSup); function SSupUnitDecorator.create(_obj: SSup);
begin begin
class(SSup).Create(); class(SSup).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -668,9 +668,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function SSupPrUnitDecorator.Create(_obj: SSupPr); function SSupPrUnitDecorator.create(_obj: SSupPr);
begin begin
class(SSupPr).Create(); class(SSupPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -689,9 +689,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function FUnitDecorator.Create(_obj: F); function FUnitDecorator.create(_obj: F);
begin begin
class(F).Create(); class(F).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -714,9 +714,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function FPrUnitDecorator.Create(_obj: FPr); function FPrUnitDecorator.create(_obj: FPr);
begin begin
class(FPr).Create(); class(FPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -737,9 +737,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function RadUnitDecorator.Create(_obj: Rad); function RadUnitDecorator.create(_obj: Rad);
begin begin
class(Rad).Create(); class(Rad).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -762,9 +762,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function RadPrUnitDecorator.Create(_obj: RadPr); function RadPrUnitDecorator.create(_obj: RadPr);
begin begin
class(RadPr).Create(); class(RadPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -785,9 +785,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function SSubUnitDecorator.Create(_obj: SSub); function SSubUnitDecorator.create(_obj: SSub);
begin begin
class(SSub).Create(); class(SSub).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -810,9 +810,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function SSubPrUnitDecorator.Create(_obj: SSubPr); function SSubPrUnitDecorator.create(_obj: SSubPr);
begin begin
class(SSubPr).Create(); class(SSubPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -831,9 +831,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function NaryUnitDecorator.Create(_obj: Nary); function NaryUnitDecorator.create(_obj: Nary);
begin begin
class(Nary).Create(); class(Nary).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -858,9 +858,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function NaryPrUnitDecorator.Create(_obj: NaryPr); function NaryPrUnitDecorator.create(_obj: NaryPr);
begin begin
class(NaryPr).Create(); class(NaryPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -889,9 +889,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function FuncUnitDecorator.Create(_obj: Func); function FuncUnitDecorator.create(_obj: Func);
begin begin
class(Func).Create(); class(Func).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -914,9 +914,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function FNameUnitDecorator.Create(_obj: FName); function FNameUnitDecorator.create(_obj: FName);
begin begin
class(FName).Create(); class(FName).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -936,9 +936,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function FuncPrUnitDecorator.Create(_obj: FuncPr); function FuncPrUnitDecorator.create(_obj: FuncPr);
begin begin
class(FuncPr).Create(); class(FuncPr).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -957,9 +957,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function CorePropertiesUnitDecorator.Create(_obj: CoreProperties); function CorePropertiesUnitDecorator.create(_obj: CoreProperties);
begin begin
class(CoreProperties).Create(); class(CoreProperties).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -988,9 +988,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function CreatedUnitDecorator.Create(_obj: Created); function CreatedUnitDecorator.create(_obj: Created);
begin begin
class(Created).Create(); class(Created).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1009,9 +1009,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function ModifiedUnitDecorator.Create(_obj: Modified); function ModifiedUnitDecorator.create(_obj: Modified);
begin begin
class(Modified).Create(); class(Modified).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1030,9 +1030,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function RelationshipsUnitDecorator.Create(_obj: Relationships); function RelationshipsUnitDecorator.create(_obj: Relationships);
begin begin
class(Relationships).Create(); class(Relationships).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1052,9 +1052,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function RelationshipUnitDecorator.Create(_obj: Relationship); function RelationshipUnitDecorator.create(_obj: Relationship);
begin begin
class(Relationship).Create(); class(Relationship).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1077,9 +1077,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function TypesUnitDecorator.Create(_obj: Types); function TypesUnitDecorator.create(_obj: Types);
begin begin
class(Types).Create(); class(Types).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1102,9 +1102,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function DefaultUnitDecorator.Create(_obj: Default); function DefaultUnitDecorator.create(_obj: Default);
begin begin
class(Default).Create(); class(Default).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1125,9 +1125,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function _OverrideUnitDecorator.Create(_obj: _Override); function _OverrideUnitDecorator.create(_obj: _Override);
begin begin
class(_Override).Create(); class(_Override).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1148,9 +1148,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function NumUnitDecorator.Create(_obj: Num); function NumUnitDecorator.create(_obj: Num);
begin begin
class(Num).Create(); class(Num).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1193,9 +1193,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function DegUnitDecorator.Create(_obj: Deg); function DegUnitDecorator.create(_obj: Deg);
begin begin
class(Deg).Create(); class(Deg).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1238,9 +1238,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function EUnitDecorator.Create(_obj: E); function EUnitDecorator.create(_obj: E);
begin begin
class(E).Create(); class(E).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1283,9 +1283,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function SupUnitDecorator.Create(_obj: Sup); function SupUnitDecorator.create(_obj: Sup);
begin begin
class(Sup).Create(); class(Sup).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1328,9 +1328,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function DenUnitDecorator.Create(_obj: Den); function DenUnitDecorator.create(_obj: Den);
begin begin
class(Den).Create(); class(Den).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -1373,9 +1373,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function SubUnitDecorator.Create(_obj: Sub); function SubUnitDecorator.create(_obj: Sub);
begin begin
class(Sub).Create(); class(Sub).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
+980 -405
View File
File diff suppressed because it is too large Load Diff
+54 -50
View File
@@ -4,7 +4,7 @@ uses VML, TSSafeUnitConverter;
type ShapetypeUnitDecorator = class(Shapetype) type ShapetypeUnitDecorator = class(Shapetype)
public public
function Create(_obj: Shapetype); function create(_obj: Shapetype);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -13,7 +13,7 @@ end;
type FormulasUnitDecorator = class(Formulas) type FormulasUnitDecorator = class(Formulas)
public public
function Create(_obj: Formulas); function create(_obj: Formulas);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -22,7 +22,7 @@ end;
type LockUnitDecorator = class(Lock) type LockUnitDecorator = class(Lock)
public public
function Create(_obj: Lock); function create(_obj: Lock);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -31,7 +31,7 @@ end;
type FUnitDecorator = class(F) type FUnitDecorator = class(F)
public public
function Create(_obj: F); function create(_obj: F);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -40,7 +40,7 @@ end;
type StrokeUnitDecorator = class(Stroke) type StrokeUnitDecorator = class(Stroke)
public public
function Create(_obj: Stroke); function create(_obj: Stroke);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -49,7 +49,7 @@ end;
type PathUnitDecorator = class(Path) type PathUnitDecorator = class(Path)
public public
function Create(_obj: Path); function create(_obj: Path);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -58,7 +58,7 @@ end;
type TextpathUnitDecorator = class(Textpath) type TextpathUnitDecorator = class(Textpath)
public public
function Create(_obj: Textpath); function create(_obj: Textpath);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -67,7 +67,7 @@ end;
type HandlesUnitDecorator = class(Handles) type HandlesUnitDecorator = class(Handles)
public public
function Create(_obj: Handles); function create(_obj: Handles);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -76,7 +76,7 @@ end;
type HUnitDecorator = class(H) type HUnitDecorator = class(H)
public public
function Create(_obj: H); function create(_obj: H);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -85,7 +85,7 @@ end;
type ShapeUnitDecorator = class(Shape) type ShapeUnitDecorator = class(Shape)
public public
function Create(_obj: Shape); function create(_obj: Shape);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -94,7 +94,7 @@ end;
type WrapUnitDecorator = class(Wrap) type WrapUnitDecorator = class(Wrap)
public public
function Create(_obj: Wrap); function create(_obj: Wrap);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -103,7 +103,7 @@ end;
type FillUnitDecorator = class(Fill) type FillUnitDecorator = class(Fill)
public public
function Create(_obj: Fill); function create(_obj: Fill);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -112,7 +112,7 @@ end;
type ImagedataUnitDecorator = class(Imagedata) type ImagedataUnitDecorator = class(Imagedata)
public public
function Create(_obj: Imagedata); function create(_obj: Imagedata);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -121,7 +121,7 @@ end;
type TextboxUnitDecorator = class(Textbox) type TextboxUnitDecorator = class(Textbox)
public public
function Create(_obj: Textbox); function create(_obj: Textbox);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -130,7 +130,7 @@ end;
type OLEObjectUnitDecorator = class(OLEObject) type OLEObjectUnitDecorator = class(OLEObject)
public public
function Create(_obj: OLEObject); function create(_obj: OLEObject);
function GetObject(); function GetObject();
function Convert(); function Convert();
private private
@@ -139,9 +139,9 @@ end;
implementation implementation
function ShapetypeUnitDecorator.Create(_obj: Shapetype); function ShapetypeUnitDecorator.create(_obj: Shapetype);
begin begin
class(Shapetype).Create(); class(Shapetype).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -167,8 +167,8 @@ begin
{self.}Adj := object_.XmlAttrAdj.Value; {self.}Adj := object_.XmlAttrAdj.Value;
if not ifnil(object_.XmlAttrPreferrelative) then if not ifnil(object_.XmlAttrPreferrelative) then
{self.}Preferrelative := object_.XmlAttrPreferrelative.Value; {self.}Preferrelative := object_.XmlAttrPreferrelative.Value;
if not ifnil(object_.XmlAttrPath) then if not ifnil(object_.XmlAttrAttrPath) then
{self.}Path := object_.XmlAttrPath.Value; {self.}AttrPath := object_.XmlAttrAttrPath.Value;
if not ifnil(object_.XmlAttrFilled) then if not ifnil(object_.XmlAttrFilled) then
{self.}Filled := object_.XmlAttrFilled.Value; {self.}Filled := object_.XmlAttrFilled.Value;
if not ifnil(object_.XmlAttrStroked) then if not ifnil(object_.XmlAttrStroked) then
@@ -188,9 +188,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function FormulasUnitDecorator.Create(_obj: Formulas); function FormulasUnitDecorator.create(_obj: Formulas);
begin begin
class(Formulas).Create(); class(Formulas).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -206,13 +206,13 @@ begin
tslassigning := 1; tslassigning := 1;
elems := object_.Fs(); elems := object_.Fs();
for _,elem in elems do for _,elem in elems do
{self.}AppendChild(new ShapetypeUnitDecorator(elem)); {self.}AppendChild(new FUnitDecorator(elem));
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function LockUnitDecorator.Create(_obj: Lock); function LockUnitDecorator.create(_obj: Lock);
begin begin
class(Lock).Create(); class(Lock).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -230,12 +230,16 @@ begin
{self.}Ext := object_.XmlAttrExt.Value; {self.}Ext := object_.XmlAttrExt.Value;
if not ifnil(object_.XmlAttrAspectration) then if not ifnil(object_.XmlAttrAspectration) then
{self.}Aspectration := object_.XmlAttrAspectration.Value; {self.}Aspectration := object_.XmlAttrAspectration.Value;
if not ifnil(object_.XmlAttrText) then
{self.}Text := object_.XmlAttrText.Value;
if not ifnil(object_.XmlAttrShapetype) then
{self.}Shapetype := object_.XmlAttrShapetype.Value;
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function FUnitDecorator.Create(_obj: F); function FUnitDecorator.create(_obj: F);
begin begin
class(F).Create(); class(F).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -254,9 +258,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function StrokeUnitDecorator.Create(_obj: Stroke); function StrokeUnitDecorator.create(_obj: Stroke);
begin begin
class(Stroke).Create(); class(Stroke).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -275,9 +279,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function PathUnitDecorator.Create(_obj: Path); function PathUnitDecorator.create(_obj: Path);
begin begin
class(Path).Create(); class(Path).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -306,9 +310,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function TextpathUnitDecorator.Create(_obj: Textpath); function TextpathUnitDecorator.create(_obj: Textpath);
begin begin
class(Textpath).Create(); class(Textpath).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -333,9 +337,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function HandlesUnitDecorator.Create(_obj: Handles); function HandlesUnitDecorator.create(_obj: Handles);
begin begin
class(Handles).Create(); class(Handles).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -354,9 +358,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function HUnitDecorator.Create(_obj: H); function HUnitDecorator.create(_obj: H);
begin begin
class(H).Create(); class(H).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -370,16 +374,16 @@ function HUnitDecorator.Convert();
begin begin
tslassigning_backup := tslassigning; tslassigning_backup := tslassigning;
tslassigning := 1; tslassigning := 1;
if not ifnil(object_.XmlAttrXrange) then
{self.}Xrange := object_.XmlAttrXrange.Value;
if not ifnil(object_.XmlAttrPosition) then if not ifnil(object_.XmlAttrPosition) then
{self.}Position := object_.XmlAttrPosition.Value; {self.}Position := object_.XmlAttrPosition.Value;
if not ifnil(object_.XmlAttrXrange) then
{self.}Xrange := object_.XmlAttrXrange.Value;
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function ShapeUnitDecorator.Create(_obj: Shape); function ShapeUnitDecorator.create(_obj: Shape);
begin begin
class(Shape).Create(); class(Shape).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -426,9 +430,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function WrapUnitDecorator.Create(_obj: Wrap); function WrapUnitDecorator.create(_obj: Wrap);
begin begin
class(Wrap).Create(); class(Wrap).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -449,9 +453,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function FillUnitDecorator.Create(_obj: Fill); function FillUnitDecorator.create(_obj: Fill);
begin begin
class(Fill).Create(); class(Fill).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -470,9 +474,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function ImagedataUnitDecorator.Create(_obj: Imagedata); function ImagedataUnitDecorator.create(_obj: Imagedata);
begin begin
class(Imagedata).Create(); class(Imagedata).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -493,9 +497,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function TextboxUnitDecorator.Create(_obj: Textbox); function TextboxUnitDecorator.create(_obj: Textbox);
begin begin
class(Textbox).Create(); class(Textbox).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
@@ -514,9 +518,9 @@ begin
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
end; end;
function OLEObjectUnitDecorator.Create(_obj: OLEObject); function OLEObjectUnitDecorator.create(_obj: OLEObject);
begin begin
class(OLEObject).Create(); class(OLEObject).create();
object_ := _obj; object_ := _obj;
{self.}Convert(); {self.}Convert();
end; end;
+20 -8
View File
@@ -9,7 +9,7 @@ public
function AppendChild(_element: OpenXmlElement); function AppendChild(_element: OpenXmlElement);
function InsertAfter(_element: OpenXmlElement; _pos_element: OpenXmlElement); function InsertAfter(_element: OpenXmlElement; _pos_element: OpenXmlElement);
function RemoveChild(_element: OpenXmlElement); function RemoveChild(_element: OpenXmlElement);
// function InsertBefore(_pos_obj: tslobj; _obj: tslobj); function InsertBefore(_element: OpenXmlElement; _pos_element: OpenXmlElement);
// function PrependChild(_obj: tslobj); // function PrependChild(_obj: tslobj);
// function SetAttribute(_obj: OpenXmlAttribute); // function SetAttribute(_obj: OpenXmlAttribute);
@@ -37,11 +37,12 @@ begin
node := node.NextElement(); node := node.NextElement();
end end
tslassigning := tslassigning_backup; tslassigning := tslassigning_backup;
deserialized_ := false;
end; end;
function OpenXmlCompositeElement.Deserialize();override; function OpenXmlCompositeElement.Deserialize();override;
begin begin
if not ifObj({self.}XmlNode) then return; if deserialized_ or not ifObj({self.}XmlNode) then return;
attrs := {self.}XmlNode.Attributes(); attrs := {self.}XmlNode.Attributes();
for k, v in attrs do for k, v in attrs do
begin begin
@@ -58,23 +59,27 @@ begin
child_elements := container_.GetElements(); child_elements := container_.GetElements();
for k, v in child_elements do for k, v in child_elements do
v.Deserialize(); v.Deserialize();
deserialized_ := true;
end; end;
function OpenXmlCompositeElement.Serialize();override; function OpenXmlCompositeElement.Serialize();override;
begin begin
if {self.}DeleteSelf() then return; if {self.}DeleteSelf() then return;
{self.}GetNode(); if {self.}Enable then {self.}GetNode();
// xmlns // xmlns
for k, v in xmlns_ do for k, v in xmlns_ do
{self.}XmlNode.SetAttribute(v.ElementName, v.Value); if not ifnil(v.Value) then
{self.}GetNode().SetAttribute(v.ElementName, v.Value);
else if {self.}XmlNode then
{self.}GetNode().DeleteAttribute(v.ElementName);
// Attributes // Attributes
for k, v in attributes_ do for k, v in attributes_ do
if not ifnil(v.Value) then if not ifnil(v.Value) then
{self.}XmlNode.SetAttribute(v.ElementName, v.Value); {self.}GetNode().SetAttribute(v.ElementName, v.Value);
else if {self.}XmlNode then else if {self.}XmlNode then
{self.}XmlNode.DeleteAttribute(v.ElementName); {self.}GetNode().DeleteAttribute(v.ElementName);
// Children // Children
child_elements := container_.GetElements(); child_elements := container_.GetElements();
@@ -89,7 +94,7 @@ begin
for k, v in child_elements do for k, v in child_elements do
begin begin
arr := array("type": "element", "name": v.ElementName, "attributes": array()); arr := array("type": "element", "name": v.ElementName, "attributes": array());
if v is Class(OpenXmlTextElement) or v is Class(OpenXmlCompositeElement) then if v is class(OpenXmlTextElement) or v is class(OpenXmlCompositeElement) then
begin begin
marshal := v.Marshal(); marshal := v.Marshal();
if length(marshal["children"]) = 0 and length(marshal["attributes"]) = 0 then continue; if length(marshal["children"]) = 0 and length(marshal["attributes"]) = 0 then continue;
@@ -97,7 +102,7 @@ begin
arr["attributes"] union= marshal["attributes"]; arr["attributes"] union= marshal["attributes"];
child_arr[length(child_arr)] := arr; child_arr[length(child_arr)] := arr;
end end
else if v is Class(OpenXmlSimpleType) then else if v is class(OpenXmlSimpleType) then
begin begin
marshal := v.Marshal(); marshal := v.Marshal();
if length(marshal) > 0 then child_arr[length(child_arr)] := arr; if length(marshal) > 0 then child_arr[length(child_arr)] := arr;
@@ -138,11 +143,13 @@ end;
function OpenXmlCompositeElement.AppendChild(_element: OpenXmlElement); function OpenXmlCompositeElement.AppendChild(_element: OpenXmlElement);
begin begin
_element.Parent := self;
container_.Append(_element); container_.Append(_element);
end; end;
function OpenXmlCompositeElement.InsertAfter(_element: OpenXmlElement; _pos_element: OpenXmlElement); function OpenXmlCompositeElement.InsertAfter(_element: OpenXmlElement; _pos_element: OpenXmlElement);
begin begin
_element.Parent := self;
container_.InsertAfter(_element, _pos_element); container_.InsertAfter(_element, _pos_element);
end; end;
@@ -151,3 +158,8 @@ begin
_element.Removed := true; _element.Removed := true;
end; end;
function OpenXmlCompositeElement.InsertBefore(_element: OpenXmlElement; _pos_element: OpenXmlElement);
begin
_element.Parent := self;
container_.InsertBefore(_element, _pos_element);
end;
+6
View File
@@ -5,6 +5,7 @@ public
function Init();virtual; function Init();virtual;
function InitNode(_node: XmlNode);virtual; function InitNode(_node: XmlNode);virtual;
function Copy(_obj: tslobj);virtual; function Copy(_obj: tslobj);virtual;
function Clone(): OpenXmlElement;virtual;
function Deserialize();virtual; function Deserialize();virtual;
function Serialize();virtual; function Serialize();virtual;
function Marshal(): tableArray;virtual; function Marshal(): tableArray;virtual;
@@ -31,6 +32,8 @@ public
ElementName: string; ElementName: string;
Removed: boolean; // 节点删除标记,最后Serialize时候统一删除 Removed: boolean; // 节点删除标记,最后Serialize时候统一删除
Enable: boolean; // 是否启用 <b /> 没有属性
protected protected
attributes_: array of OpenXmlAttribute; // 属性 attributes_: array of OpenXmlAttribute; // 属性
attributes_pf_: tableArray; attributes_pf_: tableArray;
@@ -38,6 +41,7 @@ protected
sorted_child_: tableArray; sorted_child_: tableArray;
container_: TSOfficeContainer; container_: TSOfficeContainer;
fallback_: OpenXmlElement; // 代理对象 fallback_: OpenXmlElement; // 代理对象
deserialized_: boolean; // 是否已反序列化
end; end;
function OpenXmlElement.Create(_node: XmlNode);overload; function OpenXmlElement.Create(_node: XmlNode);overload;
@@ -57,9 +61,11 @@ begin
{self.}XmlNode := nil; {self.}XmlNode := nil;
{self.}ElementName := ifString({self.}Prefix) and {self.}Prefix <> "" ? format("%s:%s", {self.}Prefix, {self.}LocalName) : {self.}LocalName; {self.}ElementName := ifString({self.}Prefix) and {self.}Prefix <> "" ? format("%s:%s", {self.}Prefix, {self.}LocalName) : {self.}LocalName;
{self.}Removed := false; {self.}Removed := false;
{self.}Enable := false;
{self.}Init(); {self.}Init();
xmlns_ := array(); xmlns_ := array();
fallback_ := nil; fallback_ := nil;
deserialized_ := false;
end; end;
function OpenXmlElement.SetFallback(_fallback: OpenXmlElement); function OpenXmlElement.SetFallback(_fallback: OpenXmlElement);
+16 -7
View File
@@ -3,6 +3,7 @@ public
function Init();override; function Init();override;
function InitNode(_node: XmlNode);override; function InitNode(_node: XmlNode);override;
function Copy(_obj: tslobj);override; function Copy(_obj: tslobj);override;
function Clone(): OpenXmlSimpleType;override;
function Deserialize();override; function Deserialize();override;
function Serialize();override; function Serialize();override;
function Marshal(): tableArray;override; function Marshal(): tableArray;override;
@@ -18,27 +19,33 @@ public
// IsApplied: boolean; // 是否已经应用,和val值有关 // IsApplied: boolean; // 是否已经应用,和val值有关
property IsApplied read ReadIsApplied; property IsApplied read ReadIsApplied;
function ReadIsApplied(); function ReadIsApplied();
public
Enable: boolean; // 是否启用 <b /> 没有属性,需要通过val写属性
end; end;
function OpenXmlSimpleType.Init();override; function OpenXmlSimpleType.Init();override;
begin begin
{self.}Enable := false; // {self.}Enable := false;
end; end;
function OpenXmlSimpleType.InitNode(_node: XmlNode);override; function OpenXmlSimpleType.InitNode(_node: XmlNode);override;
begin begin
{self.}XmlNode := ifObj(_node) ? _node : nil; {self.}XmlNode := ifObj(_node) ? _node : nil;
deserialized_ := false;
end; end;
function OpenXmlSimpleType.Copy(_obj: tslobj);override; function OpenXmlSimpleType.Copy(_obj: tslobj);override;
begin begin
if not ifnil(_obj.Enable) then {self.}Enable := _obj.Enable; {self.}Enable := _obj.Enable;
if not ifnil(_obj.XmlAttrVal.Value) then {self.}Val := _obj.XmlAttrVal.Value; if not ifnil(_obj.XmlAttrVal.Value) then {self.}Val := _obj.XmlAttrVal.Value;
end; end;
function OpenXmlSimpleType.Clone(): OpenXmlSimpleType;override;
begin
obj := new OpenXmlSimpleType(nil, {self.}Prefix, {self.}LocalName);
obj.Enable := {self.}Enable;
if not ifnil({self.}XmlAttrVal.Value) then obj.Val := {self.}XmlAttrVal.Value;
return obj;
end;
function OpenXmlSimpleType.Marshal(): tableArray;override; function OpenXmlSimpleType.Marshal(): tableArray;override;
begin begin
if not {self.}Enable then return array(); if not {self.}Enable then return array();
@@ -50,6 +57,7 @@ end;
function OpenXmlSimpleType.Deserialize();override; function OpenXmlSimpleType.Deserialize();override;
begin begin
if deserialized_ then return;
if ifObj({self.}XmlNode) then if ifObj({self.}XmlNode) then
begin begin
attrs := {self.}XmlNode.Attributes(); attrs := {self.}XmlNode.Attributes();
@@ -67,13 +75,14 @@ begin
{self.}Enable := false; {self.}Enable := false;
{self.}XmlAttrVal := nil; {self.}XmlAttrVal := nil;
end end
deserialized_ := true;
end; end;
function OpenXmlSimpleType.Serialize();override; function OpenXmlSimpleType.Serialize();override;
begin begin
if not ifObj({self.}XmlNode) then if not ifObj({self.}XmlNode) then
begin begin
{self.}GetNode(); if {self.}Enable then {self.}GetNode();
if not ifnil({self.}XmlAttrVal.Value) then {self.}XmlNode.SetAttribute({self.}XmlAttrVal.ElementName, {self.}XmlAttrVal.Value); if not ifnil({self.}XmlAttrVal.Value) then {self.}XmlNode.SetAttribute({self.}XmlAttrVal.ElementName, {self.}XmlAttrVal.Value);
end end
else begin else begin
@@ -102,6 +111,6 @@ end;
function OpenXmlSimpleType.ReadIsApplied(); function OpenXmlSimpleType.ReadIsApplied();
begin begin
if {self.}Enable then if {self.}Enable then
return {self.}XmlAttrVal.Value = "0" or {self.}XmlAttrVal.Value = "false" ? false : true; return {self.}XmlAttrVal.Value = "0" or {self.}XmlAttrVal.Value = "false" or {self.}XmlAttrVal.Value = "off" ? false : true;
return false; return false;
end; end;
+11 -1
View File
@@ -2,6 +2,7 @@ type OpenXmlTextElement = class(OpenXmlElement)
public public
function InitNode(_node: XmlNode);override; function InitNode(_node: XmlNode);override;
function Copy(_obj: tslobj);virtual; function Copy(_obj: tslobj);virtual;
function Clone(): OpenXmlTextElement;virtual;
function Deserialize();override; function Deserialize();override;
function Serialize();override; function Serialize();override;
function Marshal(): tableArray;override; function Marshal(): tableArray;override;
@@ -13,6 +14,7 @@ end;
function OpenXmlTextElement.InitNode(_node: XmlNode);override; function OpenXmlTextElement.InitNode(_node: XmlNode);override;
begin begin
{self.}XmlNode := ifObj(_node) ? _node : nil; {self.}XmlNode := ifObj(_node) ? _node : nil;
deserialized_ := false;
end; end;
function OpenXmlTextElement.Copy(_obj: tslobj);virtual; function OpenXmlTextElement.Copy(_obj: tslobj);virtual;
@@ -20,6 +22,13 @@ begin
if not ifnil(_obj.Text) then {self.}Text := _obj.Text; if not ifnil(_obj.Text) then {self.}Text := _obj.Text;
end; end;
function OpenXmlTextElement.Clone(): OpenXmlTextElement;virtual;
begin
obj := new OpenXmlTextElement(nil, {self.}Prefix, {self.}LocalName);
if not ifnil({self.}Text) then obj.Text := {self.}Text;
return obj;
end
function OpenXmlTextElement.Marshal(): tableArray;override; function OpenXmlTextElement.Marshal(): tableArray;override;
begin begin
arr := array("type": "element", "name": name_, "attributes": array(), "children": array()); arr := array("type": "element", "name": name_, "attributes": array(), "children": array());
@@ -31,7 +40,7 @@ end;
function OpenXmlTextElement.Deserialize();override; function OpenXmlTextElement.Deserialize();override;
begin begin
if not ifObj({self.}XmlNode) then return; if deserialized_ or not ifObj({self.}XmlNode) then return;
{self.}Text := {self.}XmlNode.GetText(); {self.}Text := {self.}XmlNode.GetText();
attrs := {self.}XmlNode.Attributes(); attrs := {self.}XmlNode.Attributes();
for k, v in attrs do for k, v in attrs do
@@ -46,6 +55,7 @@ begin
if ifnil(pf) then continue; if ifnil(pf) then continue;
pf.Do(v); pf.Do(v);
end end
deserialized_ := true;
end; end;
function OpenXmlTextElement.Serialize();override; function OpenXmlTextElement.Serialize();override;
+111 -37
View File
@@ -1,70 +1,144 @@
unit TSSafeUnitConverter; unit TSSafeUnitConverter;
interface interface
function PointsToTwips(value): real; function CentimetersToPoints(value): real;
function TwipsToPoints(value): real;
function EmusToPoints(value): real; function EmusToPoints(value): real;
function HalfPointToPoints(value): real; function InchesToPoints(value): real;
function LinesToPoints(value): real;
function MillimetersToPoints(value): real;
function PicasToPoints(value): real;
function PixelsToPoints(value): real; // TODO 不实现,与DPI有关
function TwipsToPoints(value): real;
// points -> other
function PointsToCentimeters(value): real;
function PointsToEmus(value): real;
function PointsToInches(value): real;
function PointsToLines(value): real;
function PointsToMillimeters(value);
function PointsToPicas(value);
function PointsToPixels(value); // TODO
function PointsToTwips(value): real;
// other
function HalfPointsToPoints(value): real;
function PointsToHalfPoints(value): real;
function EighthPointsToPoints(value): real;
function PercentToNumber(value): real; function PercentToNumber(value): real;
function NumberToPercent(value): real; function NumberToPercent(value): real;
function ToInt(value): integer; function ToInt(value): integer;
function EighthPointToPoints(value): real;
implementation implementation
uses TSUnitConverter; uses TSUnitConverter;
function PointsToTwips(value): real; function SafeConvert(value, convert_func): real;
begin begin
if ifNil(value) then return 0; if ifNil(value) then return 0;
new_value := ifString(value) ? strToFloat(value) : value; new_value := ifString(value) ? strToFloatDef(value, 0) : value;
return TSUnitConverter.PointsToTwips(new_value); return ##convert_func(new_value);
end; end;
function TwipsToPoints(value): real; function CentimetersToPoints(value): real;
begin begin
if ifNil(value) then return 0; return SafeConvert(value, thisFunction(TSUnitConverter.CentimetersToPoints));
new_value := ifString(value) ? strToFloat(value) : value;
return TSUnitConverter.TwipsToPoints(new_value);
end;
function HalfPointToPoints(value): real;
begin
if ifNil(value) then return 0;
new_value := ifString(value) ? strToFloat(value) : value;
return TSUnitConverter.HalfPointToPoints(new_value);
end; end;
function EmusToPoints(value): real; function EmusToPoints(value): real;
begin begin
if ifNil(value) then return 0; return SafeConvert(value, thisFunction(TSUnitConverter.EmusToPoints));
new_value := ifString(value) ? strToFloat(value) : value; end;
return TSUnitConverter.EmusToPoints(new_value);
function InchesToPoints(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.InchesToPoints));
end;
function LinesToPoints(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.LinesToPoints));
end;
function MillimetersToPoints(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.MillimetersToPoints));
end;
function PicasToPoints(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.PicasToPoints));
end;
function TwipsToPoints(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.TwipsToPoints));
end;
// points -> other
function PointsToCentimeters(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.PointsToCentimeters));
end;
function PointsToEmus(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.PointsToEmus));
end;
function PointsToInches(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.PointsToInches));
end;
function PointsToLines(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.PointsToLines));
end;
function PointsToMillimeters(value);
begin
return SafeConvert(value, thisFunction(TSUnitConverter.PointsToMillimeters));
end;
function PointsToPicas(value);
begin
return SafeConvert(value, thisFunction(TSUnitConverter.PointsToPicas));
end;
function PointsToTwips(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.PointsToTwips));
end;
// other
function HalfPointsToPoints(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.HalfPointsToPoints));
end;
function PointsToHalfPoints(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.PointsToHalfPoints));
end;
function EighthPointsToPoints(value): real;
begin
return SafeConvert(value, thisFunction(TSUnitConverter.EighthPointsToPoints));
end; end;
function PercentToNumber(value): real; function PercentToNumber(value): real;
begin begin
if ifNil(value) then return 0; return SafeConvert(value, thisFunction(TSUnitConverter.PercentToNumber));
new_value := ifString(value) ? strToFloat(value) : value;
return TSUnitConverter.PercentToNumber(new_value);
end; end;
function NumberToPercent(value): real; function NumberToPercent(value): real;
begin begin
if ifNil(value) then return 0; return SafeConvert(value, thisFunction(TSUnitConverter.NumberToPercent));
new_value := ifString(value) ? strToFloat(value) : value;
return TSUnitConverter.NumberToPercent(new_value);
end; end;
function ToInt(value): integer; function ToInt(value): real;
begin begin
if ifNil(value) then return 0; if ifnumber(value) then return integer(value);
return strtoIntDef(value, 0); if ifstring(value) then return strToIntDef(value, 0);
end; return 0;
function EighthPointToPoints(value): real;
begin
if ifNil(value) then return 0;
new_value := ifString(value) ? strToFloat(value) : value;
return TSUnitConverter.EighthPointToPoints(new_value);
end; end;
end. end.
+103 -21
View File
@@ -1,48 +1,130 @@
unit TSUnitConverter; unit TSUnitConverter;
interface interface
function PointsToTwips(value): real; // other -> points
function TwipsToPoints(value: real): real; function CentimetersToPoints(centimeters: real): real;
function EmusToPoints(value: real): real; function EmusToPoints(emus: real): real;
function HalfPointToPoints(value: real): real; function InchesToPoints(inches: real): real;
function EighthPointToPoints(value: real): real; function LinesToPoints(lines: real): real;
function PercentToNumber(value: real): real; function MillimetersToPoints(millimeters: real): real;
function NumberToPercent(value: real): real; function PicasToPoints(picas: real): real;
function PixelsToPoints(pixels: real; f_vertical: boolean = false): real; // TODO 不实现,与DPI有关
function TwipsToPoints(twips: real): real;
// points -> other
function PointsToCentimeters(points: real): real;
function PointsToEmus(points: real): real;
function PointsToInches(points: real): real;
function PointsToLines(points: real): real;
function PointsToMillimeters(points: real);
function PointsToPicas(points: real);
function PointsToPixels(points: real); // TODO
function PointsToTwips(points): real;
// other
function HalfPointsToPoints(half_points: real): real;
function PointsToHalfPoints(points: real): real;
function EighthPointsToPoints(eighth_points: real): real;
function PercentToNumber(percent: real): real;
function NumberToPercent(number: real): real;
implementation implementation
function PointsToTwips(value): real; function CentimetersToPoints(centimeters: real): real;
begin begin
return value * 20; return centimeters * 28.346456692913385826771653543307;
end; end;
function TwipsToPoints(value: real): real; function EmusToPoints(emus: real): real;
begin begin
return value / 20; return emus / 12700;
end; end;
function EmusToPoints(value: real): real; function InchesToPoints(inches: real): real;
begin begin
return value / 12700; return inches * 72;
end; end;
function HalfPointToPoints(value: real): real; function LinesToPoints(lines: real): real;
begin begin
return value / 2; return lines * 12; // Assuming 1 line = 12 points
end; end;
function PercentToNumber(value: real): real; function MillimetersToPoints(millimeters: real): real;
begin begin
return value / 100; return millimeters * 2.8346456692913385826771653543307;
end; end;
function NumberToPercent(value: real): real; function PicasToPoints(picas: real): real;
begin begin
return value * 100; return picas * 12;
end; end;
function EighthPointToPoints(value: real): real; function TwipsToPoints(twips: real): real;
begin begin
return value / 8; return twips / 20;
end;
// Points -> others
function PointsToCentimeters(points: real): real;
begin
return points / 28.346456692913385826771653543307;
end;
function PointsToEmus(points: real): real;
begin
return points * 12700;
end;
function PointsToInches(points: real): real;
begin
return points / 72;
end;
function PointsToLines(points: real): real;
begin
return points / 12;
end;
function PointsToMillimeters(points: real);
begin
return points / 2.8346456692913385826771653543307;
end;
function PointsToTwips(points): real;
begin
return points * 20;
end;
function PointsToPicas(points: real);
begin
return points / 12;
end;
// other
function HalfPointsToPoints(half_points: real): real;
begin
return half_points / 2;
end;
function PointsToHalfPoints(points: real): real;
begin
return points * 2;
end;
function EighthPointsToPoints(eighth_points: real): real;
begin
return eighth_points / 8;
end;
function PercentToNumber(percent: real): real;
begin
return percent / 100;
end;
function NumberToPercent(number: real): real;
begin
return number * 100;
end; end;
end. end.