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; } }
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; }