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; }
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; }
void BoolMenuItem::OnActivate() { if(m_activeTimer > 0.f) return; bool val = m_get(); val = !val; m_set(val); m_activeTimer = 0.25f; menu_DeactivateMenuItem(); }
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); }
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"; }
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; }
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; }
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; }
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; }
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)); }
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(); }
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(); }
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(); }
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; }