unit cdartworkform; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, StdCtrls, bitmapprogress, ExtCtrls,mydialog, picturescroller,jpeg, bitmapactionbutton, TransparentPanel,global; type Tcdartwork = class(TForm) scanpanel: TTransparentPanel; scanlabel: TLabel; selectpanel: TTransparentPanel; selectlabel: TLabel; cancel: TBitmapActionButton; lb: TPictureScroller; progress: TBitmapProgress; procedure FormCreate(Sender: TObject); procedure cancelClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure lbClick(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end; const maximages = 200; var cdartwork: Tcdartwork; pictures : array of string; function getcdartwork : integer; implementation uses empripmain, editmenuform; function getcdartwork : integer; begin cdartwork:=tcdartwork.create(application); result:=cdartwork.showmodal; cdartwork.free; end; {$R *.DFM} function getpics(cddrive : string) : integer; var sr : TSearchRec; pic : TBitmap; jp : TJPEGImage; foundfile : boolean; filecount : integer; n : integer; tr : trect; begin filecount:=0; cdartwork.selectpanel.DoubleBuffered:=true; cdartwork.progress.paint; if cddrive[length(cddrive)]='\' then cddrive:=copy(cddrive,1,2); if findfirst(cddrive+'\*.jpg',(faReadOnly + faHidden),sr)=0 then begin foundfile:=true; while(foundfile=true) do begin inc(filecount); if findnext(sr)<>0 then foundfile:=false; end; end; if filecount=0 then begin findclose(sr); result:=0; exit; end; if filecount<maximages then cdartwork.progress.max:=filecount else cdartwork.progress.max:=maximages; findclose(sr); cdartwork.progress.visible:=true; n:=0; cdartwork.lb.clear; tr.left:=0; tr.right:=100; tr.bottom:=100; tr.top:=0; if findfirst(cddrive+'\*.jpg',faArchive + faReadOnly,sr)=0 then begin foundfile:=true; while(foundfile=true) do begin try inc(n); pic:=Tbitmap.create; pic.PixelFormat:=pf16bit; pic.height:=100; pic.width:=100; jp:=TJPEGImage.create; jp.Loadfromfile(cddrive+'\'+sr.name); pic.Canvas.StretchDraw(tr,jp); cdartwork.lb.add(pic,0); setlength(pictures,n+1); pictures[n]:=cddrive+'\'+sr.name; pic.free; jp.free; except; end; if findnext(sr)<>0 then foundfile:=false; if n>maximages then foundfile:=false; application.processmessages; cdartwork.progress.position:=cdartwork.progress.position+1; end; end; findclose(sr); result:=n; end; procedure Tcdartwork.FormCreate(Sender: TObject); var cdpic : Tbitmap; begin doublebuffered:=true; canvas.Brush.style:=bsClear; sizeform(self,'Get Artwork from CD',false); selectpanel.sourcebitmap:=ripmain.bg.picture.bitmap; scanpanel.sourcebitmap:=ripmain.bg.picture.bitmap; progress.max:=100; progress.left:=self.width div 2 - progress.width div 2; progress.radius:=300; progress.position:=0; progress.startradius:=36; cdpic:=tbitmap.create; cdpic.loadfromresourcename (hinstance,'cd'); progress.assignbackground(cdpic); progress.BringToFront; progress.paint; cdpic.free; lb.across:=7; cancel.font.color:=FONTCOL; cancel.font.name:=DEFAULTFONT; cancel.font.size:=18; cancel.left:=self.width div 2 - cancel.width div 2; scanlabel.left:=self.width div 2 - scanlabel.width div 2; selectlabel.left:=self.width div 2 - selectlabel.width div 2; lb.left:=self.width div 2 - lb.width div 2; selectlabel.Left:=0; selectlabel.width:=self.width; end; procedure Tcdartwork.cancelClick(Sender: TObject); begin modalresult:=mrcancel; end; procedure Tcdartwork.FormActivate(Sender: TObject); var d : string; begin progress.paint; application.processmessages; progress.paint; d:=getfirstcddriveletter; if d='' then d:='z:'; if getpics(d)=0 then begin selectlabel.height:=selectlabel.height*2; selectlabel.caption:='No Pictures found on CD. Check correct CD is inserted.'#13#10'You may need to wait for the CD to spin up.'; lb.visible:=false; end; progress.visible:=false; scanpanel.visible:=false; selectpanel.Visible:=true; end; procedure Tcdartwork.lbClick(Sender: TObject); var bm : tbitmap; tr : trect; jp : tjpegimage; begin bm := tbitmap.create; bm.width:=300; bm.height:=300; tr.top:=0; tr.left:=0; tr.right:=300; tr.bottom:=300; jp:=tjpegimage.create; try jp.loadfromfile(pictures[lb.itemindex+1]); bm.canvas.StretchDraw(tr,jp); apic.Assign(bm); jp.free; bm.free; except end; modalresult:=mrOk; end; procedure Tcdartwork.FormPaint(Sender: TObject); begin dobg(self); end; end.