tvplanit: Fix weekview not showing events on last day of week.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8455 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2022-09-07 16:29:58 +00:00
parent 803fc6ce41
commit 6ee0fa1fea
4 changed files with 300 additions and 325 deletions

View File

@ -26,6 +26,9 @@ type
RealLineColor: TColor; RealLineColor: TColor;
RealRowHeadAttrColor: TColor; RealRowHeadAttrColor: TColor;
RealColWidth: Integer;
RealFixedColWidth: Integer;
protected protected
procedure Clear; procedure Clear;
procedure DrawActiveDate; procedure DrawActiveDate;
@ -86,7 +89,7 @@ begin
dayRec := DayRecords[ActiveCol]; dayRec := DayRecords[ActiveCol];
eventRec := EventRecords[ActiveRow]; eventRec := EventRecords[ActiveRow];
dx := LeftCol * ColWidth; dx := LeftCol * RealColWidth; //ColWidth;
dy := TopRow * RowHeight; dy := TopRow * RowHeight;
end; end;
@ -148,14 +151,14 @@ begin
begin begin
R1 := R; R1 := R;
InflateRect(R1, -1, -1); InflateRect(R1, -1, -1);
R1.Right := FGanttView.FixedColWidth-1; R1.Right := RealFixedColWidth - 1; //FGanttView.FixedColWidth-1;
DrawBevelRect( DrawBevelRect(
RenderCanvas, RenderCanvas,
TPSRotateRectangle(Angle, RenderIn, R1), TPSRotateRectangle(Angle, RenderIn, R1),
BevelHighlight, BevelHighlight,
BevelShadow BevelShadow
); );
R1.Left := FGanttView.FixedColWidth; R1.Left := RealFixedColWidth; //FGanttView.FixedColWidth;
R1.Right := RealRight-2; R1.Right := RealRight-2;
DrawBevelRect( DrawBevelRect(
RenderCanvas, RenderCanvas,
@ -165,14 +168,16 @@ begin
); );
end else end else
begin begin
TPSMoveTo(RenderCanvas, Angle, RenderIn, FGanttView.FixedColWidth, R.Top); // TPSMoveTo(RenderCanvas, Angle, RenderIn, FGanttView.FixedColWidth, R.Top);
TPSLineTo(RenderCanvas, Angle, RenderIn, FGanttView.FixedColWidth, R.Bottom); // TPSLineTo(RenderCanvas, Angle, RenderIn, FGanttView.FixedColWidth, R.Bottom);
TPSMoveTo(RenderCanvas, Angle, RenderIn, RealFixedColWidth, R.Top);
TPSLineTo(RenderCanvas, Angle, RenderIn, RealFixedColWidth, R.Bottom);
TPSMoveTo(RenderCanvas, Angle, RenderIn, RealLeft, R.Bottom); TPSMoveTo(RenderCanvas, Angle, RenderIn, RealLeft, R.Bottom);
TPSLineTo(RenderCanvas, Angle, RenderIn, RealRight, R.Bottom); TPSLineTo(RenderCanvas, Angle, RenderIn, RealRight, R.Bottom);
end; end;
// Offset due to scrolling // Offset due to scrolling
dx := FGanttView.LeftCol * FGanttView.ColWidth; dx := FGanttView.LeftCol * RealColWidth; //FGanttView.ColWidth;
// Draw month rectangles and month captions // Draw month rectangles and month captions
RenderCanvas.Font.Assign(FMonthFont); RenderCanvas.Font.Assign(FMonthFont);
@ -184,8 +189,12 @@ begin
OffsetRect(R, -dx , 0); OffsetRect(R, -dx , 0);
// Clip at fixed col edge // Clip at fixed col edge
{
if R.Left < FGanttView.FixedColWidth then if R.Left < FGanttView.FixedColWidth then
R.Left := FGanttView.FixedColWidth; R.Left := FGanttView.FixedColWidth;
}
if R.Left < RealFixedColWidth then
R.Left := RealFixedColWidth;
// Draw month box // Draw month box
if FGanttView.DrawingStyle = ds3D then if FGanttView.DrawingStyle = ds3D then
@ -232,7 +241,8 @@ begin
dayRec := FGanttView.DayRecords[i]; dayRec := FGanttView.DayRecords[i];
R := dayRec.Rect; R := dayRec.Rect;
OffsetRect(R, -dx, 0); OffsetRect(R, -dx, 0);
if R.Left < FGanttView.FixedColWidth then if R.Left < RealFixedColWidth then
// if R.Left < FGanttView.FixedColWidth then
Continue; Continue;
// In sdmHeader SpecialDayMode we must repaint the background of the // In sdmHeader SpecialDayMode we must repaint the background of the
@ -301,7 +311,7 @@ var
dx, dy: Integer; dx, dy: Integer;
top_margin, bottom_margin: Integer; top_margin, bottom_margin: Integer;
begin begin
dx := FGanttView.LeftCol * FGanttView.ColWidth; dx := FGanttView.LeftCol * RealColWidth; //FGanttView.ColWidth;
dy := FGanttView.TopRow * FGanttView.RowHeight; dy := FGanttView.TopRow * FGanttView.RowHeight;
if FGanttView.DrawingStyle = ds3D then if FGanttView.DrawingStyle = ds3D then
@ -324,10 +334,16 @@ begin
dec(R.Bottom, bottom_margin); dec(R.Bottom, bottom_margin);
if R.Top < FGanttView.TotalColHeaderHeight then if R.Top < FGanttView.TotalColHeaderHeight then
Continue; Continue;
if R.Right < RealFixedColWidth then
Continue;
if R.Left < RealFixedColWidth then
R.Left := RealFixedColWidth;
{
if R.Right < FGanttView.FixedColWidth then if R.Right < FGanttView.FixedColWidth then
Continue; Continue;
if R.Left < FGanttView.FixedColWidth then if R.Left < FGanttView.FixedColWidth then
R.Left := FGanttView.FixedColWidth; R.Left := FGanttView.FixedColWidth;
}
cat := FGanttView.DataStore.CategoryColorMap.GetCategory(event.Category); cat := FGanttView.DataStore.CategoryColorMap.GetCategory(event.Category);
RenderCanvas.Pen.Color := cat.Color; RenderCanvas.Pen.Color := cat.Color;
RenderCanvas.Brush.Color := cat.BackgroundColor; RenderCanvas.Brush.Color := cat.BackgroundColor;
@ -346,11 +362,12 @@ var
begin begin
RenderCanvas.Pen.Color := RealLineColor; RenderCanvas.Pen.Color := RealLineColor;
dx := FGanttView.LeftCol * FGanttView.ColWidth; dx := FGanttView.LeftCol * RealColWidth; //FGanttView.ColWidth;
dy := FGanttView.TopRow * FGanttView.RowHeight; dy := FGanttView.TopRow * FGanttView.RowHeight;
// Horizontal line terminating the col header block // Horizontal line terminating the col header block
x1 := RealLeft + FGanttView.FixedColWidth; // x1 := RealLeft + FGanttView.FixedColWidth;
x1 := RealLeft + RealFixedColWidth;
n := FGanttView.NumMonths; n := FGanttView.NumMonths;
if n > 0 then if n > 0 then
begin begin
@ -360,7 +377,9 @@ begin
x2 := RealRight; x2 := RealRight;
y0 := FGanttView.TotalColHeaderHeight; y0 := FGanttView.TotalColHeaderHeight;
if FGanttView.DrawingStyle = ds3D then dec(y0); if FGanttView.DrawingStyle = ds3D then dec(y0);
RenderCanvas.Line(x1, y0, x2, y0); TPSMoveTo(RenderCanvas, Angle, RenderIn, x1, y0);
TPSLineTo(RenderCanvas, Angle, RenderIn, x2, y0);
// RenderCanvas.Line(x1, y0, x2, y0);
// Horizontal lines // Horizontal lines
if (gvoHorizGrid in FGanttView.Options) then if (gvoHorizGrid in FGanttView.Options) then
@ -373,7 +392,11 @@ begin
eventRec := FGanttView.EventRecords[i]; eventRec := FGanttView.EventRecords[i];
y1 := y0 + eventRec.EventRect.Bottom; y1 := y0 + eventRec.EventRect.Bottom;
if y1 >= FGanttView.TotalColHeaderHeight then if y1 >= FGanttView.TotalColHeaderHeight then
RenderCanvas.Line(x1, y1, x2, y1); begin
TPSMoveTo(RenderCanvas, Angle, RenderIn, x1, y1);
TPSLineTo(RenderCanvas, Angle, RenderIn, x2, y1);
// RenderCanvas.Line(x1, y1, x2, y1);
end;
end; end;
end; end;
@ -393,8 +416,13 @@ begin
dayRec := FGanttView.DayRecords[i]; dayRec := FGanttView.DayRecords[i];
x1 := dayRec.Rect.Right - dx; x1 := dayRec.Rect.Right - dx;
x2 := x1; x2 := x1;
if x1 >= FGanttView.FixedColWidth then // if x1 >= FGanttView.FixedColWidth then
RenderCanvas.Line(x1, y1, x2, y2); if x1 >= RealFixedColWidth then
begin
TPSMoveTo(RenderCanvas, Angle, RenderIn, x1, y1);
TPSLineTo(RenderCanvas, Angle, RenderIn, x2, y1);
// RenderCanvas.Line(x1, y1, x2, y2);
end;
end; end;
end; end;
end; end;
@ -414,7 +442,8 @@ begin
if FGanttView.DrawingStyle = ds3d then begin if FGanttView.DrawingStyle = ds3d then begin
R.Left := RealLeft + 1; R.Left := RealLeft + 1;
R.Top := RealTop; R.Top := RealTop;
R.Right := RealLeft + FGanttView.FixedColWidth - 1; // R.Right := RealLeft + FGanttView.FixedColWidth - 1;
R.Right := RealLeft + RealFixedColWidth - 1;
R.Bottom := RealBottom - 1; R.Bottom := RealBottom - 1;
TPSFillRect(RenderCanvas, Angle, RenderIn, R); TPSFillRect(RenderCanvas, Angle, RenderIn, R);
DrawBevelRect( DrawBevelRect(
@ -424,10 +453,13 @@ begin
BevelShadow BevelShadow
); );
end else begin end else begin
R := Rect(RealLeft, RealTop + 1, RealLeft + FGanttView.FixedColWidth, RealBottom); // R := Rect(RealLeft, RealTop + 1, RealLeft + FGanttView.FixedColWidth, RealBottom);
R := Rect(RealLeft, RealTop + 1, RealLeft + RealFixedColWidth, RealBottom);
TPSFillRect(RenderCanvas, Angle, RenderIn, R); TPSFillRect(RenderCanvas, Angle, RenderIn, R);
RenderCanvas.Pen.Color := RealLineColor; RenderCanvas.Pen.Color := RealLineColor;
RenderCanvas.Line(R.Right, R.Top, R.Right, R.Bottom); TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right, R.Top);
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right, R.Bottom);
// RenderCanvas.Line(R.Right, R.Top, R.Right, R.Bottom);
end; end;
RenderCanvas.Font.Assign(FEventFont); RenderCanvas.Font.Assign(FEventFont);
@ -456,7 +488,9 @@ begin
); );
end else end else
begin begin
RenderCanvas.Line(R.Left, R.Bottom, R.Right, R.Bottom); TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Left, R.Bottom);
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right, R.Bottom);
// RenderCanvas.Line(R.Left, R.Bottom, R.Right, R.Bottom);
end; end;
// Paint event description as header // Paint event description as header
@ -482,7 +516,7 @@ begin
nEvents := NumEvents; nEvents := NumEvents;
nDays := NumDays; nDays := NumDays;
dx := LeftCol * ColWidth; dx := LeftCol * RealColWidth; //ColWidth;
dy := TopRow * RowHeight; dy := TopRow * RowHeight;
y1 := TotalColHeaderHeight; y1 := TotalColHeaderHeight;
@ -503,7 +537,8 @@ begin
RenderCanvas.Brush.Color := clr; RenderCanvas.Brush.Color := clr;
x1 := dayRec.Rect.Left - dx; x1 := dayRec.Rect.Left - dx;
x2 := dayRec.Rect.Right - dx; x2 := dayRec.Rect.Right - dx;
RenderCanvas.FillRect(x1, y1, x2, y2); TPSFillRect(RenderCanvas, Angle, RenderIn, Rect(x1, y1, x2, y2));
// RenderCanvas.FillRect(x1, y1, x2, y2);
end; end;
end; end;
end; end;
@ -606,6 +641,9 @@ begin
FGanttView.Init; FGanttView.Init;
FGanttView.VisibleCols := FGanttView.CalcVisibleCols(RealRight - RealLeft); FGanttView.VisibleCols := FGanttView.CalcVisibleCols(RealRight - RealLeft);
FGanttView.VisibleRows := FGanttView.CalcVisibleRows(RealBottom - RealTop); FGanttView.VisibleRows := FGanttView.CalcVisibleRows(RealBottom - RealTop);
RealColWidth := round(FGanttView.ColWidth * Scale);
RealFixedColWidth := round(FGanttView.FixedColWidth * Scale);
end; end;
end. end.

View File

@ -14,7 +14,6 @@ object frmPrintPreview: TfrmPrintPreview
OnCreate = FormCreate OnCreate = FormCreate
OnKeyDown = FormKeyDown OnKeyDown = FormKeyDown
OnShow = FormShow OnShow = FormShow
LCLVersion = '1.9.0.0'
object Panel1: TPanel object Panel1: TPanel
Left = 0 Left = 0
Height = 58 Height = 58
@ -32,7 +31,7 @@ object frmPrintPreview: TfrmPrintPreview
Width = 538 Width = 538
AutoSize = True AutoSize = True
ButtonHeight = 25 ButtonHeight = 25
ButtonWidth = 25 ButtonWidth = 23
Caption = 'ToolBar1' Caption = 'ToolBar1'
EdgeBorders = [ebBottom] EdgeBorders = [ebBottom]
Images = imMain Images = imMain
@ -63,28 +62,28 @@ object frmPrintPreview: TfrmPrintPreview
ShowCaption = False ShowCaption = False
end end
object btnPrevPage: TToolButton object btnPrevPage: TToolButton
Left = 82 Left = 80
Top = 0 Top = 0
Action = actPrevPage Action = actPrevPage
AutoSize = True AutoSize = True
ShowCaption = False ShowCaption = False
end end
object btnNextPage: TToolButton object btnNextPage: TToolButton
Left = 107 Left = 103
Top = 0 Top = 0
Action = actNextPage Action = actNextPage
AutoSize = True AutoSize = True
ShowCaption = False ShowCaption = False
end end
object btnLastPage: TToolButton object btnLastPage: TToolButton
Left = 132 Left = 126
Top = 0 Top = 0
Action = actLastPage Action = actLastPage
AutoSize = True AutoSize = True
ShowCaption = False ShowCaption = False
end end
object ToolButton8: TToolButton object ToolButton8: TToolButton
Left = 157 Left = 149
Height = 25 Height = 25
Top = 0 Top = 0
Caption = 'ToolButton8' Caption = 'ToolButton8'
@ -92,7 +91,7 @@ object frmPrintPreview: TfrmPrintPreview
Style = tbsDivider Style = tbsDivider
end end
object btnCancel: TToolButton object btnCancel: TToolButton
Left = 162 Left = 154
Top = 0 Top = 0
Action = actCancel Action = actCancel
AutoSize = True AutoSize = True
@ -164,209 +163,150 @@ object frmPrintPreview: TfrmPrintPreview
TabOrder = 1 TabOrder = 1
end end
object imMain: TImageList object imMain: TImageList
left = 272 Left = 272
top = 160 Top = 160
Bitmap = { Bitmap = {
4C690600000010000000100000005B4848005B4848005B484800564343008679 4C7A060000001000000010000000911000000000000078DACD97075055D7B7C6
799CD1CDCDF3D1CDCDEFD0CCCCEFD1CCCCEFD2CDCDEFD3CDCDF38E8181A75747 D7BD7450411144A2A8081A2CC458B087008222A0227640B11144D1BFBD1B4510
47025D4D4D005D4D4D005D4D4D005642420056424200554242004D3A3A009387 13093152C4125154C460C18614518A0D052B55441050BAF47B69F77E6F5D306F
87AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9494BB4F3F 3289C973266FE6BD3BF3CD3973CFFE9D75F6DA7BEDB596E39429E4F851732C2C
3F05584848005948480059484800444141004F4444005C464600563F3F009386 68DFD6ADC79FA7A5D5B3AA9FA5A6563F67BDE0FB97FC9FDF9E3DE7E64E9E2C74
86ABFDFDFDFFFFFFFFFFFBFFFFFFF8FFFFFFF5FFFFFFFAFFFFFF9F9393B75945 B6B3A3DF35C7DCBC5DB35976E3C691BF8FCF65FCCD2F2420206EBAA9A9C23CB6
4504614C4C0050464600464545004041410043444400584C4C00513F3F009B8C 35FFA3269999D1F44993C8C9CA8AE6989A92FFBE7D111289A47D7C2BAB89D5C8
8CA5FDFDFDFFFEFFFFFFF8FFFFFFF5FFFFFFF1FFFFFFF8FFFFFFA79898B25443 6A91F1FEFE37E75B5ACA2FB6B5A5193CDECAD292BE65DE82F979FC9F3DF3C77C
43005C51510045454500424444004141410041414100454949002A2C2C13958B 7DCFCA78E91FD8DA8FF7E78283AFCEE2393AD9DB9325B3E6CC99312F93A5B535
8BC1FFFFFFFFFAFFFFFFF5FFFFFFF2FFFFFFEEFFFFFFF9FFFFFFA29797CC2A2C 0D1A324433F0C081447CB42763EB581F58CDACD0C38753794CAFC953A79239CF
2C1C474A4A0042424200434444003F3F3F094D4D4D686D6B6BB97E7B7BDEACA5 5766D7D4D454C5CECECECD63E5CA985DDBB7BFB970364CD22C16A1B1A519352D
A6FDF9F7F6FFF5FAF9FFF0FAF8FFECFAF9FFE8FBF9FFEFF9F9FFB4ACADFE7E7D 4DA8E46B696B33AA9B9B71FDC245E9AE9D3B0BD7AD5D17EF603F738D998579A7
7DE2727172BD5351526F4143420C59575787C8C2C2FFF6EFEEFFEAE5E5FFC3B4 F973E7FA3C4C4A82A8FA03CADFBD43F2F5087C789D8AEAC274541666A2A2280B
ABFFEEDCCCFFEFE2D4FFECE2D6FFEBE3D7FFEAE3D6FFEADFD0FFC5B6ADFFE0D7 E5459928CF7F867B5117519095830FC545789070078B162E0CFED9CFAF00AD2D
D9FFEEE4E3FFC7C0BFFF5F5E5E988F8E8EE0FFFBFAFFF8F4F5FFDFDBDBFFE0CB 686A68447E6E2E0A1E4740F22E0E6D05D7D09A731A6D2F83D0FAEC20A44FF7A3
ABFFFDE5BBFFFCE0B3FFFBD9A3FFFCD396FFFBD090FFFECF88FFE4C088FFD4CB 38613FD21F3F425A6A1C0A739F22E867FFD2C8C8C81AD97C6B3FD4212FE3296A
CAFFCDCCBBFFE2DBCFFF968F93E8B0B0B0F0FFFFFFFFF1EEF2FFDDD5CFFFF0C0 12D60337AD813043484375203DA5DD2E847445CDF17EC84D8B47715129EA2A2A
73FFFFB749FFFFA625FFFEA218FFFEA116FFFEA116FFFF9F11FFF09C21FFDBCD 70F3EAB5DAB09090DAAAE2625454D4E2DDF30434FBE8031BA9439B3E6A73875A
BDFFE4E3E8FFF2EBEBFFB7B2B3F1A69F9FF1EDE4E4FFEBEBF1FFE5D1C0FFF987 360A5172F73754D634A1BCA00057C2C26A827FFAA9FA494C0C9EDC494476F22D
22FFFF7500FFFF7500FFFF7600FFFF7600FFFF7700FFFF7700FFFA7502FFE7C4 149CFB11EFCFEE4659E82694FDBABA43A736E27DD82E14841F404E622C9E2424
AAFFECF0F8FFEAE0E0FFB1A6A6F0988D8DEFCEB9B9FFCEBFC1FFD8C3BCFFE0A7 41C69C0E08A809F4F37B5FF8EC1992AE5EC592452E70755F0B8F755BB16ADD36
8AFFE6A580FFE9A276FFE99D6EFFE99D6EFFE9A175FFE6A67EFFE0A88BFFD9C1 BE7668D5FAEDF058BF0D6E1E1BB0C87921622E4440C69C080AAAF0F1F67ED258
BAFFCEC0C2FFCEB9B9FFA39494F0958E8EE6E2D0D0FFC2B2B2FF625F60FF666A 5686E70F1F62CBA64DB871E33A921213712B2E8E158B58B613137D13717CBD71
71FF6D7279FF6C727AFF6D727AFF6D727AFF6C737BFF6D737AFF686D74FF5F5D FD3AB66CDE8C145EAFA6CA4A1CF4F5CD59B67CF9CA0749498D79191978C36AFF
5EFFB9ACABFFE2D0D0FF9E9696EB878585CEF5E9E9FFD1C8C8FF787676FFB5B5 F1FE6B6B6A424B63239A6A6BD15855855AB621AAAEC6DBCC4CE4B1521F3E14B9
B4FFC2C1C1FFBCBBBBFFBCBBBAFFBAB9B9FFB9B8B7FFBBB9B9FFB5B4B4FF7877 BBBB6F9BE9E020EFEAE666BD6BFDFA33A545451DFB9EF74A8B58CC6BDA00514D
77FFC9C2C2FFF8ECECFF908C8CD96465656BC7C2C2F5DDD5D5FFDED5D5FFFFFF 0DEAD9564D6987CF2B798F786EDA14B5C4D9D96EF6BC798A3367CDA2D56E6EE4
FFFFFFFDFDFFFCF8F8FFFAF5F5FFF8F1F1FFF5EDEDFFF1E9E9FFF6EFEFFFE1D6 B3658B57767A7A7D6E56568D4CAF64CACCACC9CDC8A8C9494FAFC979F9B25D79
D6FFDDD6D6FFCCC8C8F66A6A6A7A52535304666868497E7373A4E8E3E3FFFFFF D9D9F53CF6F8028EBD853366F0C2E05F29DC843A34BA43E7F9FEE238B935E726
FFFFFBF9F9FFFAF7F7FFF8F4F4FFF6F0F0FFF3ECECFFF0E8E8FFF2EBEBFFECE5 6BE3E82885ED47BE260A3026BA329128D192E88E05D1AD6F6840B2BD56C6C3D9
E5FF827676B6625D5D4D55585806525454006E68680087787884D8D4D4F3DBD7 5DF3424712858E203A3D9CC563430690DBED8D3391177B0827C7744E383C8004
D7F0DBD7D7F0DAD7D7F0DAD6D6F0DBD5D5F0D9D4D4F0D9D3D3F0D9D3D3F0DDD8 BF0E218A35234A603E7E22F54CB4D14EA9BC1B86573BCD5A8F31776C28D1F1C1
D8F38778789C5A4848005E505000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 44470DC9E9F282E1ADA286A7284B3E8433268AB78F0D22C145FEAEFBD644B7CD
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 4929C14229A9E4FA2F1CE099C8DF32BCE938F3C7F9FB8E0E209BF3338C6A3FE4
FF00FFFFFF00FFFFFF00FFFFFF00A8360000A8360000A8370000A8370000A936 46022511C8FAC9016126C293B2B9255AB12691CA1D33E18DC2D0EDFC3C1ECDC9
0000AD3A036FA74716FF9A35057B99310000942E0000B13D0000C1450000BF43 7B91E7AA532BE3830DC824D4A2DFFBD26761C0CB0328F2B3C16F139433CE8DA6
0000BC3E0026C35115D5C85511DDA2340000A2330000A3320000A33100009F26 3ED7F9BB6F4F24C1AD71743A3FD803C83987D6C865285CDD17D9F6B42E781019
0068BE7552FFDDBA92FFA0380DC0972600019D2C0000BA410000C0450000BD3D 1D1FAB9D53987C18B8BB11A5BB8D71C154F5EDD9513424CA9C28D992E46F8D27
0019C14B16C9ECC4A6FFDA7D41FB9B3200009B2D00009C2B00009A25005CAF5A FF5C5F6748D382203D668EE2D5BAC8B4A5BD3933894E8C577FF6266A3FC7AC0B
32FBF6F4CFFFE9C392FFA43606BE9B2A0001AD370000C6490000BE420007C043 3EAC51C76553E1FBF3A3E9EBF3E3D8D796EDDFBD2ADBD30E92446F609F3E4A96
07C2E7B491FFFFFAD6FFDF7832F89C3200009C2E00009A26004BA95029F1EEDB AB21C7817CF3E611E5CD273A39A947F6FB2333809DEAA87455C0B5C9EA6F6F9A
B0FFFFE7ABFFD78D53FFA63602A0A8360000C1460000C1440009BF4102B5E2A2 D280FB3644F7AC6592DB50B07B3CE03B08F02094BA76C25B4785BDD58B885A57
7BFFFFE7BDFFF9C383FFDD6618F19C32000098240036A24321E6E8D0A6FFFFD3 101DF98A469E1F2BFFB6629B1EE0D91DE5BB4D106FAFF32AC98A0C5267B0DF6D
8BFFE38E4BFFAA3C08D5A737001FB4410000BE3D0001BC3A00A3DF986DFFFFD9 49E9890D9D2AF3D0E4E73D21DDAD8FEAEF87E3838B7053EB77EC7B5EFB5323C9
A7FFFBB064FFE26E20FFD8510072982A00299C3916D9E2C397FFFFC475FFE880 22C65AB5AA969FC15B17E53B86E2C1CC4E29CFECA9E7137BA2A7F6A4F86A8EE0
2EFFAC3F0AE1A535002CB6420000C3450004BC3B0093DB8C5DFFFECD96FFFE9B 52ED962F00AFDE907A1942B455AFADC58D961D63FE0CAFEFE50934FFFEAC4E62
42FFE46E1AFFD64C0083D95200009E3B0FD0DEB688FFFFB760FFEE6F0FFFAF3F 91B721B0570725AEAA786E4FC1CFD9474F59F9F349BDD4459820FEBE37FBA11F
02E6A9370031A93A0000BF450000C144006CD8824DFFFDC185FFFF8622FFE765 A45BBB42BA4AAEEAF030F6C128A24B138862CCC8F5E5420DB41D1C8AC64D1AC8
0BFFD953008CDD580000DD590000A04417D8E69950FFFF7D0FFFEC6605FFB347 9E4DB7336793207D16D11BF655850B756DF84E2E4DEA33A0DD97582D14DF9C44
0FE1B73F0026C64B0000C5490000C5490374E0803BFFFF8C2AFFFF6D00FFE866 1427DB1F325FB1CF526C68E3DB553DD0E069887C47B984D77348903B97A86001
0CFFE15B0583EF5F0000FB690000992F0034A93904E1EB7A1EFFFF8214FFEA80 51F962A246573290AE517A0EDFC17C26AAB73C73209249F68D4F58693CDFCCD9
36FFBD5118DAC2460024CC500000C64C0007CE4B00A1E96D13FFFF8219FFFE80 C21D454B5450BC48E855E44C2453B113F32E44223722B8D3D758AB988FFF2814
22FFEF7F32FFEE600276FB6700009C330000A1340043B9490AEDF18022FFFF85 FFDBF8FDDF5230C7AEBF1191CC9F47D99F811C8F811CB747797D64CF7EEE4B53
1AFFEA7C2DFFC7520CC9D0510019CE510000CF510006DA5601AEF1781BFFFF84 8F8E52CF099F6680D0B10AA99FC307311F3C8CBA317BF0A4995E5BFEED709424
1DFFFE8425FFF6791EFCFA6800649B330000A4370000AF3C0059C6540CF7F685 FC8AF3133A8B3F870F30A2C98706089F46AFB1476D661C0FCB46D99D031C23AA
25FFFF8318FFE7660AFFD1510098D1520000CF520000DF59000FE86002C0F77F 7FCBCBAE474690E2A101E47B7C9C5653C699FD90142770DC9E80243D0819FBA7
1DFFFF8621FFFE7911FFFE6C03ED97300000A0350000AE3C0000B9410066D35E E39AA95CE9A7F88041ED364D0E1A50DAD56516A84CBB08649D02623D501BB608
10FFFC902DFFF57610FFD85500BED6550001D4540000DE590000EB600011F467 F7960C44E4584ABD694E669FE055FCFA9267F070F58A2747B7A355760EDD7083
03CDFE8726FFFF8622FFFF6E02F7B7440000BB460000C1490000C54B0000C94B 2460345E6F198A1B569D441746902FB35D6278BFFD990F1C4AC957178D46E5BD
0075E16C17FFF48225FFDF5B03C0DC560001DB570000E05A0000EA610000F566 9340B227C7491F88367441927D675C1A4F4FAE7E4363AEF01E979D29D19FE083
0024FE6F07D1FF8C2BFFFF770FFAD0530000D0530000CF520000CE520000CD51 8C85A9B11EDFA2FEFC62DEDBBAC03A011A57CA21D9A11BA2ACBADC4FB020A3C7
0000D655027CE36209FFE45F0284E35D0000E35D0000E45C0000EA600000F668 36B2BD49F4D6E9AF7CF070523D644807C3C72934BCDED81F123F23605B2748F6
0000FF6A0031FF7106DFFF7005E4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF F443E13E6B3C5CF045F5032BDA99398B3A7D9267FF1D362641E828B28C182FC8
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 4E5BD81D8DDE06C02E0D6007DFFB8E45EE6A0364CC1226712C0DFD24CF79E0EC
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 58A2AB66D439DA9C8EDDB75792566CEE05E9CEEEC07A25483DF550B95A13854E
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 54F84FFC35F6512CC775B235CD7B3C5DF0AAC8BD1B5A77EA702DA38CE6D58A28
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000932900009730 5F22107F0E7F772A119F417A990E74A27889329AB67447CB3A55D42DA7CFE7F9
00009A350000952B0000952C00009A330000983100008F20004A9A350FD9A84E 6C78C5E747E17C9A5BB554AEB8719522C4EE82CCFF2F71FFBB38D73F38676788
24FFA23905CCFFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000932900009730 63265DF30E1BD2F4F0F14437781E719CFFEE4D217AC16768EE1CA2F77C8ED62C
00009A350000952B0000962C0000983000128F200090A0411EFCDFBEA8FFE7C0 FBEBFA1F1DD949FC36EE280AEF5E40C4547D840EA6C06BA6A41D67FE99FC0855
9DFFA93C0DF7FFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000932900009730 71512CE74169161A726E2365C71C5C19237C196B4AD33E870F19217C97B6C716
00009A350000952B000094290047922602CFB86F51FFF1D6BBFFFFFFD8FFE9BF 12AE97917D02D2E23B7817E98BBB0E3AAD772DE810E711957FE24F8FA1B161C3
8BFFAF3F0AF7FFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000932900009831 29E5EE2203D4852D04A257712D7002A2179791BB6B0A9E590B9FBF9A4113DAF9
0000993300069226008C9C3A15F8D5A488FFFDE4C0FFFFD99EFFFDD496FFD588 E57FE5CFB2BF2E4EA0CE9747D2BE445BB5FA779C03A51CFBE05A419273195597
4FFFB33F03E8FFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000942A00009429 BF478173B7EA627BDACFF6553EC55FE0F8BEC6755682150D7F604D29B98BD4B8
0036902400CDB26443FFECCDADFFFFD7A1FFFFBA6DFFF1A65FFFC56227FFB039 E6560776F702E277A2253514D55EE350BB981EFC9997E59DB4E92C3BCE433664
00CCB7420041FFFFFF00FFFFFF00FFFFFF00FFFFFF00983100098E2000829832 F07476E784374BBBA3D94301F80F0FD9D303920B2E10FF6201B1ABF0D9DFF06A
0FEBCE9A7BFFFBDBB0FFFFB568FFFD9437FFDC782DFFB5460CF6AC33008CB742 8FA7D0E60C179DCA8A035338DE387E37A9427A60209ABCFAA3C155512C5A4881
000EB9460000FFFFFF00FFFFFF00FFFFFF00FFFFFF00952D00C3B25F37FFECC5 CD2B48FDCF3CD70A5FA64E13DC79BD4A1F4D3F71BDB19D7B8E6D9DD1E66300D1
A0FFFFC382FFFF841FFFF6740EFFC2510DFFAE3B00CEB23E0038B13C0000B642 462DD42F17BE162DA3A9E2652460FE2FFE7B3283F28BDDBB42C2318EF58ACC77
0000B8460000FFFFFF00FFFFFF00FFFFFF00FFFFFF00962E02CCBA6D40FFF3A9 43F3F75FA0CE5D198DCB2854EC461A625722E6E9537CE61C81B8C1438973B232
61FFFF861AFFFF7201FFF56B03FFC35312FFB6460EC6C0430029CB4B0000D655 DA7668A37E4337D42C13E4352CA785B29C2B96E91FF8BC052416AD514133C778
0000E15C0000FFFFFF00FFFFFF00FFFFFF00FFFFFF009832000A92250090A83A CD0A65D42CA5B3F59CEB1B5C3B72F6FFC4173B0B9E57B92AE2C372B952669DEA
05F4DC7523FFFD8E29FFFF7A0CFFFD8121FFE28649FFC85A1BEFC746007DD654 B9369289ED7F16FF7FA5AB53345E5EB7E95170956BCED88FB17EE35B3ECBF83C
000CE15C0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000972E0001A235 FB956BFB9031F26EA72D7BE0F050851D27B8163869D2516F85B04EF0F324B731
0045AB3B01D8CD5E14FFF58524FFFF7E10FFFF7C14FFF58C39FFDB6E24FFD554 CD65C9E188B5EDFD3C7A3C19DC9DD251E71FE3FC7DB03FE7E2AF55C2B2AFFC88
02C2E05A002DFFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000972D0000A539 DB3B1D71D880D69FE4FC7E86DF738EDF13C17B3E79A99108A22728893B8E5B96
0000B241000DB842009BC65107FEEB771CFFFE7D14FFFF7307FFFE821EFFEC6E AA69099348E305EFC5087EEEDB8FBF6388FC9982681FB4B5BD40D4D209386148
13FFE25C00E2FFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000972D0000A539 AEE1FC6DFCBD243B5BE2EDBB57D4C5EF02CA6251747E2F1227C927A458539774
0000B3420000BA440000C3490058CB4F01DAE36A12FFFB7D18FFFF7608FFF96E AEC54286B79FC9FBD33C6D8077E1A8E79EFA86F330F1D9C1342F72747BBD4851
06FFEA6201F7FFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000972D0000A539 136959CAC25E92E68B4B38D787A2F0D426DC37A74B193348E93AF73AFEC6A47B
0000B3420000BA440000C44A0000D151001ED653009EE46208FFF87814FFFA72 7294624AFE0F9381A73EA8C90E47D4AC2F2B2F1A93B98CBFC9BE8A9E405BD297
0AFFF26500F7FFFFFF00FFFFFF00FFFFFF00FFFFFF0098310000972D0000A539 E8A02DD8147874106F039721D58A42B866558CE55C7DC4980CC3C72BE5BEDBC9
0000B3420000BA440000C44A0000D1530000DA570000E2590057ED6303E4F56C 692F610DAA528F23DAAED7DBA87134329AF95816E767CF5C673E16BCF420BDB3
06FFF76A01D6FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 1BC57EB390654FDF3FE39896D5C86747D3C04853417EA50787DEE579A848F809
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF B7ED35731E71BC3F6CAF5DE5B7E4BAA84BB18697F5070394EDFF06D973E47D5E
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF B22F2F7FC3F5F138D2BD62D539A79CF728B6AAA1E6D834242FD02D78642BEBAD
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 042B72D67E256993C5BB670F94ADD142E6348AE09A59E501BFFFE258D2BB32A5
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009A3505C7A74D25FF9B36 7BFABB5D7C9EEDD644ED2E3D245B2B96DF3223D3145B9A93B5FC0B71CB5EAEA9
11DD9725004FA83B0000B5420000BB410000C5480000D2540000DB560000E659 BD7451C9F93A6B962086EB66B564CE7F972652B7480BD5F8C24D43DA7B83C6BD
0000F0640000FFFFFF00FFFFFF00FFFFFF00FFFFFF009A340CF7E1BB9AFFE2C4 FAB8E7A0561F6D46D36F5BC9F2A3B0A4713DD7083E7AA8D9DE073973E41E71BD
ACFFAB4A22FFA22B0095B33F0016BB420000C5480000D2540000DB560000E659 AD2DABB965BDD7A56FC833D349997B026D34ED33C4A379EA2DBC4F97C5F1DAC8
0000F0640000FFFFFF00FFFFFF00FFFFFF00FFFFFF009A330AF7E3BA88FFFFFE F857F30522195BBF772072E6C967E4CCA6DEB25A3D897D72F19BF6779C295BDD
D7FFF4D9BEFFC97C56FFB13802D3BA3F004EC5480000D2540000DB560000E659 19D2434390E6D40DCCFE47C6FECEBF59DAB9B9D16710729D9473B31DE82B99DD
0000F0640000FFFFFF00FFFFFF00FFFFFF00FFFFFF009F3302E5CD814CFFFDD3 74CED9B1FC9CF317C54C1286BDDFDA1F596EBA60C653C6DC99DCC126F05ECF71
96FFFFD89EFFFEE4BFFFE5B08CFFC45318FBC4430092D1520009DB560000E659 54C8CD73562ACD9945E37338BFBC663E8DFBA69B1C03713C2EDE5AB0E6BEBD32
0000F0640000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A3380039A63200C9C45F 12AC853E3C5E20EB33FEA87F1BBF3D7B6EA6EEDD57F731340C4A3630086FD0D5
24FFF2A65EFFFFB86CFFFFD39EFFF6D2AFFFDB7E48FFD04902D1DA50003CE659 DD3E4F47671B696BEF262D2D6FD2D4F4A1AE5DF753972EDEACFD3686869175FD
0000F0650000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A53B0000AD3C000DAF34 FB9F7F2A10FC682427E74F3A3AEBFBE8EBFB252F5850013737A077EF6B221D9D
0086C14C0BF3E57C2DFFFE9437FFFFB064FFFDD9AFFFEDAF7FFFE05D12EFE451 ED8EDADABBFEC0EFA3CE9DBD6CFBF4B951EBE3238197571DF4F4CEA772573078
0088F0640009FFFFFF00FFFFFF00FFFFFF00FFFFFF00A53B0000AC3C0000B33D E8D0C01447C72AA4A4005555C08A15ADE8DA3546A4A5B57BBE969617F3FB485D
0000C0460032C74900C9DB5F0BFFFA750FFFFF801CFFFFBD7DFFFACCA2FFEF84 7DDF542DADE8DA0D1B9A505101BC79031C38508FA1432333468D0A17AD5E0DA4
3AFFF16100C7FFFFFF00FFFFFF00FFFFFF00FFFFFF00CD510000CD4F0000CD4D A703F9F99C725F02CECE62282B4735686A7A3B6868ECB35453BB56B76449035E
0000CE4B0024CF550DC0DE6314FFF96D05FFFF7000FFFF8117FFFDAC60FFF791 BCE0323E07C8E4EAE9B7DF000B8BA4D69E3DB72F183122AAE1BBEF2488E316E1
43FFF76602D0FFFFFF00FFFFFF00FFFFFF00FFFFFF00CD510000CD4F000BCB48 E1436EC3EF0276760D1008A25A85C2C8265BDB5A242602F7EF0377EE00010152
0077D56018ECEB8B48FFFE8224FFFF760AFFFE8B27FFF88423FFF46606F7F65E 661F35292804BB6B6A6EE5796E9D6F64142F72726A6B7FEFF5EB9CB623259838
0095F969000FFFFFFF00FFFFFF00FFFFFF00FFFFFF00CC500028CC4E01BFDC6C B1122626E5888890E0DA35E0C2054EA37B24183F3EAD555EDE7F25770BCC6E23
22FFF88D3BFFFF7B16FFFF7A0DFFFC8724FFF67515FFF36502DCF664004AF764 0D8D2DBC06BB1CFBF68D11DBD8B4C0DF1F38C9657C5090048181128484C8EEA5
0001F9690000FFFFFF00FFFFFF00FFFFFF00FFFFFF00CE5000DFE46A11FFFD82 70776FC590210F5BE5E40298FD850482A076BE5BB76DECA31DFC1ECF193A3A37
1EFFFF7306FFFF7B12FFF97F1BFFF26A08FFF56400A2F7680010F7660000F764 9BCDCD1BE0CDEDFECF3F037E7E1C1A3E52CC9DDB883E7DEEB5090481DC4D1E22
0000F9690000FFFFFF00FFFFFF00FFFFFF00FFFFFF00D65601F7F46D07FFFF77 996D19AFAAFA03292BFBF0D59B79AF6FF5F56F88BB7429C1A041A530372F6FD7
08FFFC7C16FFF37412FFF06401DDF465005EF6680000F7680000F7660000F764 E8D12530322A41FFFE492DCC704407337F8275BA9D5750F066FB5EB64386DCAC
0000F9690000FFFFFF00FFFFFF00FFFFFF00FFFFFF00DD5A00F7F66F09FFF978 D3D1A90177BBAC0C566ABBD4D4D2D1B76F3EFBE303860DBB2F120A8F3A72E7DF
14FFF06908FFF06300A5F3660024F4660000F6680000F7680000F7660000F764 CE2B2BEFA74E9DBCA68E1A75AB564FAF91C797B3F25959ECFF5C282ABE86A666
0000F9690000FFFFFF00FFFFFF00FFFFFF00FFFFFF00E45D01D1ED6606FFEE65 16F4F5DFE0ABAF4A306D5A03BF27552427F72B5752A16CF7876963C644D7191A
03E8F063005CF3670000F3670000F4650000F6680000F7680000F7660000F764 B63053CB7AD7CE2B28144155F59E444D2DB1555BBB08FDFAE5C3D8B81813267C
0000F9690000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 808B4B33AFDFE30679F9330BC78EBD52376C18070235B12A5825CC55B0CD074D
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF AAAA412E8A8A81F69A9AF71A8C8CCAD8FE7BE6CB6165D580CD9B014BCB14B1B1
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF F16FE92626F56C4F66BF121A1AB5E8D52BB555452570A5B2B23F292A0610CF77
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF BE9EDE63D1B871D5BCF695B0B51561ED5A31468E4CC85751393078F0E0F3A9C6
FF00FFFFFF00FFFFFF00FFFFFF00B24810D3B44B17E0B2370031BA410000C548 C6B5D0D56D8581414A2BDB5DA9A07088F81DA4A414C8EB749875DC71E0C047A2
0000B5400000973100009D3400009F380468A34517FF972D057C9E330000A036 E9D3C558BCB891E7129FC5F31FA3AAEAC7360E18F5EF7F35EDCB2F939A555482
0000A03500009F3500009E340000C26838F9E9C3A8FFBA4C1DD1B83B0024C448 572828F83317F0DFBC5078847D7D94AF671C070D4A6934344C7CC55978B44070
0000C04500009B2B000090230000993109A6D8B18AFFBE7D5BFF97240073A030 86FE0B678DEAB0
0000A4330000A7360000AB3B0000C36329F6FFF6CEFFE7BB9CFFBC450ACDC044
0010D2510000AB3600008C210000972C04A4E0B887FFFCFCD2FFB6633CFF9E25
0066A8310000B2370000BB420000BD5114EBF2BD7EFFFFE9BAFFE3A983FFC144
04C0C949000ED45200009F320000972D0088CD824BFFFFE5A8FFF3E0B3FFB55D
30F7A52B0058B0370000B9410000B63D0064C95E1CFDF9AD62FFFFD7A2FFE2A1
76FFC64200AED5500007B4430000932E001AA03506C9DF8947FFFFCF87FFF0D8
A8FFB65428ECAD2E0042B9410000B7400000B83C0078D46218FFFC983FFFFFCA
90FFE19564FFCC46009FDF590006BA460000992E0025A83B07DBE57D2DFFFFC0
6FFFEDCC9CFFB84D1CE1B63A0034B8400000BA400000C0430082DB5D09FFFF84
1EFFFEBF80FFE48E54FFD751007FD04F00009B330000A5370027B03F01DFEC6D
0FFFFFAF58FFEBC08DFFBE5113D9CA4D0000C8490000C54B0478DB600FFEFF6F
00FFFF8924FFE9883EFFD8560487D3510000AF3E0000AE3A001AB1460DD9EA66
06FFFF790BFFF09B4EFFC35A1AE0CA4C0000C6490169D9712FFDFC8224FFFF82
17FFE96F15FFD64E00ABDE590009C74D0000AD39001EB14814D4E57E37FFFF80
13FFF17E1EFFC34906EABC41003FC94C0056D7651BF7FA8326FFFF841AFFEC77
1CFFD75401B9DC56000BC34A0000AE3D0012B0430ABDE2762CFFFF851AFFF583
22FFC5530BF3B841004FBE460000D15302E7F57310FFFF871EFFF07B1FFFD956
03CADB570016DB570000B4410000AE3E0082D65C08FFFF8316FFF88625FFCA58
0FFABA410064BB430000BE460000DA5901F6FF871EFFF38327FFD95804D5D955
001DE05A0000C2490000AD3E0000B44100A4E96E0DFFFE922CFFCD5C12FFBA41
0070BB430000BB430000BE460000DE630DF9F5872AFFDB5C08DBD853002FDB57
0000D4530000BA430000B33F0000B94402A6E67923FFD7681AFFBB430082BE46
0000BF470000BE460000C0480000D95B05DBDD5D07E8D954003BD9560000DC57
0000CD500000B7450000BB470000BD49016FC65108FFC0490287C0480001C149
0000C1490000C1490000C1490000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF001919770014146E1F252596C32424A8F41A1A
7B5818187A00161680001515850013138700111188000E0E85000E0E884B2525
B0F22323A9CF01018A29030393001818731F22228EC35A5AEBFF6868FFFF1D1D
B3F618187B5B16167E001515850013138700111186000D0D844C1F1FB5F18787
FDFF8484F2FF1E1EA9CC00008F2B2D2D95C95B5BEDFFC9C9FFFFEDEDFFFF6969
FBFF1111B9F61515805915158400131386000F0F864A1515B8F17474F8FFEBEB
FFFFDEDEFFFF8B8BF3FF2D2DB0D53535A8F66E6EFFFFD4D4FFFFDFDFFFFFD3D3
FFFF5D5DF7FF0808B6F413138553101086450B0BB3F26262F4FFD2D2FFFFD9D9
FFFFD6D6FFFFAAAAFFFF4343C2FB19197B5A3333B6F46767FDFFBBBBFFFFC8C8
FFFFC4C4FFFF4D4DF4FF0101B6FB0202B0F84C4CF1FFC1C1FFFFC6C6FFFFBFBF
FFFF9494FEFF4343CAF80505986A13137900151579592929BDF65C5CFCFFAAAA
FFFFB4B4FFFFB0B0FDFF3D3DECFF3636EAFFABABFDFFB3B3FFFFACACFFFF8181
FDFF3B3BCDFB0404936B0000940015157A001010780014147E5B2020B9F74B4B
FAFF9393FFFFA0A0FFFF9696FDFF9595FDFF9F9FFFFF9696FEFF6A6AFBFF2C2C
C8FB0303946B000091000101960015157A0012127A000F0F7C00101082501818
B7F94242F4FF8585FFFF8F8FFFFF8E8EFFFF8787FEFF5757F5FF1F1FC5FC0101
955D0000920000009400010196000A0A8900080887000A0A8500101084402222
B5F70E0EE7FF2A2AE8FF4242EAFF4242EAFF3737E7FF2929E7FF2323C2FA0101
964D0000980000009E000000A3000A0A8900050585000F0F844C2C2CB7F21818
F0FF0000E0FF0000D5FF0000CCFF0000CCFF0B0BD4FF2020DFFF3D3DEEFF3030
C6F602029A5B00009C000000A300080888000C0C844A3535BCF11E1EF5FF0000
EAFF0000DFFF0000D7FF0101DBFF0606DCFF1313D7FF2222DEFF2F2FE7FF4E4E
F4FF3D3DCCF603039D590000A2000F0F894E3838B8F22525FAFF0000F1FF0000
E5FF0000DFFF0505E3FF0A0AC5FD0B0BC1FB1616E3FF2121DFFF2E2EE4FF3C3C
EEFF6060F9FF4343CBF40404A45E3939B1F23030FFFF0000F8FF0000EBFF0000
E7FF0A0AEBFF1313C7F80A0A9660060695511313C5F42929E9FF2F2FE6FF3C3C
EAFF4646F4FF7777FFFF4545C9F72E2EAAD43636F3FF0505FAFF0000ECFF1010
F1FF1C1CCCFB0909956B080893000606940002029A591E1ECBF63A3AEFFF3B3B
ECFF4C4CF6FF7171F7FF3434C0DF09098B2B2B2BA9CC2E2EF1FF1A1AFBFF2424
C9FB0A0A966B0505920009099500070795000101970001019C5B2727CAF64F4F
F7FF6161F5FF2E2EBDD70000A2380A0A8E0006068B292323B2CD2828C2F90909
9869050593000707940009099500070795000202990000009A000202A45B2A2A
C9F52525C1DA0000A0370101A400
} }
end end
object actMain: TActionList object actMain: TActionList
Images = imMain Images = imMain
OnUpdate = actMainUpdate OnUpdate = actMainUpdate
left = 192 Left = 192
top = 160 Top = 160
object actPrint: TAction object actPrint: TAction
Caption = '&Print' Caption = '&Print'
Hint = 'Print' Hint = 'Print'

View File

@ -365,21 +365,15 @@ begin
Day := StartDate + ADayIndex; Day := StartDate + ADayIndex;
end; end;
{ adjust the DayRect for the next day } // Adjust the DayRect for the next day
case FWeekView.Layout of case FWeekView.Layout of
wvlVertical: wvlVertical: // DayIndex layout
{ 0 3 if (ADayIndex = 2) then begin // 0 3
// Move the dayrect to the top of the next column //
1 4 DayRect := Rect( // 1 4
RealLeft + DayRectWidth, //
2 5 RealTop + FHeaderHeight, // 2 5
6 } RealRight - 1 - delta, // 6
if (ADayIndex = 2) then begin
// Move the dayrect to the top of the next column
DayRect := Rect(
RealLeft + DayRectWidth,
RealTop + FHeaderHeight,
RealRight - 1 - delta,
RealTop + FHeaderHeight + DayRectHeight RealTop + FHeaderHeight + DayRectHeight
) )
end else end else
@ -400,25 +394,28 @@ begin
end; end;
wvlHorizontal: wvlHorizontal:
begin begin // DayIndex layout
if (ADayIndex in [0, 2, 4]) then if (ADayIndex in [0, 2, 4]) then // 0 1
begin begin //
DayRect.Left := RealLeft + DayRectWidth; DayRect.Left := RealLeft + DayRectWidth; // 2 3
DayRect.Right := RealRight - 1 - delta; DayRect.Right := RealRight - 1 - delta; //
end else if (ADayIndex <> 5) then end else if (ADayIndex <> 5) then // 4 5
begin begin // 6
DayRect.Right := RealLeft + DayRectWidth; DayRect.Right := RealLeft + DayRectWidth;
DayRect.Left := RealLeft; DayRect.Left := RealLeft;
end; end;
if (ADayIndex in [1, 3]) then if (ADayIndex in [1, 3]) then
begin begin
DayRect.Top := DayRect.Bottom; DayRect.Top := DayRect.Bottom;
DayRect.Bottom := DayRect.Top + DayRectHeight; // - 8; DayRect.Bottom := DayRect.Top + DayRectHeight;
end else end else
if ADayIndex = 4 then if ADayIndex = 4 then
DayRect.Bottom := DayRect.Top + DayRectHeight div 2 DayRect.Bottom := DayRect.Top + DayRectHeight div 2
else if ADayIndex = 5 then else if ADayIndex = 5 then
DayRect.Top := DayRect.Top + DayRectHeight div 2; begin
DayRect.Top := DayRect.Bottom;
DayRect.Bottom := DayRect.Top + DayRectHeight div 2;
end;
end; end;
end; // case end; // case
end; end;

View File

@ -337,6 +337,7 @@ type
read FValue read FValue
write FValue; write FValue;
end; end;
{== TVpNotationInfo ==================================================} {== TVpNotationInfo ==================================================}
TVpNotationInfo = class(TObject) TVpNotationInfo = class(TObject)
private private
@ -387,7 +388,7 @@ begin
FContentModel := ''; FContentModel := '';
FContentType := 0; FContentType := 0;
end; end;
{--------}
destructor TVpElementInfo.Destroy; destructor TVpElementInfo.Destroy;
var var
i : Integer; i : Integer;
@ -399,7 +400,7 @@ begin
end; end;
inherited Destroy; inherited Destroy;
end; end;
{--------}
procedure TVpElementInfo.SetAttribute(const sName: DOMString; procedure TVpElementInfo.SetAttribute(const sName: DOMString;
oAttrInfo: TVpAttributeInfo); oAttrInfo: TVpAttributeInfo);
var var
@ -467,7 +468,7 @@ begin
FHasExternals := False; FHasExternals := False;
FXMLDecParsed := False; FXMLDecParsed := False;
end; end;
{--------}
destructor TVpParser.Destroy; destructor TVpParser.Destroy;
var var
TempFilter : TVpInCharFilter; TempFilter : TVpInCharFilter;
@ -496,7 +497,7 @@ begin
FDocStack.Free; FDocStack.Free;
inherited Destroy; inherited Destroy;
end; end;
{--------}
procedure TVpParser.CheckParamEntityNesting(const aString : DOMString); procedure TVpParser.CheckParamEntityNesting(const aString : DOMString);
var var
OpenPos: Integer; OpenPos: Integer;
@ -516,7 +517,7 @@ begin
raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, errMsg); raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, errMsg);
end; end;
end; end;
{--------}
procedure TVpParser.Cleanup; procedure TVpParser.Cleanup;
var var
i : Integer; i : Integer;
@ -539,12 +540,12 @@ begin
FNotationInfo.Clear; FNotationInfo.Clear;
end; end;
end; end;
{--------}
procedure TVpParser.DataBufferAppend(const sVal : DOMString); procedure TVpParser.DataBufferAppend(const sVal : DOMString);
begin begin
FDataBuffer := FDataBuffer + sVal; FDataBuffer := FDataBuffer + sVal;
end; end;
{--------}
procedure TVpParser.DataBufferFlush; procedure TVpParser.DataBufferFlush;
begin begin
if FNormalizeData and if FNormalizeData and
@ -569,7 +570,7 @@ begin
FDataBuffer := ''; FDataBuffer := '';
end; end;
end; end;
{--------}
procedure TVpParser.DataBufferNormalize; procedure TVpParser.DataBufferNormalize;
var var
BuffLen : Integer; BuffLen : Integer;
@ -606,18 +607,18 @@ begin
j := j + 1; j := j + 1;
end; end;
end; end;
{--------}
function TVpParser.DataBufferToString : DOMString; function TVpParser.DataBufferToString : DOMString;
begin begin
Result := FDataBuffer; Result := FDataBuffer;
FDataBuffer := ''; FDataBuffer := '';
end; end;
{--------}
function TVpParser.GetErrorCount : Integer; function TVpParser.GetErrorCount : Integer;
begin begin
Result := FErrors.Count; Result := FErrors.Count;
end; end;
{--------}
function TVpParser.GetErrorMsg(wIdx: Integer): DOMString; function TVpParser.GetErrorMsg(wIdx: Integer): DOMString;
begin begin
{$IFDEF DELPHI} {$IFDEF DELPHI}
@ -630,7 +631,7 @@ begin
Result := UTF8Decode(FErrors[wIdx]); Result := UTF8Decode(FErrors[wIdx]);
{$ENDIF} {$ENDIF}
end; end;
{--------}
function TVpParser.DeclaredAttributes(const sName: DOMString; function TVpParser.DeclaredAttributes(const sName: DOMString;
aIdx: Integer): TStringList; aIdx: Integer): TStringList;
begin begin
@ -640,7 +641,7 @@ begin
else else
Result := TVpElementInfo(FElementInfo.Objects[aIdx]).AttributeList; Result := TVpElementInfo(FElementInfo.Objects[aIdx]).AttributeList;
end; end;
{--------}
function TVpParser.GetAttributeDefaultValueType( function TVpParser.GetAttributeDefaultValueType(
const sElemName, sAttrName: DOMString): Integer; const sElemName, sAttrName: DOMString): Integer;
var var
@ -665,7 +666,7 @@ begin
end; end;
end; end;
end; end;
{--------}
function TVpParser.GetAttributeExpandedValue(const sElemName, sAttrName: DOMString; function TVpParser.GetAttributeExpandedValue(const sElemName, sAttrName: DOMString;
aIdx: Integer): DOMString; aIdx: Integer): DOMString;
var var
@ -700,7 +701,7 @@ begin
end; end;
end; end;
end; end;
{--------}
function TVpParser.GetElementContentType(const sName: DOMString; function TVpParser.GetElementContentType(const sName: DOMString;
aIdx: Integer): Integer; aIdx: Integer): Integer;
begin begin
@ -710,7 +711,7 @@ begin
else else
Result := TVpElementInfo(FElementInfo.Objects[aIdx]).ContentType; Result := TVpElementInfo(FElementInfo.Objects[aIdx]).ContentType;
end; end;
{--------}
function TVpParser.GetElementIndexOf(const sElemName: DOMString): Integer; function TVpParser.GetElementIndexOf(const sElemName: DOMString): Integer;
begin begin
{$IFDEF DELPHI} {$IFDEF DELPHI}
@ -719,7 +720,7 @@ begin
Result := FElementInfo.IndexOf(UTF8Encode(sElemName)); Result := FElementInfo.IndexOf(UTF8Encode(sElemName));
{$ENDIF} {$ENDIF}
end; end;
{--------}
function TVpParser.GetEntityIndexOf(const sEntityName: DOMString; function TVpParser.GetEntityIndexOf(const sEntityName: DOMString;
aPEAllowed: Boolean): Integer; aPEAllowed: Boolean): Integer;
begin begin
@ -734,7 +735,7 @@ begin
end; end;
Result := -1; Result := -1;
end; end;
{--------}
function TVpParser.GetEntityNotationName(const sEntityName : DOMString) function TVpParser.GetEntityNotationName(const sEntityName : DOMString)
: DOMString; : DOMString;
var var
@ -748,7 +749,7 @@ begin
Result := oEntity.NotationName; Result := oEntity.NotationName;
end; end;
end; end;
{--------}
function TVpParser.GetEntityPublicId(const sEntityName : DOMString) function TVpParser.GetEntityPublicId(const sEntityName : DOMString)
: DOMString; : DOMString;
var var
@ -762,7 +763,7 @@ begin
Result := oEntity.PublicId; Result := oEntity.PublicId;
end; end;
end; end;
{--------}
function TVpParser.GetEntitySystemId(const sEntityName : DOMString) function TVpParser.GetEntitySystemId(const sEntityName : DOMString)
: DOMString; : DOMString;
var var
@ -776,7 +777,7 @@ begin
Result := oEntity.SystemId; Result := oEntity.SystemId;
end; end;
end; end;
{--------}
function TVpParser.GetEntityType(const sEntityName : DOMString; function TVpParser.GetEntityType(const sEntityName : DOMString;
aPEAllowed : Boolean) aPEAllowed : Boolean)
: Integer; : Integer;
@ -791,7 +792,7 @@ begin
Result := oEntity.EntityClass; Result := oEntity.EntityClass;
end; end;
end; end;
{--------}
function TVpParser.GetEntityValue(const sEntityName : DOMString; function TVpParser.GetEntityValue(const sEntityName : DOMString;
aPEAllowed : Boolean) aPEAllowed : Boolean)
: DOMString; : DOMString;
@ -806,7 +807,7 @@ begin
Result := oEntity.Value; Result := oEntity.Value;
end; end;
end; end;
{--------}
function TVpParser.GetExternalTextEntityValue(const sName, sPublicId: DOMString; function TVpParser.GetExternalTextEntityValue(const sName, sPublicId: DOMString;
sSystemId: DOMString): DOMString; sSystemId: DOMString): DOMString;
var var
@ -840,7 +841,7 @@ begin
raise; raise;
end; end;
end; end;
{--------}
function TVpParser.GetInCharSet : TVpCharEncoding; function TVpParser.GetInCharSet : TVpCharEncoding;
begin begin
if FFilter <> nil then if FFilter <> nil then
@ -849,7 +850,7 @@ begin
{ If no current filter then return last known value. } { If no current filter then return last known value. }
Result := FInCharSet; Result := FInCharSet;
end; end;
{--------}
procedure TVpParser.Initialize; procedure TVpParser.Initialize;
begin begin
FDataBuffer := ''; FDataBuffer := '';
@ -860,7 +861,7 @@ begin
SetInternalEntity('apos', '&#39;', False); SetInternalEntity('apos', '&#39;', False);
SetInternalEntity('quot', '&#34;', False); SetInternalEntity('quot', '&#34;', False);
end; end;
{--------}
function TVpParser.IsEndDocument : Boolean; function TVpParser.IsEndDocument : Boolean;
var var
TheStream : TStream; TheStream : TStream;
@ -882,13 +883,13 @@ begin
end; end;
end; end;
end; end;
{--------}
function TVpParser.IsWhitespace(const cVal : DOMChar) : Boolean; function TVpParser.IsWhitespace(const cVal : DOMChar) : Boolean;
begin begin
Result := (cVal = #$20) or (cVal = #$09) or Result := (cVal = #$20) or (cVal = #$09) or
(cVal = #$0D) or (cVal = #$0A); (cVal = #$0D) or (cVal = #$0A);
end; end;
{--------}
function TVpParser.LoadDataSource(sSrcName: string; oErrors: TStringList): Boolean; function TVpParser.LoadDataSource(sSrcName: string; oErrors: TStringList): Boolean;
var var
aFileStream: TVpFileStream; aFileStream: TVpFileStream;
@ -921,7 +922,7 @@ begin
raise; raise;
end; end;
end; end;
{--------}
function TVpParser.ParseAttribute(const sName: DOMString): DOMString; function TVpParser.ParseAttribute(const sName: DOMString): DOMString;
var var
sAttrName, sValue: DOMString; sAttrName, sValue: DOMString;
@ -957,13 +958,13 @@ begin
if sAttrName = 'xml:space' then if sAttrName = 'xml:space' then
Result := sValue; Result := sValue;
end; end;
{--------}
{ Conditional section }
procedure TVpParser.ParseCDSect; procedure TVpParser.ParseCDSect;
{conditional section}
begin begin
ParseUntil(Xpc_ConditionalEnd); ParseUntil(Xpc_ConditionalEnd);
end; end;
{--------}
function TVpParser.ParseCharRef : DOMChar; function TVpParser.ParseCharRef : DOMChar;
var var
TempChar: DOMChar; TempChar: DOMChar;
@ -1032,7 +1033,7 @@ begin
VpUcs4ToWideChar(Ucs4Chr, Result); VpUcs4ToWideChar(Ucs4Chr, Result);
DataBufferAppend(Result); DataBufferAppend(Result);
end; end;
{--------}
procedure TVpParser.ParseComment; procedure TVpParser.ParseComment;
var var
TempComment : DOMString; TempComment : DOMString;
@ -1048,7 +1049,7 @@ begin
if Assigned(FOnComment) then if Assigned(FOnComment) then
FOnComment(self, TempComment); FOnComment(self, TempComment);
end; end;
{--------}
procedure TVpParser.ParseContent; procedure TVpParser.ParseContent;
var var
TempChar: DOMChar; TempChar: DOMChar;
@ -1191,7 +1192,7 @@ begin
end; end;
EntRefs.Free; EntRefs.Free;
end; end;
{--------}
function TVpParser.ParseDataSource(const sSource : string) : Boolean; function TVpParser.ParseDataSource(const sSource : string) : Boolean;
begin begin
FErrors.Clear; FErrors.Clear;
@ -1212,7 +1213,7 @@ begin
FUrl := ''; FUrl := '';
Result := FErrors.Count = 0; Result := FErrors.Count = 0;
end; end;
{--------}
procedure TVpParser.ParseDocTypeDecl; procedure TVpParser.ParseDocTypeDecl;
var var
sDocTypeName : DOMString; sDocTypeName : DOMString;
@ -1248,7 +1249,7 @@ begin
if Assigned(FOnDocTypeDecl) then if Assigned(FOnDocTypeDecl) then
FOnDocTypeDecl(self, sDocTypeName, sIds[0], sIds[1]); FOnDocTypeDecl(self, sDocTypeName, sIds[0], sIds[1]);
end; end;
{--------}
procedure TVpParser.ParseDocument; procedure TVpParser.ParseDocument;
begin begin
FXMLDecParsed := False; FXMLDecParsed := False;
@ -1266,7 +1267,7 @@ begin
if Assigned(FOnEndDocument) then if Assigned(FOnEndDocument) then
FOnEndDocument(self); FOnEndDocument(self);
end; end;
{--------}
procedure TVpParser.ParseElement; procedure TVpParser.ParseElement;
var var
wOldElementContent, wOldElementContent,
@ -1371,7 +1372,7 @@ begin
FCurrentElement := sOldElement; FCurrentElement := sOldElement;
FCurrentElementContent := wOldElementContent; FCurrentElementContent := wOldElementContent;
end; end;
{--------}
procedure TVpParser.ParseEndTag; procedure TVpParser.ParseEndTag;
var var
sName : DOMString; sName : DOMString;
@ -1391,7 +1392,7 @@ begin
if Assigned(FOnEndElement) then if Assigned(FOnEndElement) then
FOnEndElement(self, FCurrentElement); FOnEndElement(self, FCurrentElement);
end; end;
{--------}
function TVpParser.ParseEntityRef(bPEAllowed: Boolean): DOMString; function TVpParser.ParseEntityRef(bPEAllowed: Boolean): DOMString;
var var
msg: DOMString; msg: DOMString;
@ -1420,14 +1421,14 @@ begin
end; end;
end; end;
end; end;
{--------}
procedure TVpParser.ParseEq; procedure TVpParser.ParseEq;
begin begin
SkipWhitespace(True); SkipWhitespace(True);
Require(Xpc_Equation); Require(Xpc_Equation);
SkipWhitespace(True); SkipWhitespace(True);
end; end;
{--------}
procedure TVpParser.ParseMisc; procedure TVpParser.ParseMisc;
var var
ParsedComment : Boolean; ParsedComment : Boolean;
@ -1450,7 +1451,7 @@ begin
Exit; Exit;
end; end;
end; end;
{--------}
function TVpParser.ParseParameterEntityRef(aPEAllowed: Boolean; function TVpParser.ParseParameterEntityRef(aPEAllowed: Boolean;
bSkip: Boolean): DOMString; bSkip: Boolean): DOMString;
var var
@ -1493,7 +1494,7 @@ begin
end; end;
end; end;
end; end;
{--------}
procedure TVpParser.ParsePCData(aInEntityRef : Boolean); procedure TVpParser.ParsePCData(aInEntityRef : Boolean);
var var
TempBuff : DOMString = ''; TempBuff : DOMString = '';
@ -1531,12 +1532,12 @@ begin
DataBufferAppend(TempBuff); DataBufferAppend(TempBuff);
end; end;
end; end;
{--------}
procedure TVpParser.ParsePI; procedure TVpParser.ParsePI;
begin begin
ParsePIEx; ParsePIEx;
end; end;
{--------}
function TVpParser.ParsePIEx : Boolean; function TVpParser.ParsePIEx : Boolean;
var var
sName : DOMString; sName : DOMString;
@ -1558,7 +1559,7 @@ begin
else else
DataBufferToString; DataBufferToString;
end; end;
{--------}
procedure TVpParser.ParsePrim; procedure TVpParser.ParsePrim;
begin begin
try try
@ -1592,7 +1593,7 @@ begin
FFilter := nil; FFilter := nil;
end; end;
end; end;
{--------}
procedure TVpParser.ParseProlog; procedure TVpParser.ParseProlog;
begin begin
ParseMisc; ParseMisc;
@ -1602,7 +1603,7 @@ begin
ParseMisc; ParseMisc;
end; end;
end; end;
{--------}
procedure TVpParser.ParseUntil(const S : array of Longint); procedure TVpParser.ParseUntil(const S : array of Longint);
var var
TempStr : AnsiString = ''; TempStr : AnsiString = '';
@ -1630,7 +1631,7 @@ begin
QuotedStr(TempStr)); QuotedStr(TempStr));
end; end;
end; end;
{--------}
procedure TVpParser.ParseWhitespace; procedure TVpParser.ParseWhitespace;
var var
TempChar : DOMChar; TempChar : DOMChar;
@ -1642,7 +1643,7 @@ begin
TempChar := ReadChar(False); TempChar := ReadChar(False);
end; end;
end; end;
{--------}
procedure TVpParser.ParseXMLDeclaration; procedure TVpParser.ParseXMLDeclaration;
var var
sValue: DOMString; sValue: DOMString;
@ -1707,17 +1708,16 @@ begin
DatabufferToString; DatabufferToString;
DatabufferAppend(Buffer); DatabufferAppend(Buffer);
end; end;
{--------}
procedure TVpParser.PopDocument; procedure TVpParser.PopDocument;
begin begin
Assert(FDocStack.Count > 0); Assert(FDocStack.Count > 0);
if FDocStack.Count > 0 then begin if FDocStack.Count > 0 then begin
FFilter := FDocStack[Pred(FDocStack.Count)]; FFilter := FDocStack[Pred(FDocStack.Count)];
FDocStack.Delete(Pred(FDocStack.Count)); FDocStack.Delete(Pred(FDocStack.Count));
end; end;
end; end;
{--------}
procedure TVpParser.PushDocument; procedure TVpParser.PushDocument;
begin begin
Assert(Assigned(FFilter)); Assert(Assigned(FFilter));
@ -1725,7 +1725,7 @@ begin
FDocStack.Add(Pointer(FFilter)); FDocStack.Add(Pointer(FFilter));
FFilter := nil; FFilter := nil;
end; end;
{--------}
procedure TVpParser.PushString(const sVal: DOMString); procedure TVpParser.PushString(const sVal: DOMString);
var var
MemStream: TVpMemoryStream; MemStream: TVpMemoryStream;
@ -1744,7 +1744,7 @@ begin
FFilter := TVpInCharFilter.Create(MemStream, BufferSize); FFilter := TVpInCharFilter.Create(MemStream, BufferSize);
end; end;
end; end;
{--------}
function TVpParser.ReadChar(const UpdatePos: Boolean) : DOMChar; function TVpParser.ReadChar(const UpdatePos: Boolean) : DOMChar;
begin begin
Result := FFilter.ReadChar; Result := FFilter.ReadChar;
@ -1753,7 +1753,7 @@ begin
if UpdatePos then if UpdatePos then
FFilter.SkipChar; FFilter.SkipChar;
end; end;
{--------}
procedure TVpParser.ReadExternalIds(bInNotation : Boolean; out sIds: StringIds); procedure TVpParser.ReadExternalIds(bInNotation : Boolean; out sIds: StringIds);
var var
HasEntRef : Boolean; HasEntRef : Boolean;
@ -1779,7 +1779,7 @@ begin
sIds[1] := ReadLiteral(0, HasEntRef); sIds[1] := ReadLiteral(0, HasEntRef);
end; end;
end; end;
{--------}
function TVpParser.ReadLiteral(wFlags: Integer; var HasEntRef: Boolean): DOMString; function TVpParser.ReadLiteral(wFlags: Integer; var HasEntRef: Boolean): DOMString;
var var
TempStr: DOMString; TempStr: DOMString;
@ -1914,7 +1914,7 @@ begin
EntRefs.Free; EntRefs.Free;
end; end;
{--------}
function TVpParser.ReadNameToken(aValFirst: Boolean): DOMString; function TVpParser.ReadNameToken(aValFirst: Boolean): DOMString;
var var
TempChar: DOMChar; TempChar: DOMChar;
@ -1965,7 +1965,7 @@ begin
end; end;
SetLength(Result, CurrLen div 2); SetLength(Result, CurrLen div 2);
end; end;
{--------}
procedure TVpParser.Require(const S : array of Longint); procedure TVpParser.Require(const S : array of Longint);
var var
TempStr : AnsiString = ''; TempStr : AnsiString = '';
@ -1995,7 +1995,7 @@ begin
raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, TempStr); raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, TempStr);
end; end;
end; end;
{--------}
procedure TVpParser.RequireWhitespace; procedure TVpParser.RequireWhitespace;
begin begin
if IsWhitespace(ReadChar(False)) then if IsWhitespace(ReadChar(False)) then
@ -2007,7 +2007,7 @@ begin
'Line: ' + IntToStr(FFilter.Line) + 'Line: ' + IntToStr(FFilter.Line) +
' Position: ' + IntToStr(FFilter.LinePos)); ' Position: ' + IntToStr(FFilter.LinePos));
end; end;
{--------}
procedure TVpParser.SetAttribute(const sElemName, sName : DOMString; procedure TVpParser.SetAttribute(const sElemName, sName : DOMString;
wType : Integer; wType : Integer;
const sEnum, sValue : DOMString; const sEnum, sValue : DOMString;
@ -2031,7 +2031,7 @@ begin
oAttrInfo.Enum := sEnum; oAttrInfo.Enum := sEnum;
oElemInfo.SetAttribute(sName, oAttrInfo); oElemInfo.SetAttribute(sName, oAttrInfo);
end; end;
{--------}
procedure TVpParser.SetElement(const sName: DOMString; wType: Integer; procedure TVpParser.SetElement(const sName: DOMString; wType: Integer;
const sContentModel: DOMString); const sContentModel: DOMString);
var var
@ -2055,7 +2055,7 @@ begin
if sContentModel <> '' then if sContentModel <> '' then
oElem.ContentModel := sContentModel; oElem.ContentModel := sContentModel;
end; end;
{--------}
procedure TVpParser.SetEntity(const sEntityName: DOMString; wClass: Integer; procedure TVpParser.SetEntity(const sEntityName: DOMString; wClass: Integer;
const sPublicId, sSystemId, sValue, sNotationName: DOMString; aIsPE: Boolean); const sPublicId, sSystemId, sValue, sNotationName: DOMString; aIsPE: Boolean);
var var
@ -2078,13 +2078,13 @@ begin
{$ENDIF} {$ENDIF}
end; end;
end; end;
{--------}
procedure TVpParser.SetInternalEntity(const sName, sValue : DOMString; procedure TVpParser.SetInternalEntity(const sName, sValue : DOMString;
aIsPE : Boolean); aIsPE : Boolean);
begin begin
SetEntity(sName, ENTITY_INTERNAL, '', '', sValue, '', aIsPE); SetEntity(sName, ENTITY_INTERNAL, '', '', sValue, '', aIsPE);
end; end;
{--------}
procedure TVpParser.SetNotation(const sNotationName, sPublicId, sSystemId: DOMString); procedure TVpParser.SetNotation(const sNotationName, sPublicId, sSystemId: DOMString);
var var
oNot : TVpNotationInfo; oNot : TVpNotationInfo;
@ -2105,12 +2105,12 @@ begin
{$ENDIF} {$ENDIF}
end; end;
end; end;
{--------}
procedure TVpParser.SkipChar; procedure TVpParser.SkipChar;
begin begin
FFilter.SkipChar; FFilter.SkipChar;
end; end;
{--------}
procedure TVpParser.SkipWhitespace(aNextDoc : Boolean); procedure TVpParser.SkipWhitespace(aNextDoc : Boolean);
begin begin
while (not FFilter.Eof) and while (not FFilter.Eof) and
@ -2123,7 +2123,7 @@ begin
SkipChar; SkipChar;
end; end;
end; end;
{--------}
function TVpParser.TryRead(const S : array of Longint) : Boolean; function TVpParser.TryRead(const S : array of Longint) : Boolean;
begin begin
Result := False; Result := False;
@ -2132,7 +2132,7 @@ begin
IsEndDocument; IsEndDocument;
end; end;
end; end;
{--------}
procedure TVpParser.ValidateAttribute(const aValue: DOMString; HasEntRef: Boolean); procedure TVpParser.ValidateAttribute(const aValue: DOMString; HasEntRef: Boolean);
begin begin
if (not HasEntRef) then if (not HasEntRef) then
@ -2145,13 +2145,13 @@ begin
if (VpPos('"', aValue) <> 0) then if (VpPos('"', aValue) <> 0) then
raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, sInvAttrChar + '''"'''); raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, sInvAttrChar + '''"''');
end; end;
{--------}
procedure TVpParser.ValidateCData(const CDATA: DOMString); procedure TVpParser.ValidateCData(const CDATA: DOMString);
begin begin
if (VpPos(']]>', CDATA) <> 0) then if (VpPos(']]>', CDATA) <> 0) then
raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, sInvalidCDataSection); raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, sInvalidCDataSection);
end; end;
{--------}
procedure TVpParser.ValidateElementName(const aName: DOMString); procedure TVpParser.ValidateElementName(const aName: DOMString);
var var
msg: DOMString; msg: DOMString;
@ -2165,7 +2165,7 @@ begin
raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, msg); raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, msg);
end; end;
end; end;
{--------}
procedure TVpParser.ValidateEncName(const aValue: string); procedure TVpParser.ValidateEncName(const aValue: string);
var var
i: Integer; i: Integer;
@ -2193,7 +2193,7 @@ begin
raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, sInvEncName + QuotedStr(aValue)); raise EVpParserError.CreateError(FFilter.Line, FFilter.LinePos, sInvEncName + QuotedStr(aValue));
end; end;
end; end;
{--------}
procedure TVpParser.ValidateEntityValue(const aValue: DOMString; aQuoteCh: DOMChar); procedure TVpParser.ValidateEntityValue(const aValue: DOMString; aQuoteCh: DOMChar);
var var
TempChr: DOMChar; TempChr: DOMChar;
@ -2212,7 +2212,7 @@ begin
end; end;
end; end;
end; end;
{--------}
function TVpParser.ValidateNameChar(const First: Boolean; function TVpParser.ValidateNameChar(const First: Boolean;
const Char: DOMChar): Boolean; const Char: DOMChar): Boolean;
var var
@ -2238,7 +2238,7 @@ begin
else else
Result := VpIsNameCharFirst(UCS4); Result := VpIsNameCharFirst(UCS4);
end; end;
{--------}
procedure TVpParser.ValidatePCData(const aString : DOMString; procedure TVpParser.ValidatePCData(const aString : DOMString;
aInEntityRef : Boolean); aInEntityRef : Boolean);
begin begin
@ -2257,7 +2257,7 @@ begin
FFilter.LinePos, FFilter.LinePos,
sInvPCData + ''']]>'''); sInvPCData + ''']]>''');
end; end;
{--------}
procedure TVpParser.ValidatePublicID(const aString: DOMString); procedure TVpParser.ValidatePublicID(const aString: DOMString);
var var
Ucs4Char: TVpUcs4Char; Ucs4Char: TVpUcs4Char;
@ -2277,7 +2277,7 @@ begin
end; end;
end; end;
end; end;
{--------}
procedure TVpParser.ValidateVersNum(const aString : string); procedure TVpParser.ValidateVersNum(const aString : string);
var var
i : Integer; i : Integer;