Changeset 7


Ignore:
Timestamp:
Mar 12, 2011, 7:27:23 PM (13 years ago)
Author:
george
Message:
  • Modified: Used custom resize function with use of TLazIntfImage.
  • Modified: Internal drawing uses class TBitmapTColor specialized from TGBitmap.
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/UCore.pas

    r6 r7  
    66
    77uses
    8   Dialogs, Classes, SysUtils, Contnrs, Graphics, SpecializedMatrix, SpecializedList;
     8  Dialogs, Classes, SysUtils, Contnrs, Graphics, SpecializedMatrix, SpecializedList,
     9  IntfGraphics, FPImage, LCLType, SpecializedBitmap;
    910
    1011const
     
    9495    FBitmap: TBitmap;
    9596    FRedrawPending: Boolean;
    96     FBitmapLower: TBitmap;
     97    FBitmapLower: TBitmapTColor;
    9798    function GetPlayerCount: Integer;
    9899    procedure SetBitmap(const AValue: TBitmap);
     
    164165    for X := 0 to Surface.Count.X - 1 do begin
    165166      if Random < 0.5 then
    166         Surface.ItemsXY[Y, X] := Byte(smDirt1) else
    167         Surface.ItemsXY[Y, X] := Byte(smDirt2);
     167        Surface.ItemsXY[X, Y] := Byte(smDirt1) else
     168        Surface.ItemsXY[X, Y] := Byte(smDirt2);
    168169    end;
    169170
     
    172173  for Y := 0 to Surface.Count.Y - 1 do begin
    173174    for X := 0 to Round(Distance) - 1 do begin
    174       Surface.ItemsXY[Y, X] := Byte(smRock);
     175      Surface.ItemsXY[X, Y] := Byte(smRock);
    175176    end;
    176177    Delta := (Random * 2 - 1) * 3 - (Distance / (0.1 * Surface.Count.X) * 2 - 1);
     
    182183  for Y := 0 to Surface.Count.Y - 1 do begin
    183184    for X := 0 to Round(Distance) - 1 do begin
    184       Surface.ItemsXY[Y, Surface.Count.X - 1 - X] := Byte(smRock);
     185      Surface.ItemsXY[Surface.Count.X - 1 - X, Y] := Byte(smRock);
    185186    end;
    186187    Delta := (Random * 2 - 1) * 3 - (Distance / (0.1 * Surface.Count.X) * 2 - 1);
     
    192193  for X := 0 to Surface.Count.X - 1 do begin
    193194    for Y := 0 to Round(Distance) - 1 do begin
    194       Surface.ItemsXY[Y, X] := Byte(smRock);
     195      Surface.ItemsXY[X, Y] := Byte(smRock);
    195196    end;
    196197    Delta := (Random * 2 - 1) * 3 - (Distance / (0.1 * Surface.Count.Y) * 2 - 1);
     
    202203  for X := 0 to Surface.Count.X - 1 do begin
    203204    for Y := 0 to Round(Distance) - 1 do begin
    204       Surface.ItemsXY[Surface.Count.Y - 1 - Y, X] := Byte(smRock);
     205      Surface.ItemsXY[X, Surface.Count.Y - 1 - Y] := Byte(smRock);
    205206    end;
    206207    Delta := (Random * 2 - 1) * 3 - (Distance / (0.1 * Surface.Count.Y) * 2 - 1);
     
    234235    for X := 0 to Bitmap.Width - 1 do
    235236      Bitmap.Canvas.Pixels[X, Y] := SurfaceMatterColors[TSurfaceMatter(
    236         Surface.ItemsXY[Trunc(Y / Bitmap.Height * Surface.Count.Y),
    237         Trunc(X / Bitmap.Width * Surface.Count.X)])];
     237        Surface.ItemsXY[Trunc(X / Bitmap.Width * Surface.Count.X),
     238          Trunc(Y / Bitmap.Height * Surface.Count.Y)])];
    238239  finally
    239240    Bitmap.EndUpdate;
     
    294295  for I := Bullets.Count - 1 downto 0 do
    295296  with TBullet(Bullets[I]) do begin
    296     Engine.World.Surface.ItemsXY[Position.Y, Position.X] := Byte(smNothing);
     297    Engine.World.Surface.ItemsXY[Position.X, Position.Y] := Byte(smNothing);
    297298
    298299    Position.X := Position.X + DirectionToDelta[Direction].X;
    299300    Position.Y := Position.Y + DirectionToDelta[Direction].Y;
    300301
    301     if Engine.World.Surface.ItemsXY[Position.Y, Position.X] <> Byte(smNothing) then begin
    302       if (Engine.World.Surface.ItemsXY[Position.Y, Position.X] = Byte(smDirt1)) or
    303         (Engine.World.Surface.ItemsXY[Position.Y, Position.X] = Byte(smDirt2)) then
    304           Engine.World.Surface.ItemsXY[Position.Y, Position.X] := Byte(smNothing);
     302    if Engine.World.Surface.ItemsXY[Position.X, Position.Y] <> Byte(smNothing) then begin
     303      if (Engine.World.Surface.ItemsXY[Position.X, Position.Y] = Byte(smDirt1)) or
     304        (Engine.World.Surface.ItemsXY[Position.X, Position.Y] = Byte(smDirt2)) then
     305          Engine.World.Surface.ItemsXY[Position.X, Position.Y] := Byte(smNothing);
    305306      Bullets.Delete(I);
    306307    end else
     
    309310      (Position.Y >= Count.Y) or (Position.Y < 0) then
    310311      Bullets.Delete(I) else
    311       Engine.World.Surface.ItemsXY[Position.Y, Position.X] := Byte(smBullet);
     312      Engine.World.Surface.ItemsXY[Position.X, Position.Y] := Byte(smBullet);
    312313    Engine.Redraw;
    313314  end;
     
    319320  XX, YY: Integer;
    320321begin
    321   with Engine.FBitmapLower.Canvas do begin
    322     Brush.Color := SurfaceMatterColors[smRock];
    323     FillRect(ScreenFrame);
     322  with Engine.FBitmapLower do begin
     323//    Brush.Color := SurfaceMatterColors[smRock];
     324//    FillRect(ScreenFrame);
     325    Fill(CreateIndex(ScreenFrame.Left, ScreenFrame.Top),
     326      CreateIndex(ScreenFrame.Right - 1, ScreenFrame.Bottom - 1), SurfaceMatterColors[smRock]);
    324327
    325328    with Engine.World do
     
    329332        YY := Y - ScreenFrame.Top - ((ScreenFrame.Bottom - ScreenFrame.Top) div 2) + Position.Y;
    330333        if (YY >= 0) and (YY < Surface.Count.Y) and (XX >= 0) and (XX < Surface.Count.X) then
    331           Pixels[X, Y] := SurfaceMatterColors[TSurfaceMatter(Surface.ItemsXY[YY, XX])];
     334          ItemsXY[X, Y] := SurfaceMatterColors[TSurfaceMatter(Surface.ItemsXY[XX, YY])];
    332335      end;
    333     Pen.Color := clBlack;
    334     Frame(ScreenFrame);
     336    //Pen.Color := clBlack;
     337    //Frame(ScreenFrame);
    335338
    336339    (*CopyRect(ScreenFrame, Engine.World.Surface.Canvas,
     
    361364      then Matter := Byte(smPlayer1H) + Id * 2
    362365        else Matter := Byte(smNothing);
    363       Engine.World.Surface.ItemsXY[Position.Y - HouseSize div 2 + Y, Position.X - HouseSize div 2 + X] := Matter;
     366      Engine.World.Surface.ItemsXY[Position.X - HouseSize div 2 + X,
     367        Position.Y - HouseSize div 2 + Y] := Matter;
    364368    end;
    365369end;
     
    376380    XX := X + NewPosition.X - Image.Count.X div 2;
    377381    YY := Y + NewPosition.Y - Image.Count.Y div 2;
    378     if (Image.ItemsXY[Y, X] > 0) and
    379     (Surface.ItemsXY[YY, XX] <> Byte(smNothing)) then
     382    if (Image.ItemsXY[X, Y] > 0) and
     383    (Surface.ItemsXY[XX, YY] <> Byte(smNothing)) then
    380384    begin
    381385      Result := smDirt1;
    382       if (Surface.ItemsXY[YY, XX] <> Byte(smDirt1)) and
    383       (Surface.ItemsXY[YY, XX] <> Byte(smDirt2)) then
     386      if (Surface.ItemsXY[XX, YY] <> Byte(smDirt1)) and
     387      (Surface.ItemsXY[XX, YY] <> Byte(smDirt2)) then
    384388      begin
    385         Result := TSurfaceMatter(Surface.ItemsXY[YY, XX]);
     389        Result := TSurfaceMatter(Surface.ItemsXY[XX, YY]);
    386390        Exit;
    387391      end;
     
    428432    Image.Count := Image.CreateIndex(7, 7);
    429433    for I := 0 to 3 do
    430       Image[I, 3] := Byte(smCannon);
     434      Image[3, I] := Byte(smCannon);
    431435    for I := 1 to 6 do begin
    432       Image[I, 1] := Byte(smPlayer1H) + Id * 2;
    433       Image[I, 5] := Byte(smPlayer1H) + Id * 2;
     436      Image[1, I] := Byte(smPlayer1H) + Id * 2;
     437      Image[5, I] := Byte(smPlayer1H) + Id * 2;
    434438    end;
    435439    for I := 2 to 5 do begin
    436       Image[I, 2] := Byte(smPlayer1H) + Id * 2 + 1;
    437       Image[I, 4] := Byte(smPlayer1H) + Id * 2 + 1;
    438     end;
    439     Image[4, 3] := Byte(smPlayer1H) + Id * 2 + 1;
    440     Image[5, 3] := Byte(smPlayer1H) + Id * 2 + 1;
     440      Image[2, I] := Byte(smPlayer1H) + Id * 2 + 1;
     441      Image[4, I] := Byte(smPlayer1H) + Id * 2 + 1;
     442    end;
     443    Image[3, 4] := Byte(smPlayer1H) + Id * 2 + 1;
     444    Image[3, 5] := Byte(smPlayer1H) + Id * 2 + 1;
    441445  end;
    442446  Tanks.Add(NewTank);
     
    446450    Image.Count := Image.CreateIndex(7, 7);
    447451    for I := 0 to 2 do
    448       Image[3 - I, 3 + I] := Byte(smCannon);
     452      Image[3 + I, 3 - I] := Byte(smCannon);
    449453    for I := 0 to 3 do begin
    450       Image[3 - I, I] := Byte(smPlayer1H) + Id * 2;
    451       Image[6 - I, 3 + I] := Byte(smPlayer1H) + Id * 2;
     454      Image[I, 3 - I] := Byte(smPlayer1H) + Id * 2;
     455      Image[3 + I, 6 - I] := Byte(smPlayer1H) + Id * 2;
    452456    end;
    453457    for I := 0 to 2 do begin
    454       Image[3 - I, 1 + I] := Byte(smPlayer1H) + Id * 2 + 1;
    455       Image[5 - I, 3 + I] := Byte(smPlayer1H) + Id * 2 + 1;
    456     end;
     458      Image[1 + I, 3 - I] := Byte(smPlayer1H) + Id * 2 + 1;
     459      Image[3 + I, 5 - I] := Byte(smPlayer1H) + Id * 2 + 1;
     460    end;
     461    Image[3, 2] := Byte(smPlayer1H) + Id * 2 + 1;
    457462    Image[2, 3] := Byte(smPlayer1H) + Id * 2 + 1;
    458     Image[3, 2] := Byte(smPlayer1H) + Id * 2 + 1;
    459     Image[4, 2] := Byte(smPlayer1H) + Id * 2 + 1;
     463    Image[2, 4] := Byte(smPlayer1H) + Id * 2 + 1;
     464    Image[3, 4] := Byte(smPlayer1H) + Id * 2 + 1;
    460465    Image[4, 3] := Byte(smPlayer1H) + Id * 2 + 1;
    461     Image[3, 4] := Byte(smPlayer1H) + Id * 2 + 1;
    462466  end;
    463467  Tanks.Add(NewTank);
     
    572576      HorizFrameCount := 1;
    573577    end;
    574     FBitmapLower.SetSize(80 * HorizFrameCount, 60 * VertFrameCount);
     578    FBitmapLower.Count := FBitmapLower.CreateIndex(80 * HorizFrameCount, 60 * VertFrameCount);
    575579    for I := 0 to Players.Count - 1 do begin
    576580      TPlayer(Players[I]).ScreenFrame := Rect(
    577         (I mod HorizFrameCount) * (FBitmapLower.Width div HorizFrameCount),
    578         (I div HorizFrameCount) * (FBitmapLower.Height div VertFrameCount),
     581        (I mod HorizFrameCount) * (FBitmapLower.Count.X div HorizFrameCount),
     582        (I div HorizFrameCount) * (FBitmapLower.Count.Y div VertFrameCount),
    579583        ((I mod HorizFrameCount) + 1) * (FBitmapLower.Width div HorizFrameCount),
    580584        ((I div HorizFrameCount) + 1) * (FBitmapLower.Height div VertFrameCount));
     
    586590constructor TEngine.Create;
    587591begin
    588   FBitmapLower := TBitmap.Create;
     592  FBitmapLower := TBitmapTColor.Create;
    589593  Players := TObjectList.Create;
    590594  World := TWorld.Create;
     
    612616procedure TEngine.Draw;
    613617var
     618  IntfImage: TLazIntfImage;
    614619  I: Integer;
     620  X, Y: Integer;
     621  H, W: Integer;
     622  Ratio: Single;
    615623begin
    616624  if FRedrawPending then begin
    617     FBitmapLower.Canvas.FillRect(0, 0, FBitmapLower.Width, FBitmapLower.Height);
     625    FBitmapLower.FillAll(0);
    618626    for I := 0 to Players.Count - 1 do begin
    619627      TPlayer(Players[I]).Paint;
    620628    end;
    621629    if Assigned(FBitmap) then begin
    622       FBitmap.Canvas.StretchDraw(Rect(0, 0, FBitmap.Width, FBitmap.Height), FBitmapLower);
     630      //FBitmap.Canvas.StretchDraw(Rect(0, 0, FBitmap.Width, FBitmap.Height), FBitmapLower);
     631      try
     632        IntfImage := FBitmap.CreateIntfImage;
     633        if (FBitmap.Width / FBitmapLower.Width) < (FBitmap.Height / FBitmapLower.Height) then
     634          Ratio := FBitmap.Width / FBitmapLower.Width
     635          else Ratio := FBitmap.Height / FBitmapLower.Height;
     636        for Y := 0 to Trunc(FBitmapLower.Height * Ratio) - 1 do
     637          for X := 0 to Trunc(FBitmapLower.Width * Ratio) - 1 do
     638            IntfImage.Colors[X, Y] := TColorToFPColor(FBitmapLower.Pixels[Trunc(X / Ratio), Trunc(Y / Ratio)]);
     639        FBitmap.LoadFromIntfImage(IntfImage);
     640      finally
     641        IntfImage.Free;
     642      end;
    623643    end;
    624644    FRedrawPending := False;
  • trunk/UMainForm.lfm

    r6 r7  
    1313  OnShow = FormShow
    1414  LCLVersion = '0.9.31'
    15   object Image1: TImage
    16     Left = 0
    17     Height = 372
    18     Top = 0
    19     Width = 514
    20     Align = alClient
    21     OnResize = Image1Resize
    22   end
    2315  object StatusBar1: TStatusBar
    2416    Left = 0
     
    3426      end>
    3527    SimplePanel = False
     28  end
     29  object Image1: TImage
     30    Left = 0
     31    Height = 372
     32    Top = 0
     33    Width = 514
     34    Align = alClient
     35    OnResize = Image1Resize
    3636  end
    3737  object TimerDraw: TTimer
  • trunk/UMainForm.pas

    r6 r7  
    8181procedure TMainForm.FormCreate(Sender: TObject);
    8282begin
     83  Randomize;
    8384  Engine.Bitmap := Image1.Picture.Bitmap;
    8485  with Engine do begin
  • trunk/tunneler.lpi

    r6 r7  
    4242      </Item3>
    4343    </RequiredPackages>
    44     <Units Count="32">
     44    <Units Count="40">
    4545      <Unit0>
    4646        <Filename Value="tunneler.lpr"/>
     
    5050        <TopLine Value="1"/>
    5151        <CursorPos X="14" Y="8"/>
    52         <UsageCount Value="51"/>
     52        <UsageCount Value="58"/>
    5353      </Unit0>
    5454      <Unit1>
     
    5858        <ResourceBaseClass Value="Form"/>
    5959        <UnitName Value="UMainForm"/>
    60         <EditorIndex Value="3"/>
    61         <WindowIndex Value="0"/>
    62         <TopLine Value="24"/>
    63         <CursorPos X="32" Y="32"/>
    64         <UsageCount Value="51"/>
     60        <IsVisibleTab Value="True"/>
     61        <EditorIndex Value="13"/>
     62        <WindowIndex Value="0"/>
     63        <TopLine Value="22"/>
     64        <CursorPos X="20" Y="36"/>
     65        <UsageCount Value="58"/>
    6566        <Loaded Value="True"/>
    6667        <LoadedDesigner Value="True"/>
     
    7071        <IsPartOfProject Value="True"/>
    7172        <UnitName Value="UCore"/>
    72         <IsVisibleTab Value="True"/>
    7373        <EditorIndex Value="0"/>
    7474        <WindowIndex Value="0"/>
    75         <TopLine Value="316"/>
    76         <CursorPos X="7" Y="342"/>
    77         <UsageCount Value="51"/>
     75        <TopLine Value="317"/>
     76        <CursorPos X="44" Y="326"/>
     77        <UsageCount Value="58"/>
    7878        <Loaded Value="True"/>
    7979      </Unit2>
     
    8484        <TopLine Value="35"/>
    8585        <CursorPos X="20" Y="51"/>
    86         <UsageCount Value="11"/>
     86        <UsageCount Value="10"/>
    8787      </Unit3>
    8888      <Unit4>
     
    9292        <TopLine Value="52"/>
    9393        <CursorPos X="18" Y="57"/>
    94         <UsageCount Value="10"/>
     94        <UsageCount Value="9"/>
    9595      </Unit4>
    9696      <Unit5>
     
    100100        <TopLine Value="1"/>
    101101        <CursorPos X="61" Y="11"/>
    102         <UsageCount Value="25"/>
     102        <UsageCount Value="24"/>
    103103      </Unit5>
    104104      <Unit6>
    105105        <Filename Value="/usr/share/fpcsrc/2.4.0/rtl/objpas/classes/classesh.inc"/>
    106         <EditorIndex Value="1"/>
    107106        <WindowIndex Value="0"/>
    108107        <TopLine Value="1769"/>
    109108        <CursorPos X="10" Y="1786"/>
    110         <UsageCount Value="10"/>
    111         <Loaded Value="True"/>
     109        <UsageCount Value="11"/>
    112110      </Unit6>
    113111      <Unit7>
    114112        <Filename Value="../../../lazarus/lcl/graphics.pp"/>
    115113        <UnitName Value="Graphics"/>
    116         <WindowIndex Value="0"/>
    117         <TopLine Value="1089"/>
    118         <CursorPos X="15" Y="1136"/>
     114        <EditorIndex Value="1"/>
     115        <WindowIndex Value="0"/>
     116        <TopLine Value="1293"/>
     117        <CursorPos X="15" Y="1310"/>
    119118        <UsageCount Value="12"/>
     119        <Loaded Value="True"/>
    120120      </Unit7>
    121121      <Unit8>
    122122        <Filename Value="../../../lazarus/lcl/include/rasterimage.inc"/>
    123         <WindowIndex Value="0"/>
    124         <TopLine Value="143"/>
    125         <CursorPos X="3" Y="145"/>
    126         <UsageCount Value="10"/>
     123        <EditorIndex Value="2"/>
     124        <WindowIndex Value="0"/>
     125        <TopLine Value="548"/>
     126        <CursorPos X="22" Y="552"/>
     127        <UsageCount Value="10"/>
     128        <Loaded Value="True"/>
    127129      </Unit8>
    128130      <Unit9>
     
    131133        <TopLine Value="34"/>
    132134        <CursorPos X="1" Y="54"/>
    133         <UsageCount Value="9"/>
     135        <UsageCount Value="8"/>
    134136      </Unit9>
    135137      <Unit10>
     
    139141        <TopLine Value="1433"/>
    140142        <CursorPos X="3" Y="1449"/>
    141         <UsageCount Value="8"/>
     143        <UsageCount Value="7"/>
    142144      </Unit10>
    143145      <Unit11>
    144146        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
    145         <EditorIndex Value="4"/>
    146         <WindowIndex Value="0"/>
    147         <TopLine Value="149"/>
    148         <CursorPos X="1" Y="171"/>
    149         <UsageCount Value="20"/>
     147        <EditorIndex Value="14"/>
     148        <WindowIndex Value="0"/>
     149        <TopLine Value="52"/>
     150        <CursorPos X="15" Y="29"/>
     151        <UsageCount Value="25"/>
    150152        <Loaded Value="True"/>
    151153      </Unit11>
     
    153155        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Specialized/SpecializedMatrix.pas"/>
    154156        <UnitName Value="SpecializedMatrix"/>
    155         <EditorIndex Value="5"/>
    156         <WindowIndex Value="0"/>
    157         <TopLine Value="69"/>
    158         <CursorPos X="40" Y="98"/>
    159         <UsageCount Value="18"/>
     157        <EditorIndex Value="16"/>
     158        <WindowIndex Value="0"/>
     159        <TopLine Value="16"/>
     160        <CursorPos X="22" Y="33"/>
     161        <UsageCount Value="22"/>
    160162        <Loaded Value="True"/>
    161163      </Unit12>
     
    165167        <TopLine Value="16"/>
    166168        <CursorPos X="19" Y="32"/>
    167         <UsageCount Value="11"/>
     169        <UsageCount Value="10"/>
    168170      </Unit13>
    169171      <Unit14>
     
    173175        <TopLine Value="54"/>
    174176        <CursorPos X="3" Y="70"/>
    175         <UsageCount Value="14"/>
     177        <UsageCount Value="13"/>
    176178      </Unit14>
    177179      <Unit15>
    178180        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericList.inc"/>
    179         <EditorIndex Value="6"/>
    180         <WindowIndex Value="0"/>
    181         <TopLine Value="107"/>
    182         <CursorPos X="1" Y="126"/>
    183         <UsageCount Value="19"/>
     181        <EditorIndex Value="11"/>
     182        <WindowIndex Value="0"/>
     183        <TopLine Value="473"/>
     184        <CursorPos X="1" Y="60"/>
     185        <UsageCount Value="22"/>
    184186        <Loaded Value="True"/>
    185187      </Unit15>
     
    189191        <TopLine Value="783"/>
    190192        <CursorPos X="3" Y="785"/>
    191         <UsageCount Value="8"/>
     193        <UsageCount Value="7"/>
    192194      </Unit16>
    193195      <Unit17>
    194196        <Filename Value="/usr/share/fpcsrc/2.4.0/rtl/inc/systemh.inc"/>
    195197        <WindowIndex Value="0"/>
    196         <TopLine Value="830"/>
    197         <CursorPos X="11" Y="847"/>
    198         <UsageCount Value="8"/>
     198        <TopLine Value="498"/>
     199        <CursorPos X="11" Y="515"/>
     200        <UsageCount Value="10"/>
    199201      </Unit17>
    200202      <Unit18>
     
    204206        <TopLine Value="665"/>
    205207        <CursorPos X="27" Y="682"/>
    206         <UsageCount Value="10"/>
     208        <UsageCount Value="9"/>
    207209      </Unit18>
    208210      <Unit19>
     
    211213        <TopLine Value="112"/>
    212214        <CursorPos X="10" Y="114"/>
    213         <UsageCount Value="10"/>
     215        <UsageCount Value="9"/>
    214216      </Unit19>
    215217      <Unit20>
     
    219221        <TopLine Value="1035"/>
    220222        <CursorPos X="15" Y="1052"/>
    221         <UsageCount Value="9"/>
     223        <UsageCount Value="8"/>
    222224      </Unit20>
    223225      <Unit21>
     
    226228        <TopLine Value="3003"/>
    227229        <CursorPos X="3" Y="3010"/>
    228         <UsageCount Value="9"/>
     230        <UsageCount Value="8"/>
    229231      </Unit21>
    230232      <Unit22>
     
    233235        <TopLine Value="392"/>
    234236        <CursorPos X="1" Y="411"/>
    235         <UsageCount Value="9"/>
     237        <UsageCount Value="8"/>
    236238      </Unit22>
    237239      <Unit23>
    238240        <Filename Value="../../../lazarus/lcl/include/lclintfh.inc"/>
    239         <WindowIndex Value="0"/>
    240         <TopLine Value="103"/>
    241         <CursorPos X="10" Y="120"/>
    242         <UsageCount Value="9"/>
     241        <EditorIndex Value="6"/>
     242        <WindowIndex Value="0"/>
     243        <TopLine Value="85"/>
     244        <CursorPos X="10" Y="102"/>
     245        <UsageCount Value="10"/>
     246        <Loaded Value="True"/>
    243247      </Unit23>
    244248      <Unit24>
    245249        <Filename Value="../../../lazarus/lcl/include/lclintf.inc"/>
    246         <WindowIndex Value="0"/>
    247         <TopLine Value="437"/>
    248         <CursorPos X="1" Y="443"/>
    249         <UsageCount Value="9"/>
     250        <EditorIndex Value="7"/>
     251        <WindowIndex Value="0"/>
     252        <TopLine Value="157"/>
     253        <CursorPos X="3" Y="159"/>
     254        <UsageCount Value="10"/>
     255        <Loaded Value="True"/>
    250256      </Unit24>
    251257      <Unit25>
     
    254260        <TopLine Value="9107"/>
    255261        <CursorPos X="1" Y="9124"/>
    256         <UsageCount Value="9"/>
     262        <UsageCount Value="8"/>
    257263      </Unit25>
    258264      <Unit26>
     
    261267        <TopLine Value="4226"/>
    262268        <CursorPos X="1" Y="4254"/>
    263         <UsageCount Value="9"/>
     269        <UsageCount Value="8"/>
    264270      </Unit26>
    265271      <Unit27>
     
    269275        <ResourceBaseClass Value="Form"/>
    270276        <UnitName Value="UMapForm"/>
     277        <EditorIndex Value="12"/>
    271278        <WindowIndex Value="0"/>
    272279        <TopLine Value="15"/>
    273         <CursorPos X="24" Y="39"/>
    274         <UsageCount Value="30"/>
     280        <CursorPos X="1" Y="38"/>
     281        <UsageCount Value="37"/>
     282        <Loaded Value="True"/>
    275283      </Unit27>
    276284      <Unit28>
     
    279287        <TopLine Value="858"/>
    280288        <CursorPos X="1" Y="875"/>
    281         <UsageCount Value="10"/>
     289        <UsageCount Value="9"/>
    282290      </Unit28>
    283291      <Unit29>
     
    286294        <TopLine Value="2102"/>
    287295        <CursorPos X="1" Y="2119"/>
    288         <UsageCount Value="10"/>
     296        <UsageCount Value="9"/>
    289297      </Unit29>
    290298      <Unit30>
     
    293301        <TopLine Value="63"/>
    294302        <CursorPos X="65" Y="81"/>
    295         <UsageCount Value="9"/>
     303        <UsageCount Value="8"/>
    296304      </Unit30>
    297305      <Unit31>
    298306        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericListObject.inc"/>
    299         <EditorIndex Value="2"/>
    300         <WindowIndex Value="0"/>
    301         <TopLine Value="60"/>
    302         <CursorPos X="1" Y="77"/>
    303         <UsageCount Value="10"/>
     307        <EditorIndex Value="17"/>
     308        <WindowIndex Value="0"/>
     309        <TopLine Value="1"/>
     310        <CursorPos X="34" Y="12"/>
     311        <UsageCount Value="14"/>
    304312        <Loaded Value="True"/>
    305313      </Unit31>
     314      <Unit32>
     315        <Filename Value="../../../lazarus/lcl/intfgraphics.pas"/>
     316        <UnitName Value="IntfGraphics"/>
     317        <EditorIndex Value="3"/>
     318        <WindowIndex Value="0"/>
     319        <TopLine Value="106"/>
     320        <CursorPos X="30" Y="113"/>
     321        <UsageCount Value="10"/>
     322        <Loaded Value="True"/>
     323      </Unit32>
     324      <Unit33>
     325        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-image/src/fpimage.pp"/>
     326        <UnitName Value="FPimage"/>
     327        <EditorIndex Value="5"/>
     328        <WindowIndex Value="0"/>
     329        <TopLine Value="104"/>
     330        <CursorPos X="3" Y="91"/>
     331        <UsageCount Value="10"/>
     332        <Loaded Value="True"/>
     333      </Unit33>
     334      <Unit34>
     335        <Filename Value="/usr/share/fpcsrc/2.4.0/packages/fcl-image/src/fpimage.inc"/>
     336        <WindowIndex Value="0"/>
     337        <TopLine Value="325"/>
     338        <CursorPos X="3" Y="327"/>
     339        <UsageCount Value="10"/>
     340      </Unit34>
     341      <Unit35>
     342        <Filename Value="../../../lazarus/lcl/graphtype.pp"/>
     343        <UnitName Value="GraphType"/>
     344        <EditorIndex Value="4"/>
     345        <WindowIndex Value="0"/>
     346        <TopLine Value="191"/>
     347        <CursorPos X="3" Y="188"/>
     348        <UsageCount Value="10"/>
     349        <Loaded Value="True"/>
     350      </Unit35>
     351      <Unit36>
     352        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericBitmap.inc"/>
     353        <UnitName Value="GenericBitmap"/>
     354        <EditorIndex Value="10"/>
     355        <WindowIndex Value="0"/>
     356        <TopLine Value="9"/>
     357        <CursorPos X="32" Y="26"/>
     358        <UsageCount Value="12"/>
     359        <Loaded Value="True"/>
     360      </Unit36>
     361      <Unit37>
     362        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Specialized/SpecializedBitmap.pas"/>
     363        <UnitName Value="SpecializedBitmap"/>
     364        <EditorIndex Value="8"/>
     365        <WindowIndex Value="0"/>
     366        <TopLine Value="3"/>
     367        <CursorPos X="22" Y="20"/>
     368        <UsageCount Value="12"/>
     369        <Loaded Value="True"/>
     370      </Unit37>
     371      <Unit38>
     372        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Specialized/SpecializedList.pas"/>
     373        <UnitName Value="SpecializedList"/>
     374        <EditorIndex Value="9"/>
     375        <WindowIndex Value="0"/>
     376        <TopLine Value="91"/>
     377        <CursorPos X="19" Y="107"/>
     378        <UsageCount Value="12"/>
     379        <Loaded Value="True"/>
     380      </Unit38>
     381      <Unit39>
     382        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericListString.inc"/>
     383        <EditorIndex Value="15"/>
     384        <WindowIndex Value="0"/>
     385        <TopLine Value="1"/>
     386        <CursorPos X="1" Y="1"/>
     387        <UsageCount Value="11"/>
     388        <Loaded Value="True"/>
     389      </Unit39>
    306390    </Units>
    307     <JumpHistory Count="30" HistoryIndex="28">
     391    <JumpHistory Count="27" HistoryIndex="26">
    308392      <Position1>
    309393        <Filename Value="UCore.pas"/>
    310         <Caret Line="308" Column="1" TopLine="282"/>
     394        <Caret Line="615" Column="8" TopLine="607"/>
    311395      </Position1>
    312396      <Position2>
    313397        <Filename Value="UCore.pas"/>
    314         <Caret Line="310" Column="1" TopLine="282"/>
     398        <Caret Line="634" Column="1" TopLine="607"/>
    315399      </Position2>
    316400      <Position3>
    317         <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
    318         <Caret Line="171" Column="1" TopLine="149"/>
     401        <Filename Value="UCore.pas"/>
     402        <Caret Line="635" Column="1" TopLine="607"/>
    319403      </Position3>
    320404      <Position4>
    321405        <Filename Value="UCore.pas"/>
    322         <Caret Line="303" Column="21" TopLine="282"/>
     406        <Caret Line="636" Column="1" TopLine="608"/>
    323407      </Position4>
    324408      <Position5>
    325409        <Filename Value="UCore.pas"/>
    326         <Caret Line="296" Column="7" TopLine="282"/>
     410        <Caret Line="637" Column="1" TopLine="609"/>
    327411      </Position5>
    328412      <Position6>
    329413        <Filename Value="UCore.pas"/>
    330         <Caret Line="289" Column="1" TopLine="282"/>
     414        <Caret Line="626" Column="29" TopLine="610"/>
    331415      </Position6>
    332416      <Position7>
    333417        <Filename Value="UCore.pas"/>
    334         <Caret Line="290" Column="1" TopLine="282"/>
     418        <Caret Line="324" Column="21" TopLine="317"/>
    335419      </Position7>
    336420      <Position8>
    337421        <Filename Value="UCore.pas"/>
    338         <Caret Line="293" Column="1" TopLine="282"/>
     422        <Caret Line="432" Column="8" TopLine="417"/>
    339423      </Position8>
    340424      <Position9>
    341425        <Filename Value="UCore.pas"/>
    342         <Caret Line="294" Column="1" TopLine="282"/>
     426        <Caret Line="434" Column="10" TopLine="417"/>
    343427      </Position9>
    344428      <Position10>
    345         <Filename Value="UCore.pas"/>
    346         <Caret Line="295" Column="1" TopLine="282"/>
     429        <Filename Value="UMainForm.pas"/>
     430        <Caret Line="87" Column="27" TopLine="61"/>
    347431      </Position10>
    348432      <Position11>
    349         <Filename Value="UCore.pas"/>
    350         <Caret Line="297" Column="1" TopLine="282"/>
     433        <Filename Value="UMainForm.pas"/>
     434        <Caret Line="86" Column="27" TopLine="60"/>
    351435      </Position11>
    352436      <Position12>
    353         <Filename Value="UCore.pas"/>
    354         <Caret Line="298" Column="1" TopLine="282"/>
     437        <Filename Value="UMainForm.pas"/>
     438        <Caret Line="87" Column="27" TopLine="61"/>
    355439      </Position12>
    356440      <Position13>
    357         <Filename Value="UCore.pas"/>
    358         <Caret Line="300" Column="1" TopLine="282"/>
     441        <Filename Value="UMainForm.pas"/>
     442        <Caret Line="67" Column="6" TopLine="48"/>
    359443      </Position13>
    360444      <Position14>
    361445        <Filename Value="UCore.pas"/>
    362         <Caret Line="304" Column="1" TopLine="282"/>
     446        <Caret Line="126" Column="14" TopLine="109"/>
    363447      </Position14>
    364448      <Position15>
    365449        <Filename Value="UCore.pas"/>
    366         <Caret Line="305" Column="1" TopLine="282"/>
     450        <Caret Line="99" Column="24" TopLine="82"/>
    367451      </Position15>
    368452      <Position16>
    369453        <Filename Value="UCore.pas"/>
    370         <Caret Line="306" Column="1" TopLine="282"/>
     454        <Caret Line="530" Column="28" TopLine="530"/>
    371455      </Position16>
    372456      <Position17>
    373457        <Filename Value="UCore.pas"/>
    374         <Caret Line="308" Column="1" TopLine="282"/>
     458        <Caret Line="99" Column="39" TopLine="95"/>
    375459      </Position17>
    376460      <Position18>
    377461        <Filename Value="UCore.pas"/>
    378         <Caret Line="310" Column="1" TopLine="282"/>
     462        <Caret Line="530" Column="50" TopLine="530"/>
    379463      </Position18>
    380464      <Position19>
    381465        <Filename Value="UCore.pas"/>
    382         <Caret Line="295" Column="1" TopLine="282"/>
     466        <Caret Line="629" Column="24" TopLine="612"/>
    383467      </Position19>
    384468      <Position20>
    385469        <Filename Value="UCore.pas"/>
    386         <Caret Line="297" Column="1" TopLine="282"/>
     470        <Caret Line="98" Column="6" TopLine="93"/>
    387471      </Position20>
    388472      <Position21>
    389473        <Filename Value="UCore.pas"/>
    390         <Caret Line="298" Column="1" TopLine="282"/>
     474        <Caret Line="105" Column="15" TopLine="94"/>
    391475      </Position21>
    392476      <Position22>
    393477        <Filename Value="UCore.pas"/>
    394         <Caret Line="300" Column="1" TopLine="282"/>
     478        <Caret Line="632" Column="59" TopLine="615"/>
    395479      </Position22>
    396480      <Position23>
    397481        <Filename Value="UCore.pas"/>
    398         <Caret Line="304" Column="1" TopLine="282"/>
     482        <Caret Line="634" Column="32" TopLine="616"/>
    399483      </Position23>
    400484      <Position24>
    401485        <Filename Value="UCore.pas"/>
    402         <Caret Line="305" Column="1" TopLine="282"/>
     486        <Caret Line="637" Column="14" TopLine="620"/>
    403487      </Position24>
    404488      <Position25>
    405489        <Filename Value="UCore.pas"/>
    406         <Caret Line="306" Column="1" TopLine="282"/>
     490        <Caret Line="638" Column="38" TopLine="621"/>
    407491      </Position25>
    408492      <Position26>
    409         <Filename Value="UCore.pas"/>
    410         <Caret Line="274" Column="25" TopLine="252"/>
     493        <Filename Value="UMainForm.pas"/>
     494        <Caret Line="174" Column="1" TopLine="153"/>
    411495      </Position26>
    412496      <Position27>
    413         <Filename Value="UCore.pas"/>
    414         <Caret Line="273" Column="10" TopLine="252"/>
     497        <Filename Value="UMainForm.pas"/>
     498        <Caret Line="175" Column="1" TopLine="154"/>
    415499      </Position27>
    416       <Position28>
    417         <Filename Value="UCore.pas"/>
    418         <Caret Line="310" Column="36" TopLine="279"/>
    419       </Position28>
    420       <Position29>
    421         <Filename Value="UCore.pas"/>
    422         <Caret Line="288" Column="33" TopLine="273"/>
    423       </Position29>
    424       <Position30>
    425         <Filename Value="/usr/share/fpcsrc/2.4.0/rtl/objpas/classes/classesh.inc"/>
    426         <Caret Line="1786" Column="10" TopLine="1769"/>
    427       </Position30>
    428500    </JumpHistory>
    429501  </ProjectOptions>
Note: See TracChangeset for help on using the changeset viewer.