diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 0aec0979f..2d742e032 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "7"; public const string Build = "1"; - public const string Revision = "2743"; + public const string Revision = "2744"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 441abeab0..542b4ad9c 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ -%MINOR%=7 -%REVISION%=2743 %COREVERSION%=1 +%REVISION%=2744 +%MINOR%=7 %MAJOR%=3 diff --git a/InstallerSamples/Graph3D/All3DPrimitives.pas b/InstallerSamples/Graph3D/All3DPrimitives.pas index 3b7969e77..dbb3d13d4 100644 --- a/InstallerSamples/Graph3D/All3DPrimitives.pas +++ b/InstallerSamples/Graph3D/All3DPrimitives.pas @@ -3,9 +3,6 @@ uses Graph3D; begin Window.Title := '3D-'; - //var a := Any(0,0,0,Colors.Red); - //a.MoveOn(-5,2,0); - var rr := Rectangle3D(-3.5,-2,0,3,2,Colors.MediumPurple); rr.Rotate(v3d(0,1,0),30); diff --git a/InstallerSamples/Graph3D/Chess3D/game2.pas b/InstallerSamples/Graph3D/Chess3D/game2.pas index b19fa30c2..cefad7ab8 100644 --- a/InstallerSamples/Graph3D/Chess3D/game2.pas +++ b/InstallerSamples/Graph3D/Chess3D/game2.pas @@ -49,7 +49,7 @@ begin a[yy,xx] := Self; var dx := xx - x; var dy := yy - y; - f.MoveOn(-dx*2,-dy*2,0); + f.MoveBy(-dx*2,-dy*2,0); (x,y) := (xx,yy); Result := Self; end; @@ -58,7 +58,7 @@ function ChessFigure.AnimMoveTo(xx,yy: integer): ChessFigure; begin var dx := xx - x; var dy := yy - y; - f.AnimMoveOn(-dx*2,-dy*2,0,delay/1000).WhenCompleted(procedure -> begin + f.AnimMoveBy(-dx*2,-dy*2,0,delay/1000).WhenCompleted(procedure -> begin a[y,x] := nil; if a[yy,xx]<>nil then a[yy,xx].Destroy; diff --git a/InstallerSamples/Graph3D/ReGroup1.pas b/InstallerSamples/Graph3D/ReGroup1.pas index 14702a18f..8939e2f27 100644 --- a/InstallerSamples/Graph3D/ReGroup1.pas +++ b/InstallerSamples/Graph3D/ReGroup1.pas @@ -1,5 +1,5 @@ -uses Graph3D; -// ! +uses Graph3D; +// ошибка! begin var b := Box(0,0,0,3,1,2,Colors.Blue); var s := Sphere(0,0,2,1,Colors.Green); @@ -8,12 +8,7 @@ begin var g := Group(b,s); var g1 := Group(b1,s1); - g1.MoveOnY(3); - g.Add(g1[0]);// g! - b1.MoveOnY(3); - - {Print(g.l.Count); - Print(g1.l.Count); - Print(g[2].Position);} - //b1.MoveOnZ(3); + g1.MoveByY(3); + g.AddChild(g1[0]);// он должен отсоединиться от g! + b1.MoveByY(3); end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Анимация/Декораторы Анимаций/AnimAccelerationRatio1.pas b/InstallerSamples/Graph3D/Анимация/Декораторы Анимаций/AnimAccelerationRatio1.pas index baf40e09d..56f1bba2b 100644 --- a/InstallerSamples/Graph3D/Анимация/Декораторы Анимаций/AnimAccelerationRatio1.pas +++ b/InstallerSamples/Graph3D/Анимация/Декораторы Анимаций/AnimAccelerationRatio1.pas @@ -2,7 +2,7 @@ begin var ss := Cube(0,0,0,1.5,Colors.Red); - var anim := ss.AnimMoveOnX(10).AutoReverse.Forever.AccelerationRatio(0.5,0.5); + var anim := ss.AnimMoveByX(10).AutoReverse.Forever.AccelerationRatio(0.5,0.5); //var anim := ss.AnimScale(3).Forever.AutoReverse; //var anim := ss.AnimRotate(OrtZ,360).Forever.AutoReverse; //var anim := ss.AnimRotateAt(OrtZ,360,P3D(3,0,0),2).Forever; diff --git a/InstallerSamples/Graph3D/Анимация/Декораторы Анимаций/ProbaGroup3.pas b/InstallerSamples/Graph3D/Анимация/Декораторы Анимаций/ProbaGroup3.pas index c92ca72f1..eb354b626 100644 --- a/InstallerSamples/Graph3D/Анимация/Декораторы Анимаций/ProbaGroup3.pas +++ b/InstallerSamples/Graph3D/Анимация/Декораторы Анимаций/ProbaGroup3.pas @@ -2,6 +2,6 @@ begin var bb := ArrGen(15,i -> Object3D(Box(0.5*i,0,0,0.1,6,2,RandomColor))); - var g := Group(bb).MoveOnX(-5); + var g := Group(bb).MoveByX(-5); g.AnimRotateAt(ortZ,360,P3D(-1,0,0),2).Forever.Begin; end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Анимация/Простая Анимация/animSequence.pas b/InstallerSamples/Graph3D/Анимация/Простая Анимация/animSequence.pas index 1938aa47f..4f0c35b6a 100644 --- a/InstallerSamples/Graph3D/Анимация/Простая Анимация/animSequence.pas +++ b/InstallerSamples/Graph3D/Анимация/Простая Анимация/animSequence.pas @@ -3,8 +3,8 @@ uses Graph3D; begin var s := Box(0,0,0,3,1,2,Colors.Blue); var an := Animate.Sequence( - s.AnimMoveOnY(5), - s.AnimMoveOnX(5) + s.AnimMoveByY(5), + s.AnimMoveByX(5) ); an.Begin; end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Анимация/Составные Анимации/AnimJump.pas b/InstallerSamples/Graph3D/Анимация/Составные Анимации/AnimJump.pas index 5a391a58e..361bd2376 100644 --- a/InstallerSamples/Graph3D/Анимация/Составные Анимации/AnimJump.pas +++ b/InstallerSamples/Graph3D/Анимация/Составные Анимации/AnimJump.pas @@ -4,6 +4,6 @@ begin var jmp := 0.3; var time := 0.5; var c := Box(0,0,2,1,2,4,Colors.Green); - var a := c.AnimMoveOnZ(-0.4,time).AutoReverse.Forever * c.AnimScaleZ(0.95,time).AutoReverse.Forever * c.AnimMoveOnX(1*10,time*10); + var a := c.AnimMoveByZ(-0.4,time).AutoReverse.Forever * c.AnimScaleZ(0.95,time).AutoReverse.Forever * c.AnimMoveByX(1*10,time*10); a.Begin; end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Анимация/Составные Анимации/PlanetsRotate.pas b/InstallerSamples/Graph3D/Анимация/Составные Анимации/PlanetsRotate.pas index aa550358d..fe4cb4803 100644 --- a/InstallerSamples/Graph3D/Анимация/Составные Анимации/PlanetsRotate.pas +++ b/InstallerSamples/Graph3D/Анимация/Составные Анимации/PlanetsRotate.pas @@ -11,7 +11,7 @@ begin var ss := Sphere(0,0,0,1,Colors.Blue); Sphere(0,0,0,2,DiffuseMaterial(Colors.Yellow)+SpecularMaterial(32)); var g := Group(s,ss); - g.MoveOn(-7,0,0); + g.MoveBy(-7,0,0); var anim := s.AnimRotateAt(OrtZ,360*100,P3D(-2,0,0),2*100) * g.AnimRotateAt(OrtZ,360*100,P3D(7,0,0),10*100) ; diff --git a/InstallerSamples/Graph3D/Анимация/Составные Анимации/ThenAnimMove.pas b/InstallerSamples/Graph3D/Анимация/Составные Анимации/ThenAnimMove.pas index 97f526d60..2c54bb36f 100644 --- a/InstallerSamples/Graph3D/Анимация/Составные Анимации/ThenAnimMove.pas +++ b/InstallerSamples/Graph3D/Анимация/Составные Анимации/ThenAnimMove.pas @@ -1,9 +1,9 @@ -uses Graph3D; +uses Graph3D; begin var s := Sphere(Origin,1,Colors.Green); - s.AnimMoveOnX(5).WhenCompleted(procedure->s.AnimMoveOnY(5).Begin).Begin; + s.AnimMoveByX(5).WhenCompleted(procedure->s.AnimMoveByY(5).Begin).Begin; var s1 := s.Clone; s1.Color := Colors.Blue; - s1.AnimMoveOnX(-5).WhenCompleted(procedure->s1.AnimMoveOnY(-5).Begin).Begin; + s1.AnimMoveByX(-5).WhenCompleted(procedure->s1.AnimMoveByY(-5).Begin).Begin; end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Группировка/GroupGroup.pas b/InstallerSamples/Graph3D/Группировка/GroupGroup.pas index 9abd00021..cce728626 100644 --- a/InstallerSamples/Graph3D/Группировка/GroupGroup.pas +++ b/InstallerSamples/Graph3D/Группировка/GroupGroup.pas @@ -1,13 +1,13 @@ -uses Graph3D; +uses Graph3D; begin var b := Box(0,0,0,3,1,2,Colors.Blue); var s := Sphere(0,0,2,1,Colors.Green); var g := Group(b,s); - g.MoveOnY(-4); + g.MoveByY(-4); var g1 := g.Clone; - g.MoveOnY(3); + g.MoveByY(3); var gg := Group(g,g1); - gg.MoveOnX(3); + gg.MoveByX(3); end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Группировка/ReGroup2.pas b/InstallerSamples/Graph3D/Группировка/ReGroup2.pas index badc0e256..e8dbd3f05 100644 --- a/InstallerSamples/Graph3D/Группировка/ReGroup2.pas +++ b/InstallerSamples/Graph3D/Группировка/ReGroup2.pas @@ -10,7 +10,7 @@ begin var g1 := Group(b1,s1); g.AddChild(g1[0]);// он должен отсоединиться от g! Sleep(1000); - g.MoveOnX(3); + g.MoveByX(3); Sleep(1000); - g1.MoveOnY(4); + g1.MoveByY(4); end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Клонирование/CloneAnim.pas b/InstallerSamples/Graph3D/Клонирование/CloneAnim.pas index 246bb0b67..d9919601a 100644 --- a/InstallerSamples/Graph3D/Клонирование/CloneAnim.pas +++ b/InstallerSamples/Graph3D/Клонирование/CloneAnim.pas @@ -4,6 +4,6 @@ uses Graph3D; begin var b := Box(0,0,1,1,3,2,RandomColor); var b1 := b.Clone; - b1.MoveOn(3,0,0); + b1.MoveBy(3,0,0); b1.AnimRotate(OrtZ,90).Begin; end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Клонирование/CloneWithChildren.pas b/InstallerSamples/Graph3D/Клонирование/CloneWithChildren.pas index 58af1a6ea..2aa820d87 100644 --- a/InstallerSamples/Graph3D/Клонирование/CloneWithChildren.pas +++ b/InstallerSamples/Graph3D/Клонирование/CloneWithChildren.pas @@ -7,9 +7,9 @@ begin s.AddChild(c); c.AddChild(p); var s1 := s.Clone; - s1.MoveOnX(2); + s1.MoveByX(2); var g := Group(s,s1); var g1 := g.Clone; - g.MoveOnY(-4); + g.MoveByY(-4); s1.AnimRotateAt(OrtZ,360,P3D(-2,0,0)).Begin; end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Клонирование/MovRot.pas b/InstallerSamples/Graph3D/Клонирование/MovRot.pas index 3de6a5109..439c95c1c 100644 --- a/InstallerSamples/Graph3D/Клонирование/MovRot.pas +++ b/InstallerSamples/Graph3D/Клонирование/MovRot.pas @@ -2,8 +2,8 @@ begin var b := Box(0,0,0,3,1,2,Colors.Blue); - var b1 := b.Clone.RotateAt(OrtZ,90,P3D(1.5,0,0)).MoveOnX(-0.5); - b1 := b.Clone.RotateAt(OrtZ,-90,P3D(-1.5,0,0)).MoveOnX(0.5); + var b1 := b.Clone.RotateAt(OrtZ,90,P3D(1.5,0,0)).MoveByX(-0.5); + b1 := b.Clone.RotateAt(OrtZ,-90,P3D(-1.5,0,0)).MoveByX(0.5); View3D.BackgroundColor := Colors.Black; View3D.ShowGridLines := False; end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Проволочные Модели/WireFramePrism.pas b/InstallerSamples/Graph3D/Проволочные Модели/WireFramePrism.pas index 7e4982940..7badbd246 100644 --- a/InstallerSamples/Graph3D/Проволочные Модели/WireFramePrism.pas +++ b/InstallerSamples/Graph3D/Проволочные Модели/WireFramePrism.pas @@ -13,6 +13,6 @@ begin Inc(m); end; var p1 := p.Clone; - p1.MoveOnX(-5); + p1.MoveByX(-5); p1.AnimRotate(OrtZ,360,10).Forever.Begin; end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/Производительность/Spheres.pas b/InstallerSamples/Graph3D/Производительность/Spheres.pas index f7e6d89bc..1d12c13a8 100644 --- a/InstallerSamples/Graph3D/Производительность/Spheres.pas +++ b/InstallerSamples/Graph3D/Производительность/Spheres.pas @@ -17,7 +17,7 @@ begin //end); foreach var x in l do - x.AnimMoveOn(Random,Random,Random).AutoReverse.Forever.Begin; + x.AnimMoveBy(Random,Random,Random).AutoReverse.Forever.Begin; //Print(Milliseconds); end. \ No newline at end of file diff --git a/InstallerSamples/Graph3D/События клавиатуры/Key1.pas b/InstallerSamples/Graph3D/События клавиатуры/Key1.pas index 80b195d45..43f61b544 100644 --- a/InstallerSamples/Graph3D/События клавиатуры/Key1.pas +++ b/InstallerSamples/Graph3D/События клавиатуры/Key1.pas @@ -5,10 +5,10 @@ begin var s := Box(0,0,0,3,1,2,Colors.Blue); OnKeyDown := k -> case k of - Key.Left: s.MoveOn(1,0,0); - Key.Right: s.MoveOn(-1,0,0); - Key.Up: s.MoveOn(0,-1,0); - Key.Down: s.MoveOn(0,1,0); + Key.Left: s.MoveBy(1,0,0); + Key.Right: s.MoveBy(-1,0,0); + Key.Up: s.MoveBy(0,-1,0); + Key.Down: s.MoveBy(0,1,0); Key.X: s.Rotate(OrtX,10); Key.Y: s.Rotate(OrtY,10); Key.Z: s.Rotate(OrtZ,10); diff --git a/InstallerSamples/Graph3D/Фигуры/Замок.pas b/InstallerSamples/Graph3D/Фигуры/Замок.pas index d010ed64e..634750a68 100644 --- a/InstallerSamples/Graph3D/Фигуры/Замок.pas +++ b/InstallerSamples/Graph3D/Фигуры/Замок.pas @@ -6,7 +6,7 @@ begin loop N-1 do begin c := c.Clone; - c.MoveOnX(-1.5); + c.MoveByX(-1.5); if c is ObjectWithMaterial3D then (c as ObjectWithMaterial3D).Color := RandomColor; g.AddChild(c); @@ -21,11 +21,11 @@ begin var g := MultipleClones(c,10); var gp := MultipleClones(c1,10); var gg := Group(g,b,gp); - var g1 := gg.Clone.MoveOnY(6); - var g2 := gg.Clone.MoveOnY(-6); + var g1 := gg.Clone.MoveByY(6); + var g2 := gg.Clone.MoveByY(-6); gg.Rotate(OrtZ,90); - var g3 := gg.Clone.MoveOnX(-6); - gg.MoveOnX(6); + var g3 := gg.Clone.MoveByX(-6); + gg.MoveByX(6); var ggg := Group(gg,g1,g2,g3); ggg.Save('Замок.xaml'); //ggg.AnimRotate(OrtZ,360,10).Forever.begin; diff --git a/InstallerSamples/Graphics/Controls/cc8_MoveObject.pas b/InstallerSamples/Graphics/Controls/cc8_MoveObject.pas index 197f6ee3a..90bbda725 100644 --- a/InstallerSamples/Graphics/Controls/cc8_MoveObject.pas +++ b/InstallerSamples/Graphics/Controls/cc8_MoveObject.pas @@ -10,10 +10,10 @@ begin OnKeyDown := k -> begin case k of - Key.Left: c.MoveOn(-2,0); - Key.Right: c.MoveOn(2,0); - Key.Up: c.MoveOn(0,-2); - Key.Down: c.MoveOn(0,2); + Key.Left: c.MoveBy(-2,0); + Key.Right: c.MoveBy(2,0); + Key.Up: c.MoveBy(0,-2); + Key.Down: c.MoveBy(0,2); end; end; @@ -21,8 +21,8 @@ begin var r := Button('Right'); var u := Button('Up'); var d := Button('Down'); - l.Click := ()->c.MoveOn(-2,0); - r.Click := ()->c.MoveOn(2,0); - u.Click := ()->c.MoveOn(0,-2); - d.Click := ()->c.MoveOn(0,2); + l.Click := ()->c.MoveBy(-2,0); + r.Click := ()->c.MoveBy(2,0); + u.Click := ()->c.MoveBy(0,-2); + d.Click := ()->c.MoveBy(0,2); end. \ No newline at end of file diff --git a/InstallerSamples/Graphics/WPFObjects/gr_All_Brown_WPF.pas b/InstallerSamples/Graphics/WPFObjects/gr_All_Brown_WPF.pas index d29409dc4..48b31e208 100644 --- a/InstallerSamples/Graphics/WPFObjects/gr_All_Brown_WPF.pas +++ b/InstallerSamples/Graphics/WPFObjects/gr_All_Brown_WPF.pas @@ -5,7 +5,7 @@ uses WPFObjects; procedure MoveAll(a,b: integer); begin for var j:=0 to Objects.Count-1 do - Objects[j].moveOn(a,b); + Objects[j].moveBy(a,b); end; begin @@ -33,7 +33,7 @@ begin while True do begin for var j:=0 to Objects.Count-1 do - Objects[j].MoveOn(Random(-1,1),Random(-1,1)); + Objects[j].MoveBy(Random(-1,1),Random(-1,1)); Sleep(10); end; end. diff --git a/InstallerSamples/Graphics/WPFObjects/gr_IntersectWPF.pas b/InstallerSamples/Graphics/WPFObjects/gr_IntersectWPF.pas index d6d5134dc..5b45068fd 100644 --- a/InstallerSamples/Graphics/WPFObjects/gr_IntersectWPF.pas +++ b/InstallerSamples/Graphics/WPFObjects/gr_IntersectWPF.pas @@ -17,7 +17,7 @@ begin loop 900 do begin - Destroyer.MoveOn(1,0); + Destroyer.MoveBy(1,0); CheckPulyaIntersects; Sleep(1); end; diff --git a/InstallerSamples/Graphics/WPFObjects/gr_ObjectsAsSeq.pas b/InstallerSamples/Graphics/WPFObjects/gr_ObjectsAsSeq.pas index 63a34434f..0874368ff 100644 --- a/InstallerSamples/Graphics/WPFObjects/gr_ObjectsAsSeq.pas +++ b/InstallerSamples/Graphics/WPFObjects/gr_ObjectsAsSeq.pas @@ -19,7 +19,7 @@ begin foreach var o in Objects.Seq do match o with CircleWPF(c): c.Radius += 10; - EllipseWPF(e): e.AnimMoveOn(Random(-50,50),Random(-50,50),1); + EllipseWPF(e): e.AnimMoveBy(Random(-50,50),Random(-50,50),1); RegularPolygonWPF(r) when r.Count<6: r.SetBorder; end end. \ No newline at end of file diff --git a/InstallerSamples/LanguageFeatures/AutoClassPoint.pas b/InstallerSamples/LanguageFeatures/AutoClassPoint.pas index 1ca23b8cb..4f31fce5a 100644 --- a/InstallerSamples/LanguageFeatures/AutoClassPoint.pas +++ b/InstallerSamples/LanguageFeatures/AutoClassPoint.pas @@ -1,7 +1,7 @@ type Point = auto class x,y: integer; - procedure MoveOn(dx,dy: integer) := (x,y) := (x+dx,y+dy); + procedure MoveBy(dx,dy: integer) := (x,y) := (x+dx,y+dy); function Distance(p: Point) := sqrt(sqr(x-p.x)+sqr(y-p.y)); class function operator implicit(t: (integer,integer)): Point := new Point(t[0],t[1]); end; diff --git a/InstallerSamples/StandardUnits/CRT/Bill.pas b/InstallerSamples/StandardUnits/CRT/Bill.pas index 91f57c0ea..5cc330980 100644 --- a/InstallerSamples/StandardUnits/CRT/Bill.pas +++ b/InstallerSamples/StandardUnits/CRT/Bill.pas @@ -119,7 +119,7 @@ begin end; /// Перемещает шарик на вектор (dx,dy) -procedure MoveOn(dx,dy: integer); +procedure MoveBy(dx,dy: integer); begin MoveTo(ax+dx,ay+dy); end; @@ -140,6 +140,6 @@ BEGIN Delay(20); if FilledInFront then ChangeDirection; - MoveOn(vx,vy); + MoveBy(vx,vy); until KeyPressed; END. diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index c931ec56d..982f261e7 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.7.1.2743 +3.7.1.2744 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 795fd44ad..d298b8f02 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.7.1.2743' +!define VERSION '3.7.1.2744' diff --git a/TestSuite/CompilationSamples/GraphWPF.pas b/TestSuite/CompilationSamples/GraphWPF.pas index 5ef18198f..752072d0c 100644 --- a/TestSuite/CompilationSamples/GraphWPF.pas +++ b/TestSuite/CompilationSamples/GraphWPF.pas @@ -376,8 +376,12 @@ procedure MoveRel(dx,dy: real); /// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку procedure LineRel(dx,dy: real); /// Перемещает текущую позицию рисования на вектор (dx,dy) -procedure MoveOn(dx,dy: real); +procedure MoveBy(dx,dy: real); /// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку +procedure LineBy(dx,dy: real); +///-- +procedure MoveOn(dx,dy: real); +///-- procedure LineOn(dx,dy: real); /// Рисует ломаную, заданную массивом точек @@ -1206,6 +1210,8 @@ procedure MoveRel(dx,dy: real) := (Pen.fx,Pen.fy) := (Pen.fx + dx, Pen.fy + dy); procedure LineRel(dx,dy: real) := LineTo(Pen.fx + dx, Pen.fy + dy); procedure MoveOn(dx,dy: real) := MoveRel(dx,dy); procedure LineOn(dx,dy: real) := LineRel(dx,dy); +procedure MoveBy(dx,dy: real) := MoveRel(dx,dy); +procedure LineBy(dx,dy: real) := LineRel(dx,dy); procedure PolyLine(points: array of Point) := InvokeVisual(PolyLineP,points); procedure PolyLine(points: array of Point; c: GColor) := InvokeVisual(PolyLinePC,points,c); diff --git a/TestSuite/CompilationSamples/WPFObjects.pas b/TestSuite/CompilationSamples/WPFObjects.pas index aa3663e39..b44fefcce 100644 --- a/TestSuite/CompilationSamples/WPFObjects.pas +++ b/TestSuite/CompilationSamples/WPFObjects.pas @@ -289,14 +289,18 @@ type procedure MoveForward(r: real); begin var a := Pi/180*(90-RotateAngle); - MoveOn(r*Cos(a),-r*Sin(a)); + MoveBy(r*Cos(a),-r*Sin(a)); end; /// Перемещает графический объект на вектор (a,b) - procedure MoveOn(a,b: real) := MoveTo(Left+a,Top+b); + procedure MoveBy(a,b: real) := MoveTo(Left+a,Top+b); /// Перемещает графический объект на вектор (a,b) + procedure MoveBy(v: (real,real)) := MoveTo(Left+v[0],Top+v[1]); + ///-- + procedure MoveOn(a,b: real) := MoveTo(Left+a,Top+b); + ///-- procedure MoveOn(v: (real,real)) := MoveTo(Left+v[0],Top+v[1]); /// Перемещает графический объект на вектор (dx,dy) - procedure Move; virtual := MoveOn(dx,dy); + procedure Move; virtual := MoveBy(dx,dy); /// Перемещает графический объект вдоль вектора Direction со скоростью Velocity за время dt procedure MoveTime(dt: real); virtual; begin @@ -305,7 +309,7 @@ type exit; var dvx := dx/len*Velocity; var dvy := dy/len*Velocity; - MoveOn(dvx*dt,dvy*dt); + MoveBy(dvx*dt,dvy*dt); end; /// Поворачивает графический объект по часовой стрелке на угол a procedure Rotate(a: real) := RotateAngle += a; @@ -330,7 +334,7 @@ type procedure Scale(r: real) := ScaleFactor *= r; private - procedure AnimMoveOnP(a,b,sec: real); + procedure AnimMoveByP(a,b,sec: real); begin var ax := new DoubleAnimation(a + transl.X, System.TimeSpan.FromSeconds(sec)); var ay := new DoubleAnimation(b + transl.Y, System.TimeSpan.FromSeconds(sec)); @@ -365,12 +369,14 @@ type end; public /// Анимирует перемещение графического объекта на вектор (a,b) в течение sec секунд - procedure AnimMoveOn(a,b: real; sec: real := 1) := Invoke(AnimMoveOnP,a,b,sec); + procedure AnimMoveBy(a,b: real; sec: real := 1) := Invoke(AnimMoveByP,a,b,sec); + ///-- + procedure AnimMoveOn(a,b: real; sec: real := 1) := Invoke(AnimMoveByP,a,b,sec); /// Анимирует перемещение графического объекта в направлении RotateAngle (вверх при RotateAngle=0) procedure AnimMoveForward(r: real); begin var a := Pi/180*(90-RotateAngle); - AnimMoveOn(r*Cos(a),-r*Sin(a)); + AnimMoveBy(r*Cos(a),-r*Sin(a)); end; /// Анимирует перемещение графического объекта к точке (x,y) в течение sec секунд procedure AnimMoveTo(x,y: real; sec: real := 1) := Invoke(AnimMoveToP,x,y,sec); @@ -1269,7 +1275,7 @@ procedure Redraw(p: ()->()) := GraphWPFBase.Invoke(p); procedure SetLeft(Self: UIElement; l: integer) := Self.SetLeft(l); procedure SetTop(Self: UIElement; t: integer) := Self.SetTop(t); -function MoveOn(Self: Point; vx,vy: real): Point; extensionmethod; +function MoveBy(Self: Point; vx,vy: real): Point; extensionmethod; begin Result.X := Self.X + vx; Result.Y := Self.Y + vy; diff --git a/TestSuite/CompilationSamples/graph3d.pas b/TestSuite/CompilationSamples/graph3d.pas index 9ab008773..77f872163 100644 --- a/TestSuite/CompilationSamples/graph3d.pas +++ b/TestSuite/CompilationSamples/graph3d.pas @@ -230,11 +230,11 @@ type procedure SetD(d: real) := Invoke(SetDP, d); function GetD: real := InvokeReal(()->Cam.Position.DistanceTo(P3D(0, 0, 0))); - procedure MoveOnP(x,y,z: real); + procedure MoveByP(x,y,z: real); begin Cam.Position += V3D(x,y,z)//:= P3D(Cam.Position. end; - procedure MoveOnPV(v: Vector3D); + procedure MoveByPV(v: Vector3D); begin Cam.Position += v; end; @@ -270,9 +270,13 @@ type property Distanse: real read GetD write SetD; /// Перемещает камеру на вектор (dx,dy,dz) - procedure MoveOn(dx,dy,dz: real) := Invoke(MoveOnP,dx,dy,dz); + procedure MoveBy(dx,dy,dz: real) := Invoke(MoveByP,dx,dy,dz); /// Перемещает камеру на вектор v - procedure MoveOn(v: Vector3D) := Invoke(MoveOnPV,v); + procedure MoveBy(v: Vector3D) := Invoke(MoveByPV,v); + ///-- + procedure MoveOn(dx,dy,dz: real) := Invoke(MoveByP,dx,dy,dz); + ///-- + procedure MoveOn(v: Vector3D) := Invoke(MoveByPV,v); /// Обеспечивает плавное движение камеры procedure AddMoveForce(ForwardForce,RightForce,UpForce: real) := Invoke(AddMoveForceP,RightForce,UpForce,ForwardForce); /// Обеспечивает плавное движение камеры вперед с некоторой силой @@ -458,15 +462,25 @@ type /// Перемещает 3D-объект к точке p function MoveTo(p: Point3D): Object3D := MoveTo(p.X, p.y, p.z); /// Перемещает 3D-объект на вектор (dx,dy,dz) - function MoveOn(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz); + function MoveBy(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz); /// Перемещает 3D-объект на вектор v - function MoveOn(v: Vector3D): Object3D := MoveOn(v.X, v.Y, v.Z); + function MoveBy(v: Vector3D): Object3D := MoveBy(v.X, v.Y, v.Z); /// Перемещает x-координату 3D-объекта на dx - function MoveOnX(dx: real): Object3D := MoveOn(dx, 0, 0); + function MoveByX(dx: real): Object3D := MoveBy(dx, 0, 0); /// Перемещает y-координату 3D-объекта на dy - function MoveOnY(dy: real): Object3D := MoveOn(0, dy, 0); + function MoveByY(dy: real): Object3D := MoveBy(0, dy, 0); /// Перемещает z-координату 3D-объекта на dz - function MoveOnZ(dz: real): Object3D := MoveOn(0, 0, dz); + function MoveByZ(dz: real): Object3D := MoveBy(0, 0, dz); + ///-- + function MoveOn(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz); + ///-- + function MoveOn(v: Vector3D): Object3D := MoveBy(v.X, v.Y, v.Z); + ///-- + function MoveOnX(dx: real): Object3D := MoveBy(dx, 0, 0); + ///-- + function MoveOnY(dy: real): Object3D := MoveBy(0, dy, 0); + ///-- + function MoveOnZ(dz: real): Object3D := MoveBy(0, 0, dz); /// Перемещает 3D-объект вдоль вектора Direction со скоростью Velocity за время dt procedure MoveTime(dt: real); virtual; begin @@ -479,7 +493,7 @@ type var dvx := dx/len*Velocity; var dvy := dy/len*Velocity; var dvz := dz/len*Velocity; - MoveOn(dvx*dt,dvy*dt,dvz*dt); + MoveBy(dvx*dt,dvy*dt,dvz*dt); end; /// Цвет 3D-объекта property Color: GColor read GetColor write SetColor; virtual; @@ -578,35 +592,35 @@ type function AnimMoveTrajectory(trajectory: sequence of Point3D; seconds: real := 1): AnimationBase := AnimMoveTrajectory(trajectory,seconds,nil); /// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOn(dx, dy, dz: real; seconds: real; Completed: procedure): AnimationBase; + function AnimMoveBy(dx, dy, dz: real; seconds: real; Completed: procedure): AnimationBase; /// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд - function AnimMoveOn(dx, dy, dz: real; seconds: real := 1): AnimationBase := AnimMoveOn(dx,dy,dz,seconds,nil); + function AnimMoveBy(dx, dy, dz: real; seconds: real := 1): AnimationBase := AnimMoveBy(dx,dy,dz,seconds,nil); /// Возвращает анимацию перемещения объекта на вектор v за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOn(v: Vector3D; seconds: real; Completed: procedure) := AnimMoveOn(v.x, v.y, v.z, seconds, Completed); + function AnimMoveBy(v: Vector3D; seconds: real; Completed: procedure) := AnimMoveBy(v.x, v.y, v.z, seconds, Completed); /// Возвращает анимацию перемещения объекта на вектор v за seconds секунд - function AnimMoveOn(v: Vector3D; seconds: real := 1) := AnimMoveOn(v.x, v.y, v.z, seconds, nil); + function AnimMoveBy(v: Vector3D; seconds: real := 1) := AnimMoveBy(v.x, v.y, v.z, seconds, nil); /// Возвращает анимацию перемещения объекта по оси OX на величину dx за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOnX(dx: real; seconds: real; Completed: procedure) := AnimMoveOn(dx, 0, 0, seconds, Completed); + function AnimMoveByX(dx: real; seconds: real; Completed: procedure) := AnimMoveBy(dx, 0, 0, seconds, Completed); /// Возвращает анимацию перемещения объекта по оси OX на величину dx за seconds секунд - function AnimMoveOnX(dx: real; seconds: real) := AnimMoveOnX(dx, seconds, nil); + function AnimMoveByX(dx: real; seconds: real) := AnimMoveByX(dx, seconds, nil); /// Возвращает анимацию перемещения объекта по оси OX на величину dx за 1 секунду - function AnimMoveOnX(dx: real) := AnimMoveOnX(dx, 1, nil); + function AnimMoveByX(dx: real) := AnimMoveByX(dx, 1, nil); /// Возвращает анимацию перемещения объекта по оси OY на величину dy за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOnY(dy: real; seconds: real; Completed: procedure) := AnimMoveOn(0, dy, 0, seconds, Completed); + function AnimMoveByY(dy: real; seconds: real; Completed: procedure) := AnimMoveBy(0, dy, 0, seconds, Completed); /// Возвращает анимацию перемещения объекта по оси OY на величину dy за seconds секунд - function AnimMoveOnY(dy: real; seconds: real) := AnimMoveOnY(dy, seconds, nil); + function AnimMoveByY(dy: real; seconds: real) := AnimMoveByY(dy, seconds, nil); /// Возвращает анимацию перемещения объекта по оси OZ на величину dz за 1 секунду - function AnimMoveOnY(dy: real) := AnimMoveOnY(dy, 1, nil); + function AnimMoveByY(dy: real) := AnimMoveByY(dy, 1, nil); /// Возвращает анимацию перемещения объекта по оси OZ на величину dz за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOnZ(dz: real; seconds: real; Completed: procedure) := AnimMoveOn(0, 0, dz, seconds, Completed); + function AnimMoveByZ(dz: real; seconds: real; Completed: procedure) := AnimMoveBy(0, 0, dz, seconds, Completed); /// Возвращает анимацию перемещения объекта по оси OZ на величину dz за seconds секунд - function AnimMoveOnZ(dz: real; seconds: real) := AnimMoveOnZ(dz, seconds, nil); + function AnimMoveByZ(dz: real; seconds: real) := AnimMoveByZ(dz, seconds, nil); /// Возвращает анимацию перемещения объекта по оси OZ на величину dz за 1 секунду - function AnimMoveOnZ(dz: real) := AnimMoveOnZ(dz, 1, nil); + function AnimMoveByZ(dz: real) := AnimMoveByZ(dz, 1, nil); /// Возвращает анимацию масштабирования объекта на величину sc за seconds секунд. В конце анимации выполняется процедура Completed function AnimScale(sc: real; seconds: real; Completed: procedure): AnimationBase; @@ -2795,7 +2809,7 @@ function Object3D.AnimMoveTo(x, y, z, seconds: real; Completed: procedure) := ne function Object3D.AnimMoveTrajectory(trajectory: sequence of Point3D; seconds: real; Completed: procedure) := new OffsetAnimationUsingKeyframes(Self, seconds, trajectory, Completed); -function Object3D.AnimMoveOn(dx, dy, dz, seconds: real; Completed: procedure) := new OffsetAnimationOn(Self, seconds, dx, dy, dz, Completed); +function Object3D.AnimMoveBy(dx, dy, dz, seconds: real; Completed: procedure) := new OffsetAnimationOn(Self, seconds, dx, dy, dz, Completed); function Object3D.AnimScale(sc, seconds: real; Completed: procedure) := new ScaleAnimation(Self, seconds, sc, Completed); diff --git a/bin/Lib/Graph3D.pas b/bin/Lib/Graph3D.pas index 9ab008773..77f872163 100644 --- a/bin/Lib/Graph3D.pas +++ b/bin/Lib/Graph3D.pas @@ -230,11 +230,11 @@ type procedure SetD(d: real) := Invoke(SetDP, d); function GetD: real := InvokeReal(()->Cam.Position.DistanceTo(P3D(0, 0, 0))); - procedure MoveOnP(x,y,z: real); + procedure MoveByP(x,y,z: real); begin Cam.Position += V3D(x,y,z)//:= P3D(Cam.Position. end; - procedure MoveOnPV(v: Vector3D); + procedure MoveByPV(v: Vector3D); begin Cam.Position += v; end; @@ -270,9 +270,13 @@ type property Distanse: real read GetD write SetD; /// Перемещает камеру на вектор (dx,dy,dz) - procedure MoveOn(dx,dy,dz: real) := Invoke(MoveOnP,dx,dy,dz); + procedure MoveBy(dx,dy,dz: real) := Invoke(MoveByP,dx,dy,dz); /// Перемещает камеру на вектор v - procedure MoveOn(v: Vector3D) := Invoke(MoveOnPV,v); + procedure MoveBy(v: Vector3D) := Invoke(MoveByPV,v); + ///-- + procedure MoveOn(dx,dy,dz: real) := Invoke(MoveByP,dx,dy,dz); + ///-- + procedure MoveOn(v: Vector3D) := Invoke(MoveByPV,v); /// Обеспечивает плавное движение камеры procedure AddMoveForce(ForwardForce,RightForce,UpForce: real) := Invoke(AddMoveForceP,RightForce,UpForce,ForwardForce); /// Обеспечивает плавное движение камеры вперед с некоторой силой @@ -458,15 +462,25 @@ type /// Перемещает 3D-объект к точке p function MoveTo(p: Point3D): Object3D := MoveTo(p.X, p.y, p.z); /// Перемещает 3D-объект на вектор (dx,dy,dz) - function MoveOn(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz); + function MoveBy(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz); /// Перемещает 3D-объект на вектор v - function MoveOn(v: Vector3D): Object3D := MoveOn(v.X, v.Y, v.Z); + function MoveBy(v: Vector3D): Object3D := MoveBy(v.X, v.Y, v.Z); /// Перемещает x-координату 3D-объекта на dx - function MoveOnX(dx: real): Object3D := MoveOn(dx, 0, 0); + function MoveByX(dx: real): Object3D := MoveBy(dx, 0, 0); /// Перемещает y-координату 3D-объекта на dy - function MoveOnY(dy: real): Object3D := MoveOn(0, dy, 0); + function MoveByY(dy: real): Object3D := MoveBy(0, dy, 0); /// Перемещает z-координату 3D-объекта на dz - function MoveOnZ(dz: real): Object3D := MoveOn(0, 0, dz); + function MoveByZ(dz: real): Object3D := MoveBy(0, 0, dz); + ///-- + function MoveOn(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz); + ///-- + function MoveOn(v: Vector3D): Object3D := MoveBy(v.X, v.Y, v.Z); + ///-- + function MoveOnX(dx: real): Object3D := MoveBy(dx, 0, 0); + ///-- + function MoveOnY(dy: real): Object3D := MoveBy(0, dy, 0); + ///-- + function MoveOnZ(dz: real): Object3D := MoveBy(0, 0, dz); /// Перемещает 3D-объект вдоль вектора Direction со скоростью Velocity за время dt procedure MoveTime(dt: real); virtual; begin @@ -479,7 +493,7 @@ type var dvx := dx/len*Velocity; var dvy := dy/len*Velocity; var dvz := dz/len*Velocity; - MoveOn(dvx*dt,dvy*dt,dvz*dt); + MoveBy(dvx*dt,dvy*dt,dvz*dt); end; /// Цвет 3D-объекта property Color: GColor read GetColor write SetColor; virtual; @@ -578,35 +592,35 @@ type function AnimMoveTrajectory(trajectory: sequence of Point3D; seconds: real := 1): AnimationBase := AnimMoveTrajectory(trajectory,seconds,nil); /// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOn(dx, dy, dz: real; seconds: real; Completed: procedure): AnimationBase; + function AnimMoveBy(dx, dy, dz: real; seconds: real; Completed: procedure): AnimationBase; /// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд - function AnimMoveOn(dx, dy, dz: real; seconds: real := 1): AnimationBase := AnimMoveOn(dx,dy,dz,seconds,nil); + function AnimMoveBy(dx, dy, dz: real; seconds: real := 1): AnimationBase := AnimMoveBy(dx,dy,dz,seconds,nil); /// Возвращает анимацию перемещения объекта на вектор v за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOn(v: Vector3D; seconds: real; Completed: procedure) := AnimMoveOn(v.x, v.y, v.z, seconds, Completed); + function AnimMoveBy(v: Vector3D; seconds: real; Completed: procedure) := AnimMoveBy(v.x, v.y, v.z, seconds, Completed); /// Возвращает анимацию перемещения объекта на вектор v за seconds секунд - function AnimMoveOn(v: Vector3D; seconds: real := 1) := AnimMoveOn(v.x, v.y, v.z, seconds, nil); + function AnimMoveBy(v: Vector3D; seconds: real := 1) := AnimMoveBy(v.x, v.y, v.z, seconds, nil); /// Возвращает анимацию перемещения объекта по оси OX на величину dx за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOnX(dx: real; seconds: real; Completed: procedure) := AnimMoveOn(dx, 0, 0, seconds, Completed); + function AnimMoveByX(dx: real; seconds: real; Completed: procedure) := AnimMoveBy(dx, 0, 0, seconds, Completed); /// Возвращает анимацию перемещения объекта по оси OX на величину dx за seconds секунд - function AnimMoveOnX(dx: real; seconds: real) := AnimMoveOnX(dx, seconds, nil); + function AnimMoveByX(dx: real; seconds: real) := AnimMoveByX(dx, seconds, nil); /// Возвращает анимацию перемещения объекта по оси OX на величину dx за 1 секунду - function AnimMoveOnX(dx: real) := AnimMoveOnX(dx, 1, nil); + function AnimMoveByX(dx: real) := AnimMoveByX(dx, 1, nil); /// Возвращает анимацию перемещения объекта по оси OY на величину dy за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOnY(dy: real; seconds: real; Completed: procedure) := AnimMoveOn(0, dy, 0, seconds, Completed); + function AnimMoveByY(dy: real; seconds: real; Completed: procedure) := AnimMoveBy(0, dy, 0, seconds, Completed); /// Возвращает анимацию перемещения объекта по оси OY на величину dy за seconds секунд - function AnimMoveOnY(dy: real; seconds: real) := AnimMoveOnY(dy, seconds, nil); + function AnimMoveByY(dy: real; seconds: real) := AnimMoveByY(dy, seconds, nil); /// Возвращает анимацию перемещения объекта по оси OZ на величину dz за 1 секунду - function AnimMoveOnY(dy: real) := AnimMoveOnY(dy, 1, nil); + function AnimMoveByY(dy: real) := AnimMoveByY(dy, 1, nil); /// Возвращает анимацию перемещения объекта по оси OZ на величину dz за seconds секунд. В конце анимации выполняется процедура Completed - function AnimMoveOnZ(dz: real; seconds: real; Completed: procedure) := AnimMoveOn(0, 0, dz, seconds, Completed); + function AnimMoveByZ(dz: real; seconds: real; Completed: procedure) := AnimMoveBy(0, 0, dz, seconds, Completed); /// Возвращает анимацию перемещения объекта по оси OZ на величину dz за seconds секунд - function AnimMoveOnZ(dz: real; seconds: real) := AnimMoveOnZ(dz, seconds, nil); + function AnimMoveByZ(dz: real; seconds: real) := AnimMoveByZ(dz, seconds, nil); /// Возвращает анимацию перемещения объекта по оси OZ на величину dz за 1 секунду - function AnimMoveOnZ(dz: real) := AnimMoveOnZ(dz, 1, nil); + function AnimMoveByZ(dz: real) := AnimMoveByZ(dz, 1, nil); /// Возвращает анимацию масштабирования объекта на величину sc за seconds секунд. В конце анимации выполняется процедура Completed function AnimScale(sc: real; seconds: real; Completed: procedure): AnimationBase; @@ -2795,7 +2809,7 @@ function Object3D.AnimMoveTo(x, y, z, seconds: real; Completed: procedure) := ne function Object3D.AnimMoveTrajectory(trajectory: sequence of Point3D; seconds: real; Completed: procedure) := new OffsetAnimationUsingKeyframes(Self, seconds, trajectory, Completed); -function Object3D.AnimMoveOn(dx, dy, dz, seconds: real; Completed: procedure) := new OffsetAnimationOn(Self, seconds, dx, dy, dz, Completed); +function Object3D.AnimMoveBy(dx, dy, dz, seconds: real; Completed: procedure) := new OffsetAnimationOn(Self, seconds, dx, dy, dz, Completed); function Object3D.AnimScale(sc, seconds: real; Completed: procedure) := new ScaleAnimation(Self, seconds, sc, Completed); diff --git a/bin/Lib/GraphWPF.pas b/bin/Lib/GraphWPF.pas index c3d28ef2f..661005fc3 100644 --- a/bin/Lib/GraphWPF.pas +++ b/bin/Lib/GraphWPF.pas @@ -376,8 +376,12 @@ procedure MoveRel(dx,dy: real); /// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку procedure LineRel(dx,dy: real); /// Перемещает текущую позицию рисования на вектор (dx,dy) -procedure MoveOn(dx,dy: real); +procedure MoveBy(dx,dy: real); /// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку +procedure LineBy(dx,dy: real); +///-- +procedure MoveOn(dx,dy: real); +///-- procedure LineOn(dx,dy: real); /// Рисует ломаную, заданную массивом точек @@ -1206,6 +1210,8 @@ procedure MoveRel(dx,dy: real) := (Pen.fx,Pen.fy) := (Pen.fx + dx, Pen.fy + dy); procedure LineRel(dx,dy: real) := LineTo(Pen.fx + dx, Pen.fy + dy); procedure MoveOn(dx,dy: real) := MoveRel(dx,dy); procedure LineOn(dx,dy: real) := LineRel(dx,dy); +procedure MoveBy(dx,dy: real) := MoveRel(dx,dy); +procedure LineBy(dx,dy: real) := LineRel(dx,dy); procedure PolyLine(points: array of Point) := InvokeVisual(PolyLineP,points); procedure PolyLine(points: array of Point; c: GColor) := InvokeVisual(PolyLinePC,points,c); diff --git a/bin/Lib/WPFObjects.pas b/bin/Lib/WPFObjects.pas index aa3663e39..b44fefcce 100644 --- a/bin/Lib/WPFObjects.pas +++ b/bin/Lib/WPFObjects.pas @@ -289,14 +289,18 @@ type procedure MoveForward(r: real); begin var a := Pi/180*(90-RotateAngle); - MoveOn(r*Cos(a),-r*Sin(a)); + MoveBy(r*Cos(a),-r*Sin(a)); end; /// Перемещает графический объект на вектор (a,b) - procedure MoveOn(a,b: real) := MoveTo(Left+a,Top+b); + procedure MoveBy(a,b: real) := MoveTo(Left+a,Top+b); /// Перемещает графический объект на вектор (a,b) + procedure MoveBy(v: (real,real)) := MoveTo(Left+v[0],Top+v[1]); + ///-- + procedure MoveOn(a,b: real) := MoveTo(Left+a,Top+b); + ///-- procedure MoveOn(v: (real,real)) := MoveTo(Left+v[0],Top+v[1]); /// Перемещает графический объект на вектор (dx,dy) - procedure Move; virtual := MoveOn(dx,dy); + procedure Move; virtual := MoveBy(dx,dy); /// Перемещает графический объект вдоль вектора Direction со скоростью Velocity за время dt procedure MoveTime(dt: real); virtual; begin @@ -305,7 +309,7 @@ type exit; var dvx := dx/len*Velocity; var dvy := dy/len*Velocity; - MoveOn(dvx*dt,dvy*dt); + MoveBy(dvx*dt,dvy*dt); end; /// Поворачивает графический объект по часовой стрелке на угол a procedure Rotate(a: real) := RotateAngle += a; @@ -330,7 +334,7 @@ type procedure Scale(r: real) := ScaleFactor *= r; private - procedure AnimMoveOnP(a,b,sec: real); + procedure AnimMoveByP(a,b,sec: real); begin var ax := new DoubleAnimation(a + transl.X, System.TimeSpan.FromSeconds(sec)); var ay := new DoubleAnimation(b + transl.Y, System.TimeSpan.FromSeconds(sec)); @@ -365,12 +369,14 @@ type end; public /// Анимирует перемещение графического объекта на вектор (a,b) в течение sec секунд - procedure AnimMoveOn(a,b: real; sec: real := 1) := Invoke(AnimMoveOnP,a,b,sec); + procedure AnimMoveBy(a,b: real; sec: real := 1) := Invoke(AnimMoveByP,a,b,sec); + ///-- + procedure AnimMoveOn(a,b: real; sec: real := 1) := Invoke(AnimMoveByP,a,b,sec); /// Анимирует перемещение графического объекта в направлении RotateAngle (вверх при RotateAngle=0) procedure AnimMoveForward(r: real); begin var a := Pi/180*(90-RotateAngle); - AnimMoveOn(r*Cos(a),-r*Sin(a)); + AnimMoveBy(r*Cos(a),-r*Sin(a)); end; /// Анимирует перемещение графического объекта к точке (x,y) в течение sec секунд procedure AnimMoveTo(x,y: real; sec: real := 1) := Invoke(AnimMoveToP,x,y,sec); @@ -1269,7 +1275,7 @@ procedure Redraw(p: ()->()) := GraphWPFBase.Invoke(p); procedure SetLeft(Self: UIElement; l: integer) := Self.SetLeft(l); procedure SetTop(Self: UIElement; t: integer) := Self.SetTop(t); -function MoveOn(Self: Point; vx,vy: real): Point; extensionmethod; +function MoveBy(Self: Point; vx,vy: real): Point; extensionmethod; begin Result.X := Self.X + vx; Result.Y := Self.Y + vy;