Beispiel #1
0
bool FloatSliderMenuItem::OnKey(int key, int mod)
{
	float amt = kInc * m_scale;
	if(mod & KMOD_SHIFT) amt = kLargeInc * m_scale;
	else if(mod & KMOD_CTRL) amt = kSmallInc * m_scale;

	switch(key)
	{
		case SDLK_UP:
			m_set(m_limits(m_get() + amt));
			UpdateData();
			break;
		case SDLK_DOWN:
			m_set(m_limits(m_get() - amt));
			UpdateData();
			break;
		case SDLK_BACKSPACE:
		case SDLK_LEFT:
			menu_DeactivateMenuItem();
			break;
		default:
			break;
	}
	return true;
}
Beispiel #2
0
error_t m_mult(m_t *lhs, m_t *rhs, m_t *res)
{
    size_t common_dim;
    m_data_t rc_sum;

    /* TODO: Better errors.  4 different failures give E_VAL! */
    if (!lhs || !rhs || !res) return E_NULLP;
    if (lhs->cols != rhs->rows) return E_VAL;
    if (lhs->rows != res->rows) return E_VAL;
    if (rhs->cols != res->cols) return E_VAL;
    if (res == lhs || res == rhs) return E_VAL;

    common_dim = lhs->cols;

    for (size_t m=0; m < lhs->rows; m++) {
        for (size_t n=0; n < rhs->cols; n++) {
            rc_sum = 0.0;
            for (size_t i=0; i < common_dim; i++) {
                rc_sum += m_get(lhs, m, i)*m_get(rhs, i, n);
            }
            m_set(res, m, n, rc_sum);
        }
    }

    return E_OK;
}
Beispiel #3
0
void BoolMenuItem::OnActivate()
{
	if(m_activeTimer > 0.f) return;
	bool val = m_get();
	val = !val;
	m_set(val);
	m_activeTimer = 0.25f;
	menu_DeactivateMenuItem();
}
Beispiel #4
0
void sendSPI(uint16_t data)
{
  m_clear(SS);
  SPDR = HIGH(data);
  while(!check(SPSR,SPIF));
  SPDR = LOW(data);
  while(!check(SPSR,SPIF));
  m_set(SS);
}
Beispiel #5
0
void CLineServer::MessageHandler( const boost::system::error_code & p_error )
{
    if( !p_error )
    {
        boost::asio::streambuf request;
        std::istream request_stream( &request );
        std::string request_code, device, key, value;
        
        boost::asio::streambuf response;
        std::ostream response_stream( &response );
        
        bool quit = false;
        size_t bytes;
        
        try
        {
            while( !quit )
            {
                // receive the request stream and get the request type
                bytes = boost::asio::read_until( m_socket, request, "\r\n" );
                request_stream >> request_code;
                
                // handle different message types
                if( request_code == "GET" )
                {
                    // split the request stream
                    request_stream >> device >> key;
                    
                    std::cerr << "GET " << device << " " << key;
                    value = m_get(device,key);
                    std::cerr << " " << value << std::endl;
                    
                    // format the response stream
                    if( value.empty() )
                    {
                        response_stream << "404 ERROR NOTFOUND\r\n";
                    }
                    else
                    {
                        response_stream << "200 OK " << value << "\r\n";
                    }
                }
                else if( request_code == "SET" )
                {
                    // split the request stream
                    request_stream >> device >> key >> value;
                    
                    std::cerr << "SET " << device << " " << key << " " << value << std::endl;
                    m_set(device,key,value);
                    
                    // format the response stream
                    response_stream << "200 OK\r\n";
                }
Beispiel #6
0
bool IntSliderMenuItem::OnKey(int key, int mod) 
{
	switch(key)
	{
		case SDLK_UP:
			m_set(m_limits(m_get() + m_scale));
			UpdateData();
			break;
		case SDLK_DOWN:
			m_set(m_limits(m_get() - m_scale));
			UpdateData();
			break;
		case SDLK_BACKSPACE:
		case SDLK_LEFT:
			menu_DeactivateMenuItem();
			break;
		default:
			break;
	}
	return true;
}
Beispiel #7
0
bool ColorSliderMenuItem::OnKey(int key, int mod)
{
	static const float kInc = 0.05f;
	static const float kSmallInc = 0.001f;
	static const float kLargeInc = 0.1f;

	float inc = kInc;
	if(mod & KMOD_SHIFT) inc = kLargeInc;
	else if(mod & KMOD_CTRL) inc = kSmallInc;

	float incAmt = 0.f;
	switch(key)
	{
		case SDLK_UP:
			m_pos = Max(0, m_pos - 1);
			break;
		case SDLK_DOWN:
			m_pos = Min(COLSLIDE_NUM-1, m_pos + 1);
			break;
		case SDLK_LEFT:
			incAmt = -inc;
			break;
		case SDLK_RIGHT:
			incAmt = inc;
			break;
		case SDLK_BACKSPACE:
			menu_DeactivateMenuItem();
			break;
		default:
			break;
	}

	Color cur = m_get();
	Color old = cur;
	switch(m_pos)
	{
		case COLSLIDE_Red:
			cur.r = Clamp(cur.r + incAmt, 0.f, 1.f);
			break;
		case COLSLIDE_Green:
			cur.g = Clamp(cur.g + incAmt, 0.f, 1.f);
			break;
		case COLSLIDE_Blue:
			cur.b = Clamp(cur.b + incAmt, 0.f, 1.f);
			break;
		default:break;
	}
	if(old != cur)
		m_set(cur);
	UpdateData();
	return true;
}
Beispiel #8
0
error_t m_negate(m_t *mat, m_t *res)
{
    if (!mat || !res) return E_NULLP;
    if (mat->cols != res->cols) return E_VAL;
    if (mat->rows != res->rows) return E_VAL;

    for (size_t m=0; m < res->rows; m++) {
        for (size_t n=0; n < res->cols; n++) {
            m_set(res, m, n, -m_get(mat,m,n));
        }
    }

    return E_OK;
}
Beispiel #9
0
error_t m_add(m_t *lhs, m_t *rhs, m_t *res)
{
    if (!lhs || !rhs || !res) return E_NULLP;
    if (lhs->cols != rhs->cols) return E_VAL;
    if (lhs->rows != rhs->rows) return E_VAL;
    if (lhs->cols != res->cols) return E_VAL;
    if (lhs->rows != res->rows) return E_VAL;

    for (size_t m=0; m < res->rows; m++) {
        for (size_t n=0; n < res->cols; n++) {
            m_set(res, m, n, m_get(lhs,m,n)+m_get(rhs,m,n));
        }
    }

    return E_OK;
}
Beispiel #10
0
LFNoise1_kr::LFNoise1_kr(int argc, t_atom *argv)
    : tick(0.01)
{
    FLEXT_ADDMETHOD_(0,"seed",m_seed);
    FLEXT_ADDMETHOD_(0,"set",m_set);
    FLEXT_ADDTIMER(m_timer,m_perform);
    
    //parse arguments
    AtomList Args(argc,argv);
    
    rgen.init(timeseed());

    m_level=rgen.frand2();

    AddOutFloat();

    m_set(sc_getfloatarg(Args,0));
}
Beispiel #11
0
void CLAB::OnBnClickedpersonaldata()
{
	// TODO: 在此添加控件通知处理程序代码

	if(!m_db.IsOpen() && !m_db.OpenEx(_T("DSN=mydb;DATABASE=Library;UID=admin;PWD=admin"), 
	 CDatabase::noOdbcDialog))
	{
		MessageBox(_T("数据库连接失败"));
		return;
	}
	
	CString query;
	CRecordset m_set(&m_db);

	UpdateData(TRUE); 

	query.Format(_T("select distinct Q.* from lib_commonQuery as Q,")
		_T("lib_book_list as L, lib_record as R ")
		_T("where R.bno = L.bno and R.lib_uid = %d and R.isReturned = 0 and Q.ISBN = L.ISBN ")
		_T("order by title"),
		m_lab_uid);

	m_ListCtrl.InsertColumn(0, _T("书号"), LVCFMT_CENTER, 120, 0);
	m_ListCtrl.InsertColumn(1, _T("类别"), LVCFMT_CENTER, 100, 1);
	m_ListCtrl.InsertColumn(2, _T("书名"), LVCFMT_CENTER, 160, 2);
	m_ListCtrl.InsertColumn(3, _T("出版社"), LVCFMT_CENTER, 100, 3);
	m_ListCtrl.InsertColumn(4, _T("年份"), LVCFMT_CENTER, 40, 4);
	m_ListCtrl.InsertColumn(5, _T("作者"), LVCFMT_CENTER,100, 5);
	m_ListCtrl.InsertColumn(6, _T("价格"), LVCFMT_CENTER, 40, 6);
	m_ListCtrl.InsertColumn(7, _T("总量"), LVCFMT_CENTER, 40, 7);
	m_ListCtrl.InsertColumn(8, _T("库存"), LVCFMT_CENTER, 40, 8);
	m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_GRIDLINES |
		LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP);

	try
	{
		m_set.Open(CRecordset::forwardOnly,query,CRecordset::readOnly);
		CDBVariant var; 
		m_ListCtrl.DeleteAllItems();	
		short nFields = m_set.GetODBCFieldCount(); 
		int i = 0;
		while(!m_set.IsEOF())
		{
			for(short index = 0; index < nFields; index++)
			{
				m_set.GetFieldValue(index, var);
				if(index == 0)
					m_ListCtrl.InsertItem(i, VariantToCString(&var));
				else
					m_ListCtrl.SetItemText(i, index, VariantToCString(&var));
			}
			m_set.MoveNext();
			i++;
		}
		m_set.Close();
		m_db.Close(); 
	}
	catch(CDBException* pe)
	{
	   // The error code is in pe->m_nRetCode
	   MessageBox(_T("无此记录。"));
	   pe->Delete();
	}
	m_db.Close();
	
}
Beispiel #12
0
void CLAB::OnBnClickedborrownew()
{
	// TODO: 在此添加控件通知处理程序代码
	
	if(!m_db.IsOpen() && !m_db.OpenEx(_T("DSN=mydb;DATABASE=Library;UID=admin;PWD=admin"), 
	 CDatabase::noOdbcDialog))
	{
		MessageBox(_T("数据库连接失败"));
		return;
	}

	CRecordset m_set(&m_db);
	CString query1, query2, query3;
	CDBVariant var;

	UpdateData(TRUE); 

	if(m_lab_uid == 0){MessageBox(_T("请输入借书证号!"));return;}
	if(m_lab_bno == 0){MessageBox(_T("请输入书号!"));return;}
	query1.Format(_T("select bno from lib_record where lib_uid = %d ")
		_T("and isReturned = 0"), m_lab_uid);

	try
	{
		CString temp; 
		temp.Format(_T("%d"),m_lab_bno);
		int exists = 0;

		m_set.Open(CRecordset::forwardOnly,query1);
		short nFields = m_set.GetODBCFieldCount();
	
		while(!m_set.IsEOF())
		{
			for(short index = 0; index < nFields; index++)
			{
				m_set.GetFieldValue(index, var);
				if(temp == VariantToCString(&var)){exists =1;break;}
			}
			m_set.MoveNext();
		}
		if(exists == 0)
		{
			MessageBox(_T("此书不在借阅列表中"));
		}
		else
		{
			query2.Format(_T("update lib_record set ")
				_T("date_return = GETDATE(), isReturned = 1 ")
				_T("where rid = (select rid from lib_record ")
				_T("where bno = %d and isReturned = 0)"),
				m_lab_bno);
			m_db.ExecuteSQL(query2);
			query3.Format(_T("update lib_book_list set inStore = 1 where bno = %d;"),
				m_lab_bno);
			m_db.ExecuteSQL(query3);
			MessageBox(_T("还书成功"));
		}
	}
	catch(CDBException* pe)
	{
		MessageBox(_T("查询失败"));
		pe->Delete();
	}
	m_set.Close();
	m_db.Close();
}
Beispiel #13
0
void CLAB::OnBnClickedlendnew()
{
	// TODO: 在此添加控件通知处理程序代码

	if(!m_db.IsOpen() && !m_db.OpenEx(_T("DSN=mydb;DATABASE=Library;UID=admin;PWD=admin"), 
	 CDatabase::noOdbcDialog))
	{
		MessageBox(_T("数据库连接失败"));
		return;
	}

	CRecordset m_set(&m_db);
	CString query1, query2, query3;
	CDBVariant var;
	extern int nowuid;

	UpdateData(TRUE); 

	if(m_lab_uid == 0){MessageBox(_T("请输入借书证号!"));return;}
	if(m_lab_bno == 0){MessageBox(_T("请输入书号!"));return;}
	query1.Format(_T("select instore from lib_book_list where bno = %d"), m_lab_bno);

	try
	{
		m_set.Open(CRecordset::forwardOnly,query1);
		short nFields = m_set.GetODBCFieldCount();
		CString temp;
		while(!m_set.IsEOF())
		{
			for(short index = 0; index < nFields; index++)
			{
				m_set.GetFieldValue(index, var);
				temp = VariantToCString(&var);
			}
			m_set.MoveNext();
		}
		if(temp == _T("0"))
		{	
			/*
			CString query4, recent;
			query4.Format(_T("select MAX(R.date_return) ")
				_T("from lib_record as R, lib_book_list as L1, lib_book_list as L2 ")
				_T("where L1.bno = %d and L1.ISBN = L2.ISBN and L2.bno = R.bno")
				,m_lab_bno);
			m_set.Open(CRecordset::forwardOnly,query4);
			short nFields = m_set.GetODBCFieldCount();
			while(!m_set.IsEOF())
			{
				for(short index = 0; index < nFields; index++)
				{
					m_set.GetFieldValue(index, var);
					recent = VariantToCString(&var);
				}
				m_set.MoveNext();
			}
			MessageBox(_T("此书已被借走,相同书籍最近归还时间为%s"),recent);*/
			MessageBox(_T("此书已被借走"));
		}
		else
		{
			query2.Format(_T("insert into lib_record values ")
				_T("((select MAX(rid) from lib_record)+1, %d, %d, ")
				_T("%d, GETDATE(), default, 0)"),
				m_lab_uid, nowuid, m_lab_bno);
			m_db.ExecuteSQL(query2);
			query3.Format(_T("update lib_book_list set inStore = 0 where bno = %d;"),
				m_lab_bno);
			m_db.ExecuteSQL(query3);
			MessageBox(_T("借书成功"));
		}
	}
	catch(CDBException* pe)
	{
		MessageBox(_T("查询失败"));
		pe->Delete();
	}
	m_set.Close();
	m_db.Close();
}
Beispiel #14
0
bool VecSliderMenuItem::OnKey(int key, int mod) 
{

	float inc = m_scale * kInc;
	if(mod & KMOD_SHIFT) inc = m_scale * kLargeInc;
	else if(mod & KMOD_CTRL) inc = m_scale * kSmallInc;

	float incAmt = 0.f;
	switch(key)
	{
		case SDLK_UP:
			m_pos = Max(0, m_pos - 1);
			break;
		case SDLK_DOWN:
			m_pos = Min(VECSLIDE_NUM-1, m_pos + 1);
			break;
		case SDLK_LEFT:
			incAmt = -inc;
			break;
		case SDLK_RIGHT:
			incAmt = inc;
			break;
		case SDLK_BACKSPACE:
			menu_DeactivateMenuItem();
			break;
		default:
			break;
	}

	vec3 val = m_get();
	vec3 old = val;
	float radAmt = (M_PI / 180.f) * incAmt;
	mat4 rotmat;
	static const vec3 kXAxis = {1,0,0};
	static const vec3 kYAxis = {0,1,0};
	static const vec3 kZAxis = {0,0,1};
	switch(m_pos)
	{
		case VECSLIDE_RotateX:
			rotmat = RotateAround(kXAxis, radAmt);
			val = TransformVec(rotmat, val);
			break;
		case VECSLIDE_RotateY:
			rotmat = RotateAround(kYAxis, radAmt);
			val = TransformVec(rotmat, val);
			break;
		case VECSLIDE_RotateZ:
			rotmat = RotateAround(kZAxis, radAmt);
			val = TransformVec(rotmat, val);
			break;
		case VECSLIDE_X:
			val.x += incAmt;
			break;
		case VECSLIDE_Y:
			val.y += incAmt;
			break;
		case VECSLIDE_Z:
			val.z += incAmt;
			break;
		case VECSLIDE_Length:
			{
				float len = Length(val);
				val = val * (len+incAmt) / len;
			}
			break;
		default:break;
	}
	vec3 newVal = m_limits(val);
	if(newVal != old)
	{
		m_set(newVal);
		UpdateData();
	}
	return true;
}