home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 12 / MA_Cover_12.iso / datatypes / picturedt / pictdt.e < prev    next >
Encoding:
Text File  |  1999-05-10  |  2.8 KB  |  116 lines

  1. OPT MODULE
  2. OPT EXPORT
  3.  
  4. /*
  5.  * This module is for display pictures
  6.  * by means of PictureDT.datatype
  7.  * Module displaying ex.: JPG,GIF,BMP,IFF
  8.  *
  9.  * PictDT v1.0 - written by Krzysztof Cmok
  10.  * module is written in day 10-Apr-99
  11.  *
  12.  */
  13.  
  14. MODULE    'datatypes/datatypesclass'    -> definicje...
  15. MODULE    'datatypes/pictureclass'    -> object 'bitmapheader'
  16. MODULE    'intuition/classes'        -> object struct ;)
  17. MODULE  'intuition/gadgetclass'        -> gplayout
  18. MODULE    'amigalib/boopsi'        -> dla domethod
  19. MODULE    'intuition/screens'        -> screen
  20. MODULE    'graphics/gfx'            -> bitmap
  21. MODULE    'datatypes'            -> wiadomo co
  22. MODULE    'graphics/view'            -> OBP_PRECISION
  23.  
  24. OBJECT picturedt
  25.     bmhd:PTR TO bitmapheader    ->- format and informations
  26.     bmap:PTR TO bitmap        ->- bitmap
  27.     obj:PTR TO object        ->- objekt
  28.     scr:PTR TO screen
  29.     remap:PTR TO LONG
  30.     ->-infosy
  31.     nrcolors:PTR TO LONG        ->- ilosc kolorow w palecie obrazka.
  32.     modeid:PTR TO LONG        ->- rozdzielczosc.
  33.     palette:PTR TO LONG        ->- paleta kolorow.
  34. ENDOBJECT
  35.  
  36. ->- procedure for open file...
  37. PROC loadpicture(filename) OF picturedt
  38. DEF bm:PTR TO bitmap,bh:PTR TO bitmapheader
  39. DEF nrcols,modeid,regs
  40.  
  41.     IF (datatypesbase:=OpenLibrary('datatypes.library',0))=0 THEN RETURN 0
  42.     
  43.     self.obj:=NewDTObjectA(filename,
  44.                 [DTA_SOURCETYPE, DTST_FILE,
  45.                  DTA_GROUPID,     $70696374,        -> ID: pict
  46.                  PDTA_FREESOURCEBITMAP,    TRUE,
  47.                  PDTA_REMAP,     self.remap,
  48.                  PDTA_SCREEN,     self.scr,
  49.                  OBP_PRECISION,     PRECISION_IMAGE,0])
  50.  
  51.     doMethodA(self.obj,[DTM_PROCLAYOUT,NIL,1]:gplayout);
  52.     GetDTAttrsA(self.obj,[PDTA_BITMAPHEADER,{bh},PDTA_DESTBITMAP,{bm},
  53.                 PDTA_NUMCOLORS,{nrcols},PDTA_MODEID,{modeid},
  54.                     PDTA_CREGS,{regs},0]);
  55.     IF bm=0 THEN GetDTAttrsA(self.obj,[PDTA_BITMAP,{bm},0]);
  56.     IF bm=0 THEN RETURN 0
  57.     self.bmhd:=bh;
  58.     self.bmap:=bm;
  59.     self.nrcolors:=nrcols;
  60.     self.modeid:=modeid;
  61.     self.palette:=regs;
  62. ENDPROC -1
  63.  
  64. ->- loadpalette
  65. PROC palette() OF picturedt
  66. DEF i,r,g,b
  67.  
  68. IF (self.scr)=0
  69.     RETURN 0
  70. ELSE
  71.     self.nrcolors:=Shl(2,self.scr.bitmap.depth-1);
  72.     FOR i:=0 TO self.nrcolors
  73.         r:=self.palette[i * 3 + 0];
  74.         g:=self.palette[i * 3 + 1];
  75.         b:=self.palette[i * 3 + 2];
  76.         SetRGB32(self.scr.viewport,i,r,g,b);
  77.     ENDFOR
  78. ENDIF
  79. ENDPROC -1
  80.  
  81. ->- dispose
  82. PROC dispose() OF picturedt
  83.     WaitBlit()
  84.     DisposeDTObject(self.obj)
  85.     Dispose(self.obj)
  86.     CloseLibrary(datatypesbase);
  87.     self.obj:=0;
  88. ENDPROC -1
  89.  
  90. /* SIMPLE PROGRAM FOR TEST!!!
  91.  ****************************
  92.  
  93. PROC main()
  94. DEF w,pdt:PTR TO picturedt,s:PTR TO screen
  95.  
  96. s:=OpenS(640,200,8,V_HIRES,0,[SA_PENS,[$FFFF]:INT,NIL])
  97. w:=OpenW(0,0,640,200,0,0,NIL,s,$f,0);
  98. datatypesbase:=OpenLibrary('datatypes.library',0)
  99.  
  100. NEW pdt
  101.  
  102. pdt.scr:=s;
  103. pdt.loadpicture('dev:lc/charts/aframev02/examples/picturedt/pictures/toystry1.gif')
  104. pdt.palette()
  105.  
  106. BltBitMapRastPort(pdt.bmap,0,0,stdrast,0,0,pdt.bmhd.width,pdt.bmhd.height,$c0);
  107.  
  108. WaitLeftMouse(w)
  109. pdt.dispose()
  110. CloseLibrary(datatypesbase)
  111. CloseW(w)
  112. CloseS(s)
  113. ENDPROC
  114.  
  115. */
  116.