Преглед изворни кода

* patch by Make TPointF * TPointF a component-wise multiplication, resolves #40042

(cherry picked from commit f1e391fb415239d926c4f23babe812e67824ef95)
florian пре 2 година
родитељ
комит
04c6cb5047
1 измењених фајлова са 10 додато и 3 уклоњено
  1. 10 3
      rtl/objpas/types.pp

+ 10 - 3
rtl/objpas/types.pp

@@ -139,10 +139,11 @@ type
           class operator + (const apt1, apt2 : TPointF): TPointF;
           class operator - (const apt1, apt2 : TPointF): TPointF;
           class operator - (const apt1 : TPointF): TPointF;
-          class operator * (const apt1, apt2: TPointF): Single; // scalar product
+          class operator * (const apt1, apt2: TPointF): TPointF;
           class operator * (const apt1: TPointF; afactor: single): TPointF;
           class operator * (afactor: single; const apt1: TPointF): TPointF;
           class operator := (const apt: TPoint): TPointF;
+          class operator ** (const apt1, apt2: TPointF): Single; // scalar product
        end;
 
   { TSizeF }
@@ -723,9 +724,10 @@ begin
   result:=NOT (SameValue(apt1.x,apt2.x) and Samevalue(apt1.y,apt2.y));
 end;
 
-class operator TPointF. * (const apt1, apt2: TPointF): Single;
+class operator TPointF. * (const apt1, apt2: TPointF): TPointF;
 begin
-  result:=apt1.x*apt2.x + apt1.y*apt2.y;
+  result.x:=apt1.x*apt2.x;
+  result.y:=apt1.y*apt2.y;
 end;
 
 class operator TPointF. * (afactor: single; const apt1: TPointF): TPointF;
@@ -738,6 +740,11 @@ begin
   result:=apt1.Scale(afactor);
 end;
 
+class operator TPointF. ** (const apt1, apt2: TPointF): Single;
+begin
+  result:=apt1.x*apt2.x + apt1.y*apt2.y;
+end;
+
 class operator TPointF.+ (const apt1, apt2 : TPointF): TPointF;
 begin
   result.x:=apt1.x+apt2.x;