p_npaspuskForm::p_npaspuskForm(bool AddEdit, int recnum, QWidget *parent) : QDialog(parent), ui(new Ui::p_npaspuskForm) { ui->setupUi(this); // Соединяем сигналы со слотами: connect (ui->buttonBox, SIGNAL(accepted()), this, SLOT (SaveRecord())); //кнопка "Ok" connect (ui->buttonBox, SIGNAL(rejected()), this, SLOT (CloseWindow())); // кнопка "Закрыть" // Грузим установки формы из конфигурационного файла qTC->formLoad(this, FormSetFile, false); // Если жобавляем новую запись, то идем сюда if (AddEdit == true) { QString tmpString = tr("Новое погружение "); setWindowTitle(tmpString.append(getCurrentTS().typeTS)); //Наименование ТС ui->labelTSName->setText(getCurrentTS().nameTS); // Найдем макс № погружения и услужливо подставим его // Если при вычислении max индекса возникла ошибка, ф-ция возвращает '-1' int maxInt = MaxCode("z18_spts.p_sgaspusk","nomp"); // Если почему-то max № не выбрался - пишем в Edit '1' if (maxInt == -1) { ui->lineEditNumber->setText("1"); } else { maxInt++; ui->lineEditNumber->setText(QString::number(maxInt)); } // берем текущую дату QDate curdate = QDate::currentDate(); ui->dateEditPogruzh->clear(); ui->dateEditPogruzh->setDate(curdate); // берем текущее время QTime curtime = QTime::currentTime(); ui->timeEditStartPogruzh->clear(); ui->timeEditStartPogruzh->setTime(curtime); } else // Если редактируем существующую запись, то идем сюда { /* QSqlQuery QPogruzh; // value: 0 1 2 3 4 5 6 7 QPogruzh.prepare("SELECT code,name,nomp,datep,begintime,endtime,codesh,prizn FROM z18_spts.p_sgapred WHERE code = :precnum"); QPogruzh.bindValue(":precnum",recnum); if (!QPogruzh.exec()) { QMessageBox::critical(0, tr("Редактирование записи"), msgErrorOpenEditRecord.toLatin1(), QMessageBox::Ok); CloseWindow(); } QPogruzh.first(); QString tmpString = tr("Погружение №").append(QPogruzh.value(2).toString()); setWindowTitle(tmpString); ui->labelTSName->setText(getCurrentTS().nameTS); ui->lineEditNumber->setText(QPogruzh.value(2).toString()); // берем дату погружения из записи QDate pogrdate = QPogruzh.value(3).toDate(); ui->dateEditPogruzh->clear(); ui->dateEditPogruzh->setDate(pogrdate); // берем время начала из записи QTime pogrstarttime = QPogruzh.value(4).toTime(); ui->timeEditStartPogruzh->clear(); ui->timeEditStartPogruzh->setTime(pogrstarttime); // берем время конца из записи QTime pogrendtime = QPogruzh.value(5).toTime(); ui->timeEditEndPogruzh->clear(); ui->timeEditEndPogruzh->setTime(pogrendtime); // Готов или не готов bool YesNoReady = QPogruzh.value(7).toBool(); if (YesNoReady == false) { ui->sostLabel->setText(tr("Не готов")); ui->sostLabel->setPalette(QPalette(getNotReadyColor())); } else { ui->sostLabel->setText(tr("Готов")); ui->sostLabel->setPalette(QPalette(getReadyColor())); } */ } }
/* The code of GIFEncodeImage is based on an early version of ImageMagick. */ static unsigned int GIFEncodeImage(GenBuffer::Writable& out, char const*ppbeg, register char const*ppend, const unsigned int data_size) { #define MaxCode(number_bits) ((1 << (number_bits))-1) #define MaxHashTable 5003 #define MaxGIFBits 12 #if defined(HasLZW) #define MaxGIFTable (1 << MaxGIFBits) #else #define MaxGIFTable max_code #endif #define GIFOutputCode(code) \ { \ /* \ Emit a code. \ */ \ if (bits > 0) \ datum|=((long) code << bits); \ else \ datum=(long) code; \ bits+=number_bits; \ while (bits >= 8) \ { \ /* \ Add a character to current packet. \ */ \ packet[byte_count++]=(unsigned char) (datum & 0xff); \ if (byte_count >= 254) \ { \ packet[-1]=byte_count; \ out.vi_write((char*)packet-1, byte_count+1); \ byte_count=0; \ } \ datum>>=8; \ bits-=8; \ } \ if (free_code > max_code) \ { \ number_bits++; \ if (number_bits == MaxGIFBits) \ max_code=MaxGIFTable; \ else \ max_code=MaxCode(number_bits); \ } \ } int bits, byte_count, i, next_pixel, number_bits; long datum; register int displacement, k; register char const*pp; short clear_code, end_of_information_code, free_code, *hash_code, *hash_prefix, index, max_code, waiting_code; unsigned char *packet, *hash_suffix; /* Allocate encoder tables. */ AALLOC(packet,257,unsigned char); AALLOC(hash_code,MaxHashTable,short); AALLOC(hash_prefix,MaxHashTable,short); AALLOC(hash_suffix,MaxHashTable,unsigned char); if ((packet == (unsigned char *) NULL) || (hash_code == (short *) NULL) || (hash_prefix == (short *) NULL) || (hash_suffix == (unsigned char *) NULL)) return(False); packet++; /* Now: packet-1 == place for byte_count */ /* Initialize GIF encoder. */ number_bits=data_size; max_code=MaxCode(number_bits); clear_code=((short) 1 << (data_size-1)); end_of_information_code=clear_code+1; free_code=clear_code+2; byte_count=0; datum=0; bits=0; for (i=0; i < MaxHashTable; i++) hash_code[i]=0; GIFOutputCode(clear_code); /* Encode pixels. */ /**** pts ****/ pp=ppbeg; waiting_code=*(unsigned char const*)pp++; /* unsigned char BUGFIX at Sun Dec 8 13:17:00 CET 2002 */ while (pp!=ppend) { /* Probe hash table. */ index=*(unsigned char const*)pp++; k=(int) ((int) index << (MaxGIFBits-8))+waiting_code; if (k >= MaxHashTable) k-=MaxHashTable; #if defined(HasLZW) if (hash_code[k] > 0) { if ((hash_prefix[k] == waiting_code) && (hash_suffix[k] == index)) { waiting_code=hash_code[k]; continue; } if (k == 0) displacement=1; else displacement=MaxHashTable-k; next_pixel=False; for ( ; ; ) { k-=displacement; if (k < 0) k+=MaxHashTable; if (hash_code[k] == 0) break; if ((hash_prefix[k] == waiting_code) && (hash_suffix[k] == index)) { waiting_code=hash_code[k]; next_pixel=True; break; } } if (next_pixel != False) /* pacify VC6.0 */ continue; } #endif GIFOutputCode(waiting_code); // printf("wc=%u\n", waiting_code); if (free_code < MaxGIFTable) { hash_code[k]=free_code++; hash_prefix[k]=waiting_code; hash_suffix[k]=index; } else { /* Fill the hash table with empty entries. */ for (k=0; k < MaxHashTable; k++) hash_code[k]=0; /* Reset compressor and issue a clear code. */ free_code=clear_code+2; GIFOutputCode(clear_code); number_bits=data_size; max_code=MaxCode(number_bits); } waiting_code=index; #if 0 /**** pts ****/ if (QuantumTick(i,image) && (image->previous == (Image2 *) NULL)) ProgressMonitor(SaveImageText,i,image->packets); #endif } /* Flush out the buffered code. */ GIFOutputCode(waiting_code); GIFOutputCode(end_of_information_code); if (bits > 0) { /* Add a character to current packet. */ packet[byte_count++]=(unsigned char) (datum & 0xff); if (byte_count >= 254) { packet[-1]=byte_count; out.vi_write((char*)packet-1, byte_count+1); byte_count=0; } } /* Flush accumulated data. */ if (byte_count > 0) { packet[-1]=byte_count; out.vi_write((char*)packet-1, byte_count+1); } /* Free encoder memory. */ AFREE(hash_suffix); AFREE(hash_prefix); AFREE(hash_code); AFREE(packet-1); return pp==ppend; }