www.pudn.com > RotateByShear_demo.zip > DIB.inl


inline void CDIB::WritePixel (UINT x,UINT y,COLORREF c) 
{ 
    m_Bits[x + y * m_Size.cx] = c; 
} 
 
inline CDIB::CDIB () 
{ 
    m_Bits=NULL; 
    m_Bitmap=NULL; 
    m_Size=CSize ( 0, 0 ); 
} 
 
inline CDIB::~CDIB () 
{ 
    Destroy (); 
} 
 
inline void CDIB::PasteToDC ( CDC *pDC, int x, int y ) 
{ 
    // x,y - the DC coordinates to start from 
    SetDIBitsToDevice ( pDC->m_hDC, x, y, m_Size.cx, m_Size.cy, 0, 0, 0, m_Size.cy, m_Bits, &m_Info, 0);  
} 
 
inline void CDIB::GetFromBitmap ( CDC *pDC, CBitmap *pBitmap ) 
{ 
    if ( m_Bitmap ) 
        GetDIBits ( pDC->m_hDC, HBITMAP(*pBitmap), 0, m_Size.cy, m_Bits, &(m_Info), DIB_RGB_COLORS );  
} 
 
inline void CDIB::CopyTo ( CDIB *Dib ) 
{ 
    // If DibSize Wrong Re-Create Dib 
    if ( (Dib->m_Size.cx!=m_Size.cx) || (Dib->m_Size.cy!=m_Size.cy) ) 
        Dib->Create ( m_Size.cx, m_Size.cy ); 
    // do Copy 
    memcpy ( Dib->m_Bits, m_Bits, m_Size.cx*m_Size.cy*4 ); 
} 
 
inline void CDIB::CopyFrom ( const CDIB *Dib ) 
{ 
    // If DibSize Wrong Re-Create Dib 
    if ( (m_Size.cx!=Dib->m_Size.cx) || (m_Size.cy!=Dib->m_Size.cy) ) 
        Create ( Dib->m_Size.cx, Dib->m_Size.cx ); 
    // do Paste 
    memcpy ( m_Bits, Dib->m_Bits, m_Size.cx*m_Size.cy*4 ); 
} 
 
inline COLORREF & 
CDIB::ColorAt (int x, int y) 
{ 
    ASSERT ((x >= 0) && (x <= m_Size.cx) && 
            (y >= 0) && (y <= m_Size.cy)); 
    return m_Bits[x + y * m_Size.cx]; 
}     
 
inline BOOL  
CDIB::operator != (const CDIB &dib) const 
{ 
    return !(*this == dib); 
}