Difference between revisions of "Layers.library"

From Freepascal Amiga wiki
Jump to navigation Jump to search
(Initial setup/cradle of page)
(→‎the unit: Added unit source)
Line 28: Line 28:
  
 
<source lang="pascal">
 
<source lang="pascal">
 +
Unit layers;
  
 +
{$MODE OBJFPC}{$H+}{$PACKRECORDS C}
 +
 +
Interface
 +
 +
Uses
 +
  CTypes, exec, agraphics, utility;
 +
 +
 +
Const
 +
  LAYERSNAME : PChar = 'layers.library';
 +
Var
 +
  LayersBase : pLibrary;
 +
 +
 +
 +
  Procedure InitLayers(li: pLayer_Info);
 +
  Function  CreateUpfrontLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap): pLayer;
 +
  Function  CreateBehindLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap): pLayer;
 +
  Function  UpfrontLayer(dummy: LongInt; l: pLayer): LongInt;
 +
  Function  BehindLayer(dummy: LongInt; l: pLayer): LongInt;
 +
  Function  MoveLayer(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt): LongInt;
 +
  Function  SizeLayer(dummy: LongInt; l: pLayer; dw: LongInt; dh: LongInt): LongInt;
 +
  Procedure ScrollLayer(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt);
 +
  Function  BeginUpdate(l: pLayer): LongInt;
 +
  Procedure EndUpdate(l: pLayer; flag: Word);
 +
  Function  DeleteLayer(dummy: LongInt; l: pLayer): LongInt;
 +
  Procedure LockLayer(dummy: LongInt; layer: pLayer);
 +
  Procedure UnlockLayer(layer: pLayer);
 +
  Procedure LockLayers(li: pLayer_Info);
 +
  Procedure UnlockLayers(li: pLayer_Info);
 +
  Procedure LockLayerInfo(li: pLayer_Info);
 +
  Procedure SwapBitsRastPortClipRect(rp: pRastPort; cr: pClipRect);
 +
  Function  WhichLayer(li: pLayer_Info; x: LongInt; y: LongInt): pLayer;
 +
  Procedure UnlockLayerInfo(li: pLayer_Info);
 +
  Function  NewLayerInfo(): pLayer_Info;
 +
  Procedure DisposeLayerInfo(li: pLayer_Info);
 +
  Function  FattenLayerInfo(li: pLayer_Info): LongInt;
 +
  Procedure ThinLayerInfo(li: pLayer_Info);
 +
  Function  MoveLayerInFrontOf(layer_to_move: pLayer; other_layer: pLayer): LongInt;
 +
  Function  InstallClipRegion(l: pLayer; region: pRegion): pRegion;
 +
  Function  MoveSizeLayer(l: pLayer; dx: LongInt; dy: LongInt; dw: LongInt; dh: LongInt): LongInt;
 +
  Function  CreateUpfrontHookLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap): pLayer;
 +
  Function  CreateBehindHookLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap): pLayer;
 +
  Function  InstallLayerHook(layer: pLayer; hook: pHook): pHook;
 +
  Function  InstallLayerInfoHook(li: pLayer_Info; hook: pHook): pHook;
 +
  Procedure SortLayerCR(layer: pLayer; dx: LongInt; dy: LongInt);
 +
  Procedure DoHookClipRects(hook: pHook; rport: pRastPort; rect: pRectangle);
 +
  // aros extension
 +
  Function  CreateLayerTagList(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; tagList: pTagItem): pLayer;
 +
  Function  GetFirstFamilyMember(l: pLayer): pLayer;
 +
  Function  ChangeLayerVisibility(l: pLayer; visible: cint): LongInt;
 +
  Function  IsLayerVisible(l: pLayer): LongInt;
 +
  Function  ChangeLayerShape(l: pLayer; newshape: pRegion; callback: pHook): pRegion;
 +
  Function  ScaleLayer(l: pLayer; taglist: pTagItem): LongWord;
 +
  Function  IsFrontmostLayer(l: pLayer; check_invisible: LongBool): LongBool;
 +
  Function  IsLayerHiddenBySibling(l: pLayer; check_invisible: LongBool): LongBool;
 +
  Procedure CollectPixelsLayer(l: pLayer; r: pRegion; callback: pHook);
 +
  // aros extension - varargs
 +
  Function  CreateLayerTags(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; const tags: Array Of Const): pLayer; inline;
 +
  Function  ScaleLayerTags(l: pLayer; const tags: Array of Const): LongWord; inline;
 +
 +
 +
 +
Implementation
 +
 +
Uses
 +
  mytagsarray;
 +
 +
 +
Procedure InitLayers(li: pLayer_Info);
 +
Type
 +
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 5));
 +
  Call(li, LayersBase);
 +
End;
 +
 +
 +
Function  CreateUpfrontLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap): pLayer;
 +
Type
 +
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap; LibBase: Pointer): pLayer; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 6));
 +
  CreateUpfrontLayer := Call(li, bm, x0, y0, x1, y1, flags, bm2, LayersBase);
 +
End;
 +
 +
 +
Function  CreateBehindLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap): pLayer;
 +
Type
 +
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap; LibBase: Pointer): pLayer; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 7));
 +
  CreateBehindLayer := Call(li, bm, x0, y0, x1, y1, flags, bm2, LayersBase);
 +
End;
 +
 +
 +
Function  UpfrontLayer(dummy: LongInt; l: pLayer): LongInt;
 +
Type
 +
  TLocalCall = Function(dummy: LongInt; l: pLayer; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 8));
 +
  UpfrontLayer := Call(dummy, l, LayersBase);
 +
End;
 +
 +
 +
Function  BehindLayer(dummy: LongInt; l: pLayer): LongInt;
 +
Type
 +
  TLocalCall = Function(dummy: LongInt; l: pLayer; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 9));
 +
  BehindLayer := Call(dummy, l, LayersBase);
 +
End;
 +
 +
 +
Function  MoveLayer(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt): LongInt;
 +
Type
 +
  TLocalCall = Function(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 10));
 +
  MoveLayer := Call(dummy, l, dx, dy, LayersBase);
 +
End;
 +
 +
 +
Function  SizeLayer(dummy: LongInt; l: pLayer; dw: LongInt; dh: LongInt): LongInt;
 +
Type
 +
  TLocalCall = Function(dummy: LongInt; l: pLayer; dw: LongInt; dh: LongInt; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 11));
 +
  SizeLayer := Call(dummy, l, dw, dh, LayersBase);
 +
End;
 +
 +
 +
Procedure ScrollLayer(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt);
 +
Type
 +
  TLocalCall = Procedure(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 12));
 +
  Call(dummy, l, dx, dy, LayersBase);
 +
End;
 +
 +
 +
Function  BeginUpdate(l: pLayer): LongInt;
 +
Type
 +
  TLocalCall = Function(l: pLayer; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 13));
 +
  BeginUpdate := Call(l, LayersBase);
 +
End;
 +
 +
 +
Procedure EndUpdate(l: pLayer; flag: Word);
 +
Type
 +
  TLocalCall = Procedure(l: pLayer; flag: Word; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 14));
 +
  Call(l, flag, LayersBase);
 +
End;
 +
 +
 +
Function  DeleteLayer(dummy: LongInt; l: pLayer): LongInt;
 +
Type
 +
  TLocalCall = Function(dummy: LongInt; l: pLayer; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 15));
 +
  DeleteLayer := Call(dummy, l, LayersBase);
 +
End;
 +
 +
 +
Procedure LockLayer(dummy: LongInt; layer: pLayer);
 +
Type
 +
  TLocalCall = Procedure(dummy: LongInt; layer: pLayer; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 16));
 +
  Call(dummy, layer, LayersBase);
 +
End;
 +
 +
 +
Procedure UnlockLayer(layer: pLayer);
 +
Type
 +
  TLocalCall = Procedure(layer: pLayer; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 17));
 +
  Call(layer, LayersBase);
 +
End;
 +
 +
 +
Procedure LockLayers(li: pLayer_Info);
 +
Type
 +
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 18));
 +
  Call(li, LayersBase);
 +
End;
 +
 +
 +
Procedure UnlockLayers(li: pLayer_Info);
 +
Type
 +
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 19));
 +
  Call(li, LayersBase);
 +
End;
 +
 +
 +
Procedure LockLayerInfo(li: pLayer_Info);
 +
Type
 +
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 20));
 +
  Call(li, LayersBase);
 +
End;
 +
 +
 +
Procedure SwapBitsRastPortClipRect(rp: pRastPort; cr: pClipRect);
 +
Type
 +
  TLocalCall = Procedure(rp: pRastPort; cr: pClipRect; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 21));
 +
  Call(rp, cr, LayersBase);
 +
End;
 +
 +
 +
Function  WhichLayer(li: pLayer_Info; x: LongInt; y: LongInt): pLayer;
 +
Type
 +
  TLocalCall = Function(li: pLayer_Info; x: LongInt; y: LongInt; LibBase: Pointer): pLayer; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 22));
 +
  WhichLayer := Call(li, x, y, LayersBase);
 +
End;
 +
 +
 +
Procedure UnlockLayerInfo(li: pLayer_Info);
 +
Type
 +
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 23));
 +
  Call(li, LayersBase);
 +
End;
 +
 +
 +
Function  NewLayerInfo(): pLayer_Info;
 +
Type
 +
  TLocalCall = Function(LibBase: Pointer): pLayer_Info; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 24));
 +
  NewLayerInfo := Call(LayersBase);
 +
End;
 +
 +
 +
Procedure DisposeLayerInfo(li: pLayer_Info);
 +
Type
 +
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 25));
 +
  Call(li, LayersBase);
 +
End;
 +
 +
 +
Function  FattenLayerInfo(li: pLayer_Info): LongInt;
 +
Type
 +
  TLocalCall = Function(li: pLayer_Info; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 26));
 +
  FattenLayerInfo := Call(li, LayersBase);
 +
End;
 +
 +
 +
Procedure ThinLayerInfo(li: pLayer_Info);
 +
Type
 +
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 27));
 +
  Call(li, LayersBase);
 +
End;
 +
 +
 +
Function  MoveLayerInFrontOf(layer_to_move: pLayer; other_layer: pLayer): LongInt;
 +
Type
 +
  TLocalCall = Function(layer_to_move: pLayer; other_layer: pLayer; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 28));
 +
  MoveLayerInFrontOf := Call(layer_to_move, other_layer, LayersBase);
 +
End;
 +
 +
 +
Function  InstallClipRegion(l: pLayer; region: pRegion): pRegion;
 +
Type
 +
  TLocalCall = Function(l: pLayer; region: pRegion; LibBase: Pointer): pRegion; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 29));
 +
  InstallClipRegion := Call(l, region, LayersBase);
 +
End;
 +
 +
 +
Function  MoveSizeLayer(l: pLayer; dx: LongInt; dy: LongInt; dw: LongInt; dh: LongInt): LongInt;
 +
Type
 +
  TLocalCall = Function(l: pLayer; dx: LongInt; dy: LongInt; dw: LongInt; dh: LongInt; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 30));
 +
  MoveSizeLayer := Call(l, dx, dy, dw, dh, LayersBase);
 +
End;
 +
 +
 +
Function  CreateUpfrontHookLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap): pLayer;
 +
Type
 +
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap; LibBase: Pointer): pLayer; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 31));
 +
  CreateUpfrontHookLayer := Call(li, bm, x0, y0, x1, y1, flags, hook, bm2, LayersBase);
 +
End;
 +
 +
 +
Function  CreateBehindHookLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap): pLayer;
 +
Type
 +
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap; LibBase: Pointer): pLayer; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 32));
 +
  CreateBehindHookLayer := Call(li, bm, x0, y0, x1, y1, flags, hook, bm2, LayersBase);
 +
End;
 +
 +
 +
Function  InstallLayerHook(layer: pLayer; hook: pHook): pHook;
 +
Type
 +
  TLocalCall = Function(layer: pLayer; hook: pHook; LibBase: Pointer): pHook; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 33));
 +
  InstallLayerHook := Call(layer, hook, LayersBase);
 +
End;
 +
 +
 +
Function  InstallLayerInfoHook(li: pLayer_Info; hook: pHook): pHook;
 +
Type
 +
  TLocalCall = Function(li: pLayer_Info; hook: pHook; LibBase: Pointer): pHook; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 34));
 +
  InstallLayerInfoHook := Call(li, hook, LayersBase);
 +
End;
 +
 +
 +
Procedure SortLayerCR(layer: pLayer; dx: LongInt; dy: LongInt);
 +
Type
 +
  TLocalCall = Procedure(layer: pLayer; dx: LongInt; dy: LongInt; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 35));
 +
  Call(layer, dx, dy, LayersBase);
 +
End;
 +
 +
 +
Procedure DoHookClipRects(hook: pHook; rport: pRastPort; rect: pRectangle);
 +
Type
 +
  TLocalCall = Procedure(hook: pHook; rport: pRastPort; rect: pRectangle; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 36));
 +
  Call(hook, rport, rect, LayersBase);
 +
End;
 +
 +
 +
Function  CreateLayerTagList(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; tagList: pTagItem): pLayer;
 +
Type
 +
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; tagList: pTagItem; LibBase: Pointer): pLayer; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 37));
 +
  CreateLayerTagList := Call(li, bm, x0, y0, x1, y1, flags, tagList, LayersBase);
 +
End;
 +
 +
 +
Function  GetFirstFamilyMember(l: pLayer): pLayer;
 +
Type
 +
  TLocalCall = Function(l: pLayer; LibBase: Pointer): pLayer; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 38));
 +
  GetFirstFamilyMember := Call(l, LayersBase);
 +
End;
 +
 +
 +
Function  ChangeLayerVisibility(l: pLayer; visible: cint): LongInt;
 +
Type
 +
  TLocalCall = Function(l: pLayer; visible: cint; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 39));
 +
  ChangeLayerVisibility := Call(l, visible, LayersBase);
 +
End;
 +
 +
 +
Function  IsLayerVisible(l: pLayer): LongInt;
 +
Type
 +
  TLocalCall = Function(l: pLayer; LibBase: Pointer): LongInt; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 40));
 +
  IsLayerVisible := Call(l, LayersBase);
 +
End;
 +
 +
 +
Function  ChangeLayerShape(l: pLayer; newshape: pRegion; callback: pHook): pRegion;
 +
Type
 +
  TLocalCall = Function(l: pLayer; newshape: pRegion; callback: pHook; LibBase: Pointer): pRegion; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 41));
 +
  ChangeLayerShape := Call(l, newshape, callback, LayersBase);
 +
End;
 +
 +
 +
Function  ScaleLayer(l: pLayer; taglist: pTagItem): LongWord;
 +
Type
 +
  TLocalCall = Function(l: pLayer; taglist: pTagItem; LibBase: Pointer): LongWord; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 42));
 +
  ScaleLayer := Call(l, taglist, LayersBase);
 +
End;
 +
 +
 +
Function  IsFrontmostLayer(l: pLayer; check_invisible: LongBool): LongBool;
 +
Type
 +
  TLocalCall = Function(l: pLayer; check_invisible: LongBool; LibBase: Pointer): LongBool; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 43));
 +
  IsFrontmostLayer := Call(l, check_invisible, LayersBase);
 +
End;
 +
 +
 +
Function  IsLayerHiddenBySibling(l: pLayer; check_invisible: LongBool): LongBool;
 +
Type
 +
  TLocalCall = Function(l: pLayer; check_invisible: LongBool; LibBase: Pointer): LongBool; cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 44));
 +
  IsLayerHiddenBySibling := Call(l, check_invisible, LayersBase);
 +
End;
 +
 +
 +
Procedure CollectPixelsLayer(l: pLayer; r: pRegion; callback: pHook);
 +
Type
 +
  TLocalCall = Procedure(l: pLayer; r: pRegion; callback: pHook; LibBase: Pointer); cdecl;
 +
Var
 +
  Call : TLocalCall;
 +
Begin
 +
  Call := TLocalCall(GetLibAdress(LayersBase, 45));
 +
  Call(l, r, callback, LayersBase);
 +
End;
 +
 +
 +
 +
 +
 +
Function  CreateLayerTags(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; const tags: Array Of Const): pLayer;
 +
begin
 +
  CreateLayerTags := CreateLayerTagList(li, bm, x0, y0, x1, y1, flags, readintags(tags));
 +
end;
 +
 +
Function  ScaleLayerTags(l: pLayer; const tags: Array of Const): LongWord;
 +
begin
 +
  ScaleLayerTags := ScaleLayer(l, readintags(tags));
 +
end;
 +
 +
 +
 +
 +
Initialization
 +
  LayersBase := OpenLibrary(LayersName, 0);
 +
 +
 +
Finalization
 +
  CloseLibrary(LayersBase);
 +
 +
End.
 
</source>
 
</source>
  

Revision as of 20:20, 19 October 2013

Layers.library

[insert background information here]


examples

Example: Demo

Original c-source [1]

Example: test

Original c-source [2]

Example: Example1

Original c-source [3]


the unit

Unit layers;

{$MODE OBJFPC}{$H+}{$PACKRECORDS C}

Interface

Uses
  CTypes, exec, agraphics, utility;


Const
  LAYERSNAME : PChar = 'layers.library';
Var
  LayersBase : pLibrary;



  Procedure InitLayers(li: pLayer_Info);
  Function  CreateUpfrontLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap): pLayer;
  Function  CreateBehindLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap): pLayer;
  Function  UpfrontLayer(dummy: LongInt; l: pLayer): LongInt;
  Function  BehindLayer(dummy: LongInt; l: pLayer): LongInt;
  Function  MoveLayer(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt): LongInt;
  Function  SizeLayer(dummy: LongInt; l: pLayer; dw: LongInt; dh: LongInt): LongInt;
  Procedure ScrollLayer(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt);
  Function  BeginUpdate(l: pLayer): LongInt;
  Procedure EndUpdate(l: pLayer; flag: Word);
  Function  DeleteLayer(dummy: LongInt; l: pLayer): LongInt;
  Procedure LockLayer(dummy: LongInt; layer: pLayer);
  Procedure UnlockLayer(layer: pLayer);
  Procedure LockLayers(li: pLayer_Info);
  Procedure UnlockLayers(li: pLayer_Info);
  Procedure LockLayerInfo(li: pLayer_Info);
  Procedure SwapBitsRastPortClipRect(rp: pRastPort; cr: pClipRect);
  Function  WhichLayer(li: pLayer_Info; x: LongInt; y: LongInt): pLayer;
  Procedure UnlockLayerInfo(li: pLayer_Info);
  Function  NewLayerInfo(): pLayer_Info;
  Procedure DisposeLayerInfo(li: pLayer_Info);
  Function  FattenLayerInfo(li: pLayer_Info): LongInt;
  Procedure ThinLayerInfo(li: pLayer_Info);
  Function  MoveLayerInFrontOf(layer_to_move: pLayer; other_layer: pLayer): LongInt;
  Function  InstallClipRegion(l: pLayer; region: pRegion): pRegion;
  Function  MoveSizeLayer(l: pLayer; dx: LongInt; dy: LongInt; dw: LongInt; dh: LongInt): LongInt;
  Function  CreateUpfrontHookLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap): pLayer;
  Function  CreateBehindHookLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap): pLayer;
  Function  InstallLayerHook(layer: pLayer; hook: pHook): pHook;
  Function  InstallLayerInfoHook(li: pLayer_Info; hook: pHook): pHook;
  Procedure SortLayerCR(layer: pLayer; dx: LongInt; dy: LongInt);
  Procedure DoHookClipRects(hook: pHook; rport: pRastPort; rect: pRectangle);
  // aros extension
  Function  CreateLayerTagList(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; tagList: pTagItem): pLayer;
  Function  GetFirstFamilyMember(l: pLayer): pLayer;
  Function  ChangeLayerVisibility(l: pLayer; visible: cint): LongInt;
  Function  IsLayerVisible(l: pLayer): LongInt;
  Function  ChangeLayerShape(l: pLayer; newshape: pRegion; callback: pHook): pRegion;
  Function  ScaleLayer(l: pLayer; taglist: pTagItem): LongWord;
  Function  IsFrontmostLayer(l: pLayer; check_invisible: LongBool): LongBool;
  Function  IsLayerHiddenBySibling(l: pLayer; check_invisible: LongBool): LongBool;
  Procedure CollectPixelsLayer(l: pLayer; r: pRegion; callback: pHook);
  // aros extension - varargs
  Function  CreateLayerTags(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; const tags: Array Of Const): pLayer; inline;
  Function  ScaleLayerTags(l: pLayer; const tags: Array of Const): LongWord; inline;



Implementation

Uses
  mytagsarray;


Procedure InitLayers(li: pLayer_Info);
Type
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 5));
  Call(li, LayersBase);
End;


Function  CreateUpfrontLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap): pLayer;
Type
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap; LibBase: Pointer): pLayer; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 6));
  CreateUpfrontLayer := Call(li, bm, x0, y0, x1, y1, flags, bm2, LayersBase);
End;


Function  CreateBehindLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap): pLayer;
Type
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; bm2: pBitMap; LibBase: Pointer): pLayer; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 7));
  CreateBehindLayer := Call(li, bm, x0, y0, x1, y1, flags, bm2, LayersBase);
End;


Function  UpfrontLayer(dummy: LongInt; l: pLayer): LongInt;
Type
  TLocalCall = Function(dummy: LongInt; l: pLayer; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 8));
  UpfrontLayer := Call(dummy, l, LayersBase);
End;


Function  BehindLayer(dummy: LongInt; l: pLayer): LongInt;
Type
  TLocalCall = Function(dummy: LongInt; l: pLayer; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 9));
  BehindLayer := Call(dummy, l, LayersBase);
End;


Function  MoveLayer(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt): LongInt;
Type
  TLocalCall = Function(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 10));
  MoveLayer := Call(dummy, l, dx, dy, LayersBase);
End;


Function  SizeLayer(dummy: LongInt; l: pLayer; dw: LongInt; dh: LongInt): LongInt;
Type
  TLocalCall = Function(dummy: LongInt; l: pLayer; dw: LongInt; dh: LongInt; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 11));
  SizeLayer := Call(dummy, l, dw, dh, LayersBase);
End;


Procedure ScrollLayer(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt);
Type
  TLocalCall = Procedure(dummy: LongInt; l: pLayer; dx: LongInt; dy: LongInt; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 12));
  Call(dummy, l, dx, dy, LayersBase);
End;


Function  BeginUpdate(l: pLayer): LongInt;
Type
  TLocalCall = Function(l: pLayer; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 13));
  BeginUpdate := Call(l, LayersBase);
End;


Procedure EndUpdate(l: pLayer; flag: Word);
Type
  TLocalCall = Procedure(l: pLayer; flag: Word; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 14));
  Call(l, flag, LayersBase);
End;


Function  DeleteLayer(dummy: LongInt; l: pLayer): LongInt;
Type
  TLocalCall = Function(dummy: LongInt; l: pLayer; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 15));
  DeleteLayer := Call(dummy, l, LayersBase);
End;


Procedure LockLayer(dummy: LongInt; layer: pLayer);
Type
  TLocalCall = Procedure(dummy: LongInt; layer: pLayer; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 16));
  Call(dummy, layer, LayersBase);
End;


Procedure UnlockLayer(layer: pLayer);
Type
  TLocalCall = Procedure(layer: pLayer; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 17));
  Call(layer, LayersBase);
End;


Procedure LockLayers(li: pLayer_Info);
Type
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 18));
  Call(li, LayersBase);
End;


Procedure UnlockLayers(li: pLayer_Info);
Type
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 19));
  Call(li, LayersBase);
End;


Procedure LockLayerInfo(li: pLayer_Info);
Type
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 20));
  Call(li, LayersBase);
End;


Procedure SwapBitsRastPortClipRect(rp: pRastPort; cr: pClipRect);
Type
  TLocalCall = Procedure(rp: pRastPort; cr: pClipRect; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 21));
  Call(rp, cr, LayersBase);
End;


Function  WhichLayer(li: pLayer_Info; x: LongInt; y: LongInt): pLayer;
Type
  TLocalCall = Function(li: pLayer_Info; x: LongInt; y: LongInt; LibBase: Pointer): pLayer; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 22));
  WhichLayer := Call(li, x, y, LayersBase);
End;


Procedure UnlockLayerInfo(li: pLayer_Info);
Type
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 23));
  Call(li, LayersBase);
End;


Function  NewLayerInfo(): pLayer_Info;
Type
  TLocalCall = Function(LibBase: Pointer): pLayer_Info; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 24));
  NewLayerInfo := Call(LayersBase);
End;


Procedure DisposeLayerInfo(li: pLayer_Info);
Type
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 25));
  Call(li, LayersBase);
End;


Function  FattenLayerInfo(li: pLayer_Info): LongInt;
Type
  TLocalCall = Function(li: pLayer_Info; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 26));
  FattenLayerInfo := Call(li, LayersBase);
End;


Procedure ThinLayerInfo(li: pLayer_Info);
Type
  TLocalCall = Procedure(li: pLayer_Info; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 27));
  Call(li, LayersBase);
End;


Function  MoveLayerInFrontOf(layer_to_move: pLayer; other_layer: pLayer): LongInt;
Type
  TLocalCall = Function(layer_to_move: pLayer; other_layer: pLayer; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 28));
  MoveLayerInFrontOf := Call(layer_to_move, other_layer, LayersBase);
End;


Function  InstallClipRegion(l: pLayer; region: pRegion): pRegion;
Type
  TLocalCall = Function(l: pLayer; region: pRegion; LibBase: Pointer): pRegion; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 29));
  InstallClipRegion := Call(l, region, LayersBase);
End;


Function  MoveSizeLayer(l: pLayer; dx: LongInt; dy: LongInt; dw: LongInt; dh: LongInt): LongInt;
Type
  TLocalCall = Function(l: pLayer; dx: LongInt; dy: LongInt; dw: LongInt; dh: LongInt; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 30));
  MoveSizeLayer := Call(l, dx, dy, dw, dh, LayersBase);
End;


Function  CreateUpfrontHookLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap): pLayer;
Type
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap; LibBase: Pointer): pLayer; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 31));
  CreateUpfrontHookLayer := Call(li, bm, x0, y0, x1, y1, flags, hook, bm2, LayersBase);
End;


Function  CreateBehindHookLayer(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap): pLayer;
Type
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; hook: pHook; bm2: pBitMap; LibBase: Pointer): pLayer; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 32));
  CreateBehindHookLayer := Call(li, bm, x0, y0, x1, y1, flags, hook, bm2, LayersBase);
End;


Function  InstallLayerHook(layer: pLayer; hook: pHook): pHook;
Type
  TLocalCall = Function(layer: pLayer; hook: pHook; LibBase: Pointer): pHook; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 33));
  InstallLayerHook := Call(layer, hook, LayersBase);
End;


Function  InstallLayerInfoHook(li: pLayer_Info; hook: pHook): pHook;
Type
  TLocalCall = Function(li: pLayer_Info; hook: pHook; LibBase: Pointer): pHook; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 34));
  InstallLayerInfoHook := Call(li, hook, LayersBase);
End;


Procedure SortLayerCR(layer: pLayer; dx: LongInt; dy: LongInt);
Type
  TLocalCall = Procedure(layer: pLayer; dx: LongInt; dy: LongInt; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 35));
  Call(layer, dx, dy, LayersBase);
End;


Procedure DoHookClipRects(hook: pHook; rport: pRastPort; rect: pRectangle);
Type
  TLocalCall = Procedure(hook: pHook; rport: pRastPort; rect: pRectangle; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 36));
  Call(hook, rport, rect, LayersBase);
End;


Function  CreateLayerTagList(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; tagList: pTagItem): pLayer;
Type
  TLocalCall = Function(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; tagList: pTagItem; LibBase: Pointer): pLayer; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 37));
  CreateLayerTagList := Call(li, bm, x0, y0, x1, y1, flags, tagList, LayersBase);
End;


Function  GetFirstFamilyMember(l: pLayer): pLayer;
Type
  TLocalCall = Function(l: pLayer; LibBase: Pointer): pLayer; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 38));
  GetFirstFamilyMember := Call(l, LayersBase);
End;


Function  ChangeLayerVisibility(l: pLayer; visible: cint): LongInt;
Type
  TLocalCall = Function(l: pLayer; visible: cint; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 39));
  ChangeLayerVisibility := Call(l, visible, LayersBase);
End;


Function  IsLayerVisible(l: pLayer): LongInt;
Type
  TLocalCall = Function(l: pLayer; LibBase: Pointer): LongInt; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 40));
  IsLayerVisible := Call(l, LayersBase);
End;


Function  ChangeLayerShape(l: pLayer; newshape: pRegion; callback: pHook): pRegion;
Type
  TLocalCall = Function(l: pLayer; newshape: pRegion; callback: pHook; LibBase: Pointer): pRegion; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 41));
  ChangeLayerShape := Call(l, newshape, callback, LayersBase);
End;


Function  ScaleLayer(l: pLayer; taglist: pTagItem): LongWord;
Type
  TLocalCall = Function(l: pLayer; taglist: pTagItem; LibBase: Pointer): LongWord; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 42));
  ScaleLayer := Call(l, taglist, LayersBase);
End;


Function  IsFrontmostLayer(l: pLayer; check_invisible: LongBool): LongBool;
Type
  TLocalCall = Function(l: pLayer; check_invisible: LongBool; LibBase: Pointer): LongBool; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 43));
  IsFrontmostLayer := Call(l, check_invisible, LayersBase);
End;


Function  IsLayerHiddenBySibling(l: pLayer; check_invisible: LongBool): LongBool;
Type
  TLocalCall = Function(l: pLayer; check_invisible: LongBool; LibBase: Pointer): LongBool; cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 44));
  IsLayerHiddenBySibling := Call(l, check_invisible, LayersBase);
End;


Procedure CollectPixelsLayer(l: pLayer; r: pRegion; callback: pHook);
Type
  TLocalCall = Procedure(l: pLayer; r: pRegion; callback: pHook; LibBase: Pointer); cdecl;
Var
  Call : TLocalCall;
Begin
  Call := TLocalCall(GetLibAdress(LayersBase, 45));
  Call(l, r, callback, LayersBase);
End;





Function  CreateLayerTags(li: pLayer_Info; bm: pBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; flags: LongInt; const tags: Array Of Const): pLayer;
begin
  CreateLayerTags := CreateLayerTagList(li, bm, x0, y0, x1, y1, flags, readintags(tags));
end;

Function  ScaleLayerTags(l: pLayer; const tags: Array of Const): LongWord;
begin
  ScaleLayerTags := ScaleLayer(l, readintags(tags));
end;




Initialization
  LayersBase := OpenLibrary(LayersName, 0);


Finalization
  CloseLibrary(LayersBase);

End.

unit documentation

A bit rough around the edges. No var /var was done, and only some basic links to other units (types etc.).