OPT PREPROCESS,OSVERSION=39,NOWARN MODULE 'utility','utility/tagitem', 'feelin','libraries/feelin','a4' LIBRARY FC_Image,1,02,'FC_Image class 1.02 (06-02-01) by Olivier Laviale (lotan9@aol.com)' IS class_Info(A0) PROC main() IS sys_SGlob() OBJECT feelinImage imagedisplay ENDOBJECT ->ENDPROC PROC class_Info (feelin:PTR TO feelinbase) feelinbase := feelin utilitybase := feelin.utility SetStdOut(feelin.console) RETURN [FA_SuperID, FC_Area, FA_DataSize, SIZEOF feelinImage, FA_Dispatcher, {class_Dispatcher}, NIL] ENDPROC PROC class_Dispatcher(cl=A2:PTR TO feelinClass,obj=A0:PTR TO feelinImage,method=D0,args=A1:PTR TO LONG) DEF self sys_RGlob() ; self := INST_DATA(cl,obj) SELECT method CASE FM_New; RETURN image_New(cl,obj,self,args) CASE FM_Dispose; image_Dispose(cl,obj,self) CASE FM_Setup; RETURN image_Setup(cl,obj,self,args) CASE FM_Cleanup; image_Cleanup(cl,obj,self) CASE FM_AskMinMax; image_AskMinMax(cl,obj,self) CASE FM_Draw; image_Draw(cl,obj,self,args) DEFAULT RETURN F_SuperDoA(cl,obj,method,args) ENDSELECT ENDPROC ->-- Methods --<------------------------------------------------------------- PROC image_New(cl,obj:PTR TO feelinObject,self:PTR TO feelinImage,tags) self.imagedisplay := F_NewObjA(FC_ImageDisplay,tags) IF F_SuperDoA(cl,obj,FM_New,tags) THEN RETURN obj ENDPROC PROC image_Dispose(cl,obj:PTR TO feelinObject,self:PTR TO feelinImage) self.imagedisplay := F_DisposeObj(self.imagedisplay) F_SuperDoA(cl,obj,FM_Dispose,NIL) ENDPROC PROC image_Setup(cl,obj:PTR TO feelinObject,self:PTR TO feelinImage,s:PTR TO FS_Setup) F_SuperDoA(cl,obj,FM_Setup,s) F_DoA(self.imagedisplay,FM_ImageDisplay_Setup,s) ENDPROC TRUE PROC image_Cleanup(cl,obj:PTR TO feelinObject,data:PTR TO feelinImage) DEF render F_DoA(data.imagedisplay,FM_ImageDisplay_Cleanup,(render := _render(obj)) BUT {render}) F_SuperDoA(cl,obj,FM_Cleanup,NIL) ENDPROC PROC image_AskMinMax(cl,obj:PTR TO feelinObject,self:PTR TO feelinImage) _minw(obj) += F_Get(self.imagedisplay,FA_Image_Width) _minh(obj) += F_Get(self.imagedisplay,FA_Image_Height) F_SuperDoA(cl,obj,FM_AskMinMax,NIL) ENDPROC PROC image_Draw(cl,obj:PTR TO feelinObject,self:PTR TO feelinImage,d:PTR TO FS_Draw) DEF id_Draw:FS_ImageDisplay_Draw,rect:feelinRect IF d.flags = FF_Draw_Update THEN F_SuperDoA(cl,obj,FM_Draw,d) F_Set(self.imagedisplay,FA_Image_State,IF F_Get(obj,FA_Selected) THEN FV_Image_Selected ELSE FV_Image_Normal) IF FF_Draw_Object AND d.flags rect.x1 := _mleft(obj) ; rect.x2 := _mright(obj) rect.y1 := _mtop(obj) ; rect.y2 := _mbottom(obj) id_Draw.rect := rect id_Draw.render := _render(obj) F_DoA(self.imagedisplay,FM_ImageDisplay_Draw,id_Draw) ENDIF ENDPROC ->-- Private --<------------------------------------------------------------- /*PROC Historique 0.00 - 04.02.01 La classe Image.feel est une nouvelle classe, sous classe de Area.feel. Elle est utilisée pour gérer des Image, BitMaps, ImageCode. 1.02 (06-02-01) Ca commence à marcher. Pour l'instant les brosses sont gérées correctement. 1.10 (24-12-01) Grosse mise à jour de la classe due à la classe ImageDisplay. ENDPROC*/