mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 21:41:35 +02:00
fpvectorial: Adds skeleton for MathML support
git-svn-id: trunk@36798 -
This commit is contained in:
parent
400e093b67
commit
b7d551eece
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1020,6 +1020,7 @@ components/fpvectorial/fpvectorialpkg.pas svneol=native#text/plain
|
|||||||
components/fpvectorial/fpvtocanvas.pas svneol=native#text/plain
|
components/fpvectorial/fpvtocanvas.pas svneol=native#text/plain
|
||||||
components/fpvectorial/fpvutils.pas svneol=native#text/plain
|
components/fpvectorial/fpvutils.pas svneol=native#text/plain
|
||||||
components/fpvectorial/lasvectorialreader.pas svneol=native#text/plain
|
components/fpvectorial/lasvectorialreader.pas svneol=native#text/plain
|
||||||
|
components/fpvectorial/mathmlvectorialreader.pas svneol=native#text/plain
|
||||||
components/fpvectorial/pdfvectorialreader.pas svneol=native#text/plain
|
components/fpvectorial/pdfvectorialreader.pas svneol=native#text/plain
|
||||||
components/fpvectorial/pdfvrlexico.pas svneol=native#text/plain
|
components/fpvectorial/pdfvrlexico.pas svneol=native#text/plain
|
||||||
components/fpvectorial/pdfvrsemantico.pas svneol=native#text/plain
|
components/fpvectorial/pdfvrsemantico.pas svneol=native#text/plain
|
||||||
|
@ -41,7 +41,9 @@ type
|
|||||||
vfPostScript, vfEncapsulatedPostScript,
|
vfPostScript, vfEncapsulatedPostScript,
|
||||||
{ GCode formats }
|
{ GCode formats }
|
||||||
vfGCodeAvisoCNCPrototipoV5, vfGCodeAvisoCNCPrototipoV6,
|
vfGCodeAvisoCNCPrototipoV5, vfGCodeAvisoCNCPrototipoV6,
|
||||||
{ Other formats }
|
{ Formula formats }
|
||||||
|
vfMathML,
|
||||||
|
{ Raster Image formats }
|
||||||
vfRAW
|
vfRAW
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<CompilerPath Value="$(CompPath)"/>
|
<CompilerPath Value="$(CompPath)"/>
|
||||||
</Other>
|
</Other>
|
||||||
</CompilerOptions>
|
</CompilerOptions>
|
||||||
<Files Count="14">
|
<Files Count="15">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="svgvectorialwriter.pas"/>
|
<Filename Value="svgvectorialwriter.pas"/>
|
||||||
<UnitName Value="svgvectorialwriter"/>
|
<UnitName Value="svgvectorialwriter"/>
|
||||||
@ -69,6 +69,10 @@
|
|||||||
<Filename Value="rawvectorialreadwrite.pas"/>
|
<Filename Value="rawvectorialreadwrite.pas"/>
|
||||||
<UnitName Value="rawvectorialreadwrite"/>
|
<UnitName Value="rawvectorialreadwrite"/>
|
||||||
</Item14>
|
</Item14>
|
||||||
|
<Item15>
|
||||||
|
<Filename Value="mathmlvectorialreader.pas"/>
|
||||||
|
<UnitName Value="mathmlvectorialreader"/>
|
||||||
|
</Item15>
|
||||||
</Files>
|
</Files>
|
||||||
<Type Value="RunAndDesignTime"/>
|
<Type Value="RunAndDesignTime"/>
|
||||||
<RequiredPkgs Count="2">
|
<RequiredPkgs Count="2">
|
||||||
|
@ -10,7 +10,8 @@ uses
|
|||||||
svgvectorialwriter, fpvtocanvas, fpvectorial, fpvectbuildunit,
|
svgvectorialwriter, fpvtocanvas, fpvectorial, fpvectbuildunit,
|
||||||
dxfvectorialreader, cdrvectorialreader, avisozlib, avisocncgcodewriter,
|
dxfvectorialreader, cdrvectorialreader, avisozlib, avisocncgcodewriter,
|
||||||
avisocncgcodereader, svgvectorialreader, epsvectorialreader, fpvutils,
|
avisocncgcodereader, svgvectorialreader, epsvectorialreader, fpvutils,
|
||||||
lasvectorialreader, rawvectorialreadwrite, LazarusPackageIntf;
|
lasvectorialreader, rawvectorialreadwrite, mathmlvectorialreader,
|
||||||
|
LazarusPackageIntf;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
94
components/fpvectorial/mathmlvectorialreader.pas
Normal file
94
components/fpvectorial/mathmlvectorialreader.pas
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
{
|
||||||
|
Reads a MathML Document
|
||||||
|
|
||||||
|
License: The same modified LGPL as the Free Pascal RTL
|
||||||
|
See the file COPYING.modifiedLGPL for more details
|
||||||
|
|
||||||
|
AUTHORS: Felipe Monteiro de Carvalho
|
||||||
|
}
|
||||||
|
unit mathmlvectorialreader;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, math,
|
||||||
|
xmlread, dom,
|
||||||
|
fpvectorial, fpvutils;
|
||||||
|
|
||||||
|
type
|
||||||
|
{ TvMathMLVectorialReader }
|
||||||
|
|
||||||
|
TvMathMLVectorialReader = class(TvCustomVectorialReader)
|
||||||
|
private
|
||||||
|
FPointSeparator, FCommaSeparator: TFormatSettings;
|
||||||
|
function StringToFloat(AStr: string): Single;
|
||||||
|
public
|
||||||
|
{ General reading methods }
|
||||||
|
constructor Create; override;
|
||||||
|
Destructor Destroy; override;
|
||||||
|
procedure ReadFromStream(AStream: TStream; AData: TvVectorialDocument); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{ TvMathMLVectorialReader }
|
||||||
|
|
||||||
|
function TvMathMLVectorialReader.StringToFloat(AStr: string): Single;
|
||||||
|
begin
|
||||||
|
Result := StrToInt(AStr);
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TvMathMLVectorialReader.Create;
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
|
||||||
|
FPointSeparator := DefaultFormatSettings;
|
||||||
|
FPointSeparator.DecimalSeparator := '.';
|
||||||
|
FPointSeparator.ThousandSeparator := '#';// disable the thousand separator
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TvMathMLVectorialReader.Destroy;
|
||||||
|
begin
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TvMathMLVectorialReader.ReadFromStream(AStream: TStream;
|
||||||
|
AData: TvVectorialDocument);
|
||||||
|
var
|
||||||
|
Doc: TXMLDocument;
|
||||||
|
lFirstLayer, lCurNode: TDOMNode;
|
||||||
|
lPage: TvVectorialPage;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
// Read in xml file from the stream
|
||||||
|
ReadXMLFile(Doc, AStream);
|
||||||
|
|
||||||
|
{// Read the properties of the <svg> tag
|
||||||
|
AData.Width := StringWithUnitToFloat(Doc.DocumentElement.GetAttribute('width'));
|
||||||
|
AData.Height := StringWithUnitToFloat(Doc.DocumentElement.GetAttribute('height'));}
|
||||||
|
|
||||||
|
// Now process the elements inside the first layer
|
||||||
|
lFirstLayer := Doc.DocumentElement.FirstChild;
|
||||||
|
lCurNode := lFirstLayer.FirstChild;
|
||||||
|
lPage := AData.AddPage();
|
||||||
|
lPage.Width := AData.Width;
|
||||||
|
lPage.Height := AData.Height;
|
||||||
|
while Assigned(lCurNode) do
|
||||||
|
begin
|
||||||
|
//ReadFormulaFromNode(lCurNode, lPage, AData);
|
||||||
|
lCurNode := lCurNode.NextSibling;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
// finally, free the document
|
||||||
|
Doc.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
|
||||||
|
RegisterVectorialReader(TvMathMLVectorialReader, vfMathML);
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user