Beispiel #1
0
void RS_DimDiametric::moveRef(const RS_Vector& ref, const RS_Vector& offset) {

    if (ref.distanceTo(edata.definitionPoint)<1.0e-4) {
				RS_Vector c = (edata.definitionPoint + data.definitionPoint)/2.0;
                double d = c.distanceTo(edata.definitionPoint);
                double a = c.angleTo(edata.definitionPoint + offset);

				RS_Vector v = RS_Vector::polar(d, a);
        edata.definitionPoint = c + v;
				data.definitionPoint = c - v;
                updateDim(true);
    }
	else if (ref.distanceTo(data.definitionPoint)<1.0e-4) {
				RS_Vector c = (edata.definitionPoint + data.definitionPoint)/2.0;
				double d = c.distanceTo(data.definitionPoint);
				double a = c.angleTo(data.definitionPoint + offset);

				RS_Vector v = RS_Vector::polar(d, a);
		data.definitionPoint = c + v;
                edata.definitionPoint = c - v;
                updateDim(true);
    }
        else if (ref.distanceTo(data.middleOfText)<1.0e-4) {
        data.middleOfText.move(offset);
                updateDim(false);
    }
}
void CRSAFactorHintDlg::OnRadiochoice() 
{
	UpdateData();
	bool b=(m_choice==0);
	((CEdit*)GetDlgItem(IDC_EDITN))->SetReadOnly(!b);
	((CEdit*)GetDlgItem(IDC_EDITGUESSP_LEFT))->SetReadOnly(!b);
	((CEdit*)GetDlgItem(IDC_EDITGUESSP_RIGHT))->SetReadOnly(!b);
	((CEdit*)GetDlgItem(IDC_EDITBITSOFN))->SetReadOnly(b);
	((CEdit*)GetDlgItem(IDC_EDITB))->SetReadOnly(b);
	GetDlgItem(IDC_R)->EnableWindow(!b);
	GetDlgItem(IDC_BUTTONDEFAULT)->EnableWindow(!b);
	m_N=to_ZZ(0);
	m_p=to_ZZ(0);
	m_GuessP=to_ZZ(0);
	updateNP();
	if(b){//user values
		SetDlgItemText(IDC_EDITBITSOFN,"200");
		SetDlgItemText(IDC_EDITBITSOFP,"");
		SetDlgItemText(IDC_EDITB,"");
	}else{
		SetDlgItemText(IDC_EDITBITSOFN,"200");
		SetDlgItemText(IDC_EDITBITSOFP,"100");
		SetDlgItemText(IDC_EDITB,"80");
	}
	UpdateData(false);
	updateDim();
}
Beispiel #3
0
void RS_DimRadial::moveRef(const RS_Vector& ref, const RS_Vector& offset) {

    if (ref.distanceTo(edata.definitionPoint)<1.0e-4) {
				double d = data.definitionPoint.distanceTo(edata.definitionPoint);
				double a = data.definitionPoint.angleTo(edata.definitionPoint + offset);

                RS_Vector v;
                v.setPolar(d, a);
		edata.definitionPoint = data.definitionPoint + v;
                updateDim(true);
    }
        else if (ref.distanceTo(data.middleOfText)<1.0e-4) {
        data.middleOfText.move(offset);
                updateDim(false);
    }
}
void RS_DimAligned::moveRef(const RS_Vector& ref, const RS_Vector& offset) {

	if (ref.distanceTo(data.definitionPoint)<1.0e-4) {
				RS_ConstructionLine l(nullptr,
                        RS_ConstructionLineData(edata.extensionPoint1,
                                edata.extensionPoint2));
				double d = l.getDistanceToPoint(data.definitionPoint+offset);
				double a = edata.extensionPoint2.angleTo(data.definitionPoint);
                double ad = RS_Math::getAngleDifference(a,
						edata.extensionPoint2.angleTo(data.definitionPoint+offset));

				if (fabs(ad)>M_PI_2 && fabs(ad)<3.0/2.0*M_PI) {
                        a = RS_Math::correctAngle(a+M_PI);
                }

				RS_Vector v = RS_Vector::polar(d, a);
		data.definitionPoint = edata.extensionPoint2 + v;
                updateDim(true);
    }
        else if (ref.distanceTo(data.middleOfText)<1.0e-4) {
        data.middleOfText.move(offset);
                updateDim(false);
    }
        else if (ref.distanceTo(edata.extensionPoint1)<1.0e-4) {
                double a1 = edata.extensionPoint2.angleTo(edata.extensionPoint1);
                double a2 = edata.extensionPoint2.angleTo(edata.extensionPoint1+offset);
                double d1 = edata.extensionPoint2.distanceTo(edata.extensionPoint1);
                double d2 = edata.extensionPoint2.distanceTo(edata.extensionPoint1+offset);
                rotate(edata.extensionPoint2, a2-a1);
                if (fabs(d1)>1.0e-4) {
                        scale(edata.extensionPoint2, RS_Vector(d2/d1, d2/d1));
                }
                updateDim(true);
    }
        else if (ref.distanceTo(edata.extensionPoint2)<1.0e-4) {
                double a1 = edata.extensionPoint1.angleTo(edata.extensionPoint2);
                double a2 = edata.extensionPoint1.angleTo(edata.extensionPoint2+offset);
                double d1 = edata.extensionPoint1.distanceTo(edata.extensionPoint2);
                double d2 = edata.extensionPoint1.distanceTo(edata.extensionPoint2+offset);
                rotate(edata.extensionPoint1, a2-a1);
                if (fabs(d1)>1.0e-4) {
                        scale(edata.extensionPoint1, RS_Vector(d2/d1, d2/d1));
                }
                updateDim(true);
    }
}
void CRSAFactorHintDlg::OnChangeEditb() 
{
	UpdateData();
	if(m_choice==1){
		updateP();
	}

	updateDim();
}
Beispiel #6
0
void RS_DimLinear::moveRef(const RS_Vector& ref, const RS_Vector& offset) {

	if (ref.distanceTo(data.definitionPoint)<1.0e-4) {
		data.definitionPoint += offset;
                updateDim(true);
    }
        else if (ref.distanceTo(data.middleOfText)<1.0e-4) {
        data.middleOfText += offset;
                updateDim(false);
    }
        else if (ref.distanceTo(edata.extensionPoint1)<1.0e-4) {
        edata.extensionPoint1 += offset;
                updateDim(true);
    }
        else if (ref.distanceTo(edata.extensionPoint2)<1.0e-4) {
        edata.extensionPoint2 += offset;
                updateDim(true);
    }
}
void CRSAFactorHintDlg::OnChangeEditbitsofp() 
{
	UpdateData();
	if(m_choice==1){
		m_N=to_ZZ(0);
		m_p=to_ZZ(0);
		m_GuessP=to_ZZ(0);
		updateNP();
	}
	updateDim();
}
void CRSAFactorHintDlg::OnRadiolsb() 
{
	UpdateData();
	if(m_choice==1)
		updateP();
	GetDlgItem(IDC_EDITGUESSP_LEFT)->ShowWindow(m_msbLsb==0);
	GetDlgItem(IDC_EDITGUESSP_RIGHT)->ShowWindow(m_msbLsb==1);
	GetDlgItem(IDC_EDITP_LEFT)->ShowWindow(m_msbLsb==0);
	GetDlgItem(IDC_EDITP_RIGHT)->ShowWindow(m_msbLsb==1);
	((CEdit*)GetDlgItem(IDC_EDITP_RIGHT))->SetSel(0,-1);
	((CEdit*)GetDlgItem(IDC_EDITGUESSP_RIGHT))->SetSel(0,-1);
	updateDim();
}
void CRSAFactorHintDlg::OnChangeEditn() 
{
	updateDim();
	ZZ N;
	if(m_base==0){
		NTLExpPars myPars;
		CString tmp;
		GetDlgItemText(IDC_EDITN, tmp);
		N = myPars.parseExp(tmp);
	}else
		N=GetDlgItemZZ(IDC_EDITN,(m_base*6+10)%20);
	m_bitsOfN=(int)NumBits(N);
	UpdateData(false);
}
Beispiel #10
0
void RS_DimLinear::stretch(const RS_Vector& firstCorner,
                           const RS_Vector& secondCorner,
                           const RS_Vector& offset) {

    //e->calculateBorders();
    if (getMin().isInWindow(firstCorner, secondCorner) &&
            getMax().isInWindow(firstCorner, secondCorner)) {

        move(offset);
    } else {
        //RS_Vector v = data.definitionPoint - edata.extensionPoint2;
        //double len = edata.extensionPoint2.distanceTo(data.definitionPoint);
        //double ang1 = edata.extensionPoint1.angleTo(edata.extensionPoint2)
		//              + M_PI_2;

        if (edata.extensionPoint1.isInWindow(firstCorner,
                                            secondCorner)) {
            edata.extensionPoint1.move(offset);
        }
        if (edata.extensionPoint2.isInWindow(firstCorner,
                                            secondCorner)) {
            edata.extensionPoint2.move(offset);
        }

                /*
        double ang2 = edata.extensionPoint1.angleTo(edata.extensionPoint2)
					  + M_PI_2;

        double diff = RS_Math::getAngleDifference(ang1, ang2);
        if (diff>M_PI) {
            diff-=2*M_PI;
        }

		if (fabs(diff)>M_PI_2) {
            ang2 = RS_Math::correctAngle(ang2+M_PI);
        }

        RS_Vector v;
        v.setPolar(len, ang2);
        data.definitionPoint = edata.extensionPoint2 + v;
                */
    }
    updateDim(true);
}
///////////////////////////////////////////
// Create a random example
///////////////////////////////////////////
void CRSAFactorHintDlg::OnRandom() 
{
	UpdateData();
	int m_bitsOfP=GetDlgItemInt(IDC_EDITBITSOFP);
	if (m_bitsOfN<=10){
		CString tmp, myTitle;
		tmp.LoadString(IDS_RSA_FH_WRONGN);
		this->GetWindowText(myTitle);
		MessageBox(tmp,myTitle);
	}
	else if(m_bitsOfP<=5 || m_bitsOfP>=m_bitsOfN){
		CString tmp, myTitle;
		tmp.LoadString(IDS_RSA_FH_WRONGP);
		this->GetWindowText(myTitle);
		MessageBox(tmp,myTitle);
	}
	else{
		BeginWaitCursor();
		int bitsOfQ=(m_bitsOfN-m_bitsOfP);
		
		SetSeed(to_ZZ(GetTime()*10000)); 
		m_p = GenPrime_ZZ(m_bitsOfP); // generate N, p and q
		ZZ q = GenPrime_ZZ(bitsOfQ);
		m_N=m_p*q;
		int newbase=2;  // check which representation to use
		if(m_base==0)
			newbase=10;
		if(m_base==1)
			newbase=16;
//		m_N=toString(N,newbase,newbase*newbase*2);
//		m_P=toString(m_p,newbase,newbase*newbase*2);


		UpdateData(false);
		updateP();
		updateDim();
		EndWaitCursor();
	}
}
void DisplayInternal::displayTick1sec() {
  ++animationStepTicker1sec;
  if (allModes[currModeIndex].handlerTick1Sec != nullptr) (*(allModes[currModeIndex].handlerTick1Sec))(*info);
  // updateMotionDetectedPixel(*info);
  updateDim(*info);
}