Changeset 19


Ignore:
Timestamp:
Dec 20, 2016, 6:02:51 PM (7 years ago)
Author:
chronos
Message:
  • Added: Define specialized classes for various usual pixmaxs.
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • branches/gbitmap

    • Property svn:ignore
      •  

        old new  
        33project1.lps
        44project1.res
         5project1.exe
  • branches/gbitmap/GImage.pas

    r18 r19  
    66
    77uses
    8   Classes, SysUtils, GPixmap;
     8  Classes, SysUtils, Graphics, GPixmap, UPixmapSpecialized;
    99
    1010type
    11   TColorGray8 = Byte;
    12 
    13   { TRGB8 }
    14 
    15   TRGB8 = record
    16     R: Byte;
    17     B: Byte;
    18     G: Byte;
    19     function Create(R, G, B: Byte): TRGB8;
    20   end;
    21 
    22 
    2311  TBColor = class
    2412  end;
    2513
    2614  TBColorGray1 = class(TBColor)
    27     Value: TColorGray8;
     15    Value: TColorGray1;
     16  end;
     17
     18  TBColorGray2 = class(TBColor)
     19    Value: TColorGray2;
    2820  end;
    2921
    3022  TBColorRGB8 = class(TBColor)
    31     Value: TRGB8;
     23    Value: TColorRGB8;
    3224  end;
    3325
     
    3527
    3628  TBImage = class
    37     procedure Fill(Color: TBColor); virtual;
     29  public
     30    type
     31      TGetColorPos = function (Position: TPoint): TBColor of object;
     32  private
     33    FSize: TPoint;
     34  protected
     35    procedure SetSize(AValue: TPoint); virtual;
     36  public
     37    procedure Fill(Color: TBColor); virtual; overload;
     38    procedure Fill(Func: TGetColorPos); virtual; overload;
     39    procedure PaintToCanvas(Canvas: TCanvas); virtual;
     40    property Size: TPoint read FSize write SetSize;
    3841  end;
    3942
     
    4144
    4245  TBImageGray1 = class(TBImage)
    43     Pixmap: TGPixmap<TColorGray8>;
     46  protected
     47    procedure SetSize(AValue: TPoint); override;
     48  public
     49    Pixmap: TPixmapGray1;
    4450    procedure Fill(Color: TBColor); override;
     51    procedure Fill(Func: TGetColorPos); override;
     52    procedure PaintToCanvas(Canvas: TCanvas); override;
     53    constructor Create;
     54    destructor Destroy; override;
     55  end;
     56
     57  { TBImageGray2 }
     58
     59  TBImageGray2 = class(TBImage)
     60  protected
     61    procedure SetSize(AValue: TPoint); override;
     62  public
     63    Pixmap: TPixmapGray2;
     64    procedure Fill(Color: TBColor); override;
     65    procedure PaintToCanvas(Canvas: TCanvas); override;
     66    constructor Create;
     67    destructor Destroy; override;
    4568  end;
    4669
     
    4871
    4972  TBImageRGB8 = class(TBImage)
    50     Pixmap: TGPixmap<TRGB8>;
     73  protected
     74    procedure SetSize(AValue: TPoint); override;
     75  public
     76    Pixmap: TGPixmap<TColorRGB8>;
    5177    procedure Fill(Color: TBColor); override;
    52   end;
    53 
    54 
    55   TColorFormat = (cfNone, cfGray1, cfRGB8);
    56 
    57   { TImage }
    58 
    59   TImage = class
     78    constructor Create;
     79    destructor Destroy; override;
     80  end;
     81
     82
     83  TColorFormat = (cfNone, cfGray1, cfGray2, cfGray4, cfGray8, cfGray16, cfGray32,
     84    cfRGB8, cfRGB16);
     85
     86  { TGImage }
     87
     88  TGImage = class
     89  public
     90    type
     91      TGetColorPos = function (Position: TPoint): TBColor of object;
    6092  private
    6193    FBackend: TBImage;
    6294    FColorFormat: TColorFormat;
     95    FSize: TPoint;
    6396    procedure SetColorFormat(AValue: TColorFormat);
     97    procedure SetSize(AValue: TPoint);
    6498  public
    6599    property Backend: TBImage read FBackend;
    66100    property ColorFormat: TColorFormat read FColorFormat write SetColorFormat;
    67     procedure Fill(Color: TBColor);
    68     constructor Create;
    69     destructor Destroy; override;
    70   end;
     101    property Size: TPoint read FSize write SetSize;
     102    procedure Fill(Color: TBColor); overload;
     103    procedure Fill(Func: TGetColorPos); overload;
     104    procedure PaintToCanvas(Canvas: TCanvas);
     105    constructor Create;
     106    destructor Destroy; override;
     107  end;
     108
    71109
    72110implementation
    73111
    74 { TRGB8 }
    75 
    76 function TRGB8.Create(R, G, B: Byte): TRGB8;
    77 begin
    78   Result.R := R;
    79   Result.G := G;
    80   Result.B := B;
    81 end;
     112{ TBImageGray2 }
     113
     114procedure TBImageGray2.SetSize(AValue: TPoint);
     115begin
     116  inherited;
     117  Pixmap.Size := AValue;
     118end;
     119
     120procedure TBImageGray2.Fill(Color: TBColor);
     121begin
     122  if Color is TBColorGray2 then
     123    Pixmap.Fill((Color as TBColorGray2).Value);
     124end;
     125
     126procedure TBImageGray2.PaintToCanvas(Canvas: TCanvas);
     127begin
     128  Pixmap.PaintToCanvas(Canvas, Pixmap.Gray2ToColor);
     129end;
     130
     131constructor TBImageGray2.Create;
     132begin
     133  Pixmap := TPixmapGray2.Create;
     134end;
     135
     136destructor TBImageGray2.Destroy;
     137begin
     138  Pixmap.Free;
     139  inherited Destroy;
     140end;
     141
    82142
    83143{ TBImageRGB8 }
     144
     145procedure TBImageRGB8.SetSize(AValue: TPoint);
     146begin
     147  inherited;
     148  Pixmap.Size := AValue;
     149end;
    84150
    85151procedure TBImageRGB8.Fill(Color: TBColor);
     
    89155end;
    90156
     157constructor TBImageRGB8.Create;
     158begin
     159  Pixmap := TGPixmap<TColorRGB8>.Create;
     160end;
     161
     162destructor TBImageRGB8.Destroy;
     163begin
     164  Pixmap.Free;
     165  inherited Destroy;
     166end;
     167
    91168{ TBImage }
    92169
     170procedure TBImage.SetSize(AValue: TPoint);
     171begin
     172  if (FSize.X = AValue.X) and (FSize.Y = AValue.Y) then Exit;
     173  FSize := AValue;
     174end;
     175
    93176procedure TBImage.Fill(Color: TBColor);
    94177begin
    95178end;
    96179
     180procedure TBImage.Fill(Func: TGetColorPos);
     181begin
     182end;
     183
     184procedure TBImage.PaintToCanvas(Canvas: TCanvas);
     185begin
     186end;
     187
    97188{ TBImageGray1 }
     189
     190procedure TBImageGray1.SetSize(AValue: TPoint);
     191begin
     192  inherited;
     193  Pixmap.Size := AValue;
     194end;
    98195
    99196procedure TBImageGray1.Fill(Color: TBColor);
     
    103200end;
    104201
    105 { TImage }
    106 
    107 procedure TImage.SetColorFormat(AValue: TColorFormat);
     202procedure TBImageGray1.Fill(Func: TGetColorPos);
     203begin
     204  //Pixmap.Fill();
     205end;
     206
     207procedure TBImageGray1.PaintToCanvas(Canvas: TCanvas);
     208begin
     209  Pixmap.PaintToCanvas(Canvas, Pixmap.Gray1ToColor);
     210end;
     211
     212constructor TBImageGray1.Create;
     213begin
     214  Pixmap := TPixmapGray1.Create;
     215end;
     216
     217destructor TBImageGray1.Destroy;
     218begin
     219  Pixmap.Free;
     220  inherited Destroy;
     221end;
     222
     223{ TGImage }
     224
     225procedure TGImage.SetColorFormat(AValue: TColorFormat);
    108226begin
    109227  if FColorFormat = AValue then Exit;
    110228  FBackend.Free;
    111   if FColorFormat = cfGray1 then
    112     FBackend := TBImageGray1.Create;
    113   if FColorFormat = cfRGB8 then
    114     FBackend := TBImageRGB8.Create;
     229  if AValue = cfGray1 then FBackend := TBImageGray1.Create
     230  else if AValue = cfGray2 then FBackend := TBImageGray2.Create
     231  else if AValue = cfRGB8 then FBackend := TBImageRGB8.Create
     232  else FBackend := nil;
     233  if Assigned(FBackend) then FBackend.Size := FSize;
    115234  FColorFormat := AValue;
    116235end;
    117236
    118 procedure TImage.Fill(Color: TBColor);
    119 begin
    120   if Assigned(Backend) then
    121     Backend.Fill(Color);
    122 end;
    123 
    124 constructor TImage.Create;
     237procedure TGImage.SetSize(AValue: TPoint);
     238begin
     239  if (FSize.X = AValue.X) and (FSize.Y = AValue.Y) then Exit;
     240  FSize := AValue;
     241  if Assigned(FBackend) then
     242    FBackend.Size := AValue;
     243end;
     244
     245procedure TGImage.Fill(Color: TBColor);
     246begin
     247  if Assigned(FBackend) then FBackend.Fill(Color);
     248end;
     249
     250procedure TGImage.Fill(Func: TGetColorPos);
     251begin
     252//  if Assigned(FBackend) then FBackend.Fill(Func: TGetColorPos);
     253end;
     254
     255procedure TGImage.PaintToCanvas(Canvas: TCanvas);
     256begin
     257  if Assigned(FBackend) then FBackend.PaintToCanvas(Canvas);
     258end;
     259
     260constructor TGImage.Create;
    125261begin
    126262  FBackend := nil;
    127263end;
    128264
    129 destructor TImage.Destroy;
     265destructor TGImage.Destroy;
    130266begin
    131267  if Assigned(FBackend) then FreeAndNil(FBackend);
  • branches/gbitmap/UFormMain.lfm

    r18 r19  
    88  ClientWidth = 685
    99  OnShow = FormShow
    10   LCLVersion = '1.6.0.4'
     10  LCLVersion = '1.6.2.0'
    1111  object Image1: TImage
    1212    Left = 208
     
    2020    Height = 314
    2121    Hint = 'Gray 8-bit'#13#10'Gray 32-bit'#13#10'RGB 8-bit'
    22     Top = 38
     22    Top = 30
    2323    Width = 165
    2424    Items.Strings = (
     
    3232      'RGB 16-bit'
    3333      'Gray variable-bit'
     34      'Image Gray 1-bit'
    3435    )
    35     ItemHeight = 30
     36    ItemHeight = 20
    3637    OnSelectionChange = ListBox1SelectionChange
    3738    ScrollWidth = 163
     
    4041  object Label1: TLabel
    4142    Left = 18
    42     Height = 24
     43    Height = 20
    4344    Top = 459
    44     Width = 55
     45    Width = 44
    4546    Caption = 'Label1'
    4647    ParentColor = False
  • branches/gbitmap/UFormMain.pas

    r18 r19  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
    9   ExtCtrls, StdCtrls, GPixmap;
     9  ExtCtrls, StdCtrls, GPixmap, UPixmapSpecialized, GImage;
    1010
    1111type
    12   TRGB8 = record
    13     R: Byte;
    14     B: Byte;
    15     G: Byte;
    16     function Create(R, G, B: Byte): TRGB8;
    17   end;
    18 
    19   { TRGB16 }
    20 
    21   TRGB16 = record
    22     R: Word;
    23     B: Word;
    24     G: Word;
    25     function Create(R, G, B: Word): TRGB16;
    26   end;
    27 
    28   { TGrayVar }
    29 
    30   TGrayVar = PByte;
    3112
    3213  { TForm1 }
     
    3920    procedure ListBox1SelectionChange(Sender: TObject; User: boolean);
    4021  private
    41     function Gray8ToColor(Value: Byte): TColor;
    42     function Gray32ToColor(Value: Cardinal): TColor;
    43     function Gray16Random(Position: TPoint): Word;
    44     function Gray16ToColor(Value: Word): TColor;
    45     function Gray32Random(Position: TPoint): Cardinal;
    46     function Gray4Random(Position: TPoint): Byte;
    47     function Gray1Random(Position: TPoint): Byte;
    48     function Gray2Random(Position: TPoint): Byte;
    49     function Gray8Random(Position: TPoint): Byte;
    50     function RGB16Random(Position: TPoint): TRGB16;
    51     function RGB16ToColor(Value: TRGB16): TColor;
    52     function RGB8Random(Position: TPoint): TRGB8;
    53     function RGB8ToColor(Value: TRGB8): TColor;
    54     function Gray1ToColor(Value: Byte): TColor;
    55     function Gray2ToColor(Value: Byte): TColor;
    56     function Gray4ToColor(Value: Byte): TColor;
    57     function GrayVarToColor(Value: TGrayVar): TColor;
    58     function GrayVarCreate(Value: QWord): TGrayVar;
    59     procedure TestGray16;
     22    function Gray1Random(Position: TPoint): TColorGray1;
     23    function Gray2Random(Position: TPoint): TColorGray2;
     24    function Gray4Random(Position: TPoint): TColorGray4;
     25    function Gray8Random(Position: TPoint): TColorGray8;
     26    function Gray16Random(Position: TPoint): TColorGray16;
     27    function Gray32Random(Position: TPoint): TColorGray32;
     28    function RGB8Random(Position: TPoint): TColorRGB8;
     29    function RGB16Random(Position: TPoint): TColorRGB16;
     30  public
     31    procedure TestGray1;
    6032    procedure TestGray2;
    6133    procedure TestGray4;
    62   public
    63     procedure TestGray1;
    6434    procedure TestGray8;
     35    procedure TestGray16;
    6536    procedure TestGray32;
    6637    procedure TestRGB8;
    6738    procedure TestRGB16;
    6839    procedure TestGrayVar;
     40    procedure TestImage;
    6941  end;
    7042
     
    7244  Form1: TForm1;
    7345
     46
    7447implementation
    7548
    7649{$R *.lfm}
    7750
    78 { TRGB16 }
    79 
    80 function TRGB16.Create(R, G, B: Word): TRGB16;
    81 begin
    82   Result.R := R;
    83   Result.G := G;
    84   Result.B := B;
    85 end;
    86 
    87 { TRGB8 }
    88 
    89 function TRGB8.Create(R, G, B: Byte): TRGB8;
    90 begin
    91   Result.R := R;
    92   Result.G := G;
    93   Result.B := B;
    94 end;
    95 
    9651{ TForm1 }
    9752
    98 function TForm1.Gray1ToColor(Value: Byte): TColor;
    99 begin
    100   Value := (Value and $1) * $ff;
    101   Result := (Value shl 16) or (Value shl 8) or (Value shl 0);
    102 end;
    103 
    104 function TForm1.Gray2ToColor(Value: Byte): TColor;
    105 begin
    106   Value := (Value and $3) * (255 div (4 - 1));
    107   Result := (Value shl 16) or (Value shl 8) or (Value shl 0);
    108 end;
    109 
    110 function TForm1.Gray4ToColor(Value: Byte): TColor;
    111 begin
    112   Value := (Value and $f) * (255 div (16 - 1));
    113   Result := (Value shl 16) or (Value shl 8) or (Value shl 0);
    114 end;
    115 
    116 function TForm1.Gray8ToColor(Value: Byte): TColor;
    117 begin
    118   Result := (Value shl 16) or (Value shl 8) or (Value shl 0);
    119 end;
    120 
    121 function TForm1.Gray16ToColor(Value: Word): TColor;
    122 begin
    123   Value := (Value shr 8) and $ff;
    124   Result := (Value shl 16) or (Value shl 8) or (Value shl 0);
    125 end;
    126 
    127 function TForm1.Gray32ToColor(Value: Cardinal): TColor;
    128 begin
    129   Value := (Value shr 24) and $ff;
    130   Result := (Value shl 16) or (Value shl 8) or (Value shl 0);
    131 end;
    132 
    133 function TForm1.RGB8ToColor(Value: TRGB8): TColor;
    134 begin
    135   Result := (Value.R shl 16) or (Value.G shl 8) or (Value.B shl 0);
    136 end;
    137 
    138 function TForm1.RGB16ToColor(Value: TRGB16): TColor;
    139 begin
    140   Result := ((Value.R shr 8) shl 16) or ((Value.G shr 8) shl 8) or
    141     ((Value.B shr 8) shl 0);
    142 end;
    143 
    144 function TForm1.GrayVarToColor(Value: TGrayVar): TColor;
    145 var
    146   ValuePart: Byte;
    147 begin
    148   if Assigned(Value) then begin
    149     ValuePart := PByte(Value + MemSize(Value) - 1)^;
    150     Result := (ValuePart shl 16) or (ValuePart shl 8) or (ValuePart shl 0);
    151   end else Result := clBlack;
    152 end;
    153 
    154 function TForm1.GrayVarCreate(Value: QWord): TGrayVar;
    155 begin
    156   Result := GetMem(SizeOf(Value));
    157   Move(Value, Result^, SizeOf(Value));
    158 end;
    159 
    160 function TForm1.Gray1Random(Position: TPoint): Byte;
     53
     54function TForm1.Gray1Random(Position: TPoint): TColorGray1;
    16155begin
    16256  Result := Random(2);
    16357end;
    16458
    165 function TForm1.Gray2Random(Position: TPoint): Byte;
     59function TForm1.Gray2Random(Position: TPoint): TColorGray2;
    16660begin
    16761  Result := Random(4);
    16862end;
    16963
    170 function TForm1.Gray4Random(Position: TPoint): Byte;
     64function TForm1.Gray4Random(Position: TPoint): TColorGray4;
    17165begin
    17266  Result := Random($10);
    17367end;
    17468
    175 function TForm1.Gray8Random(Position: TPoint): Byte;
     69function TForm1.Gray8Random(Position: TPoint): TColorGray8;
    17670begin
    17771  Result := Random($100);
    17872end;
    17973
    180 function TForm1.Gray16Random(Position: TPoint): Word;
     74function TForm1.Gray16Random(Position: TPoint): TColorGray16;
    18175begin
    18276  Result := Random($10000);
    18377end;
    18478
    185 function TForm1.Gray32Random(Position: TPoint): Cardinal;
     79function TForm1.Gray32Random(Position: TPoint): TColorGray32;
    18680begin
    18781  Result := Random($ffffffff);
    18882end;
    18983
    190 function TForm1.RGB8Random(Position: TPoint): TRGB8;
     84function TForm1.RGB8Random(Position: TPoint): TColorRGB8;
    19185begin
    19286  Result.R := Random($100);
     
    19589end;
    19690
    197 function TForm1.RGB16Random(Position: TPoint): TRGB16;
     91function TForm1.RGB16Random(Position: TPoint): TColorRGB16;
    19892begin
    19993  Result.R := Random($10000);
     
    20498procedure TForm1.TestGray1;
    20599var
    206   Bitmap: TGPixmapBit<Byte>;
    207 begin
    208   Bitmap := TGPixmapBit<Byte>.Create;
     100  Bitmap: TPixmapGray1;
     101begin
     102  Bitmap := TPixmapGray1.Create;
    209103  with Bitmap do begin
    210104    BitsPerPixel := 1;
     
    223117procedure TForm1.TestGray2;
    224118var
    225   Bitmap: TGPixmapBit<Byte>;
    226 begin
    227   Bitmap := TGPixmapBit<Byte>.Create;
     119  Bitmap: TPixmapGray2;
     120begin
     121  Bitmap := TPixmapGray2.Create;
    228122  with Bitmap do begin
    229123    BitsPerPixel := 2;
     
    242136procedure TForm1.TestGray4;
    243137var
    244   Bitmap: TGPixmapBit<Byte>;
    245 begin
    246   Bitmap := TGPixmapBit<Byte>.Create;
     138  Bitmap: TPixmapGray4;
     139begin
     140  Bitmap := TPixmapGray4.Create;
    247141  with Bitmap do begin
    248142    BitsPerPixel := 4;
     
    261155procedure TForm1.TestGray8;
    262156var
    263   Bitmap: TGPixmap<Byte>;
    264 begin
    265   Bitmap := TGPixmap<Byte>.Create;
     157  Bitmap: TPixmapGray8;
     158begin
     159  Bitmap := TPixmapGray8.Create;
    266160  with Bitmap do begin
    267161    Size := Point(100, 100);
     
    279173procedure TForm1.TestGray16;
    280174var
    281   Bitmap: TGPixmap<Word>;
    282 begin
    283   Bitmap := TGPixmap<Word>.Create;
     175  Bitmap: TPixmapGray16;
     176begin
     177  Bitmap := TPixmapGray16.Create;
    284178  with Bitmap do begin
    285179    Size := Point(100, 100);
     
    297191procedure TForm1.TestGray32;
    298192var
    299   Bitmap: TGPixmap<Cardinal>;
    300 begin
    301   Bitmap := TGPixmap<Cardinal>.Create;
     193  Bitmap: TPixmapGray32;
     194begin
     195  Bitmap := TPixmapGray32.Create;
    302196  with Bitmap do begin
    303197    Size := Point(100, 100);
     
    315209procedure TForm1.TestRGB8;
    316210var
    317   Bitmap: TGPixmap<TRGB8>;
    318 begin
    319   Bitmap := TGPixmap<TRGB8>.Create;
    320   with Bitmap do begin
    321     Size := Point(100, 100);
    322     Fill(TRGB8.Create(255, 0, 0));
     211  Bitmap: TPixmapRGB8;
     212begin
     213  Bitmap := TPixmapRGB8.Create;
     214  with Bitmap do begin
     215    Size := Point(100, 100);
     216    Fill(TColorRGB8.Create(255, 0, 0));
    323217    Fill(RGB8Random);
    324     Pixels[0, 0] := TRGB8.Create(1, 1, 1);
     218    Pixels[0, 0] := TColorRGB8.Create(1, 1, 1);
    325219    Canvas.Pen.LineTo(Point(60, 40));
    326220    Image1.Picture.Bitmap.SetSize(Size.X, Size.Y);
     
    333227procedure TForm1.TestRGB16;
    334228var
    335   Bitmap: TGPixmap<TRGB16>;
    336 begin
    337   Bitmap := TGPixmap<TRGB16>.Create;
    338   with Bitmap do begin
    339     Size := Point(100, 100);
    340     Fill(TRGB16.Create($ffff, 0, 0));
     229  Bitmap: TPixmapRGB16;
     230begin
     231  Bitmap := TPixmapRGB16.Create;
     232  with Bitmap do begin
     233    Size := Point(100, 100);
     234    Fill(TColorRGB16.Create($ffff, 0, 0));
    341235    Fill(RGB16Random);
    342     Pixels[0, 0] := TRGB16.Create(1, 1, 1);
     236    Pixels[0, 0] := TColorRGB16.Create(1, 1, 1);
    343237    Canvas.Pen.LineTo(Point(60, 40));
    344238    Image1.Picture.Bitmap.SetSize(Size.X, Size.Y);
     
    351245procedure TForm1.TestGrayVar;
    352246var
    353   Bitmap: TGPixmap<TGrayVar>;
    354 begin
    355   Bitmap := TGPixmap<TGrayVar>.Create;
     247  Bitmap: TPixmapGrayVar;
     248begin
     249  Bitmap := TPixmapGrayVar.Create;
    356250  with Bitmap do begin
    357251    Size := Point(100, 100);
     
    362256    PaintToCanvas(Image1.Picture.Bitmap.Canvas, GrayVarToColor);
    363257    Label1.Caption := IntToStr(GetDataSize);
     258    Free;
     259  end;
     260end;
     261
     262procedure TForm1.TestImage;
     263var
     264  Image: TGImage;
     265  Color: TBColorGray1;
     266begin
     267  Image := TGImage.Create;
     268  with Image do begin
     269    Size := Point(100, 100);
     270    ColorFormat := cfGray1;
     271    Color := TBColorGray1.Create;
     272    Color.Value := 1;
     273    Fill(Color);
     274    Random;
     275    PaintToCanvas(Image1.Picture.Bitmap.Canvas);
    364276    Free;
    365277  end;
     
    384296    7: TestRGB16;
    385297    8: TestGrayVar;
     298    9: TestImage;
    386299  end;
    387300end;
  • branches/gbitmap/project1.lpi

    r18 r19  
    3434      </Item1>
    3535    </RequiredPackages>
    36     <Units Count="4">
     36    <Units Count="5">
    3737      <Unit0>
    3838        <Filename Value="project1.lpr"/>
     
    5454        <IsPartOfProject Value="True"/>
    5555      </Unit3>
     56      <Unit4>
     57        <Filename Value="UPixmapSpecialized.pas"/>
     58        <IsPartOfProject Value="True"/>
     59      </Unit4>
    5660    </Units>
    5761  </ProjectOptions>
  • branches/gbitmap/project1.lpr

    r18 r19  
    88  {$ENDIF}{$ENDIF}
    99  Interfaces, // this includes the LCL widgetset
    10   Forms, UFormMain, GPixmap, GImage
     10  Forms, UFormMain, GPixmap, GImage, UPixmapSpecialized
    1111  { you can add units after this };
    1212
Note: See TracChangeset for help on using the changeset viewer.