diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index c437b26e1..eb8e5128c 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 = "5"; public const string Build = "0"; - public const string Revision = "2234"; + public const string Revision = "2237"; 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 87d152696..cd1a768de 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ -%COREVERSION%=0 -%REVISION%=2234 %MINOR%=5 +%REVISION%=2237 +%COREVERSION%=0 %MAJOR%=3 diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ArrowT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ArrowT class.html index 05df471a4..ecb8a3ac9 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ArrowT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ArrowT class.html @@ -40,6 +40,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D BillboardTextT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D BillboardTextT class.html index cbb04954d..940bc1b72 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D BillboardTextT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D BillboardTextT class.html @@ -23,6 +23,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D BoxT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D BoxT class.html index bdaafce22..e1b72780d 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D BoxT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D BoxT class.html @@ -43,6 +43,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CoordinateSystemT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CoordinateSystemT class.html index 413e431a7..be66f7d4e 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CoordinateSystemT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CoordinateSystemT class.html @@ -23,6 +23,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CubeT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CubeT class.html index 3dc85bcc9..3da244410 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CubeT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CubeT class.html @@ -34,6 +34,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CylinderT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CylinderT class.html index 06a21b153..4595d5128 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CylinderT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D CylinderT class.html @@ -48,6 +48,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D DodecahedronT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D DodecahedronT class.html index b2eacbc68..97ebc43ef 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D DodecahedronT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D DodecahedronT class.html @@ -33,6 +33,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D EllipsoidT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D EllipsoidT class.html index b82c8046f..897aa4270 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D EllipsoidT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D EllipsoidT class.html @@ -40,6 +40,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D FileModelT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D FileModelT class.html index aae85c0ad..f1fc731ae 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D FileModelT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D FileModelT class.html @@ -15,6 +15,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D IcosahedronT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D IcosahedronT class.html index 8750ff4f0..a457d02a3 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D IcosahedronT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D IcosahedronT class.html @@ -33,6 +33,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D LegoT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D LegoT class.html index 60f122703..75ed7facb 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D LegoT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D LegoT class.html @@ -40,6 +40,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ObjectWithChildren3D class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ObjectWithChildren3D class.html index cc11ab983..c5ee7efd1 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ObjectWithChildren3D class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ObjectWithChildren3D class.html @@ -1,5 +1,6 @@ + @@ -15,6 +16,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ObjectWithMaterial3D class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ObjectWithMaterial3D class.html index 6e64c1cd7..625e5692a 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ObjectWithMaterial3D class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D ObjectWithMaterial3D class.html @@ -29,6 +29,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D OctahedronT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D OctahedronT class.html index ba932e894..4b2ae2417 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D OctahedronT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D OctahedronT class.html @@ -33,6 +33,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PipeT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PipeT class.html index 3bd72ded0..07cfb7d08 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PipeT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PipeT class.html @@ -40,6 +40,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PlatonicAbstractT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PlatonicAbstractT class.html index de524b916..171ef6e7d 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PlatonicAbstractT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PlatonicAbstractT class.html @@ -29,6 +29,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PrismT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PrismT class.html index 2f35c0811..c9c903bd5 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PrismT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PrismT class.html @@ -40,6 +40,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PrismTWireframe class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PrismTWireframe class.html index 6a2c8a198..6906a0fe8 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PrismTWireframe class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PrismTWireframe class.html @@ -27,6 +27,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PyramidT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PyramidT class.html index 895ac78b6..62893165b 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PyramidT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PyramidT class.html @@ -52,6 +52,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PyramidTWireframe class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PyramidTWireframe class.html index 4510eaa86..c3369b438 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PyramidTWireframe class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D PyramidTWireframe class.html @@ -39,6 +39,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D RectangleT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D RectangleT class.html index 1eb28403e..901f74f4d 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D RectangleT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D RectangleT class.html @@ -43,6 +43,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D SegmentsT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D SegmentsT class.html index 2fab7aaa2..ab4502171 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D SegmentsT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D SegmentsT class.html @@ -26,6 +26,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D SphereT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D SphereT class.html index 444777453..f304438f6 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D SphereT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D SphereT class.html @@ -34,6 +34,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TeapotT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TeapotT class.html index 5f2ee16d6..33977832f 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TeapotT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TeapotT class.html @@ -34,6 +34,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TetrahedronT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TetrahedronT class.html index b33d3b539..c85d520b9 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TetrahedronT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TetrahedronT class.html @@ -33,6 +33,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TextT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TextT class.html index 2ced36b1d..f047d7a0e 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TextT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TextT class.html @@ -32,6 +32,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TorusT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TorusT class.html index da730a3a1..f9028fae0 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TorusT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TorusT class.html @@ -37,6 +37,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TriangleT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TriangleT class.html index c6b7ede54..1756f4966 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TriangleT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TriangleT class.html @@ -40,6 +40,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TruncatedConeT class.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TruncatedConeT class.html index 0bdb4f706..2c586f57b 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TruncatedConeT class.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D TruncatedConeT class.html @@ -43,6 +43,8 @@ procedure AddChild(obj: Object3D);
         +procedure AddChilds(params arr: array of Object3D); +
         procedure Destroy; override;
         procedure RemoveChild(obj: Object3D); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D events.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D events.html index 349cab60b..5f16f8263 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D events.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D events.html @@ -1,5 +1,6 @@ - + + @@ -8,8 +9,10 @@

Graph3D

- +
OnDrawTime: procedure(dt: real); -
         3D-
+
OnDrawFrame: procedure(dt: real); +
         3D-. dt - ,
OnInit: procedure; +
         .
OnKeyDown: procedure(k: Key);
        
OnKeyPress: procedure(ch: char); diff --git a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D short functions.html b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D short functions.html index 7bfad0c61..65965e54e 100644 --- a/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D short functions.html +++ b/PABCNetHelp/PABCUnits/Graph3D/Files/Graph3D short functions.html @@ -3,7 +3,7 @@

Graph3D

+
        cedure Redraw(p: ()->()); +
/// , ( 0..255); -
        cedure Invoke(p: ()->());
/// , ( 0..255);
        ction RGB(r, g, b: byte): Color;
/// b; diff --git a/PABCNetHelp/PABCUnits/GraphWPF/Files/GraphWPF events.html b/PABCNetHelp/PABCUnits/GraphWPF/Files/GraphWPF events.html index 3b46b0b3d..7ea9dc810 100644 --- a/PABCNetHelp/PABCUnits/GraphWPF/Files/GraphWPF events.html +++ b/PABCNetHelp/PABCUnits/GraphWPF/Files/GraphWPF events.html @@ -1,4 +1,5 @@ + @@ -22,5 +23,7 @@
        
OnResize: procedure;
        
OnDrawFrame: procedure(dt: real); +
        
\ No newline at end of file diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index f63774f18..bbd8f9bc4 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.5.0.2234 +3.5.0.2237 diff --git a/ReleaseGenerators/PascalABCNET_end.nsh b/ReleaseGenerators/PascalABCNET_end.nsh index 298543ed7..c7b73e3a9 100644 --- a/ReleaseGenerators/PascalABCNET_end.nsh +++ b/ReleaseGenerators/PascalABCNET_end.nsh @@ -106,11 +106,12 @@ SectionEnd LangString DESC_INTERNAL_ERROR_REPORT_Desc ${LANG_RUSSIAN} "Позволяет отправить разработчикам отчет о ошибках в работе компилятора" LangString DESC_INTERNAL_ERROR_REPORT_Desc ${LANG_ENGLISH} " " LangString DESC_PT4_Desc ${LANG_RUSSIAN} "Электронный задачник Programming Taskbook Copyright (c)М.Э.Абрамян, 1998-2017" - LangString DESC_PT4_Desc ${LANG_ENGLISH} "Programming Taskbook Copyright (c) M.E. Abramyan, 1998-2017" + LangString DESC_PT4_Desc ${LANG_ENGLISH} "Programming Taskbook Copyright (c) M.E. Abramyan, 1998-2019" LangString DESC_Samples_Desc ${LANG_RUSSIAN} "Файлы примеров" LangString DESC_Samples_Desc ${LANG_ENGLISH} "Samples" LangString DESC_RusLoc_Desc ${LANG_RUSSIAN} "Поддержка русcкого языка" LangString DESC_RusLoc_Desc ${LANG_ENGLISH} " " + LangString DESC_RusLoc_Desc ${LANG_UKR} "Поддержка украинского языка" LangString DESC_EngLoc_Desc ${LANG_RUSSIAN} "Поддержка английского языка" LangString DESC_EngLoc_Desc ${LANG_ENGLISH} " " LangString DESC_Framework_Desc ${LANG_RUSSIAN} "Платформа необходима для работы компилятора и программ, работающих на этой платформе" diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 3be20a036..a11b72ad0 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.5.0.2234' +!define VERSION '3.5.0.2237' diff --git a/ReleaseGenerators/RebuildStandartModules.pas b/ReleaseGenerators/RebuildStandartModules.pas index d28ac8d20..d09c24b0d 100644 --- a/ReleaseGenerators/RebuildStandartModules.pas +++ b/ReleaseGenerators/RebuildStandartModules.pas @@ -14,7 +14,8 @@ Collections, Arrays, Core, FormsABC, MPI, ClientServer, Speech, Sounds, Countries, ABCDatabases,BlockFileOfT,Controls, OpenCL, OpenCLABC, - OpenGL, OpenGLABC + OpenGL, OpenGLABC, + BBCMicroBit ; begin diff --git a/ReleaseGenerators/sect_Core.nsh b/ReleaseGenerators/sect_Core.nsh index f7382f3cd..c83c06644 100644 --- a/ReleaseGenerators/sect_Core.nsh +++ b/ReleaseGenerators/sect_Core.nsh @@ -101,6 +101,7 @@ File ..\bin\Lib\Countries.pcu File ..\bin\Lib\Graph3D.pcu File ..\bin\Lib\GraphABCHelper.pcu + File ..\bin\Lib\BBCMicroBit.pcu File ..\bin\Lib\IniFile.pcu File ..\bin\Lib\PABCSystem.pcu File ..\bin\Lib\PABCExtensions.pcu @@ -166,6 +167,7 @@ ${AddFile} "Countries.pcu" ${AddFile} "Graph3D.pcu" ${AddFile} "GraphABCHelper.pcu" + ${AddFile} "BBCMicroBit.pcu" ${AddFile} "IniFile.pcu" ${AddFile} "PABCSystem.pcu" ${AddFile} "PABCExtensions.pcu" @@ -241,6 +243,7 @@ File ..\bin\Lib\Countries.pas File ..\bin\Lib\Graph3D.pas File ..\bin\Lib\GraphABCHelper.pas + File ..\bin\Lib\BBCMicroBit.pas File ..\bin\Lib\IniFile.pas File ..\bin\Lib\PABCSystem.pas File ..\bin\Lib\PABCExtensions.pas @@ -302,6 +305,7 @@ ${AddFile} "Countries.pas" ${AddFile} "Graph3D.pas" ${AddFile} "GraphABCHelper.pas" + ${AddFile} "BBCMicroBit.pas" ${AddFile} "IniFile.pas" ${AddFile} "PABCSystem.pas" ${AddFile} "PABCExtensions.pas" diff --git a/ReleaseGenerators/sect_LocUkr.nsh b/ReleaseGenerators/sect_LocUkr.nsh index f214d1145..12f878cf9 100644 --- a/ReleaseGenerators/sect_LocUkr.nsh +++ b/ReleaseGenerators/sect_LocUkr.nsh @@ -1,5 +1,5 @@  Section "Українська" UkrLoc - SectionIn 1 2 RO + SectionIn 1 SetOutPath "$INSTDIR\Lng\Ukr" File "..\bin\Lng\Ukr\.LanguageName" File "..\bin\Lng\Ukr\*.dat" diff --git a/bin/Lib/BBCMicrobit.pas b/bin/Lib/BBCMicrobit.pas new file mode 100644 index 000000000..97039c0e1 --- /dev/null +++ b/bin/Lib/BBCMicrobit.pas @@ -0,0 +1,190 @@ +// BBC Micro:bit communication module + +unit BBCMicrobit; + +interface + +/// Исключение для информирования об отсутствии подключенного устройства +type + NoUBSComPortsException = class(Exception) end; + NoBBCBoardFoundException = class(Exception) end; + +/// Класс для взаимодействия с устройством BBC Micro:bit +type + Microbit = class(System.IDisposable) + + protected + /// Порт для связи с устройством + Port: System.IO.Ports.SerialPort; + + /// Обработчик данных от платы. Принимает только строки + procedure DataReceivedHandler(sender: object; e: System.IO.Ports.SerialDataReceivedEventArgs); + + + + public + + /// Копирование файла прошивки в BBC:Microbit + class procedure CopyFile(filename : string); + + public + /// Обработчик события распознавания + OnReadString: procedure(Message: string); + + /// Список USB COM-портов с идентификаторами Microbit + class function GetUsbPortNames: List; + begin + // Вот такие параметры у каждой платы (по крайней мере сейчас) + var pattern := '^VID_0D28.PID_0204'; + var _rx := new System.Text.RegularExpressions.Regex(pattern, RegexOptions.IgnoreCase); + Result := new List; + var {Microsoft.Win32.RegistryKey} rk1 := Microsoft.Win32.Registry.LocalMachine; + var {Microsoft.Win32.RegistryKey} rk2 := rk1.OpenSubKey('SYSTEM\\CurrentControlSet\\Enum'); + + foreach s3: string in rk2.GetSubKeyNames do + begin + var rk3 := rk2.OpenSubKey(s3); + foreach s: string in rk3.GetSubKeyNames do + if _rx.Match(s).Success then + begin + var {RegistryKey} rk4 := rk3.OpenSubKey(s); + foreach s2: string in rk4.GetSubKeyNames do + begin + var {RegistryKey} rk5 := rk4.OpenSubKey(s2); + var {RegistryKey} rk6 := rk5.OpenSubKey('Device Parameters'); + var {string} portName := string(rk6.GetValue('PortName')); + if not String.IsNullOrEmpty(portName) and System.IO.Ports.SerialPort.GetPortNames.Contains(portName) then + begin + Result.Add(string(rk6.GetValue('PortName'))); + end; + end; + end; + end; + end; + + /// + /// Конструктор объекта для взаимодействия с Microbit + /// + /// Процедура-обработчик, вызываемая для каждой принятой строки + /// Имя COM-порта, можно не указывать + constructor Create(Handler: procedure(s: string) := nil; PortName: string := ''); + begin + OnReadString := Handler; + // Инициализируем виртуальный COM-порт, который связан с USB-устройством. + Port := new System.IO.Ports.SerialPort; + + if PortName.Length > 0 then + // Порт указан явно при создании объекта класса, значит его и используем + Port.PortName := PortName + else + begin + // Порт явно не указан, приходится искать самостоятельно + // Получаем список всех похожих COM-портов (по VID и PID) + var portNames := GetUsbPortNames; + // Если подходящих портов нет - выбрасываем исключение + if portNames.Count = 0 then + raise new NoUBSComPortsException('Не найдено устройство Microbit') + else + // Берём первый попавшийся. Если устройств несколько, то надо явно указывать + Port.PortName := portNames[0]; + end; + + // Эти параметры зашиты явно, рекомендованы руководством по Microbit + Port.BaudRate := 115200; //Указываем скорость. + Port.DataBits := 8; + Port.Parity := System.IO.Ports.Parity.None; + Port.StopBits := System.IO.Ports.StopBits.One; + Port.DataReceived += DataReceivedHandler; + Port.Open; //Открываем порт + end; + + /// Отправка строки на устройство Microbit + procedure Send(message: string) := Port.WriteLine(message); + + /// Деструктор - закрывает COM-порт + destructor Destroy; + begin + if Port <> nil then + begin + Port.Close; + Port := nil; + end; + end; + + procedure Dispose; + begin + Destroy; + end; + + procedure Finalize; override; + begin + Destroy + end; + end; + +implementation + +/// Иногда строки приходят "склеенные" – нужно разбить по служебным символам +/// Эта функция возвращает первую группу символов из строки, ограниченную +/// служебными #10 или #13, сама подстрока из строки удаляется. +function ParseStr(var s : string) : string; +begin + var iStart := 1; + var len := s.Length; + + while (iStart<=len) and ((s[iStart] = #10) or (s[iStart] = #13)) do + iStart += 1; + + var iEnd := iStart + 1; + + while (iEnd<=len) and (s[iEnd] <> #10) and (s[iEnd] <> #13) do + iEnd += 1; + + // Копируем фрагмент, но с проверкой + if iEnd-iStart > 0 then + Result := copy(s, iStart, iEnd-iStart) + else + Result := ''; + + while (iEnd 0 do + begin + // Очередная подстрока + var block := ParseStr(message).TrimEnd(' '); + if (block.Length > 0) and (OnReadString <> nil) then + OnReadString(block); + end; + end; + +class procedure MicroBit.CopyFile(filename : string); +begin + var allDrives := System.IO.DriveInfo.GetDrives(); + + foreach d: System.IO.DriveInfo in allDrives do + begin + if d.IsReady then + if d.VolumeLabel = 'MICROBIT' then + begin + var dest : string := d.RootDirectory.ToString + '\\' + System.IO.Path.GetFileName(filename); + System.IO.File.Copy(filename, dest); + sleep(2000); + exit; + end; + end; + raise new NoBBCBoardFoundException('Не найдено устройство Microbit'); + +end; + +end. \ No newline at end of file diff --git a/bin/Lib/Graph3D.pas b/bin/Lib/Graph3D.pas index 16c78a355..26cce52f1 100644 --- a/bin/Lib/Graph3D.pas +++ b/bin/Lib/Graph3D.pas @@ -75,8 +75,8 @@ var //>> Короткие функции модуля Graph3D # Graph3D short functions // ----------------------------------------------------- -procedure Invoke(p: ()->()); - +/// Процедура ускорения вывода. Обновляет экран после всех изменений +procedure Redraw(p: ()->()); /// Возвращает цвет по красной, зеленой и синей составляющей (в диапазоне 0..255) function RGB(r, g, b: byte): Color; /// Возвращает цвет по красной, зеленой и синей составляющей и параметру прозрачности (в диапазоне 0..255) @@ -182,6 +182,13 @@ type property ShowCameraInfo: boolean read GetSCI write SetSCI; /// Отображать ли ViewCube property ShowViewCube: boolean read GetSVC write SetSVC; + /// Не отображать координатную систему, координатную сетку и ViewCube + procedure HideAll; + begin + ShowCoordinateSystem := False; + ShowGridLines := False; + ShowViewCube := False; + end; /// Заголовок пространства отображения property Title: string read GetT write SetT; /// Подзаголовок пространства отображения @@ -410,10 +417,18 @@ type begin Result := CreateObject; Result.CloneChildren(Self); - var ind := (model.Transform as Transform3DGroup).Children.IndexOf(rotatetransform); (Result.model.Transform as Transform3DGroup).Children[ind] := (model.Transform as Transform3DGroup).Children[ind].Clone; Result.rotatetransform := (Result.model.Transform as Transform3DGroup).Children[ind] as MatrixTransform3d; + + ind := transfgroup.Children.IndexOf(rotatetransform_absolute); + (Result.model.Transform as Transform3DGroup).Children[ind] := (model.Transform as Transform3DGroup).Children[ind].Clone; + Result.rotatetransform_absolute := (Result.model.Transform as Transform3DGroup).Children[ind] as MatrixTransform3d; + + ind := transfgroup.Children.IndexOf(transltransform); + (Result.model.Transform as Transform3DGroup).Children[ind] := (model.Transform as Transform3DGroup).Children[ind].Clone; + Result.transltransform := (Result.model.Transform as Transform3DGroup).Children[ind] as TranslateTransform3D; + //(Result.model.Transform as Transform3DGroup).Children[1] := (model.Transform as Transform3DGroup).Children[1].Clone; //(Result.model.Transform as Transform3DGroup).Children[2] := (model.Transform as Transform3DGroup).Children[2].Clone; //(Result.model.Transform as Transform3DGroup).Children[3] := (model.Transform as Transform3DGroup).Children[3].Clone; //- почему-то это не нужно!!! с ним не работает! @@ -475,6 +490,24 @@ type /// Позиция 3D-объекта property Position: Point3D read GetPos write MoveToProp; + /// Будущая позиция 3D-объекта по прошествии времени dt + function PositionAfterTime(dt: real): Point3D; + begin + var dx := Direction.X; + var dy := Direction.Y; + var dz := Direction.Z; + var len := Sqrt(dx*dx+dy*dy+dz*dz); + if len = 0 then + begin + Result := Position; + exit; + end; + var dvx := dx/len*Velocity; + var dvy := dy/len*Velocity; + var dvz := dz/len*Velocity; + Result := P3D(X + dvx*dt, Y + dvy*dt, Z + dvz*dt); + end; + /// Масштабирует 3D-объект в f раз function Scale(f: real): Object3D := Invoke&(()->begin @@ -707,6 +740,8 @@ type public /// Добавить дочерний подобъект procedure AddChild(obj: Object3D) := Invoke(AddT, obj); + /// Добавить дочерний подобъект + procedure AddChilds(params arr: array of Object3D) := arr.ForEach(obj->AddChild(obj)); /// Удалить дочерний подобъект procedure RemoveChild(obj: Object3D) := Invoke(RemoveT, obj); /// i-тый дочерний подобъект @@ -2643,8 +2678,9 @@ var OnKeyUp: procedure(k: Key); /// Событие нажатия символьной клавиши OnKeyPress: procedure(ch: char); - /// Событие перерисовки графического 3D-окна - OnDrawTime: procedure(dt: real); + /// Событие перерисовки графического 3D-окна. + ///Инициализируется процедурой с вещественным параметром dt - временем, прошедшим с момента последнего обновления экрана + OnDrawFrame: procedure(dt: real); var // ----------------------------------------------------- @@ -2668,6 +2704,8 @@ var OrtY: Vector3D := V3D(0, 1, 0); /// Орт (единичный вектор) оси OZ OrtZ: Vector3D := V3D(0, 0, 1); +/// Нулевой вектор + ZeroVector: Vector3D := V3D(0, 0, 0); /// Точка начала координат Origin: Point3D := P3D(0, 0, 0); /// Плоскость OXY @@ -2694,7 +2732,7 @@ procedure __FinalizeModule__; implementation -procedure Invoke(p: ()->()) := GraphWPFBase.Invoke(p); +procedure Redraw(p: ()->()) := GraphWPFBase.Invoke(p); function RGB(r, g, b: byte) := Color.Fromrgb(r, g, b); function ARGB(a, r, g, b: byte) := Color.FromArgb(a, r, g, b); @@ -3435,7 +3473,6 @@ function PointOnPlane(Plane: Plane3D; x, y: real): Point3D := Plane.PointOnPlane function NearestPointOnLine(Line: Ray3D; x, y: real): Point3D := Line.NearestPointOnLine(x,y); - // Методы расширения для анимаций function Sec(Self: integer): real; extensionmethod := Self; @@ -3716,25 +3753,25 @@ var LastUpdatedTime := new System.TimeSpan(0); procedure RenderFrame(o: Object; e: System.EventArgs); begin - if OnDrawTime<>nil then + if OnDrawFrame<>nil then begin var e1 := RenderingEventArgs(e).RenderingTime; var dt := e1 - LastUpdatedTime; if LastUpdatedTime.TotalMilliseconds<>0 then - if OnDrawTime<>nil then - OnDrawTime(dt.Milliseconds/1000); + if OnDrawFrame<>nil then + OnDrawFrame(dt.Milliseconds/1000); LastUpdatedTime := e1; end; end; procedure BeginFrameBasedAnimationTime(Draw: procedure(dt: real)); begin - OnDrawTime := Draw; + OnDrawFrame := Draw; end; procedure EndFrameBasedAnimation; begin - OnDrawTime := nil; + OnDrawFrame := nil; end; @@ -3788,6 +3825,8 @@ type /// --- SystemKeyEvents procedure SystemOnKeyDown(sender: Object; e: System.Windows.Input.KeyEventArgs); begin + if (e.Key = Key.F4) and (e.KeyboardDevice.Modifiers = ModifierKeys.Control) then + Close; if Graph3D.OnKeyDown <> nil then Graph3D.OnKeyDown(e.Key); e.Handled := True; @@ -3876,8 +3915,7 @@ begin end; MainWindow := new Graph3DWindow; - //MainWindow.MainPanel; - + mre.Set(); app.Run(MainWindow); diff --git a/bin/Lib/GraphWPF.pas b/bin/Lib/GraphWPF.pas index 4524c17c8..362841d86 100644 --- a/bin/Lib/GraphWPF.pas +++ b/bin/Lib/GraphWPF.pas @@ -345,7 +345,7 @@ function Rect(x,y,w,h: real): GRect; function ColorBrush(c: Color): GBrush; /// Возвращает однотонное цветное перо, заданное цветом function ColorPen(c: Color): GPen; -/// Процедура ускорения вывода нескольких графических команд +/// Процедура ускорения вывода. Обновляет экран после всех изменений procedure Redraw(d: ()->()); @@ -483,6 +483,9 @@ var OnKeyUp: procedure(k: Key); var OnKeyPress: procedure(ch: char); /// Событие изменения размера графического окна var OnResize: procedure; +/// Событие перерисовки графического окна. +///Инициализируется процедурой с вещественным параметром dt - временем, прошедшим с момента последнего обновления экрана +var OnDrawFrame: procedure(dt: real) := nil; //{{{--doc: Конец секции 3 }}} @@ -1566,7 +1569,6 @@ procedure SystemOnResize(sender: Object; e: SizeChangedEventArgs) := var OnDraw: procedure := nil; var OnDraw1: procedure(frame: integer) := nil; -var OnDrawTime: procedure(dt: real) := nil; var FrameRate := 61; // кадров в секунду. Можно меньше! var LastUpdatedTime := new System.TimeSpan(integer.MinValue); @@ -1575,12 +1577,12 @@ var FrameNum := 0; procedure RenderFrame(o: Object; e: System.EventArgs); begin - if (OnDraw<>nil) or (OnDraw1<>nil) or (OnDrawTime<>nil) then + if (OnDraw<>nil) or (OnDraw1<>nil) or (OnDrawFrame<>nil) then begin var e1 := RenderingEventArgs(e).RenderingTime; var dt := e1 - LastUpdatedTime; var delta := 1000/Framerate; // через какое время обновлять - if OnDrawTime<>nil then + if OnDrawFrame<>nil then delta := 0; // перерисовывать когда придёт время if dt.TotalMilliseconds < delta then exit @@ -1591,8 +1593,8 @@ begin OnDraw() else if OnDraw1<>nil then OnDraw1(FrameNum) - else if OnDrawTime<>nil then - OnDrawTime(dt.Milliseconds/1000); + else if OnDrawFrame<>nil then + OnDrawFrame(dt.Milliseconds/1000); end; end; @@ -1614,7 +1616,7 @@ end; procedure BeginFrameBasedAnimationTime(Draw: procedure(dt: real)); begin - OnDrawTime := Draw; + OnDrawFrame := Draw; end; procedure EndFrameBasedAnimation; diff --git a/bin/Lib/GraphWPFBase.pas b/bin/Lib/GraphWPFBase.pas index 9226d6350..1e38bcb9c 100644 --- a/bin/Lib/GraphWPFBase.pas +++ b/bin/Lib/GraphWPFBase.pas @@ -27,7 +27,6 @@ type g.LastChildFill := True; Result := g; end; - procedure InitMainGraphControl; virtual; begin end; diff --git a/bin/Lib/WPFObjects.pas b/bin/Lib/WPFObjects.pas index 6d3f5eecd..53c0f76a6 100644 --- a/bin/Lib/WPFObjects.pas +++ b/bin/Lib/WPFObjects.pas @@ -80,7 +80,7 @@ function Rect(x,y,w,h: real): GRect; function ColorBrush(c: Color): SolidColorBrush; /// Возвращает случайную точку графического окна. Необязательный параметр z задаёт отступ от края function RandomWindowPoint(z: real := 0): GPoint; -/// Процедура ускорения вывода нескольких графических команд +/// Процедура ускорения вывода. Обновляет экран после всех изменений procedure Redraw(p: ()->()); //{{{--doc: Конец секции 1 }}} diff --git a/bin/PascalABCNET.chm b/bin/PascalABCNET.chm index f3ca76fe1..8d8e6d586 100644 Binary files a/bin/PascalABCNET.chm and b/bin/PascalABCNET.chm differ