//ajusta las ventanas a redimencionarlas verticalmente //se decrementa las anteriores ventanas a la actual y se //incrementan las posteriores. void CGuiControlBar::AjustReDinSize(CPoint point) { int nFirstPos=GetFirstPos(); int nLastPos=GetLastPos(); int m_ThisPos=m_pDockBar->FindBar(this); ClientToScreen(&point); //si la diferencia es negativa esta barra crece la anterior a esta disminuye int nDif=0; BOOL bGrow=FALSE; if (IsVert()) { nDif=m_ptStartPos.y- point.y; if (nDif > 0) bGrow=TRUE; if (bGrow) m_sizeVert.cy+=abs(nDif)+4; else m_sizeVert.cy-=abs(nDif); if (nFirstPos == m_ThisPos) return; } else { nDif=m_ptStartPos.x- point.x; if (nDif < 0) bGrow=TRUE; if (bGrow) m_sizeHorz.cx+=abs(nDif); else m_sizeHorz.cx-=abs(nDif); if (nLastPos == m_ThisPos) return; } if (IsVert()) AjustVert(bGrow,nDif); else AjustHorz(bGrow,nDif); RecalWindowPos(); }
int CGuiControlBar::GetWidthMax() { m_pos=m_pDockBar->FindBar(this); m_Last=GetLastPos(); int nWidth=0; for (int nPos = GetFirstPos(); nPos <= m_Last; nPos++) { CGuiControlBar* pBar = GetGuiControlBar(nPos); if (pBar== NULL) continue; nWidth=max(nWidth,IsVert() ? pBar->m_sizeVert.cx:pBar->m_sizeHorz.cy); } return nWidth; }
void CGuiToolBarWnd::SetRealSize() { CRect rcWinFrame; CRect rcThisBar; int nVisibles=0; int nThis = m_pDockBar->FindBar(this); int nFirst= GetFirstPos(); int nLast= GetLastPos(); UINT m_nDockBarID = m_pDockBar->GetDlgCtrlID(); int nMaxlen=GetHiWid(); int nLen=0; for (int i=nFirst;i <nLast; i++) { CGuiToolBarWnd* pBar; pBar = (CGuiToolBarWnd*) m_pDockBar->m_arrBars[i]; if (HIWORD(pBar) == 0) continue; if (!pBar->IsVisible()) continue; CRect rc; pBar->GetWindowRect(rc); if (IsVert()) nLen+=rc.Height() ; else nLen+= rc.Width() ; nVisibles++; } if ( nLen > nMaxlen) { int nDif=nLen-nMaxlen; } /* if (rcThisBar.Width() > nAfterThis) { if (nVisibles > 0) nAfterThis/=nVisibles; } */ }
void RotateSpriteState::Rotate(const sm::vec2& dst) { ee::RotateSpriteState::Rotate(dst); SkeletonData* skeleton = get_curr_skeleton(); if (!skeleton) { return; } ee::SpriteSelection* selection = GetSelection(); if (selection->IsEmpty()) { return; } std::vector<ee::SprPtr> sprs; selection->Traverse(ee::FetchAllRefVisitor<ee::Sprite>(sprs)); skeleton->FixJoint(sprs[0]); float dAngle = sm::get_angle_in_direction(sprs[0]->GetPosition(), GetLastPos(), dst); skeleton->UpdateJoint(sprs[0], dAngle); }
//esta rutina dispone de la posición en el Dockbar de la pila de ventanas void CGuiControlBar::RecalWindowPos() { int m_First=GetFirstPos(); int m_Last=GetLastPos(); int m_This=m_pDockBar->FindBar(this); CRect rcWin=GetDockRect(); int m_VertPos=0; for(int i=m_First; i<= m_Last; i++) { CGuiControlBar* pBar = GetGuiControlBar(i); if (pBar == NULL) continue; CRect rcBar; pBar->GetWindowRect(rcBar); rcBar.OffsetRect(-rcWin.TopLeft()); if (IsVert()) { if (i==m_First) rcBar.top=-2; else rcBar.top=m_VertPos; } else { if (i==m_First) rcBar.left=-2; else rcBar.left=m_VertPos; } pBar->MoveWindow(rcBar); m_VertPos+=IsVert()? rcBar.Height():rcBar.Width(); } m_pDockSite->RecalcLayout(); }
void CGuiControlBar::AjustHorz(BOOL bGrow,int nDif) { int nFirstPos=GetFirstPos(); int nLastPos=GetLastPos(); int m_ThisPos=m_pDockBar->FindBar(this); if(m_SideMove==HTRIGHT) { //Esta ventana crece las anteriores reducen su tamaño if (bGrow) { for (int i=m_ThisPos+1; i <= nLastPos; i++) { CGuiControlBar* pBar = GetGuiControlBar(i); if (pBar== NULL) return; if(IsHorz()) { if (pBar->m_sizeHorz.cx-abs(nDif) < pBar->m_sizeMinH.cx) { pBar->m_sizeHorz.cx=pBar->m_sizeMinH.cx; continue; } else { pBar->m_sizeHorz.cx-=abs(nDif); break; } } }//for }//bGrow else //este disminuye la anterior crece { if (m_ThisPos+1 <= m_Last) { CGuiControlBar* pBar = GetGuiControlBar(m_ThisPos+1); if (pBar== NULL) return; pBar->m_sizeHorz.cx+=abs(nDif); if(m_sizeHorz.cx > m_sizeMinH.cx) return; else pBar->m_sizeHorz.cx+=abs(nDif); } for (int i=m_ThisPos-1; i >0; i--) { CGuiControlBar* pBar = GetGuiControlBar(i); if (pBar== NULL) return; if(IsHorz()) { if (pBar->m_sizeHorz.cx-abs(nDif) < pBar->m_sizeMinH.cx) continue; else { pBar->m_sizeHorz.cx-=abs(nDif); return; } } }//for } } }
void CGuiControlBar::AjustVert(BOOL bGrow,int nDif) { int nFirstPos=GetFirstPos(); int nLastPos=GetLastPos(); int m_ThisPos=m_pDockBar->FindBar(this); if(m_SideMove==HTTOP) { //Esta ventana crece las anteriores reducen su tamaño if (bGrow) { for (int i=m_ThisPos-1; i > 0; i--) { CGuiControlBar* pBar = GetGuiControlBar(i); if (pBar== NULL) return; if(IsVert()) { if (pBar->m_sizeVert.cy-abs(nDif) < pBar->m_sizeMinV.cy) { pBar->m_sizeVert.cy=pBar->m_sizeMinV.cy; continue; } else { pBar->m_sizeVert.cy-=abs(nDif); break; } } }//for }//bGrow else //este disminuye la anterior crece { if (m_ThisPos-1 > 0) { CGuiControlBar* pBar = GetGuiControlBar(m_ThisPos-1); if (pBar== NULL) return; pBar->m_sizeVert.cy+=abs(nDif); if(m_sizeVert.cy > m_sizeMinV.cy) return; else pBar->m_sizeVert.cy-=m_sizeMinV.cy; } for (int i=m_ThisPos+1; i >= m_Last; i++) { CGuiControlBar* pBar = GetGuiControlBar(i); if (pBar== NULL) return; if(IsVert()) { if (pBar->m_sizeVert.cy-abs(nDif) < pBar->m_sizeMinV.cy) continue; else { pBar->m_sizeVert.cy-=abs(nDif); return; } } }//for } } }