初步refactor xml公式

This commit is contained in:
csh 2025-04-22 17:48:52 +08:00
parent 2e0aadd3d0
commit 600ce2e358
5 changed files with 843 additions and 175 deletions

View File

@ -278,7 +278,8 @@ begin
ftr_range.Parent := self;
ftr_range.LowerBound := 0;
flag := ftr_range.Calc();
y_offset := current_page_.SectPr.PgSz.H - ftr_range.DynamicHeight - current_page_.SectPr.PgMar.Footer;
// y_offset := current_page_.SectPr.PgSz.H - ftr_range.DynamicHeight - current_page_.SectPr.PgMar.Footer;
y_offset := current_page_.SectPr.PgMar.Footer + ftr_range.DynamicHeight;
ftr_range.Offset(current_page_.SectPr.PgMar.Left, y_offset, current_page_);
if flag then
ftr_range.Do();

File diff suppressed because it is too large Load Diff

View File

@ -608,7 +608,9 @@ begin
i := 0;
while true do
begin
y := {self.}TextPoint.Y - i * {self.}SectPr.DocGrid.LinePitch;
y := {self.}SectPr.PgSz.H - max({self.}SectPr.PgMar.Top, {self.}SectPr.PgMar.Header);
y := min(y, {self.}HdrPoint.Y);
y := y - i * {self.}SectPr.DocGrid.LinePitch;
if y <= {self.}SectPr.PgMar.Bottom then break;
pdf_page_.SetLineWidth(0.05);
pdf_page_.SetGrayStroke(0.75);
@ -627,7 +629,7 @@ begin
x4 := x2;
y4 := y3;
pdf_page_.SetLineWidth(0.05);
pdf_page_.SetGrayStroke(0.5);
pdf_page_.SetGrayStroke(0.70);
pdf_page_.MoveTo(x1, y1);
pdf_page_.LineTo(x2, y2);
pdf_page_.Stroke();

View File

@ -7,6 +7,7 @@ public
function Create();
function Do();virtual;
function Offset(x: real; y: real; page: Page);virtual;
function AdjustOffset(x: real; y: real);virtual;
public
[weakref]Parent: tslobj;
@ -59,6 +60,7 @@ public
function Do();override;
public
RPr: RPrUnitDecorator;
Image: PdfImage;
Type: string;
end;
@ -98,6 +100,12 @@ begin
{self.}EndPage := page;
end;
function BasicRange.AdjustOffset(x: real; y: real);virtual;
begin
{self.}XOffset += x;
{self.}YOffset += y;
end;
// ImageRange
function ImageRange.Create();
begin
@ -108,6 +116,18 @@ end;
function ImageRange.Do();override;
begin
if {self.}RPr.Highlight.Val = "yellow" then
begin
{self.}EndPage.PdfPage.SetRGBFill(1, 1, 0);
x := {self.}EndX;
y := {self.}Parent.EndY;
w := {self.}Width;
h := {self.}Parent.DynamicHeight;
{self.}EndPage.PdfPage.Rectangle(x, y, w, h);
{self.}EndPage.PdfPage.Fill();
{self.}EndPage.PdfPage.SetRGBFill(0, 0, 0);
end
// println("image = {}, type = {}, x = {}, y = {}, w = {}, h = {}", {self.}image, {self.}Type, {self.}endx, {self.}endy, {self.}width, {self.}DynamicHeight);
if {self.}Type = "emf" then
{self.}EndPage.PdfPage.DrawEmf({self.}Image, {self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
@ -140,7 +160,7 @@ function BordersRange.DoFill();
begin
borders := {self.}TcPr.TcBorders;
// println("TcPr.Shd.Val = {}", TcPr.Shd.Val);
if {self.}TcPr.Shd.Val <> "clear" and {self.}TcPr.Shd.Fill and {self.}TcPr.Shd.Fill <> "auto" then
if {self.}TcPr.Shd.Val = "clear" and {self.}TcPr.Shd.Fill and {self.}TcPr.Shd.Fill <> "auto" then
begin
[r, g, b] := DTPColorToolKit.HexToRGB({self.}TcPr.Shd.Fill);
{self.}EndPage.PdfPage.SetRGBFill(r/255, g/255, b/255);
@ -227,6 +247,17 @@ begin
y += sz / 3;
sz := sz * 2 / 3;
end
if {self.}RPr.Highlight.Val = "yellow" then
begin
{self.}EndPage.PdfPage.SetRGBFill(1, 1, 0);
x := {self.}EndX;
y := {self.}Parent.EndY;
w := {self.}Width;
h := {self.}Parent.DynamicHeight;
{self.}EndPage.PdfPage.Rectangle(x, y, w, h);
{self.}EndPage.PdfPage.Fill();
{self.}EndPage.PdfPage.SetRGBFill(0, 0, 0);
end
{self.}EndPage.PdfPage.SetRGBFill(r / 255, g / 255, b / 255);
{self.}EndPage.PdfPage.SetFontAndSize({self.}Font, sz);
{self.}EndPage.PdfPage.BeginText();
@ -254,7 +285,7 @@ end;
function LineRange.Do();override;
begin
// println("endx = {}, endy = {}, width = {}", EndX, EndY, Width);
// println("endx = {}, endy = {}, width = {}, line_width = {}", EndX, EndY, Width, LineWidth);
{self.}EndPage.PdfPage.SetLineWidth({self.}LineWidth);
{self.}EndPage.PdfPage.SetRGBStroke(0, 0, 0);
{self.}EndPage.PdfPage.MoveTo({self.}EndX, {self.}EndY);

View File

@ -185,18 +185,22 @@ begin
"β": chr(0x62),
"ε": chr(0x65),
"γ": chr(0x67),
"π": chr(0x70),
"θ": chr(0x71),
"{": chr(0x7B),
"}": chr(0x7D),
"∞": chr(0xA5),
"f": chr(0xA6),
"±": chr(0xB1),
"×": chr(0xB4),
"∂": chr(0xB6),
"∏": chr(0xD5),
"〈": chr(0xE1),
"∑": chr(0xE5),
"⌊": chr(0xEB),
"〉": chr(0xF1),
"Į": chr(0xF2),
"⌋": chr(0xFB),
// "": chr(0x),
);
end