unit DGCAncestorPrimitives;
// Classe Ancêtre de toutes les primitives

{$mode delphiunicode}

interface

uses
  DGCTypes,
  DGCUtilityFunctions,
  Classes, SysUtils, Graphics, math;
type

{ TDGCPrimitive }

 TDGCPrimitive = class
  private // visible dans cette classe et non ses descendants
    FIdxLayer: integer;
    FIdxStyleSheet: integer;
    FName         : string;
  protected // visible dans cette classe et ses descendants
    FBoundingBox  : TDGCBoundingBox;
    FAlwaysDisplayed: boolean;
    FModifiable       : boolean;
    procedure   SetBoundingBox(); virtual; abstract; // à définir par les descendants
  public
    constructor Create(const QIdxLayer: integer; const QIdxStyleSheet: integer; const QName: string; const QModifiable: boolean);
    property    IdxLayer: integer read FIdxLayer write FIdxLayer;
    property    IdxStyleSheet: integer read FIdxStyleSheet write FIdxStyleSheet;

    property    Name: string read FName write FName;
    property    Modifiable: boolean read FModifiable write FModifiable;
    property    AlwaysDisplayed: boolean read FAlwaysDisplayed write FAlwaysDisplayed;
    property    BoundingBox : TDGCBoundingBox read FBoundingBox;
    procedure   ToggleVisible();
end;

implementation
uses DGCDummyUnit;

{ TDGCPrimitive }
constructor TDGCPrimitive.Create(const QIdxLayer: integer; const QIdxStyleSheet: integer; const QName: string; const QModifiable: boolean);
begin
  inherited Create;
  //AfficherMsgErrClass(self, 'Create(): IdxLayer: %d, IdxStyleSheet: %d, Name: %s', [QIdxLayer, QIdxStyleSheet, QName]);
  FIdxLayer      := QIdxLayer;
  FIdxStyleSheet := QIdxStyleSheet;
  FName          := QName;
  FAlwaysDisplayed := True;
  FModifiable      := QModifiable;
end;

procedure TDGCPrimitive.ToggleVisible();
begin
  FAlwaysDisplayed := not FAlwaysDisplayed;
end;


end.

