Пример #1
0
bool VideoIO::saveStream(MeshInterchange& mesh)
{
  bool successful = false;

  if(MeshInterchange::TEXTURE_FORMAT == mesh.getPreferedFormat())
  {
	return saveStream(*mesh.getTexture());
  }
  else if(MeshInterchange::IMAGE_FORMAT == mesh.getPreferedFormat())
  {
	return saveStream(mesh.getIplImage());
  }

  return successful;
}
void KarisanStreamerConfig::addStream(StreamConfig *stream)
{
	int idx = getNumStreams() ;

	_allstreams->insert(pair<int, StreamConfig *>(idx, stream)) ;
	saveStream(stream) ;
}
Пример #3
0
void Message::messageToNetwork(QByteArray &qbaOut) const {
	char buffer[8192];
	PacketDataStream qdsOut(buffer, 8192);
	qdsOut << messageType();
	qdsOut << uiSession;
	saveStream(qdsOut);

	if (qdsOut.undersize() == 0) {
		qbaOut = QByteArray(buffer, qdsOut.size());
		return;
	}

	unsigned int size = 8192 + qdsOut.undersize();
	STACKVAR(char, b, size);
	PacketDataStream pdsResized(b, size);
	pdsResized << messageType();
	pdsResized << uiSession;
	saveStream(pdsResized);
	qbaOut = QByteArray(b, pdsResized.size());
}
void KarisanStreamerConfig::updateStream(int idx, string old_name)
{
	if(idx >= 0) {
		_config_file->EraseSection(old_name.c_str()) ;

		StreamConfig *stream = (*_allstreams)[idx] ;
		saveStream(stream) ;
		update() ;

	}
}
Пример #5
0
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
//
//
// Build the a dicom dataset that contain the directory's
//  information.
//
//
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
ptr<dataSet> dicomDir::buildDataSet()
{
	// Adjust the transfer syntax if it isn't already set
	///////////////////////////////////////////////////////////
	if(m_pDataSet->getString(0x2, 0, 0x10, 0) == "")
	{
		m_pDataSet->setString(0x2, 0, 0x10, 0, "1.2.840.10008.1.2.1");
	}

	// Adjust the version if it isn't already set
	///////////////////////////////////////////////////////////
	ptr<handlers::dataHandlerRaw> versionHandler(m_pDataSet->getDataHandlerRaw(0x2, 0, 0x1, 0, true, "OB"));
	if(versionHandler->getSize() != 2)
	{
		versionHandler->setSize(2);
		versionHandler->setUnsignedLong(0, 0);
		versionHandler->setUnsignedLong(1, 1);
	}
	versionHandler.release();

	// Adjust the SOP class UID if it isn't already set
	///////////////////////////////////////////////////////////
	if(m_pDataSet->getString(0x2, 0, 0x2, 0) == "")
	{
		m_pDataSet->setString(0x2, 0, 0x2, 0, "1.2.840.10008.1.3.10");
	}

	// Allocate offset fields
	///////////////////////////////////////////////////////////
	if(m_pFirstRootRecord != 0)
	{
		m_pFirstRootRecord->updateOffsets();
	}
	m_pDataSet->setUnsignedLong(0x0004, 0, 0x1200, 0, 0);


	// Save to a null stream in order to update the offsets
	///////////////////////////////////////////////////////////
	ptr<nullStream> saveStream(new nullStream);
	ptr<streamWriter> writer(new streamWriter(saveStream));
	ptr<codecs::dicomCodec> writerCodec(new codecs::dicomCodec);
	writerCodec->write(writer, m_pDataSet);

	// Scan all the records and update the pointers
	///////////////////////////////////////////////////////////
	if(m_pFirstRootRecord != 0)
	{
		m_pFirstRootRecord->updateOffsets();
		m_pDataSet->setUnsignedLong(0x0004, 0, 0x1200, 0, m_pFirstRootRecord->getRecordDataSet()->getItemOffset());
	}

	return m_pDataSet;

}
void KarisanStreamerConfig::update()
{
	for(map<int, StreamConfig *>::iterator itr = _allstreams->begin() ; itr != _allstreams->end() ; ++itr) {
		StreamConfig *strm = (*itr).second ;
		saveStream(strm) ;
	}
	StreamNames *stream_names = new StreamNames();

	setStreamNames(stream_names) ;
	_config_file->WriteString(DEFAULT_CONFIG_NAME, "Streams", stream_names->CommaText) ;
	_config_file->UpdateFile() ;

	delete stream_names ;
}
Пример #7
0
void ConfigFile::save(std::string _filename){

    if(_filename == ""){
        _filename = filename;
    }

    std::fstream saveStream(_filename.c_str(), std::ios_base::out|std::ios_base::trunc);

    if(!saveStream)
    {
        throw ConfigFile::Exception("Could not open " + _filename);
    }

    saveStream << *this;

    saveStream.close();
}
bool KarisanStreamerConfig::saveStreamNames()
{
	bool ret = true ;
	TStringList *stream_names = new TStringList() ;

	for(int idx = 0 ; idx < _allstreams->size() ; idx++) {
		StreamConfig *stream = (*_allstreams)[idx] ;

		stream_names->Add(UnicodeString(stream->getName().c_str())) ;
		saveStream(stream) ;
	}

	_config_file->WriteString(DEFAULT_CONFIG_NAME, "streams", stream_names->CommaText) ;

	delete stream_names ;
	return(ret) ;
}
Пример #9
0
void Message::messageToNetwork(PacketDataStream &pds) const {
	pds << messageType();
	pds << uiSession;
	saveStream(pds);
	pds.truncate();
}
Пример #10
0
static glui32 classes_iter(glk_object_save_t **objs)
{
    classtable_t *ctab;
    classref_t *cref;
    glui32 num_classes;
    glui32 i,j,ct = 0;
    glk_object_save_t *o = NULL, *cur;

    window_t  *win;
    stream_t *str_cur = glk_stream_get_current();

    if (!objs)
        return 0;

    *objs = NULL;

    num_classes = gidispatch_count_classes();
    ct = 0;
    for (i = 0; i < num_classes; i++) { // iterate everything quickly
        if ((ctab = classes[i])) {
            for (j = 0; j < CLASSHASH_SIZE; j++) {
                cref = ctab->bucket[j];
                for ( ; cref; cref = cref->next) {
                    if (i == 0) {
                        window_t *win = (window_t *)cref->obj;
                        win->store = 0;
                    } else if (i == 1) {
                        stream_t *str = (stream_t *)cref->obj;
                        str->store = 0;
                    }
                    ct++;
                }
            }
        }
    }
    if (!ct) return 0;

    // add entries for windows with styles/pair info + the two general styles
    win = NULL;
    while ((win = gli_window_iterate_backward(win, NULL))) {
        if (win->type == wintype_TextBuffer || win->type == wintype_TextGrid
                || win->type == wintype_Pair || win->type == wintype_Graphics)
            ct++;
    }
    // leave off the last 2 in the event of no styles in use!
    if (gli_window_has_stylehints())
        ct += 2;

    o = glulx_malloc(sizeof(glk_object_save_t) * ct);
    if (!o) return 0;

    ct = 0;
    win = NULL;
    while ((win = gli_window_iterate_backward(win, NULL))) {
        cur = o + ct;
        memset(cur, 0, sizeof(glk_object_save_t));

        cur->type = gidisp_Class_Window;
        cur->id = classes_find_id_for_object(0, win);

        saveWin(win, &cur->obj.win);
        //!!!cur->obj.win = *win;
        win->store = TRUE;
        cur->iscurrent = FALSE; //(win == win_cur);
        classes_normalize_pointers(cur);

        ct++;
        // get stream for window
        if ((win->type == wintype_TextBuffer) || (win->type == wintype_TextGrid)) {

            // write STREAM chunk
            cur = o + ct;
            memset(cur, 0, sizeof(glk_object_save_t));

            cur->type = gidisp_Class_Stream;
            cur->id = classes_find_id_for_object(1, win->str);
            //!!!cur->obj.str = *win->str;

            saveStream(win->str, &cur->obj.str);
            win->str->store = TRUE;
            cur->iscurrent = (win->str == str_cur);
            classes_normalize_pointers(cur);
            ct++;

            // write STYLE chunk
            cur = o + ct;
            memset(cur, 0, sizeof(glk_object_save_t));

            cur->type = type_Style;
            cur->id = classes_find_id_for_object(0, win);

            GLK_STYLE_HINTS hints[style_NUMSTYLES];

            gli_window_get_stylehints(win, hints);
            memcpy(cur->obj.style, hints, sizeof(GLK_STYLE_HINTS) * style_NUMSTYLES);

            ct++;
        } else if (win->type == wintype_Pair) {
            window_pair_t *pairwin = (window_pair_t*)win->data;

            // write PAIR chunk
            cur = o + ct;
            memset(cur, 0, sizeof(glk_object_save_t));

            cur->type = type_Pair;
            cur->id = classes_find_id_for_object(0, win);

            //!!!cur->obj.pair = *((window_pair_t *)win->data);
            saveWinPair(pairwin, &cur->obj.pair);

            // set the children to their ids so we can find the pair on reload
            cur->obj.pair.child1 = classes_find_id_for_object(gidisp_Class_Window, pairwin->child1);
            cur->obj.pair.child2 = classes_find_id_for_object(gidisp_Class_Window, pairwin->child2);
            //!!!classes_normalize_pointers(cur);

            ct++;
        } else if (win->type == wintype_Graphics) {
            // write GRAPHICS chunk
            cur = o + ct;
            memset(cur, 0, sizeof(glk_object_save_t));

            cur->type = type_Graphics;
            cur->id = classes_find_id_for_object(0, win);

            saveWinGfx((window_graphics_t *)win->data, &cur->obj.gfx);
            ct++;
        }
    }
    // now, iterate other classes; window streams should have already been accounted for, but we check this
    for (i = 0; i < num_classes; i++) {
        if ((ctab = classes[i])) {
            for (j = 0; j < CLASSHASH_SIZE; j++) {
                cref = ctab->bucket[j];
                for ( ; cref; cref = cref->next) {
                    if (i == 0) { // windows
                        window_t *win = (window_t *)cref->obj;

                        if (!win->store) {
                            cur = o + ct;
                            memset(cur, 0, sizeof(glk_object_save_t));

                            cur->type = i;
                            cur->id = cref->id;
                        }
                    } else {
                        if (i == 1) { // streams
                            stream_t *str = (stream_t *)cref->obj;

                            if (!str->store) {
                                cur = o + ct;
                                memset(cur, 0, sizeof(glk_object_save_t));
                                cur->type = i;
                                cur->id = cref->id;

                                //!!!cur->obj.str = *str;
                                saveStream(str, &cur->obj.str);
                                cur->iscurrent = (str == str_cur);
                                classes_normalize_pointers(cur);
                                ct++;
                            }
                        } else if (i == 2) {
                            fileref_t *fref = (fileref_t *)cref->obj;

                            cur = o + ct;
                            memset(cur, 0, sizeof(glk_object_save_t));
                            cur->type = i;
                            cur->id = cref->id;

                            //!!!cur->obj.fref = *fref;
                            saveFRef(fref, &cur->obj.fref);
                            classes_normalize_pointers(cur);
                            ct++;
                        } else if (i == 3) { // won't happen here
                            ;
                        }
                    }
                }
            }
        }
    }
    // 2 general styles

    if (gli_window_has_stylehints()) {
        GLK_STYLE_HINTS hints[style_NUMSTYLES];

        cur = o + ct;
        memset(cur, 0, sizeof(glk_object_save_t));
        cur->type = type_Style;
        cur->id = STYLEHINT_TEXT_BUFFER;

        gli_window_get_stylehints((winid_t)STYLEHINT_TEXT_BUFFER, hints);

        memcpy(cur->obj.style, hints, sizeof(GLK_STYLE_HINTS) * style_NUMSTYLES);
        ct++;

        cur = o + ct;
        memset(cur, 0, sizeof(glk_object_save_t));
        cur->type = type_Style;
        cur->id = STYLEHINT_TEXT_GRID;

        gli_window_get_stylehints((winid_t)STYLEHINT_TEXT_GRID, hints);

        memcpy(cur->obj.style, hints, sizeof(GLK_STYLE_HINTS) * style_NUMSTYLES);
        ct++;
    }

    *objs = o;
    return ct;
}
Пример #11
0
bool ResourceDock::addNew(Kite::RTypes Type, const QString &Name, bool AskName){
	// check name
	if (!AskName) {
		if (resMap.find(Name) != resMap.end()) {
			return false;
		}
	}

	// find category and format
	auto pitem = resTree->findItems(Kite::getRTypesName(Type).c_str(), Qt::MatchFlag::MatchRecursive);
	auto frmt = resInfoMap.find((size_t)Type)->resFI.first().first;
	
	QString text = Name;
	frmnewres *form = nullptr;
	QStringList slist;

	// shaders have severeal types(vert, frag, geo)
	if (Type == Kite::RTypes::Shader) {
		slist.push_back("Vertex");
		slist.push_back("Fragment");
		slist.push_back("Geometry");
		form = new frmnewres(slist, this);

	// single types resources
	} else {
		form = new frmnewres(slist, this);
	}

	while(AskName) {
		// show form
		form->exec();

		// cancel pressed
		if (!form->isOk()) {
			return false;
		}

		text = form->getName();

		// shader types
		if (Type == Kite::RTypes::Shader) {
			if (form->getType() == "Vertex") { frmt = ".vert"; }
			if (form->getType() == "Fragment") { frmt = ".frag"; }
			if (form->getType() == "Geometry") { frmt = ".geom"; }
		}

		// available name
		if (resMap.find(text + frmt) != resMap.end()) {
			QMessageBox msg;
			msg.setWindowTitle("Message");
			msg.setText("this name is already exist!");
			msg.exec();
			continue;
		}

		// file validation
		QFile file(resDir + text + frmt);
		if (file.exists()) {
			auto ret = QMessageBox::question(this, "Message",
												"this name is exists in the current resources directory.\ndo you want to replace it?",
												QMessageBox::Yes | QMessageBox::No,
												QMessageBox::No);

			if (ret == QMessageBox::StandardButton::No) {
				file.close();
				continue;
			}
		}

		if (!file.open(QIODevice::ReadWrite)) {
			QMessageBox msg;
			msg.setWindowTitle("Message");
			msg.setText("cant create file in the resource directory.");
			msg.exec();
			file.close();
			continue;
		}
		file.close();

		// ok pressed
		if (form->isOk()) {
			text = QFileInfo(file.fileName()).fileName();
			break;
		}
	}

	delete form;

	// create new res
	Kite::KResourceManager rman;
	auto newres = rman.createOnFly(Type, text.toStdString());
	if (newres == nullptr) {
		QMessageBox msg;
		msg.setWindowTitle("Message");
		msg.setText("resource create module return nullptr!\nresource type: " + QString(Kite::getRTypesName(Type).c_str()));
		msg.exec();
		return false;
	}

	// save it to the hard disk
	Kite::KFOStream fstream;
	if (!newres->saveStream(fstream, resDir.toStdString() + text.toStdString())) {
		QMessageBox msg;
		msg.setWindowTitle("Message");
		msg.setText("cant create resource file.!\nresource type: " + QString(Kite::getRTypesName(Type).c_str()));
		msg.exec();
		delete newres;
		return false;
	}
	delete newres;

	// add to tree
	auto item = new QTreeWidgetItem(pitem.first());
	item->setText(0, text);

	// add to map
	resMap.insert(text, qMakePair(resDir + text, Type));

	emit(resAdded(text, Type));
	return true;
}
Пример #12
0
void Net::saveToFile(const char * file_name) {
	//printf("save to %s\n", file_name);
	ofstream saveStream(file_name, ios::out | ios::binary);
	save(saveStream);
}