示例#1
0
RDCol2 SphericalMapping::mapping(const RDMat24 &nodes, const RDCol2 &xieta, int curvedOuter) const {
    // rotate system such that curvedOuter = 2
    const RDMat22 &Q2 = sOrthogQ2[curvedOuter];
    const RDMat24 &nodes2 = Q2 * nodes;
    const RDCol2 &xieta2 = Q2 * xieta;
    // get r and theta
    RDMat24 rtheta2;
    rtheta2.row(0).array() = (nodes2.row(0).array().square() + nodes2.row(1).array().square()).sqrt();
    for (int i = 0; i < 4; i++) {
        rtheta2(1, i) = atan2(nodes2(0, i), nodes2(1, i));
    }
    // copy local variables
    double r0 = rtheta2(0, Mapping::period0123(curvedOuter - 2));
    double r3 = rtheta2(0, Mapping::period0123(curvedOuter + 1));
    double t0 = rtheta2(1, Mapping::period0123(curvedOuter - 2));
    double t1 = rtheta2(1, Mapping::period0123(curvedOuter - 1));
    double t2 = rtheta2(1, Mapping::period0123(curvedOuter - 0));
    double t3 = rtheta2(1, Mapping::period0123(curvedOuter + 1));    
    double xi = xieta2(0);
    double eta = xieta2(1);
    XMath::makeClose(t2, t3);
    XMath::makeClose(t0, t1);
    // compute in new system
    RDCol2 sz2;
    sz2(0) = (1. + eta) * r3 / 2. * sin(((1. - xi) * t3 + (1. + xi) * t2) / 2.) 
           + (1. - eta) * r0 / 2. * sin(((1. - xi) * t0 + (1. + xi) * t1) / 2.);
    sz2(1) = (1. + eta) * r3 / 2. * cos(((1. - xi) * t3 + (1. + xi) * t2) / 2.) 
           + (1. - eta) * r0 / 2. * cos(((1. - xi) * t0 + (1. + xi) * t1) / 2.);  
    // rotate back        
    return Q2.transpose() * sz2;
}
示例#2
0
BOOL CSpermView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
{
	// TODO: Add your message handler code here and/or call default

	CSize sz1=GetTotalSize();
	CRect rect;
	GetClientRect(rect);
	CSize sz2(rect.Width(),rect.Height());
	if(sz1.cy<sz2.cy)
		return CScrollView::OnMouseWheel(nFlags, zDelta, pt);;
	SCROLLINFO si;
	zDelta =  -zDelta;
	GetScrollInfo(SB_VERT,&si);
	si.nPos += zDelta/12;
	SetScrollInfo(SB_VERT,&si);


	CPoint sp=GetScrollPosition();
	CRect rc;
	GetClientRect(rc);
	CDC* pDC=GetDC();
	rc.bottom+=sp.y;
	rc.right+=sp.x;
	pDC->SetViewportOrg(-sp);
	DrawMemDCImage(pDC,rc);
	ReleaseDC(pDC);
	return CScrollView::OnMouseWheel(nFlags, zDelta, pt);
}
示例#3
0
void SizeTest::misc() {
    Ilwis::Size<double> sz(3.45, 2.67, 8.0);

    DOTEST( APPROX(sz.linearSize(), 48,0.001), "volume test");

    Ilwis::Size<> sz2(200,400, 300);
    DOTEST(sz2.contains(24,23,67), "valid contains test");
    DOTEST(sz2.contains(700,23,67) == false, "valid contains test that fails");
}
示例#4
0
Indigo::Render::UILayer::UILayer(Indigo::Render::Window* window, Indigo::UILayer* owner, bool visible, const glm::ivec2& pos, const glm::uvec2& sz) :
		Indigo::Render::UIGroup(visible,pos,sz),
		Indigo::Render::Layer(window),
		m_owner(owner),
		m_dirty(true)
{
	size(sz);
	glm::vec2 sz2(sz);
	m_mvp = glm::ortho(0.f,sz2.x,0.f,sz2.y);
}
示例#5
0
void Indigo::Render::UILayer::on_size(const glm::uvec2& sz)
{
	if (sz != size())
	{
		size(sz);
		glm::vec2 sz2(sz);
		m_mvp = glm::ortho(0.f,sz2.x,0.f,sz2.y);

		Indigo::logic_pipe()->post(OOBase::make_delegate<OOBase::ThreadLocalAllocator>(m_owner,&Indigo::UILayer::on_layout),sz);
	}
}
示例#6
0
Size MenuItem::GetMinSize() const
{
	Size sz1 = GetTextSize(text, font);
	Size sz2(0, 0);
	if(accel) {
		sz2 = GetTextSize(GetKeyDesc(accel), font);
		sz2.cx += Zx(12);
	}
	Size lsz = min(maxiconsize, licon.GetSize());
	Size rsz = ricon.GetSize();
	return AddFrameSize(Size(max(lsz.cx, leftgap) + sz1.cx + max(sz2.cx, (rsz.cx ? Zx(16) : 0))
	                         + max(rsz.cx, Zx(16)) + textgap + Zx(10),
	                         max(max(lsz.cy, rsz.cy) + Zy(4), sz1.cy + Zy(6))));
}
        void reserveMatrices(const Vector& sz)
        {
            typedef typename Vector::value_type vt;

            Vector sz2(sz.size());

            std::transform(sz.begin(), sz.end(), sz2.begin(),
                           boost::bind(std::multiplies<vt>(), _1, _1));

            second_term_.allocate(sz2.begin(), sz2.end());

            std::transform(sz.begin(), sz.end(), sz2.begin(),
                           boost::bind(std::multiplies<vt>(), _1, int(dim)));

            n_.allocate(sz2.begin(), sz2.end());

            std::fill(sz2.begin(), sz2.end(), vt(dim));
            Kg_.allocate(sz2.begin(), sz2.end());
        }
示例#8
0
void CDemoView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	switch (lHint)
	{
	case WM_USER_NEWIMAGE:
		{
			m_tracker.m_rect = CRect(0,0,0,0);

			CDemoDoc* pDoc = GetDocument();
			CxImage*  ima  = pDoc->GetImage();
			if (ima) {
				int px=GetScrollPos(SB_HORZ);
				int py=GetScrollPos(SB_VERT);
				CSize sz(GetTotalSize());
				int x=(int)(ima->GetWidth()*pDoc->GetZoomFactor());
				int y=(int)(ima->GetHeight()*pDoc->GetZoomFactor());
				SetScrollSizes(MM_TEXT,	CSize(x,y));
				CSize sz2(GetTotalSize());

				CWnd* pFrame=GetParentFrame();
				RECT rClient;
				pFrame->GetClientRect(&rClient);

				if (sz.cx!=0 && sz.cy!=0){
					if (x>rClient.right) SetScrollPos(SB_HORZ,sz2.cx*px/sz.cx); else  SetScrollPos(SB_HORZ,0);
					if (y>rClient.bottom) SetScrollPos(SB_VERT,sz2.cy*py/sz.cy); else SetScrollPos(SB_VERT,0);
				}

				if (!(pFrame->IsIconic()||pFrame->IsZoomed())){
					RECT rMainCl,rFrame,rMainFr;
					((CMainFrame *)(AfxGetApp()->m_pMainWnd))->GetClientRect(&rMainCl);
					((CMainFrame *)(AfxGetApp()->m_pMainWnd))->GetWindowRect(&rMainFr);
					pFrame->GetWindowRect(&rFrame);
					pFrame->SetWindowPos(0,0,0,
						(4+rFrame.right-rFrame.left-rClient.right+rClient.left)+
						min(rMainCl.right-(rFrame.left-rMainFr.left+12),x),
						(4+rFrame.bottom-rFrame.top-rClient.bottom+rClient.top)+
						min(rMainCl.bottom-(rFrame.top-rMainFr.top+12),y),
						SWP_NOMOVE|SWP_NOZORDER);
					//ResizeParentToFit(1);
				}

				if (!ima->SelectionIsValid()) KillTimer(1);

#ifdef VATI_EXTENSIONS
				ima->SetJpegQualityF(theApp.m_optJpegQuality);
  #if CXIMAGE_SUPPORT_JPG
				ima->SetCodecOption(theApp.m_optJpegOptions,CXIMAGE_FORMAT_JPG);
  #endif
  #if CXIMAGE_SUPPORT_RAW
				ima->SetCodecOption(theApp.m_optRawOptions,CXIMAGE_FORMAT_RAW);
  #endif
#endif

				CMainFrame* pMain = (CMainFrame*) AfxGetMainWnd();
				if (pMain->m_HistoBar.IsWindowVisible()){
					pDoc->m_hmax=ima->Histogram(pDoc->m_hr,pDoc->m_hg,pDoc->m_hb,pDoc->m_hgray);
					pMain->m_HistoBar.Invalidate();
				} else {
					pDoc->m_hmax = 0;
				}
			}

			break;
		}
	default:
		{
			CDemoDoc* pDoc = GetDocument();
			if (pDoc){
				CxImage*  ima  = pDoc->GetImage();
				if (ima){
					if (pDoc->GetStretchMode()) SetScrollSizes(MM_TEXT,	CSize(0,0));
					else SetScrollSizes(MM_TEXT,CSize((int)(ima->GetWidth()*pDoc->GetZoomFactor()),
													  (int)(ima->GetHeight()*pDoc->GetZoomFactor())));
				}
			}
		}
	}
	CScrollView::OnUpdate(pSender, lHint, pHint);
}
示例#9
0
static void test_CSize()
{
    CSize empty;
    ok(empty.cx == 0, "Expected cx to be 0, was %ld\n", empty.cx);
    ok(empty.cy == 0, "Expected cy to be 0, was %ld\n", empty.cy);

    CSize szPointA(10, 25);

    SIZE sz;
    sz.cx = 10;
    sz.cy = 25;
    CSize szPointB(sz);

    POINT pt;
    pt.x = 10;
    pt.y = 25;
    CSize szPointC(pt);

    CPoint ptObject(10, 25);
    CSize szPointD(ptObject);

    DWORD dw = MAKELONG(10, 25);
    CSize szPointE(dw);

    ok_size(szPointA, szPointB);
    ok_size(szPointB, szPointC);
    ok_size(szPointC, szPointD);
    ok_size(szPointD, szPointE);

    ptObject = szPointA + pt;
    CPoint res(20,50);
    ok_point(ptObject, res);

    ptObject = szPointA - pt;
    res = CPoint(0, 0);
    ok_point(ptObject, res);

    CSize sz1(135, 135);
    CSize sz2(135, 135);
    ok_size(sz1, sz2);

    sz1 = CSize(222, 222);
    sz2 = CSize(111, 111);
    ok(sz1 != sz2, "Wrong size, expected '%s' NOT to equal '%s'\n", wine_dbgstr_size(&sz1), wine_dbgstr_size(&sz2));

    sz1 = CSize(100, 100);
    sz2 = CSize(50, 25);
    sz1 += sz2;

    CSize szResult(150, 125);
    ok_size(sz1, szResult);

    sz1 = CSize(100, 100);
    SIZE sz3;
    sz3.cx = 50;
    sz3.cy = 25;

    sz1 += sz3;
    ok_size(sz1, szResult);

    sz1 = CSize(100, 100);
    sz1 -= sz2;

    szResult = CSize(50, 75);
    ok_size(sz1, szResult);

    sz3.cx = 50;
    sz3.cy = 25;

    sz1 = CSize(100, 100);
    sz1 -= sz3;
    ok_size(sz1, szResult);

    sz1 = CSize(100, 100);
    CSize szOut;
    szOut = sz1 + sz2;

    szResult = CSize(150, 125);
    ok_size(szOut, szResult);

    sz3.cx = 50;
    sz3.cy = 25;

    szOut = sz1 + sz3;
    ok_size(szOut, szResult);

    szOut = sz1 - sz2;

    szResult = CSize(50, 75);
    ok_size(szOut, szResult);

    sz3.cx = 50;
    sz3.cy = 25;

    szOut = sz1 - sz3;
    ok_size(szOut, szResult);

    szResult = CSize(-50, -75);

    szOut = -szOut;
    ok_size(szOut, szResult);

    RECT rc = { 1, 2, 3, 4 };

    CRect rcres = sz1 + &rc;
    CRect rcexp(101, 102, 103, 104);
    ok_rect(rcexp, rcres);

    rcres = sz1 - &rc;
    rcexp = CRect(-99, -98, -97, -96);
    ok_rect(rcexp, rcres);
}