Beispiel #1
0
t_real	qtrn_get_norm(const t_qtrn *const q)
{
	if (q->type == CARTHESIAN)
		return (XP(q) * XP(q) + YP(q) * YP(q)
			+ ZP(q) * ZP(q) + WP(q) * WP(q));
	else if (q->type == CYLINDRICAL)
		return (ZP(q) * ZP(q) + QRP(q) * QRP(q));
	else
		return (QRHOP(q));
}
//{ Panel
int panel_hitscan(panel_t *panel,int hx,int hy)
{
    int idofs=PAN_ENT*panel->index+PAN_ENT;
    int wy=D(PANEL_WY+idofs);

    if(kbpanel&&panel->items[0].str_id==kbpanel)
    {
        if(kbpanel==KB_INSTALL)
        {
            if(kbitem[kbpanel]>2)kbitem[kbpanel]=2;
            return panel->index-8==kbitem[kbpanel];
        }
        if(kbitem[kbpanel]>panel->items[0].action_id)kbitem[kbpanel]=panel->items[0].action_id;
        while(panel->items[kbitem[kbpanel]].type!=TYPE_CHECKBOX&&
              panel->items[kbitem[kbpanel]].type!=TYPE_BUTTON)kbitem[kbpanel]++;

        return kbitem[kbpanel];
    }

    if(!wy)return -1;
    hx-=Xp(panel)+D(PNLITEM_OFSX);
    hy-=Yp(panel)+D(PNLITEM_OFSY);

    if(!expertmode&&panel->items[0].type==TYPE_GROUP_BREAK)return -2;
    if(hx<0||hy<0||hx>XP(panel)-D(PNLITEM_OFSX)*2)return -3;
    if(hy/wy>=panel->items[0].action_id)return -4;
    return hy/wy+1;
}
Beispiel #3
0
t_qtrn	qtrn_external_prod(const t_qtrn *const a, const t_real s)
{
	t_qtrn	ans;

	ans.type = a->type;
	if (a->type == CARTHESIAN)
	{
		X(ans) = XP(a) * s;
		Y(ans) = YP(a) * s;
		Z(ans) = ZP(a) * s;
		W(ans) = WP(a) * s;
	}
	else if (a->type == CYLINDRICAL)
	{
		QR(ans) = QRP(a) * s;
		QTHETA(ans) = QTHETAP(a);
		Z(ans) = ZP(a) * s;
		W(ans) = WP(a) * s;
	}
	else
	{
		QRHO(ans) = QRHOP(a) * s;
		QTHETA(ans) = QTHETAP(a);
		QPHI(ans) = QPHIP(a);
		W(ans) = WP(a) * s;
	}
	return (ans);
}
Beispiel #4
0
void	polar2carth(t_cmplx *v)
{
	const t_real		m = MODP(v);
	const t_real		a = ARGP(v);

	XP(v) = m * cos(a);
	YP(v) = m * sin(a);
	v->type = CARTHESIAN;
}
Beispiel #5
0
void	carth2polar(t_cmplx *v)
{
	const t_real		x = XP(v);
	const t_real		y = YP(v);

	MODP(v) = sqrt(x * x + y * y);
	ARGP(v) = atan2(y, x);
	v->type = POLAR;
}
Beispiel #6
0
void xlog_destroy(xlog_h xlog)
{
	xlog_s *xp = XP( xlog ) ;

	xlog_unlink( xp ) ;
	XL_FINI( xp ) ;
	free( xp->xl_id ) ;
	FREE( xp ) ;
}
Beispiel #7
0
void	spher2carth(t_vec3t *v)
{
	const t_real		r = RHOP(v);
	const t_real		t = THETAP(v);
	const t_real		p = PHIP(v);

	XP(v) = r * sin(p) * cos(t);
	YP(v) = r * sin(p) * sin(t);
	ZP(v) = r * cos(p);
	v->type = CARTHESIAN;
}
Beispiel #8
0
void	carth2spher(t_vec3t *v)
{
	const t_real		x = XP(v);
	const t_real		y = YP(v);
	const t_real		z = ZP(v);

	RHOP(v) = sqrt(x * x + y * y + z * z);
	THETAP(v) = atan2(y, x);
	PHIP(v) = acos(z / RHOP(v));
	v->type = SPHERICAL;
}
Beispiel #9
0
t_qtrn	qtrn_get_conj(const t_qtrn *const q)
{
	if (q->type == CARTHESIAN)
		return (NEW_QTRN(-XP(q), -YP(q), -ZP(q), WP(q)));
	else if (q->type == CYLINDRICAL)
		return ((t_qtrn){CYLINDRICAL, {{
			QRP(q), QTHETAP(q) + M_PI, -ZP(q), WP(q)}}});
	else
		return ((t_qtrn){SPHERICAL, {{
			QRHOP(q), QTHETAP(q) + M_PI, QPHIP(q) + M_PI, WP(q)}}});
}
Beispiel #10
0
/* VARARGS4 */
void xlog_write( xlog_h xlog, char buf[], int len, int flags, ... )
{
	xlog_s	*xp = XP( xlog ) ;
	va_list	ap ;
	int		status ;

	va_start( ap, flags ) ;
	status = XL_WRITE( xp, buf, len, flags, ap ) ;
	va_end( ap ) ;

	if ( status != XLOG_ENOERROR )
	{
		CALLBACK( xp, status ) ;
	}
}
void panel_draw_inv(panel_t *panel)
{
    int x=Xp(panel),y=Yp(panel);
    int idofs=PAN_ENT*panel->index+PAN_ENT;
    int wy=D(PANEL_WY+idofs);
    int ofsy=D(PNLITEM_OFSY);
    RECT rect;

    if(!panel)return;
    rect.left=x;
    rect.top=y;
    rect.right=x+XP(panel);
    rect.bottom=y+(wy+1)*panel->items[0].action_id+ofsy*2;
    InvalidateRect(hMain,&rect,0);
}
Beispiel #12
0
void	qtrn_conj(t_qtrn *const q)
{
	if (q->type == CARTHESIAN)
	{
		XP(q) *= -1;
		YP(q) *= -1;
		ZP(q) *= -1;
	}
	else if (q->type == CYLINDRICAL)
	{
		QTHETAP(q) += M_PI;
		ZP(q) *= -1;
	}
	else
	{
		QTHETAP(q) += M_PI;
		QPHIP(q) += M_PI;
	}
}
Beispiel #13
0
/* VARARGS2 */
int xlog_control( xlog_h xlog, xlog_cmd_e cmd, ... )
{
	va_list	ap ;
	xlog_s	*xp		= XP( xlog ) ;
	int		status	= XLOG_ENOERROR ;

	va_start( ap, cmd ) ;

	switch ( cmd )
	{
		case XLOG_LINK:
			xlog_unlink( xp ) ;
			xlog_link( xp, va_arg( ap, xlog_s * ) ) ;
			xp->xl_callback_arg = va_arg( ap, void * ) ;
			break ;

		case XLOG_CALLBACK:
			xp->xl_callback = va_arg( ap, voidfunc ) ;
			break ;

		case XLOG_GETFLAG:
		case XLOG_SETFLAG:
			xlog_flags( xp, cmd, ap ) ;
			break ;

		/*
		 * If the 'cmd' is not supported by the underlying logging object,
		 * XL_CONTROL should return XLOG_EBADOP, if the 'cmd' returns
		 * information to the caller (for example, XLOG_GETFD returns
		 * a file descriptor, so if this command is applied to a xlog
		 * that doesn't support it, it should return XLOG_EBADOP).
		 * XL_CONTROL should return XLOG_ENOERROR otherwise.
		 */
		default:
			status = XL_CONTROL( xp, cmd, ap ) ;
	}

	va_end( ap ) ;

	return( status ) ;
}
Beispiel #14
0
void	qtrn_external_mult(t_qtrn *const a, const t_real s)
{
	if (a->type == CARTHESIAN)
	{
		XP(a) *= s;
		YP(a) *= s;
		ZP(a) *= s;
		WP(a) *= s;
	}
	else if (a->type == CYLINDRICAL)
	{
		QRP(a) *= s;
		ZP(a) *= s;
		WP(a) *= s;
	}
	else
	{
		QRHOP(a) *= s;
		WP(a) *= s;
	}
}
void panel_draw(HDC hdc,panel_t *panel)
{
    WCHAR buf[BUFLEN];
    POINT p;
    HRGN rgn=0;
    int cur_i;
    int i;
    int idofs=PAN_ENT*panel->index+PAN_ENT;
    int x=Xp(panel),y=Yp(panel);
    int ofsx=D(PNLITEM_OFSX),ofsy=D(PNLITEM_OFSY);
    int wy=D(PANEL_WY+idofs);

    if(XP(panel)<0)return;
    //if(panel_lasti/256!=panel->index)return;

    GetCursorPos(&p);
    ScreenToClient(hMain,&p);
    cur_i=panel_hitscan(panel,p.x,p.y);

    if(!D(PANEL_WY+idofs))return;
    for(i=0;i<panel->items[0].action_id+1;i++)
    {
        if(i==1&&panel->index==0)
        {
            wsprintf(buf,L"%s",STR(STR_SYSINF_MOTHERBOARD));
            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+SYSINFO_COL1,y+ofsy,buf,wcslen(buf));

            wsprintf(buf,L"%s",STR(STR_SYSINF_ENVIRONMENT));
            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+SYSINFO_COL2,y+ofsy,buf,wcslen(buf));
        }
        if(i==2&&panel->index==0)
        {
            wsprintf(buf,L"%s (%d-bit)",get_winverstr(manager_g),manager_g->matcher->state->architecture?64:32);
            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+10+SYSINFO_COL0,y+ofsy,buf,wcslen(buf));

            wsprintf(buf,L"%s",state_getproduct(manager_g->matcher->state));
            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+10+SYSINFO_COL1,y+ofsy,buf,wcslen(buf));

            wsprintf(buf,L"%s",STR(STR_SYSINF_WINDIR));
            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+10+SYSINFO_COL2,y+ofsy,buf,wcslen(buf));

            wsprintf(buf,L"%s",manager_g->matcher->state->text+manager_g->matcher->state->windir);
            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+10+SYSINFO_COL3,y+ofsy,buf,wcslen(buf));
        }
        if(i==3&&panel->index==0)
        {
            if(XP(panel)<10+SYSINFO_COL1)
                wsprintf(buf,L"%s",state_getproduct(manager_g->matcher->state));
            else
                wsprintf(buf,L"%s",manager_g->matcher->state->platform.szCSDVersion);

            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+10+SYSINFO_COL0,y+ofsy,buf,wcslen(buf));

            wsprintf(buf,L"%s: %s",STR(STR_SYSINF_TYPE),STR(isLaptop?STR_SYSINF_LAPTOP:STR_SYSINF_DESKTOP));
            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+10+SYSINFO_COL1,y+ofsy,buf,wcslen(buf));

            wsprintf(buf,L"%s",STR(STR_SYSINF_TEMP));
            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+10+SYSINFO_COL2,y+ofsy,buf,wcslen(buf));

            wsprintf(buf,L"%s",manager_g->matcher->state->text+manager_g->matcher->state->temp);
            SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
            TextOut(hdc,x+ofsx+10+SYSINFO_COL3,y+ofsy,buf,wcslen(buf));
        }
        if(panel->items[i].type==TYPE_GROUP_BREAK&&!expertmode)break;
        switch(panel->items[i].type)
        {
            case TYPE_CHECKBOX:
                drawcheckbox(hdc,x+ofsx,y+ofsy,D(CHKBOX_SIZE)-2,D(CHKBOX_SIZE)-2,panel->items[i].checked,i==cur_i);
                SetTextColor(hdc,D(i==cur_i?CHKBOX_TEXT_COLOR_H:CHKBOX_TEXT_COLOR));
                TextOut(hdc,x+D(CHKBOX_TEXT_OFSX)+ofsx,y+ofsy,STR(panel->items[i].str_id),wcslen(STR(panel->items[i].str_id)));
                if(i==cur_i&&kbpanel)drawrectsel(hdc,x+ofsx,y+ofsy,x+XP(panel)-ofsx,y+ofsy+wy,0xff00,1);
                y+=D(PNLITEM_WY);
                break;

            case TYPE_BUTTON:
                if(panel->index>=8&&panel->index<=10&&D(PANEL_OUTLINE_WIDTH+idofs)<0)
                    box_draw(hdc,x+ofsx,y+ofsy,x+XP(panel)-ofsx,y+ofsy+wy,i==cur_i?BOX_PANEL_H+panel->index*2+2:BOX_PANEL+panel->index*2+2);
                else
                    box_draw(hdc,x+ofsx,y+ofsy,x+XP(panel)-ofsx,y+ofsy+wy-1,i==cur_i?BOX_BUTTON_H:BOX_BUTTON);

                SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
                if(i==1&&panel->index==8)
                {
                    int j,cnt=0;
                    itembar_t *itembar;

                    itembar=&manager_g->items_list[RES_SLOTS];
                    for(j=RES_SLOTS;j<manager_g->items_handle.items;j++,itembar++)
                    if(itembar->checked)cnt++;

                    wsprintf(buf,L"%s (%d)",STR(panel->items[i].str_id),cnt);
                    TextOut(hdc,x+ofsx+wy/2,y+ofsy+(wy-D(FONT_SIZE)-2)/2,buf,wcslen(buf));
                }
                else
                    TextOut(hdc,x+ofsx+wy/2,y+ofsy+(wy-D(FONT_SIZE)-2)/2,STR(panel->items[i].str_id),wcslen(STR(panel->items[i].str_id)));

                y+=D(PNLITEM_WY);
                break;

            case TYPE_TEXT:
                if(i==1&&panel->index==7)
                {
                    version_t v;

                    v.d=atoi(SVN_REV_D);
                    v.m=atoi(SVN_REV_M);
                    v.y=SVN_REV_Y;

                    wsprintf(buf,L"%s (",TEXT(SVN_REV2));
                    str_date(&v,buf+wcslen(buf));
                    wcscat(buf,L")");
                    SetTextColor(hdc,D(CHKBOX_TEXT_COLOR));
                    TextOut(hdc,x+ofsx,y+ofsy,buf,wcslen(buf));
                }
                SetTextColor(hdc,D(i==cur_i&&i>11?CHKBOX_TEXT_COLOR_H:CHKBOX_TEXT_COLOR));
                TextOut(hdc,x+ofsx,y+ofsy,STR(panel->items[i].str_id),wcslen(STR(panel->items[i].str_id)));
                y+=D(PNLITEM_WY);
                break;

            case TYPE_GROUP_BREAK:
            case TYPE_GROUP:
                if(panel->index>=8&&panel->index<=10)break;
                if(i)y+=D(PNLITEM_WY);
                box_draw(hdc,x,y,x+XP(panel),y+(wy)*panel->items[i].action_id+ofsy*2,
                         BOX_PANEL+panel->index*2+2);
                rgn=CreateRectRgn(x,y,x+XP(panel),y+(wy)*panel->items[i].action_id+ofsy*2);
                SelectClipRgn(hdc,rgn);
                break;

            default:
                break;
        }

    }
    if(rgn)
    {
        SelectClipRgn(hdc,0);
        DeleteObject(rgn);
    }
}