Example #1
0
void Window::GetReloadWindowPos(Rect &oOldRect, int iNewWidth, int iNewHeight, 
                                Rect &oNewRect)
{
    int32 iSizeX, iSizeY;
 
    oNewRect = oOldRect;
    oNewRect.x2 = oNewRect.x1 + iNewWidth;
    oNewRect.y2 = oNewRect.y1 + iNewHeight;

    GetDesktopSize(iSizeX, iSizeY);
    if (oNewRect.x2 > iSizeX)
    {
       oNewRect.x1 -= oNewRect.x2 - iSizeX;
       oNewRect.x2 -= oNewRect.x2 - iSizeX;
    }   
    if (oNewRect.y2 > iSizeY)
    {
       oNewRect.y1 -= oNewRect.y2 - iSizeY;
       oNewRect.y2 -= oNewRect.y2 - iSizeY;
    }
    if (oNewRect.x1 < 0)
    {
       oNewRect.x2 -= oNewRect.x1;
       oNewRect.x1 = 0;
    }   
    if (oNewRect.y1 < 0)
    {
       oNewRect.y2 -= oNewRect.y1;
       oNewRect.y1 = 0;
    }   
   
    if (oOldRect.x2 == iSizeX)
    {
       oNewRect.x2 = iSizeX;
       oNewRect.x1 = iSizeX - iNewWidth;
    }
    if (oOldRect.y2 == iSizeY)
    {
       oNewRect.y2 = iSizeY;
       oNewRect.y1 = iSizeY - iNewHeight;
    }
    if (oOldRect.x1 == 0)
    {
       oNewRect.x1 = 0;
       oNewRect.x2 = iNewWidth;
    }
    if (oOldRect.y2 == 0)
    {
       oNewRect.y1 = 0;
       oNewRect.y2 = iNewHeight;
    }
}
Example #2
0
void Window::HandleMouseLButtonDown(Pos &oScreenPos)
{
    Control *pControl;
    Rect     oRect;
    Pos      oPos;

    IncUsageRef();

    GetWindowPosition(oRect);
    oPos.x = oScreenPos.x - oRect.x1;
    oPos.y = oScreenPos.y - oRect.y1;

    if (m_pCaptureControl)
    {
       m_pCaptureControl->AcceptTransition(CT_MouseLButtonDown, &oPos);
       DecUsageRef();
       return;
    }

    pControl = ControlFromPos(oPos);
    if (pControl && pControl->UseToDragWindow())
       pControl = NULL;

    if (pControl)
    {
       m_bLButtonDown = true;
       if (m_pMouseInControl != pControl) {
           if (m_pMouseInControl)
               m_pMouseInControl->AcceptTransition(CT_MouseLeave);
           m_pMouseInControl = pControl;
           m_pMouseInControl->AcceptTransition(CT_MouseEnter);
       }
       m_pMouseDownControl = pControl;
       pControl->AcceptTransition(CT_MouseLButtonDown, &oPos);
       DecUsageRef();
       return;
    }

#ifdef __QNX__
    DecUsageRef();
    return;
#endif

    m_bWindowMove = true;
#ifndef HAVE_GTK
    CaptureMouse(true);
#endif
       
    GetWindowPosition(m_oMoveStart);
    m_pCanvas->GetBackgroundRect(oRect);
    m_oMoveStart.x2 = m_oMoveStart.x1 + oRect.Width();
    m_oMoveStart.y2 = m_oMoveStart.y1 + oRect.Height();
    m_oMovePos = oScreenPos;

    if (IsError(GetDesktopSize(m_iDesktopWidth, m_iDesktopHeight)))
       m_iDesktopWidth = m_iDesktopHeight = 0;

    DecUsageRef();

    return;
}
static int SVPXXOSD_VideoInit (_THIS, GAL_PixelFormat * vformat)
{
    VIDEO_MODE_INFO info;
#ifndef _SVPXXOSD_8BPP_     
    uint16 *ptrVideo;
#else
    uint8 *ptrVideo;
#endif
    
    XY_SIZE desk_sz;
    //set default mode :16bit graphics display,4CIF capture,CIF encode and CIF decode
    SetW9961Application (AP_GFX_ENC_DEC, BPP_16, FOUR_CIF, CIF, CIF);

    //set display mode
#ifndef _SVPXXOSD_8BPP_     
    SetDisplayMode (MODE_BPP_16);
#else
    SetDisplayMode (MODE_BPP_8);
#endif
    
    if (GetVideoModeInfo (&info) == Successful) {
        printf ("SVPXXOSD: screen width = %d\n", info.vmiScreenWidth);
        printf ("SVPXXOSD: screen height= %d\n", info.vmiScreenHeight);
        printf ("SVPXXOSD: screen bpp   = %d\n", info.vmiBpp);
        printf ("SVPXXOSD: screen stride= %d\n", info.vmiStride);
    }
    else
        goto fail;
    GetDesktopSize(&desk_sz);
    printf("GetDesktopSize(&desk_sz): %dx%d\n",desk_sz.w,desk_sz.h);
    //get graphics display buffer
#ifndef _SVPXXOSD_8BPP_     
    ptrVideo = (uint16 *) GetVideoBaseAddr ();   
#else 
    ptrVideo = (uint8 *) GetVideoBaseAddr ();   
#endif
    
    if (ptrVideo == 0)
        goto fail;

    printf ("SVPXXOSD: graphics base = 0x%lx\n", ptrVideo);
    
    this->hidden->w = info.vmiScreenWidth;
    this->hidden->h = info.vmiScreenHeight;
    this->hidden->pitch = info.vmiStride;
    this->hidden->fb = ptrVideo;

    this->hidden->status = 2;

    if (info.vmiBpp == 16) {
        vformat->BitsPerPixel = 16;
        vformat->BytesPerPixel = 2;
        vformat->Bmask = 0x0000F800;
        vformat->Gmask = 0x000007E0;
        vformat->Rmask = 0x0000001F;
    }
    else if ( info.vmiBpp == 8 ){
        vformat->BitsPerPixel = 8;
        vformat->BytesPerPixel = 1;
        vformat->Bmask = 0xE0;
        vformat->Gmask = 0x1C;
        vformat->Rmask = 0x03;
    }

    /* We're done! */
    return (0);

  fail:
    return -1;
}