Graph3d WPFObjects Invoke
This commit is contained in:
parent
16970b7b3d
commit
17bbbdb86f
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "4";
|
||||
public const string Build = "2";
|
||||
public const string Revision = "1890";
|
||||
public const string Revision = "1893";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=4
|
||||
%REVISION%=1890
|
||||
%COREVERSION%=2
|
||||
%REVISION%=1893
|
||||
%MINOR%=4
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -2,15 +2,18 @@
|
|||
|
||||
const
|
||||
/// Количество графических объектов
|
||||
Count = 300;
|
||||
Count = 1000;
|
||||
|
||||
/// Возвращает случайный графический объект
|
||||
|
||||
var w := 50;
|
||||
|
||||
function NewRandomABC: ObjectWPF;
|
||||
begin
|
||||
case Random(3) of
|
||||
0: Result := new CircleWPF(Random(Window.Width.Round-30)+10,Random(Window.Height.Round-30)+10,Random(10)+5,RandomColor);
|
||||
1: Result := new RectangleWPF(Random(Window.Width.Round-30)+10,Random(Window.Height.Round-30)+10,Random(20)+10,Random(20)+10,RandomColor);
|
||||
2: Result := new StarWPF(Random(Window.Width.Round-30)+10,Random(Window.Height.Round-30)+10,Random(20)+10,Random(10)+5,Random(4)+4,RandomColor);
|
||||
0: Result := new CircleWPF(Random(Window.Width.Round-w)+w/2,Random(Window.Height.Round-w)+w/2,Random(w/2),RandomColor);
|
||||
1: Result := new RectangleWPF(Random(Window.Width.Round-w)+w/2,Random(Window.Height.Round-w)+w/2,Random(w),Random(w),RandomColor);
|
||||
2: Result := new StarWPF(Random(Window.Width.Round-w)+w/2,Random(Window.Height.Round-w)+w/2,Random(w/2),Random(w/2),Random(4)+4,RandomColor);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -24,8 +27,8 @@ begin
|
|||
o.dy := -o.dy;
|
||||
end;
|
||||
|
||||
procedure CreateAll;
|
||||
begin
|
||||
Window.Title := 'Движущиеся объекты';
|
||||
for var i:=1 to Count do
|
||||
begin
|
||||
var m: ObjectWPF := NewRandomABC;
|
||||
|
|
@ -34,11 +37,21 @@ begin
|
|||
m.dy := Random(-3,3);
|
||||
until (m.dx<>0) and (m.dy<>0);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure MoveAll;
|
||||
begin
|
||||
for var i:=0 to Objects.Count-1 do
|
||||
Move(Objects[i]);
|
||||
end;
|
||||
|
||||
begin
|
||||
Window.Title := 'Движущиеся объекты';
|
||||
Invoke(CreateAll);
|
||||
var k := 1;
|
||||
while True do
|
||||
begin
|
||||
for var i:=0 to Objects.Count-1 do
|
||||
Move(Objects[i]);
|
||||
Invoke(MoveAll);
|
||||
k += 1;
|
||||
Window.Title := Format('{0,5:f2}',k/Milliseconds*1000)+' кадров в секунду';
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.4.2.1890'
|
||||
!define VERSION '3.4.2.1893'
|
||||
|
|
|
|||
|
|
@ -8581,6 +8581,22 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
/// Возвращает произведение элементов последовательности
|
||||
function Product(Self: sequence of real): real; extensionmethod;
|
||||
begin
|
||||
Result := 1.0;
|
||||
foreach var x in Self do
|
||||
Result *= x;
|
||||
end;
|
||||
|
||||
/// Возвращает произведение элементов последовательности
|
||||
function Product(Self: sequence of integer): integer; extensionmethod;
|
||||
begin
|
||||
Result := 1;
|
||||
foreach var x in Self do
|
||||
Result *= x;
|
||||
end;
|
||||
|
||||
/// Возвращает отсортированную по возрастанию последовательность
|
||||
function Sorted<T>(Self: sequence of T): sequence of T; extensionmethod;
|
||||
begin
|
||||
|
|
@ -9602,6 +9618,22 @@ begin
|
|||
Self[i, j] := f(i, j);
|
||||
end;
|
||||
|
||||
/// Применяет действие к каждому элементу двумерного массива
|
||||
procedure &ForEach<T>(Self: array [,] of T; act: T -> ()); extensionmethod;
|
||||
begin
|
||||
for var i := 0 to Self.RowCount - 1 do
|
||||
for var j := 0 to Self.ColCount - 1 do
|
||||
act(Self[i, j]);
|
||||
end;
|
||||
|
||||
/// Применяет действие к каждому элементу двумерного массива
|
||||
procedure &ForEach<T>(Self: array [,] of T; act: (T,integer,integer) -> ()); extensionmethod;
|
||||
begin
|
||||
for var i := 0 to Self.RowCount - 1 do
|
||||
for var j := 0 to Self.ColCount - 1 do
|
||||
act(Self[i, j],i,j);
|
||||
end;
|
||||
|
||||
// -----------------------------------------------------
|
||||
//>> Фиктивная секция YYY - не удалять! # YYY
|
||||
// -----------------------------------------------------
|
||||
|
|
@ -9730,7 +9762,7 @@ begin
|
|||
end;}
|
||||
|
||||
/// Возвращает минимальный элемент
|
||||
function Min<T>(Self: array of T): T; extensionmethod;where T: System.IComparable<T>;
|
||||
function Min<T>(Self: array of T): T; extensionmethod; where T: System.IComparable<T>;
|
||||
begin
|
||||
Result := Self[0];
|
||||
for var i := 1 to Self.Length - 1 do
|
||||
|
|
@ -9739,7 +9771,7 @@ begin
|
|||
end;
|
||||
|
||||
/// Возвращает максимальный элемент
|
||||
function Max<T>(Self: array of T): T; extensionmethod;where T: System.IComparable<T>;
|
||||
function Max<T>(Self: array of T): T; extensionmethod; where T: System.IComparable<T>;
|
||||
begin
|
||||
Result := Self[0];
|
||||
for var i := 1 to Self.Length - 1 do
|
||||
|
|
|
|||
|
|
@ -77,6 +77,8 @@ function Rect(x,y,w,h: real): GRect;
|
|||
function ColorBrush(c: Color): GBrush;
|
||||
//{{{--doc: Конец секции 1 }}}
|
||||
|
||||
procedure Invoke(p: ()->());
|
||||
|
||||
//{{{doc: Начало секции 2 }}}
|
||||
type
|
||||
// -----------------------------------------------------
|
||||
|
|
@ -927,6 +929,8 @@ function Pnt(x,y: real) := new Point(x,y);
|
|||
function Rect(x,y,w,h: real) := new System.Windows.Rect(x,y,w,h);
|
||||
function ColorBrush(c: Color) := new SolidColorBrush(c);
|
||||
|
||||
procedure Invoke(p: ()->()) := GraphWPFBase.Invoke(p);
|
||||
|
||||
procedure SetLeft(Self: UIElement; l: integer) := Self.SetLeft(l);
|
||||
procedure SetTop(Self: UIElement; t: integer) := Self.SetTop(t);
|
||||
|
||||
|
|
|
|||
|
|
@ -900,7 +900,8 @@ namespace SymbolTable
|
|||
((to.symbol_kind == symbol_kind.sk_overload_function) && (add.symbol_kind == symbol_kind.sk_overload_function))
|
||||
||
|
||||
((to.symbol_kind == symbol_kind.sk_overload_procedure) && (add.symbol_kind == symbol_kind.sk_overload_procedure))
|
||||
|| to.sym_info != add.sym_info && to.sym_info is PascalABCCompiler.TreeRealization.function_node && add.sym_info is PascalABCCompiler.TreeRealization.function_node /*&& (to.sym_info as PascalABCCompiler.TreeRealization.function_node).is_extension_method*/ && (add.sym_info as PascalABCCompiler.TreeRealization.function_node).is_extension_method
|
||||
|| to.sym_info != add.sym_info && to.sym_info is PascalABCCompiler.TreeRealization.function_node && add.sym_info is PascalABCCompiler.TreeRealization.function_node
|
||||
/*&& (to.sym_info as PascalABCCompiler.TreeRealization.function_node).is_extension_method*/ && (add.sym_info as PascalABCCompiler.TreeRealization.function_node).is_extension_method
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,6 +75,8 @@ var
|
|||
//>> Короткие функции модуля Graph3D # Graph3D short functions
|
||||
// -----------------------------------------------------
|
||||
|
||||
procedure Invoke(p: ()->());
|
||||
|
||||
/// Возвращает цвет по красной, зеленой и синей составляющей (в диапазоне 0..255)
|
||||
function RGB(r, g, b: byte): Color;
|
||||
/// Возвращает цвет по красной, зеленой и синей составляющей и параметру прозрачности (в диапазоне 0..255)
|
||||
|
|
@ -1373,8 +1375,8 @@ type
|
|||
protected
|
||||
function CreateObject: Object3D; override := new SphereT(X, Y, Z, Radius, Material.Clone);
|
||||
constructor := CreateBase(NewVisualObject(1), 0, 0, 0, Materialhelper.CreateMaterial(Colors.Blue));
|
||||
constructor(x, y, z, r: real; m: Gmaterial) := CreateBase(NewVisualObject(r), x, y, z, m);
|
||||
public
|
||||
constructor(x, y, z, r: real; m: Gmaterial) := CreateBase(NewVisualObject(r), x, y, z, m);
|
||||
/// Радиус сферы
|
||||
property Radius: real read GetR write SetR;
|
||||
/// Возвращает клон сферы
|
||||
|
|
@ -2567,6 +2569,8 @@ procedure __FinalizeModule__;
|
|||
|
||||
implementation
|
||||
|
||||
procedure Invoke(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);
|
||||
function P3D(x, y, z: real) := new Point3D(x, y, z);
|
||||
|
|
|
|||
|
|
@ -77,6 +77,8 @@ function Rect(x,y,w,h: real): GRect;
|
|||
function ColorBrush(c: Color): GBrush;
|
||||
//{{{--doc: Конец секции 1 }}}
|
||||
|
||||
procedure Invoke(p: ()->());
|
||||
|
||||
//{{{doc: Начало секции 2 }}}
|
||||
type
|
||||
// -----------------------------------------------------
|
||||
|
|
@ -927,6 +929,8 @@ function Pnt(x,y: real) := new Point(x,y);
|
|||
function Rect(x,y,w,h: real) := new System.Windows.Rect(x,y,w,h);
|
||||
function ColorBrush(c: Color) := new SolidColorBrush(c);
|
||||
|
||||
procedure Invoke(p: ()->()) := GraphWPFBase.Invoke(p);
|
||||
|
||||
procedure SetLeft(Self: UIElement; l: integer) := Self.SetLeft(l);
|
||||
procedure SetTop(Self: UIElement; t: integer) := Self.SetTop(t);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue