home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / c-tools / c_examples / picturedt / picturedt.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-16  |  2.4 KB  |  82 lines

  1. //////////////////////////////////////////////////////////////////////////////
  2. // PictureDT.cpp
  3. //
  4. // Deryk Robosson
  5. // March 16, 1996
  6. //////////////////////////////////////////////////////////////////////////////
  7.  
  8. //////////////////////////////////////////////////////////////////////////////
  9. // INCLUDES
  10. #include "aframe:include/PictureDT.hpp"
  11.  
  12. //////////////////////////////////////////////////////////////////////////////
  13. //
  14.  
  15. AFPictureDT::AFPictureDT()
  16. {
  17. }
  18.  
  19. AFPictureDT::~AFPictureDT()
  20. {
  21. }
  22.  
  23. // Create new object from file or clipboard
  24. BOOL AFPictureDT::LoadPicture(char *file_name)
  25. {
  26.     if(m_dtGlobal.o != NULL) {
  27.         if(m_dtGlobal.dtAdded)
  28.             RemoveObject();
  29.         DisposeDTObject(m_dtGlobal.o);
  30.         delete m_dtGlobal.o;
  31.         m_dtGlobal.o=NULL;
  32.     }
  33.  
  34.     if(!(IsDataType(file_name)))
  35.         return FALSE;
  36.  
  37.     if(m_dtGlobal.o=NewDTObject(file_name, DTA_SourceType, DTST_FILE,
  38.                                 DTA_GroupID, GID_PICTURE,
  39.                                 GA_Immediate, TRUE,
  40.                                 GA_RelVerify, TRUE,
  41.                                 PDTA_Remap, TRUE,
  42.                                 ICA_TARGET, ICTARGET_IDCMP,
  43.                                 TAG_DONE)) {
  44.  
  45.         m_dtGlobal.gpl.MethodID = DTM_PROCLAYOUT;
  46.         m_dtGlobal.gpl.gpl_GInfo = NULL;
  47.         m_dtGlobal.gpl.gpl_Initial = 1;
  48.  
  49.         if(!DoMethodA(m_dtGlobal.o,(Msg)&m_dtGlobal.gpl))
  50.             return FALSE;
  51.  
  52.         if(!(GetDTAttrs(m_dtGlobal.o,PDTA_BitMapHeader,&m_dtPicture.bmhd,
  53.                           PDTA_BitMap, &m_dtPicture.bmap,
  54.                           PDTA_ModeID, &m_dtPicture.display_ID,
  55.                           PDTA_NumColors, &m_dtPicture.numcolors,
  56.                           PDTA_CRegs, &m_dtPicture.cregs, TAG_DONE)))
  57.                             return FALSE;
  58.     } else return FALSE;
  59.     return TRUE;
  60. }
  61.  
  62. // Fill screen color map
  63. BOOL AFPictureDT::LoadCMap(struct Screen *screen)
  64. {
  65.     ULONG i, r, g, b;
  66.  
  67.     if(!screen)
  68.         return FALSE;
  69.     else {
  70.         if(m_dtPicture.cregs) {
  71.             m_dtPicture.numcolors = 2 << (screen->RastPort.BitMap->Depth - 1);
  72.             for(i=0;i<m_dtPicture.numcolors;i++) {
  73.                 r=m_dtPicture.cregs[i * 3 + 0];
  74.                 g=m_dtPicture.cregs[i * 3 + 1];
  75.                 b=m_dtPicture.cregs[i * 3 + 2];
  76.                 SetRGB32(&screen->ViewPort,i,r,g,b);
  77.             }
  78.         } else return FALSE;
  79.     }
  80.     return TRUE;
  81. }
  82.