CPoint CTrkObjList::GetAlignVal(int AlignMode,CTrkObj* pObj) const { CPoint Val; CRect Rect; pObj->GetRect(Rect); switch (AlignMode) { case ALIGN_LEFT: { Val.x = Rect.left; Val.y = 0; break; } case ALIGN_TOP: { Val.x = 0; Val.y = Rect.top; break; } case ALIGN_RIGHT: { Val.x = Rect.right; Val.y = 0; break; } case ALIGN_BOTTOM: { Val.x = 0; Val.y = Rect.bottom; break; } case ALIGN_HCENTER: { Val.x = GetMiddle(Rect.left,Rect.right); Val.y = 0; break; } case ALIGN_VCENTER: { Val.x = 0; Val.y = GetMiddle(Rect.top,Rect.bottom); break; } default: { Val.x = 0; Val.y = 0; break; } } return(Val); }
LineSegment LineSegment::PerpendicularLineSegment(double scale) { double angle = GetRadianFromX(); angle += M_PI / 2; Point2d mid = GetMiddle(); double len = GetLength() / 2; len *= scale; double x1 = mid.x + cos(angle) * len; double y1 = mid.y + sin(angle) * len; double x2 = mid.x - cos(angle) * len; double y2 = mid.y - sin(angle) * len; return LineSegment(Point2d(x1, y1), Point2d(x2, y2)); }
void InflRect(LPCRECT pSrcRect,int Off,LPRECT pDstRect) { pDstRect->left = pSrcRect->left - Off; pDstRect->top = pSrcRect->top - Off; pDstRect->right = pSrcRect->right + Off; pDstRect->bottom = pSrcRect->bottom + Off; if (Off < 0) { int XMiddle = GetMiddle(pSrcRect->right,pSrcRect->left); int YMiddle = GetMiddle(pSrcRect->bottom,pSrcRect->top); if (pDstRect->left > XMiddle) pDstRect->left = XMiddle; if (pDstRect->top > YMiddle) pDstRect->top = YMiddle; if (pDstRect->right < XMiddle) pDstRect->right = XMiddle; if (pDstRect->bottom < YMiddle) pDstRect->bottom = YMiddle; } }
CPoint CTrkObjList::GetCenterVal(int CenterMode,LPCRECT pRect) const { CPoint Val; switch (CenterMode) { case CENTER_WIDTH: { Val.x = GetMiddle(pRect->left,pRect->right); Val.y = 0; break; } case CENTER_HEIGHT: { Val.x = 0; Val.y = GetMiddle(pRect->top,pRect->bottom); break; } case CENTER_BOTH: { Val.x = GetMiddle(pRect->left,pRect->right); Val.y = GetMiddle(pRect->top,pRect->bottom); break; } default: { Val.x = 0; Val.y = 0; break; } } return(Val); }
void CFracControlModel::updatePolygons() { params.polygon.front().Set( rect.Left(), rect.Top() + GetMiddle(), rect.Right(), rect.Top() + GetMiddle() ); }
/* 1.21 distance calculates the distance of the center-points of the bounding- boxes of this face to the given face. */ double Face::distance(Face r) { return r.GetMiddle().distance(GetMiddle()); }