LIBGLADE_SIGNAL_FUNC void ChangeSaturationABGRValue(GtkWidget *menuitem, gpointer user_data) { int data; if (strcmp(glade_get_widget_name(menuitem), "menuRPlus") == 0) { data = 0x0001; } else if (strcmp(glade_get_widget_name(menuitem), "menuRMinus") == 0) { data = 0x0000; } else if (strcmp(glade_get_widget_name(menuitem), "menuGPlus") == 0) { data = 0x0101; } else if (strcmp(glade_get_widget_name(menuitem), "menuGMinus") == 0) { data = 0x0100; } else if (strcmp(glade_get_widget_name(menuitem), "menuBPlus") == 0) { data = 0x0201; } else if (strcmp(glade_get_widget_name(menuitem), "menuBMinus") == 0) { data = 0x0200; } else if (strcmp(glade_get_widget_name(menuitem), "menuAPlus") == 0) { data = 0x0301; } else if (strcmp(glade_get_widget_name(menuitem), "menuAMinus") == 0) { data = 0x0300; } int type = (data >> 8) & 0xFF; bool plus = data & 1 ? true : false; gchar *buf; DWORD sat; BYTE v; DWORD mask, mask1, mask2; mask1 = 0xFFFFFF00; mask1 <<= type*8; mask2 = 0x00FFFFFF; mask2 >>= (3-type)*8; mask = mask1 | mask2; int max = actor->GetNumSprites(actor->curAct, actor->curPat); GtkTreeView *table = (GtkTreeView *)glade_xml_get_widget(windowXML, "table"); GtkTreeModel *model = gtk_tree_view_get_model(table); GtkTreeSelection *selection = gtk_tree_view_get_selection(table); GtkTreeIter iter; if (gtk_tree_model_get_iter_first(model, &iter) == FALSE) return; for (int i=0; i<max; i++) { if (gtk_tree_selection_iter_is_selected(selection, &iter)) { gtk_tree_model_get(model, &iter, SAT_COLUMN, &buf, -1); // AABBGGRR sat = HexToDWORD(buf); v = (BYTE)((sat & (~mask)) >> (type*8)); if (plus) { v = SaturateByte5(v, true); } else { v = SaturateByte5(v, false); } sat &= mask; sat |= v << (type*8); sprintf(buf, "%08X", sat); SetTableFromEdit(buf, i, SAT_COLUMN); // iter is broken if (gtk_tree_model_get_iter_first(model, &iter) == FALSE) return; for (int j=0; j<i; j++) gtk_tree_model_iter_next(model, &iter); } if (gtk_tree_model_iter_next(model, &iter) == FALSE) break; }
void SetTableFromEdit(char *str, int row, int column) { actor->SetModified(); char txt[128]; int i; float f; if (row == actor->GetNumSprites(actor->curAct, actor->curPat)) { //if head i = atoi(str); switch (column) { case 2: //xoffs actor->SetExtXValue(actor->curAct, actor->curPat, i); break; case 3: //yoffs; actor->SetExtYValue(actor->curAct, actor->curPat, i); break; } SNPRINTF(txt, sizeof(txt), "%d", i); SetTableItem(txt, row, column); ProcPatternChange(true); return; } switch (column) { case 0: //SprNo i = atoi(str); if (actor->GetSpTypeValue(actor->curAct, actor->curPat, row) == 0) { int max = actor->GetNumPalImage(); if (i >= max) i = max - 1; } else { int max = actor->GetNumFlatImage(); if (i >= max) i = max - 1; } SNPRINTF(txt, sizeof(txt), "%d", i); actor->SetSprNoValue(actor->curAct, actor->curPat, row, i); break; case 1: //SpType i = atoi(str); if (i > 1) i = 1; if (actor->GetNumFlatImage() == 0) i = 0; SNPRINTF(txt, sizeof(txt), "%d", i); actor->SetSpTypeValue(actor->curAct, actor->curPat, row, i); break; case 2: //Xoffs i = atoi(str); SNPRINTF(txt, sizeof(txt), "%d", i); actor->SetXOffsValue(actor->curAct, actor->curPat, row, i); break; case 3: //Yoffs i = atoi(str); SNPRINTF(txt, sizeof(txt), "%d", i); actor->SetYOffsValue(actor->curAct, actor->curPat, row, i); break; case 4: //Mirror i = atoi(str); i = (i != 0) ? 1 : 0; SNPRINTF(txt, sizeof(txt), "%d", i); actor->SetMirrorValue(actor->curAct, actor->curPat, row, i); break; case 5: //AABBGGRR i = HexToDWORD(str); SNPRINTF(txt, sizeof(txt), "%08X", i); actor->SetABGRValue(actor->curAct, actor->curPat, row, i); break; case 6: //Xmag f = (float)atof(str); SNPRINTF(txt, sizeof(txt), "%f", f); actor->SetXMagValue(actor->curAct, actor->curPat, row, f); break; case 7: //Ymag f = (float)atof(str); SNPRINTF(txt, sizeof(txt), "%f", f); actor->SetYMagValue(actor->curAct, actor->curPat, row, f); break; case 8: //rot i = atoi(str); i = i%360; if (i < 0) i += 360; SNPRINTF(txt, sizeof(txt), "%d", i); actor->SetRotValue(actor->curAct, actor->curPat, row, i); break; } SetTableItem(txt, row, column); ProcPatternChange(true); }
//修改密码 bool COperator::ModifyPassword(TSSmartTask *pTask, TSSmartDoc *pDoc, unsigned char *ucRawData) { int cardid = ucRawData[8]*65536+ucRawData[9]*256+ucRawData[10]; //交易卡号 unsigned char OldPassWord[17]; unsigned char NewPassWord[17]; memset(OldPassWord, 0, sizeof(OldPassWord)); memset(NewPassWord, 0, sizeof(NewPassWord)); TSGSJRecord Data; char cCardSerialNo[256];//卡序列号 memset(cCardSerialNo, 0, sizeof(cCardSerialNo)); memset(&Data, 0, sizeof(Data)); Data.nCardID = cardid; if( ReadCardGSInfo(0x83, &Data) != RET_OK ) { printf("修改密码时不能读卡信息!\n"); WriteLog("修改密码时与金仕达通讯,获取卡序列号失败"); //add by lina 20040308 return false ; } else { sprintf(cCardSerialNo, "%10u", HexToDWORD(Data.szSerial)); // strcpy(cCardSerialNo, "3100000114"); //printf(cCardSerialNo, "%10u", HexToDWORD("A2E7BE57")); WriteLog("卡序列号%s",cCardSerialNo); } //printf("修改密码时读入卡的信息, 卡号:%d, 读入的序列号:%s.............\n", cardid, cCardSerialNo); WriteLog("修改密码时读入卡的信息, 卡号:%d, 读入的序列号:%s.............\n", cardid, cCardSerialNo); DWORD nSerial = atol(cCardSerialNo); //旧密码 OldPassWord[0] = ucRawData[17]; //^ ((unsigned char)(nSerial%256)); OldPassWord[1] = ucRawData[18];// ^ ((unsigned char)(nSerial/256%256)); OldPassWord[2] = ucRawData[19];// ^ ((unsigned char)(nSerial/65536%256)); CString strCS1; strCS1.Format("%.2X%.2X%.2X",OldPassWord[0],OldPassWord[1],OldPassWord[2]); //新密码 NewPassWord[0] = ucRawData[20];// ^ ((unsigned char)(nSerial%256)); NewPassWord[1] = ucRawData[21];// ^ ((unsigned char)(nSerial/256%256)); NewPassWord[2] = ucRawData[22];// ^ ((unsigned char)(nSerial/65536%256)); CString strCS2; strCS2.Format("%.2X%.2X%.2X",NewPassWord[0],NewPassWord[1],NewPassWord[2]); //printf("修改密码, 卡号:%d..旧密码:%s, 新密码:%s............\n", cardid, strCS1.GetBuffer(0), strCS2.GetBuffer(0)); WriteLog("修改密码, 卡号:%d..旧密码:%s, 新密码:%s\n", cardid, strCS1.GetBuffer(0), strCS2.GetBuffer(0)); memset(&Data, 0, sizeof(Data)); Data.nCardID = cardid; strcpy(Data.szDeviceID, pDoc->m_szDeviceID); strcpy(Data.szPassword, strCS2.GetBuffer(0)); sprintf(Data.szCRC, "%.2X%.2X", ucRawData[26],ucRawData[27]); return OutputRealData(pTask, pDoc, 0x83, (unsigned char*)&Data, sizeof(Data))==RET_OK?true:false; }