blob: a77b6b80cc3ccf615ebd45bd179dcb1ec2a6e849 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
unit gui_mig_boundsize;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, gui_mig_unitvalue;
type
{ TBoundSize }
TBoundSize = class(TObject)
private
FMin: TUnitValue;
FPref: TUnitValue;
FMax: TUnitValue;
FGapPush: Boolean;
public
constructor Create(AMinMaxPref: TUnitValue; ACreateString: string); // overloaded;
constructor Create(AMin: TUnitValue; APreferred: TUnitValue; AMax: TUnitValue; ACreateString: string); // overloaded;
constructor Create(AMin: TUnitValue; APreferred: TUnitValue; AMax: TUnitValue; AGapPush: Boolean; ACreateString: string); // overloaded;
function GetSize(const ASizeType: integer): TUnitValue;
function IsUnset: Boolean;
function GetConstraintString: string;
property Min: TUnitValue read FMin;
property Preferred: TUnitValue read FPref;
property Max: TUnitValue read FMax;
property GapPush: Boolean read FGapPush;
end;
implementation
uses
gui_mig_exceptions;
{ TBoundSize }
function TBoundSize.IsUnset: Boolean;
begin
Result := (FMin = nil) and (FPref = nil) and (FMax = nil);
end;
function TBoundSize.GetConstraintString: string;
begin
Result := 'null';
{$Note TBoundSize.GetConstraintString still needs to be implemented. }
end;
constructor TBoundSize.Create(AMinMaxPref: TUnitValue; ACreateString: string);
begin
Create(AMinMaxPref, AMinMaxPref, AMinMaxPref, ACreateString);
end;
constructor TBoundSize.Create(AMin: TUnitValue; APreferred: TUnitValue;
AMax: TUnitValue; ACreateString: string);
begin
Create(AMin, APreferred, AMax, False, ACreateString);
end;
constructor TBoundSize.Create(AMin: TUnitValue; APreferred: TUnitValue;
AMax: TUnitValue; AGapPush: Boolean; ACreateString: string);
begin
inherited Create;
FMin := AMin;
FPref := APreferred;
FMax := AMax;
FGapPush := AGapPush;
{$Note TBoundSize.Create is incompleted, we still need to handle ACreateString. }
end;
function TBoundSize.GetSize(const ASizeType: integer): TUnitValue;
begin
case ASizetype of
0{MIN}:
result := FMin;
1{PREF}:
result := FPref;
2{MAX}:
result := FMax;
else
raise EIllegalArgument.CreateFmt('Unknown size: %d', [ASizeType]);
end;
end;
end.
|