@@ -55,6 +55,8 @@ interface
5555 function GetValue (relSize: double; assumeRelValBelow: Double): double;
5656 function GetValueXY (const relSize: TRectD; assumeRelValBelow: Double): double;
5757 function IsValid : Boolean;
58+ function IsRelativeValue (assumeRelValBelow: double): Boolean;
59+ { $IFDEF INLINE} inline; { $ENDIF}
5860 function HasFontUnits : Boolean;
5961 function HasAngleUnits : Boolean;
6062 end ;
@@ -88,10 +90,10 @@ interface
8890 UTF8Char = Char;
8991 PUTF8Char = PChar;
9092 { $ELSE}
91- { $IF COMPILERVERSION < 31}
92- UTF8Char = AnsiChar;
93- PUTF8Char = PAnsiChar;
94- { $IFEND}
93+ { $IF COMPILERVERSION < 31}
94+ UTF8Char = AnsiChar;
95+ PUTF8Char = PAnsiChar;
96+ { $IFEND}
9597 { $ENDIF}
9698
9799 TAnsi = { $IFDEF RECORD_METHODS} record { $ELSE} object { $ENDIF}
@@ -1228,12 +1230,15 @@ function MakeDashArray(const dblArray: TArrayOfDouble; scale: double): TArrayOfI
12281230 Result[i] := Ceil(dblArray[i] * scale);
12291231 dist := Result[i] + dist;
12301232 end ;
1233+
12311234 if dist = 0 then
1232- Result := nil
1233- else if len = 1 then
12341235 begin
1235- SetLength(Result, 2 );
1236- Result[1 ] := Result[0 ];
1236+ Result := nil ;
1237+ end
1238+ else if Odd(len) then
1239+ begin
1240+ SetLength(Result, len *2 );
1241+ Move(Result[0 ], Result[len], len * SizeOf(integer));
12371242 end ;
12381243end ;
12391244// ------------------------------------------------------------------------------
@@ -2337,7 +2342,7 @@ function TValue.GetValue(relSize: double; assumeRelValBelow: Double): double;
23372342begin
23382343 if not IsValid or (rawVal = 0 ) then
23392344 Result := 0
2340- else if (unitType = utNumber) and (Abs(rawVal) <= assumeRelValBelow) then
2345+ else if IsRelativeValue( assumeRelValBelow) then
23412346 Result := rawVal * relSize
23422347 else
23432348 Result := ConvertValue(self, relSize);
@@ -2351,6 +2356,12 @@ function TValue.GetValueXY(const relSize: TRectD; assumeRelValBelow: Double): do
23512356end ;
23522357// ------------------------------------------------------------------------------
23532358
2359+ function TValue.IsRelativeValue (assumeRelValBelow: double): Boolean;
2360+ begin
2361+ Result := (unitType = utNumber) and (Abs(rawVal) <= assumeRelValBelow);
2362+ end ;
2363+ // ------------------------------------------------------------------------------
2364+
23542365function TValue.IsValid : Boolean;
23552366begin
23562367 Result := (unitType <> utUnknown) and Img32.Vector.IsValid(rawVal);
0 commit comments