Пример #1
0
CtrlImage::CtrlImage( intf_thread_t *pIntf, GenericBitmap &rBitmap,
                      CmdGeneric &rCommand, resize_t resizeMethod,
                      const UString &rHelp, VarBool *pVisible, bool art ):
    CtrlFlat( pIntf, rHelp, pVisible ),
    m_pBitmap( &rBitmap ), m_pOriginalBitmap( &rBitmap ),
    m_rCommand( rCommand ), m_resizeMethod( resizeMethod ), m_art( art ),
    m_x( 0 ), m_y( 0 )
{
    if( m_art )
    {
        // art file if any will overwrite the original image
        VlcProc *pVlcProc = VlcProc::instance( getIntf() );
        ArtManager* pArtManager = ArtManager::instance( getIntf() );

        // add observer
        pVlcProc->getStreamArtVar().addObserver( this );

        // retrieve initial state of art file
        std::string str = pVlcProc->getStreamArtVar().get();
        GenericBitmap* pArt = (GenericBitmap*) pArtManager->getArtBitmap( str );
        if( pArt )
        {
            m_pBitmap = pArt;
            msg_Dbg( getIntf(), "art file %s to be displayed (wxh = %ix%i)",
                str.c_str(), m_pBitmap->getWidth(), m_pBitmap->getHeight() );
        }
    }

    // Create the initial image
    m_pImage = OSFactory::instance( getIntf() )->createOSGraphics(
                                    m_pBitmap->getWidth(),
                                    m_pBitmap->getHeight() );
    m_pImage->drawBitmap( *m_pBitmap );
}
Пример #2
0
void CtrlImage::onUpdate( Subject<VarString> &rVariable, void* arg )
{
    (void)arg;
    VlcProc *pVlcProc = VlcProc::instance( getIntf() );

    if( &rVariable == &pVlcProc->getStreamArtVar() )
    {
        std::string str = ((VarString&)rVariable).get();
        ArtManager* pArtManager = ArtManager::instance( getIntf() );
        GenericBitmap* pArt = (GenericBitmap*) pArtManager->getArtBitmap( str );

        m_pBitmap = pArt ? pArt : m_pOriginalBitmap;
        msg_Dbg( getIntf(), "art file %s to be displayed (wxh = %ix%i)",
                            str.c_str(),
                            m_pBitmap->getWidth(),
                            m_pBitmap->getHeight() );

        delete m_pImage;
        m_pImage = OSFactory::instance( getIntf() )->createOSGraphics(
                                        m_pBitmap->getWidth(),
                                        m_pBitmap->getHeight() );
        m_pImage->drawBitmap( *m_pBitmap );

        notifyLayout();
    }
}
Пример #3
0
CtrlImage::~CtrlImage()
{
    delete m_pImage;

    if( m_art )
    {
        VlcProc *pVlcProc = VlcProc::instance( getIntf() );
        pVlcProc->getStreamArtVar().delObserver( this );
    }
}