summaryrefslogtreecommitdiff
path: root/prototypes/miglayout/gui_mig_boundsize.pas
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.