pximage.h

来自「symbian 下的helix player源代码」· C头文件 代码 · 共 595 行 · 第 1/2 页

H
595
字号
    ~PXImageIteratorBTRL() {};

    PXImageIterator& operator ++ ();
};

inline PXImageIterator::PXImageIterator(PXImage* pImg, INT32 lX, INT32 lY)
{
    HX_ASSERT(pImg);
    m_pImage = pImg;
    m_lX     = lX;
    m_lY     = lY;
    if (m_lX >= 0 && m_lX < m_pImage->GetWidth() &&
        m_lY >= 0 && m_lY < m_pImage->GetHeight())
    {
        m_pPixel = (UINT32*) m_pImage->GetPixel(m_lX, m_lY);
    }
    else
    {
        m_pPixel = NULL;
    }
    m_pImage->AddRef();
}

inline PXImageIterator::~PXImageIterator()
{
    HX_RELEASE(m_pImage);
}

inline BOOL PXImageIterator::operator == (const PXImageIterator& itr)
{
    BOOL bRet = FALSE;
    if (m_pImage == itr.m_pImage &&
        m_lX     == itr.m_lX     &&
        m_lY     == itr.m_lY)
    {
        bRet = TRUE;
    }
    return bRet;
}

inline BOOL PXImageIterator::operator != (const PXImageIterator& itr)
{
    return !(*this == itr);
}

inline UINT32& PXImageIterator::operator * ()
{
    HX_ASSERT(m_pPixel);
    return *m_pPixel;
}

inline UINT32& PXImageIterator::GetPixel()
{
    HX_ASSERT(m_pPixel);
    return *m_pPixel;
}

inline PXImageIterator& PXImageIteratorLRTB::operator ++ ()
{
    if (m_lX >= 0 && m_lX < m_pImage->GetWidth() &&
        m_lY >= 0 && m_lY < m_pImage->GetHeight())
    {
        m_lX++;
        if (m_lX < m_pImage->GetWidth())
        {
            m_pPixel++;
        }
        else
        {
            m_lY++;
            if (m_lY < m_pImage->GetHeight())
            {
                m_lX     = 0;
                m_pPixel = (UINT32*) m_pImage->GetPixel(m_lX, m_lY);
            }
        }
    }
    return *this;
}

inline PXImageIterator& PXImageIteratorLRBT::operator ++ ()
{
    if (m_lX >= 0 && m_lX < m_pImage->GetWidth() &&
        m_lY >= 0 && m_lY < m_pImage->GetHeight())
    {
        m_lX++;
        if (m_lX < m_pImage->GetWidth())
        {
            m_pPixel++;
        }
        else
        {
            m_lY--;
            if (m_lY >= 0)
            {
                m_lX     = 0;
                m_pPixel = (UINT32*) m_pImage->GetPixel(m_lX, m_lY);
            }
            else
            {
                m_lX = m_pImage->GetWidth();
                m_lY = m_pImage->GetHeight();
            }
        }
    }
    return *this;
}

inline PXImageIterator& PXImageIteratorRLTB::operator ++ ()
{
    if (m_lX >= 0 && m_lX < m_pImage->GetWidth() &&
        m_lY >= 0 && m_lY < m_pImage->GetHeight())
    {
        m_lX--;
        if (m_lX >= 0)
        {
            m_pPixel--;
        }
        else
        {
            m_lY++;
            if (m_lY < m_pImage->GetHeight())
            {
                m_lX     = m_pImage->GetWidth() - 1;
                m_pPixel = (UINT32*) m_pImage->GetPixel(m_lX, m_lY);
            }
            else
            {
                m_lX = m_pImage->GetWidth();
                m_lY = m_pImage->GetHeight();
            }
        }
    }
    return *this;
}

inline PXImageIterator& PXImageIteratorRLBT::operator ++ ()
{
    if (m_lX >= 0 && m_lX < m_pImage->GetWidth() &&
        m_lY >= 0 && m_lY < m_pImage->GetHeight())
    {
        m_lX--;
        if (m_lX >= 0)
        {
            m_pPixel--;
        }
        else
        {
            m_lY--;
            if (m_lY >= 0)
            {
                m_lX     = m_pImage->GetWidth() - 1;
                m_pPixel = (UINT32*) m_pImage->GetPixel(m_lX, m_lY);
            }
            else
            {
                m_lX = m_pImage->GetWidth();
                m_lY = m_pImage->GetHeight();
            }
        }
    }
    return *this;
}

inline PXImageIterator& PXImageIteratorTBLR::operator ++ ()
{
    if (m_lX >= 0 && m_lX < m_pImage->GetWidth() &&
        m_lY >= 0 && m_lY < m_pImage->GetHeight())
    {
        m_lY++;
        if (m_lY < m_pImage->GetHeight())
        {
            m_pPixel += m_pImage->GetRowJump32();
        }
        else
        {
            m_lX++;
            if (m_lX < m_pImage->GetWidth())
            {
                m_lY     = 0;
                m_pPixel = (UINT32*) m_pImage->GetPixel(m_lX, m_lY);
            }
            else
            {
                m_lX = m_pImage->GetWidth();
                m_lY = m_pImage->GetHeight();
            }
        }
    }
    return *this;
}

inline PXImageIterator& PXImageIteratorTBRL::operator ++ ()
{
    if (m_lX >= 0 && m_lX < m_pImage->GetWidth() &&
        m_lY >= 0 && m_lY < m_pImage->GetHeight())
    {
        m_lY++;
        if (m_lY < m_pImage->GetHeight())
        {
            m_pPixel += m_pImage->GetRowJump32();
        }
        else
        {
            m_lX--;
            if (m_lX >= 0)
            {
                m_lY     = 0;
                m_pPixel = (UINT32*) m_pImage->GetPixel(m_lX, m_lY);
            }
            else
            {
                m_lX = m_pImage->GetWidth();
                m_lY = m_pImage->GetHeight();
            }
        }
    }
    return *this;
}

inline PXImageIterator& PXImageIteratorBTLR::operator ++ ()
{
    if (m_lX >= 0 && m_lX < m_pImage->GetWidth() &&
        m_lY >= 0 && m_lY < m_pImage->GetHeight())
    {
        m_lY--;
        if (m_lY >= 0)
        {
            m_pPixel -= m_pImage->GetRowJump32();
        }
        else
        {
            m_lX++;
            if (m_lX < m_pImage->GetWidth())
            {
                m_lY     = m_pImage->GetHeight() - 1;
                m_pPixel = (UINT32*) m_pImage->GetPixel(m_lX, m_lY);
            }
            else
            {
                m_lX = m_pImage->GetWidth();
                m_lY = m_pImage->GetHeight();
            }
        }
    }
    return *this;
}

inline PXImageIterator& PXImageIteratorBTRL::operator ++ ()
{
    if (m_lX >= 0 && m_lX < m_pImage->GetWidth() &&
        m_lY >= 0 && m_lY < m_pImage->GetHeight())
    {
        m_lY--;
        if (m_lY >= 0)
        {
            m_pPixel -= m_pImage->GetRowJump32();
        }
        else
        {
            m_lX--;
            if (m_lX >= 0)
            {
                m_lY     = m_pImage->GetHeight() - 1;
                m_pPixel = (UINT32*) m_pImage->GetPixel(m_lX, m_lY);
            }
            else
            {
                m_lX = m_pImage->GetWidth();
                m_lY = m_pImage->GetHeight();
            }
        }
    }
    return *this;
}

#define GETALPHA32(p)        ( (p)               >> 24)
#define GETRED32(p)          (((p) & 0x00FF0000) >> 16)
#define GETGREEN32(p)        (((p) & 0x0000FF00) >>  8)
#define GETBLUE32(p)         ( (p) & 0x000000FF       )
#define BLENDMULT(A,B,a)     (((A)*(a) + (B)*(256-(a))) >> 8)
#define ALPHA_EXACT(A,B,a)   ((((A)*(a) + (B)*(255-(a))) + 127) / 255)
#define ALPHABLEND(A,B,a)    (((A)*(a) + (B)*(256-(a)) + 128) >> 8)
#define MAKEPIXEL32(r,g,b)   (((r) << 16) | ((g) << 8) | (b))
#define MAKE_RGB32(r,g,b)    (((r) << 16) | ((g) << 8) | (b))
#define MAKE_RGBA32(r,g,b,a) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))

#define FILTER_OUT_UNSUPPORTED_FORMATS      \
if (m_cBitmapInfo.biBitCount != 32 ||       \
    m_cBitmapInfo.biCompression != HX_RGB) \
{                                           \
    HX_ASSERT(FALSE);                       \
    return HXR_FAIL;                        \
}

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?