120 lines
2.9 KiB
ObjectPascal

unit SpkXMLTools;
{$mode ObjFpc}
{$H+}
interface
uses
Graphics, SysUtils, SpkXMLParser;
type TSpkXMLTools = class
private
protected
public
class procedure Save(Node : TSpkXMLNode; Font : TFont); overload;
class procedure Load(Node : TSpkXMLNode; Font : TFont); overload;
end;
implementation
{ TXMLTools }
class procedure TSpkXMLTools.Load(Node: TSpkXMLNode; Font: TFont);
var Subnode, Subnode2 : TSpkXMLNode;
begin
if not(assigned(Node)) then
raise exception.create('TSpkXMLTools.Load: Nieprawid³owa ga³¹Ÿ XML!');
if not(assigned(Font)) then
raise exception.create('TSpkXMLTools.Load: Brak obiektu czcionki do wczytania!');
Subnode:=Node['Charset',false];
if assigned(Subnode) then
Font.Charset:=TFontCharset(Subnode.TextAsInteger);
Subnode:=Node['Color',false];
if assigned(Subnode) then
Font.Color:=Subnode.TextAsInteger;
Subnode:=Node['Name',false];
if assigned(Subnode) then
Font.Name:=Subnode.Text;
Subnode:=Node['Orientation',false];
if assigned(Subnode) then
Font.Orientation:=Subnode.TextAsInteger;
Subnode:=Node['Pitch',false];
if assigned(Subnode) then
Font.Pitch:=TFontPitch(Subnode.TextAsInteger);
Subnode:=Node['Size',false];
if assigned(Subnode) then
Font.Size:=Subnode.TextAsInteger;
Subnode:=Node['Style',false];
if assigned(Subnode) then
begin
Subnode2:=Subnode['Bold',false];
if assigned(Subnode2) then
if Subnode2.TextAsBoolean then
Font.Style:=Font.Style + [fsBold] else
Font.Style:=Font.Style - [fsBold];
Subnode2:=Subnode['Italic',false];
if assigned(Subnode2) then
if Subnode2.TextAsBoolean then
Font.Style:=Font.Style + [fsItalic] else
Font.Style:=Font.Style - [fsItalic];
Subnode2:=Subnode['Underline',false];
if assigned(Subnode2) then
if Subnode2.TextAsBoolean then
Font.Style:=Font.Style + [fsUnderline] else
Font.Style:=Font.Style - [fsUnderline];
end;
end;
class procedure TSpkXMLTools.Save(Node: TSpkXMLNode; Font: TFont);
var Subnode, Subnode2 : TSpkXMLNode;
begin
if not(assigned(Node)) then
raise exception.create('TSpkXMLTools.Save: Nieprawid³owa ga³¹Ÿ XML!');
if not(assigned(Font)) then
raise exception.create('TSpkXMLTools.Save: Brak obiektu czcionki do zapisania!');
Subnode:=Node['Charset',true];
Subnode.TextAsInteger:=Font.Charset;
Subnode:=Node['Color',true];
Subnode.TextAsInteger:=Font.Color;
Subnode:=Node['Name',true];
Subnode.Text:=Font.Name;
Subnode:=Node['Orientation',true];
Subnode.TextAsInteger:=Font.Orientation;
Subnode:=Node['Pitch',true];
Subnode.TextAsInteger:=ord(Font.Pitch);
Subnode:=Node['Size',true];
Subnode.TextAsInteger:=Font.Size;
Subnode:=Node['Style',true];
Subnode2:=Subnode['Bold',true];
Subnode2.TextAsBoolean:=fsBold in Font.Style;
Subnode2:=Subnode['Italic',true];
Subnode2.TextAsBoolean:=fsItalic in Font.Style;
Subnode2:=Subnode['Underline',true];
Subnode2.TextAsBoolean:=fsUnderline in Font.Style;
end;
end.