Exemplo n.º 1
0
std::pair<TRasterP, TCacheResource::CellData *> TCacheResource::touch(const PointLess &cellIndex)
{
	std::string cellId(getCellCacheId(cellIndex.x, cellIndex.y));

	std::map<PointLess, CellData>::iterator it = m_cellDatas.find(cellIndex);
	if (it != m_cellDatas.end()) {
		//Retrieve the raster from image cache
		TImageP img(TImageCache::instance()->get(cellId, true));
		if (img)
			return std::make_pair(getRaster(img), &it->second);
	}

	it = m_cellDatas.insert(std::make_pair(cellIndex, CellData())).first;

	//Then, attempt retrieval from back resource
	TRasterP ras(load(cellIndex));
	if (ras) {
		TImageCache::instance()->add(cellId, TRasterImageP(ras));
		return std::make_pair(ras, &it->second);
	}

	//Else, create it
	return std::make_pair(
		createCellRaster(m_tileType, cellId), //increases m_cellsCount too
		&it->second);
}
Exemplo n.º 2
0
void main() {
	int i,RcvId;
	void *msg;
	int screen;
	
	chan = makeChan();
	screen = open("/dev/screen",O_PROC, chan);
	if (screen == -1) {
		perror("Shit!");
		exit(1);
	}
	retexit(1);
	scrSwitch(screen, SCRO_This);
	while(1) {
		RcvId = recvMsg(chan, &msg);
		switch (* (int *)msg) {
		case PMSG_GetScr: 
				VideoMode();
				InitializeStars();
				EditPalette();
				getRaster();
				check=1;
				initKey();
				setRaster(VBIRute,250);
				break;
		case PMSG_LoseScr:
				freeRaster();
				scrSwitch(screen, SCRO_Next); 
				break;
		}
		replyMsg(RcvId,0);
	}

}
Exemplo n.º 3
0
int main(int argc, char **argv) {
    if (argc < 6) {
	std::cerr <<  "Usage: raytracer <model_file> <output_file_name> <refract> <reflect> <aa>" << std::endl;
	exit(1);
    }
    std::ifstream input(argv[1]);
    parseModelFile(input, scene);
    std::string fname = argv[2];
    refract = (boost::starts_with(argv[3], "t")) ? true : false;
    reflect = (boost::starts_with(argv[4], "t")) ? true : false;
    aa = (boost::starts_with(argv[5], "t")) ? true : false;
    auto buf = getRaster();
    writePPM(std::move(buf), scene.cam.viewportHeight, scene.cam.viewportWidth, argv[2]);
    return 0;
}
Exemplo n.º 4
0
void TCacheResource::save(const TFilePath &fp)
{
	assert(!fp.isEmpty());

	std::map<PointLess, CellData>::iterator it;
	for (it = m_cellDatas.begin(); it != m_cellDatas.end(); ++it) {
		TRasterP cellRas = getRaster(TImageCache::instance()->get(
			getCellCacheId(it->first.x, it->first.y), false));

		assert(m_tileType != NONE);

		TFilePath cellFp(fp + TFilePath(getCellName(it->first.x, it->first.y)));

		if (m_tileType == CM32)
			::saveCompressed(cellFp, cellRas);
		else
			TImageWriter::save(cellFp.withType(".tif"), cellRas);
	}
}
Exemplo n.º 5
0
bool TCacheResource::save(const PointLess &cellIndex, TRasterP cellRas) const
{
	if (!m_backEnabled || m_invalidated)
		return false;

	assert(!m_path.isEmpty());

	if (!cellRas)
		cellRas = getRaster(TImageCache::instance()->get(
			getCellCacheId(cellIndex.x, cellIndex.y), false));

	assert(m_tileType != NONE);

	TFilePath fp(TCacheResourcePool::instance()->getPath() + m_path + getCellName(cellIndex.x, cellIndex.y));

	if (m_tileType == CM32) {
		::saveCompressed(fp, cellRas);
	} else {
		TImageWriter::save(fp.withType(".tif"), cellRas);
	}

	return true;
}
Exemplo n.º 6
0
void terrama2::core::DataStoragerTiff::store(DataSetSeries series, DataSetPtr outputDataSet) const
{
  if(!outputDataSet.get() || !series.syncDataSet.get())
  {
    QString errMsg = QObject::tr("Mandatory parameters not provided.");
    TERRAMA2_LOG_ERROR() << errMsg;
    throw DataStoragerException() << ErrorDescription(errMsg);
  }

  QUrl uri(QString::fromStdString(dataProvider_->uri));
  auto path = uri.path().toStdString();
  try
  {
    std::string mask = getMask(outputDataSet);

    auto dataset = series.syncDataSet->dataset();
    size_t rasterColumn = te::da::GetFirstPropertyPos(dataset.get(), te::dt::RASTER_TYPE);
    if(!isValidColumn(rasterColumn))
    {
      QString errMsg = QObject::tr("No raster attribute.");
      TERRAMA2_LOG_ERROR() << errMsg;
      throw DataStoragerException() << ErrorDescription(errMsg);
    }

    size_t timestampColumn = te::da::GetFirstPropertyPos(dataset.get(), te::dt::DATETIME_TYPE);

    dataset->moveBeforeFirst();
    while(dataset->moveNext())
    {
      std::shared_ptr<te::rst::Raster> raster(dataset->isNull(rasterColumn) ? nullptr : dataset->getRaster(rasterColumn).release());
      std::shared_ptr<te::dt::DateTime> timestamp;
      if(!isValidColumn(timestampColumn) || dataset->isNull(timestampColumn))
        timestamp = nullptr;
      else
        timestamp.reset(dataset->getDateTime(timestampColumn).release());

      if(!raster.get())
      {
        QString errMsg = QObject::tr("Null raster found.");
        TERRAMA2_LOG_ERROR() << errMsg;
        continue;
      }

      std::string filename = replaceMask(mask, timestamp, outputDataSet);

      std::string output = path + "/" + filename;
      te::rp::Copy2DiskRaster(*raster, output);
    }
  }
  catch(const DataStoragerException&)
  {
    throw;
  }
  catch(...)
  {
    //TODO: fix DataStoragerTiff catch
  }
}