Loader::params &Loader::params::operator= (const Loader::params &other) { if (this != &other) { // protect against invalid self-assignment if (Input != nullptr) delete Input; if (Header != nullptr) delete Header; Input = other.getInput()->clone(); Header = other.getHeader()->clone(); setBasePath(other.getBasePath()); setFactory(other.getFactory()); setInsertOnly(other.getInsertOnly()); setReturnsMutableVerticalTable(other.getReturnsMutableVerticalTable()); setModifiableMutableVerticalTable(other.getModifiableMutableVerticalTable()); setCompressed(other.getCompressed()); setReferenceTable(other.getReferenceTable()); } // by convention, always return *this return *this; }
MainWindow::MainWindow(int width, int height, int fps, bool tcp) : logger(0), depthImage(width, height, QImage::Format_RGB888), rgbImage(width, height, QImage::Format_RGB888), recording(false), lastDrawn(-1), width(width), height(height), fps(fps), tcp(tcp), comms(tcp ? new Communicator : 0) { this->setMaximumSize(width * 2, height + 160); this->setMinimumSize(width * 2, height + 160); QVBoxLayout * wrapperLayout = new QVBoxLayout; QHBoxLayout * mainLayout = new QHBoxLayout; QHBoxLayout * fileLayout = new QHBoxLayout; QHBoxLayout * optionLayout = new QHBoxLayout; QHBoxLayout * buttonLayout = new QHBoxLayout; wrapperLayout->addLayout(mainLayout); depthLabel = new QLabel(this); depthLabel->setPixmap(QPixmap::fromImage(depthImage)); mainLayout->addWidget(depthLabel); imageLabel = new QLabel(this); imageLabel->setPixmap(QPixmap::fromImage(rgbImage)); mainLayout->addWidget(imageLabel); wrapperLayout->addLayout(fileLayout); wrapperLayout->addLayout(optionLayout); QLabel * logLabel = new QLabel("Log file: ", this); logLabel->setMaximumWidth(logLabel->fontMetrics().boundingRect(logLabel->text()).width()); fileLayout->addWidget(logLabel); logFile = new QLabel(this); logFile->setTextInteractionFlags(Qt::TextSelectableByMouse); logFile->setStyleSheet("border: 1px solid grey"); fileLayout->addWidget(logFile); #ifdef __APPLE__ int cushion = 25; #else int cushion = 10; #endif browseButton = new QPushButton("Browse", this); browseButton->setMaximumWidth(browseButton->fontMetrics().boundingRect(browseButton->text()).width() + cushion); connect(browseButton, SIGNAL(clicked()), this, SLOT(fileBrowse())); fileLayout->addWidget(browseButton); dateNameButton = new QPushButton("Date filename", this); dateNameButton->setMaximumWidth(dateNameButton->fontMetrics().boundingRect(dateNameButton->text()).width() + cushion); connect(dateNameButton, SIGNAL(clicked()), this, SLOT(dateFilename())); fileLayout->addWidget(dateNameButton); autoExposure = new QCheckBox("Auto Exposure"); autoExposure->setChecked(false); autoWhiteBalance = new QCheckBox("Auto White Balance"); autoWhiteBalance->setChecked(false); compressed = new QCheckBox("Compressed"); compressed->setChecked(true); memoryRecord = new QCheckBox("Record to RAM"); memoryRecord->setChecked(false); memoryStatus = new QLabel(""); connect(autoExposure, SIGNAL(stateChanged(int)), this, SLOT(setExposure())); connect(autoWhiteBalance, SIGNAL(stateChanged(int)), this, SLOT(setWhiteBalance())); connect(compressed, SIGNAL(released()), this, SLOT(setCompressed())); connect(memoryRecord, SIGNAL(stateChanged(int)), this, SLOT(setMemoryRecord())); optionLayout->addWidget(autoExposure); optionLayout->addWidget(autoWhiteBalance); optionLayout->addWidget(compressed); optionLayout->addWidget(memoryRecord); optionLayout->addWidget(memoryStatus); wrapperLayout->addLayout(buttonLayout); startStop = new QPushButton(tcp ? "Stream && Record" : "Record", this); connect(startStop, SIGNAL(clicked()), this, SLOT(recordToggle())); buttonLayout->addWidget(startStop); QPushButton * quitButton = new QPushButton("Quit", this); connect(quitButton, SIGNAL(clicked()), this, SLOT(quit())); buttonLayout->addWidget(quitButton); setLayout(wrapperLayout); startStop->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); quitButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); QFont currentFont = startStop->font(); currentFont.setPointSize(currentFont.pointSize() + 8); startStop->setFont(currentFont); quitButton->setFont(currentFont); painter = new QPainter(&depthImage); painter->setPen(Qt::green); painter->setFont(QFont("Arial", 30)); painter->drawText(10, 50, "Attempting to start OpenNI2..."); depthLabel->setPixmap(QPixmap::fromImage(depthImage)); #ifndef OS_WINDOWS char * homeDir = getenv("HOME"); logFolder.append(homeDir); logFolder.append("/"); #else char * homeDrive = getenv("HOMEDRIVE"); char * homeDir = getenv("HOMEPATH"); logFolder.append(homeDrive); logFolder.append("\\"); logFolder.append(homeDir); logFolder.append("\\"); #endif logFolder.append("Kinect_Logs"); boost::filesystem::path p(logFolder.c_str()); boost::filesystem::create_directory(p); logFile->setText(QString::fromStdString(getNextFilename())); timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(timerCallback())); timer->start(15); }