Esempio n. 1
0
CCLayer* RestartAction()
{
    CCLayer* pLayer = CreateLayer(s_nActionIdx);
    pLayer->autorelease();

    return pLayer;
}
//=============================================================================
void FSteamVRHMD::UpdateSplashScreen()
{
	FTexture2DRHIRef Texture = (bSplashShowMovie && SplashMovie.IsValid()) ? SplashMovie : SplashTexture;
	if (bSplashIsShown && Texture.IsValid())
	{
		FLayerDesc LayerDesc;
		LayerDesc.Flags = ELayerFlags::LAYER_FLAG_TEX_NO_ALPHA_CHANNEL;
		LayerDesc.PositionType = ELayerType::TrackerLocked;
		LayerDesc.Texture = Texture;
		LayerDesc.UVRect = FBox2D(SplashOffset, SplashScale);
		LayerDesc.Transform.SetTranslation(FVector(500.0f, 0.0f, 0.0f));
		LayerDesc.QuadSize = FVector2D(800.0f, 450.0f);

		if (SplashLayerHandle)
		{
			SetLayerDesc(SplashLayerHandle, LayerDesc);
		}
		else
		{
			SplashLayerHandle = CreateLayer(LayerDesc);
		}
	}
	else
	{
		if (SplashLayerHandle)
		{
			DestroyLayer(SplashLayerHandle);
			SplashLayerHandle = 0;
		}
	}
}
SnippingWindow::SnippingWindow(HWND _parent)
    :WindowBase()
{
    auto up = std::make_unique<Yupei::CreateParam>(L"YupeiWindow");
    up->ParentWindow = _parent;
    SetCreateParam(std::move(up));
    auto rect = Yupei::DeviceHelper::GetResolution(GetWindowHandle());
    resolutionX = Yupei::GetRECTWidth<UINT>(rect);
    resolutionY = Yupei::GetRECTHeight<UINT>(rect);
    auto rt = GetRenderTarget();
    rt->CreateLayer(&topLayer);
    rt->CreateLayer(&shownLayer);
    rt->CreateSolidColorBrush(
        D2D1::ColorF(D2D1::ColorF::White, 0.5f), &whiteBrush);

}
Esempio n. 4
0
TWeakObjectPtr< ULayer > FLayers::EnsureLayerExists( const FName& LayerName )
{
	TWeakObjectPtr< ULayer > Layer;
	if( !TryGetLayer( LayerName, Layer ) )
	{
		Layer = CreateLayer( LayerName );
	}

	return Layer;
}
Esempio n. 5
0
CCLayer* NextAction()
{
    ++s_nActionIdx;
    s_nActionIdx = s_nActionIdx % ACTION_LAYER_COUNT;

    CCLayer* pLayer = CreateLayer(s_nActionIdx);
    pLayer->autorelease();

    return pLayer;
}
Esempio n. 6
0
CCLayer* BackAction()
{
    --s_nActionIdx;
    if( s_nActionIdx < 0 )
        s_nActionIdx += ACTION_LAYER_COUNT;

    CCLayer* pLayer = CreateLayer(s_nActionIdx);
    pLayer->autorelease();

    return pLayer;
}
Esempio n. 7
0
XBaseLayer *XActObj::CreateLayer( int idx, const LAYER_INFO* pLayerInfo )
{
	auto pLayer = CreateLayer( idx
														 , pLayerInfo->type
														 , pLayerInfo->nLayer
														 , pLayerInfo->fAdjustAxisX
														 , pLayerInfo->fAdjustAxisY );		// 실제 레이어를 만들어준다
	if( pLayer ) {
		XBREAK( pLayerInfo->idLayer == 0 );
		pLayer->SetidLayer( pLayerInfo->idLayer );
	}
	return pLayer;
}
MultilayerNET* CreateNewMultilayerNET(uint layersCount, uint inputDimension, ActivationFunctionPtr actFunction, uint* layersParams)
{
	uint i;
	MultilayerNET* newNET;

	if(!CheckParams(layersCount, inputDimension, actFunction, layersParams))
	{
		newNET = ALLOC_OBJ(MultilayerNET);

		newNET->InputDimension = inputDimension;
		newNET->LayersCount = layersCount;
		newNET->OutputDimension = layersParams[layersCount-1];
		newNET->Layers = ALLOC_ARRAY(Layer*, layersCount);

		newNET->Layers[0] = CreateLayer(layersParams[0], actFunction, inputDimension);
		for(i = 1; i < newNET->LayersCount; i++)
		{
			newNET->Layers[i] = CreateLayer(layersParams[i], actFunction, newNET->Layers[i-1]->NeuronsCount);
		}
		newNET->LastOutput = newNET->Layers[newNET->LayersCount-1]->LastOutput; // output of NET is output of her last layer

		return newNET;
	}
Esempio n. 9
0
TYPED_TEST(HDF5DataLayerTest, TestSkip) {
  typedef typename TypeParam::Dtype Dtype;
  LayerParameter param;
  param.set_type("HDF5Data");
  param.add_top("data");
  param.add_top("label");

  if (std::is_same<Dtype, half_fp>::value) {
    param.set_bottom_data_type(CAFFE_FLOAT);
    param.set_compute_data_type(CAFFE_FLOAT);
    param.set_top_data_type(proto_data_type<Dtype>());
  }

  HDF5DataParameter* hdf5_data_param = param.mutable_hdf5_data_param();
  int batch_size = 5;
  hdf5_data_param->set_batch_size(batch_size);
  hdf5_data_param->set_source(*(this->filename));
  int_tp num_cols = 8;
  int_tp height = 6;
  int_tp width = 5;

  Caffe::set_solver_count(8);
  for (int dev = 0; dev < Caffe::solver_count(); ++dev) {
    Caffe::set_solver_rank(dev);

    shared_ptr<LayerBase> layer = CreateLayer(param);
    layer->SetUp(this->blob_bottom_base_vec_, this->blob_top_base_vec_);
    EXPECT_EQ(this->blob_top_data_->num(), batch_size);
    EXPECT_EQ(this->blob_top_data_->channels(), num_cols);
    EXPECT_EQ(this->blob_top_data_->height(), height);
    EXPECT_EQ(this->blob_top_data_->width(), width);

    EXPECT_EQ(this->blob_top_label_->num_axes(), 2);
    EXPECT_EQ(this->blob_top_label_->shape(0), batch_size);
    EXPECT_EQ(this->blob_top_label_->shape(1), 1);

    int label = dev;
    for (int iter = 0; iter < 1; ++iter) {
      layer->Forward(this->blob_bottom_base_vec_, this->blob_top_base_vec_,
                     nullptr);
      for (int i = 0; i < batch_size; ++i) {
        EXPECT_EQ(1 + label, this->blob_top_label_->cpu_data()[i]);
        label = (label + Caffe::solver_count()) % (batch_size * 2);
      }
    }
  }
  Caffe::set_solver_count(1);
  Caffe::set_solver_rank(0);
}
Esempio n. 10
0
RESULT
LayerManager::Init( IN const string& settingsFilename )
{
    RETAILMSG(ZONE_INFO, "LayerManager::Init( %s )", settingsFilename.c_str());

    RESULT rval = S_OK;
    char   path[MAX_PATH];
    
    //
    // Create a Settings object and load the file.
    //
    Settings mySettings;
    if ( FAILED(mySettings.Read( settingsFilename )) )
    {
        RETAILMSG(ZONE_ERROR, "ERROR: LayerManager::Init( %s ): failed to load settings file", settingsFilename.c_str() );
        return E_UNEXPECTED;
    }
    

    //
    // Create each Layer.
    //
    UINT32 numLayers = mySettings.GetInt("/Layers.NumLayers");

    for (int i = 0; i < numLayers; ++i)
    {
        sprintf(path, "/Layers/Layer%d", i);
        //DEBUGMSG(ZONE_INFO, "Loading [%s]", path);

        Layer *pLayer = NULL;
        CreateLayer( &mySettings, path, &pLayer );
        if (!pLayer)
        {
            RETAILMSG(ZONE_ERROR, "ERROR: LayerManager::Init( %s ): failed to create Layer", path);
            // Continue loading other Layers rather than aborting.
            continue;
        }
        
        //DEBUGMSG(ZONE_LAYER, "Created Layer [%s]", pLayer->GetName().c_str());
        CHR(Add(pLayer->GetName(), pLayer));
    }
    
Exit:
    return rval;
}
void output_ogr(const std::string& filename, const std::string& driver_name, const segvec& removed_segments, const segvec& added_segments) {
    OGRRegisterAll();

    OGRSFDriver* driver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(driver_name.c_str());
    if (!driver) {
        std::cerr << driver_name << " driver not available.\n";
        exit(return_code_fatal);
    }

    //const char* options[] = { "SPATIALITE=yes", "OGR_SQLITE_SYNCHRONOUS=OFF", "INIT_WITH_EPSG=no", nullptr };
    const char* options[] = { nullptr };
    auto data_source = std::unique_ptr<OGRDataSource, OGRDataSourceDestroyer>(driver->CreateDataSource(filename.c_str(), const_cast<char**>(options)));
    if (!data_source) {
        std::cerr << "Creation of output file failed.\n";
        exit(return_code_fatal);
    }

    SRS srs;
    auto layer = data_source->CreateLayer("changes", srs.out(), wkbLineString, const_cast<char**>(options));
    if (!layer) {
        std::cerr << "Creating layer 'changes' failed.\n";
        exit(return_code_fatal);
    }

    OGRFieldDefn field_change("change", OFTInteger);
    field_change.SetWidth(1);
    if (layer->CreateField(&field_change) != OGRERR_NONE ) {
        std::cerr << "Creating field 'change' on 'changes' layer failed.\n";
        exit(return_code_fatal);
    }

    layer->StartTransaction();

    for (const auto& segment : removed_segments) {
        add_segment(layer, 0, segment);
    }

    for (const auto& segment : added_segments) {
        add_segment(layer, 1, segment);
    }

    layer->CommitTransaction();
}
void LayerSpeedTest(uint iterations, uint inputLength,uint neuronsCount, ActivationFunctionPtr actFunction)
{
	Layer* layer;
	uint i;
	double* inputVector;
	StopWatch stopWatch;
	TimeInterval timeInterval;

	inputVector = ALLOC_ARRAY(double, inputLength);
	for(i = 0; i < inputLength; i++)
	{
		inputVector[i] = i;
	}

	layer = CreateLayer(neuronsCount, actFunction, inputLength);

	Reset(&stopWatch);
	Start(&stopWatch);

	for(i = 0; i < iterations; i++)
	{
		ComputeLayerOutput(layer, inputVector);
	}

	Stop(&stopWatch);
	CalcElapsedMilliSeconds(&stopWatch);
	ToTimeIntervalStruct(&stopWatch, &timeInterval);

	printf("LAYER SPEED TEST:\nPARAMETRS:\n iterations: %d\n input length: %d\n neuron's count: %d\n", iterations, inputLength, neuronsCount);
	printf("ELAPSED TIME:\n");
	printf(" milliseconds: %d\n", timeInterval.Miliseconds);
	printf(" seconds: %d\n", timeInterval.Seconds);
	printf(" minets: %d\n", timeInterval.Minets);
	printf(" hours: %d\n", timeInterval.Hours);
	printf("\n");

	free(inputVector);
	DisposeLayer(layer);
}
Esempio n. 13
0
OGRLayer *OGRDataSource::CopyLayer( OGRLayer *poSrcLayer, 
                                    const char *pszNewName, 
                                    char **papszOptions )

{
    OGRFeatureDefn *poSrcDefn = poSrcLayer->GetLayerDefn();
    OGRLayer *poDstLayer = NULL;

/* -------------------------------------------------------------------- */
/*      Create the layer.                                               */
/* -------------------------------------------------------------------- */
    if( !TestCapability( ODsCCreateLayer ) )
    {
        CPLError( CE_Failure, CPLE_NotSupported, 
                  "This datasource does not support creation of layers." );
        return NULL;
    }

    CPLErrorReset();
    poDstLayer = CreateLayer( pszNewName, poSrcLayer->GetSpatialRef(),
                              poSrcDefn->GetGeomType(), papszOptions );
    
    if( poDstLayer == NULL )
        return NULL;

/* -------------------------------------------------------------------- */
/*      Add fields.  Default to copy all field.                         */
/*      If only a subset of all fields requested, then output only      */
/*      the selected fields, and in the order that they were            */
/*      selected.                                                       */
/* -------------------------------------------------------------------- */
    int         iField;
    
    for( iField = 0; iField < poSrcDefn->GetFieldCount(); iField++ )
        poDstLayer->CreateField( poSrcDefn->GetFieldDefn(iField) );

/* -------------------------------------------------------------------- */
/*      Transfer features.                                              */
/* -------------------------------------------------------------------- */
    OGRFeature  *poFeature;
    
    poSrcLayer->ResetReading();

    while( TRUE )
    {
        OGRFeature      *poDstFeature = NULL;

        poFeature = poSrcLayer->GetNextFeature();
        
        if( poFeature == NULL )
            break;

        CPLErrorReset();
        poDstFeature = OGRFeature::CreateFeature( poDstLayer->GetLayerDefn() );

        if( poDstFeature->SetFrom( poFeature, TRUE ) != OGRERR_NONE )
        {
            delete poFeature;
            CPLError( CE_Failure, CPLE_AppDefined,
                      "Unable to translate feature %d from layer %s.\n",
                      poFeature->GetFID(), poSrcDefn->GetName() );
            return poDstLayer;
        }

        poDstFeature->SetFID( poFeature->GetFID() );

        OGRFeature::DestroyFeature( poFeature );

        CPLErrorReset();
        if( poDstLayer->CreateFeature( poDstFeature ) != OGRERR_NONE )
        {
            OGRFeature::DestroyFeature( poDstFeature );
            return poDstLayer;
        }

        OGRFeature::DestroyFeature( poDstFeature );
    }

    return poDstLayer;
}
Esempio n. 14
0
 // Get a layer using a prototxt which will be parsed into LayerParameter
 static shared_ptr<Layer<Dtype> > CreateLayer(const string& prototxt) {
   LayerParameter p;
   bool success = google::protobuf::TextFormat::ParseFromString(prototxt, &p);
   ASSERT(success, "Invalid prototxt string");
   return CreateLayer(p);
 }
Esempio n. 15
0
//---------------------------------------------------------------------------- 
// Nome: InitializeInterface(void)
// Desc: Inicializa layer e sprites de interface.
// Pams: nenhum
//---------------------------------------------------------------------------- 
void CLevel::InitializeInterface(void)
{
	int i = 0;
	//17.1.
	//1. criar a layer da interface
	p_LayInterface = CreateLayer(CNGLVector(0,0));	

	//2. colocar a velocidade da layer como nula, para que ela não
	//sofra deslocamento
	p_LayInterface->Speed = CNGLVector(0,0);

	//3. esconder a layer de interface
	p_LayInterface->bVisible = false;

	//17.2.1
	//Abaixo a criação de um vetor com os números para as pontuações
	for(int i = 0; i < NUM_ALGARISMS; i++){
		p_SprNumbers[i] = p_LayInterface->CreateSprite(NUMBERS_SPR,CNGLVector(26,38));
		if(p_SprNumbers[i]){
			for(int j = 0; j < 10; j++){
				p_SprNumbers[i]->AddAnimation(1,false,1,j);
			}
			p_SprNumbers[i]->Position.fy = 0.0f;
			p_SprNumbers[i]->Position.fx = 300.0f + (float) (i*p_SprNumbers[i]->GetFrame().GetWidth());
		}

	}

	//17.3.1. 
	//1. Criar um sprite para cada uma das três posições do vetor de vidas
	for(i = 0; i < NUM_LIVES; i++)
	{
		//1. criar o sprite
		p_SprLives[i] = p_LayInterface->CreateSprite(LIVES_SPR, CNGLVector(34,49));

		//2. quadro 0 de animação é o vazio (vida vazia)
		//2. quadro 1, 2 ou 3 corresponde a vida cheia -- Foda-se Quero vidas da mesma cor
		p_SprLives[i]->AddAnimation(1,false,1,0);
		p_SprLives[i]->AddAnimation(1,false,1,1);

		//3 posiciona as vidas
		p_SprLives[i]->Position.fy = 0.0f;
		p_SprLives[i]->Position.fx = (float) (i*p_SprLives[i]->GetFrame().GetWidth());
	}

	//17.4.
	//1. cria mensagem de pausa
	p_MsgPaused = p_LayInterface->CreateSprite(PAUSED_MSG,CNGLVector(200,30));
	p_MsgPaused->AddAnimation(1,false,1,0);
	p_MsgPaused->bVisible = false;
	Centralize(p_MsgPaused);

	//2. cria mensagem de game over
	p_MsgGameOver = p_LayInterface->CreateSprite(GAME_OVER_MSG,CNGLVector(148,26));
	p_MsgGameOver->AddAnimation(1,false,1,0);
	p_MsgGameOver->bVisible = false;
	Centralize(p_MsgGameOver);

	//3. cria mensagem de cangratulações
	p_MsgCongrats = p_LayInterface->CreateSprite(CONGRATS_MSG,CNGLVector(246,66));
	p_MsgCongrats->AddAnimation(1,false,1,0);
	p_MsgCongrats->bVisible = false;
	Centralize(p_MsgCongrats);

}
Esempio n. 16
0
//---------------------------------------------------------------------------- 
// Nome: Initialize(void)
// Desc: Inicializa a cena. Inicializa cenários,interfaces, jogador, inimigos e itens.
// Pams: nenhum
//---------------------------------------------------------------------------- 
bool CLevel::Initialize(void)
{
	//15.3.1
	//Adiciona as imagens a cena
	//imagem 0
	AddTileImage("Surfaces/tile_Level.bmp",CNGLVector(32,32)); //tiles para compor cenário
	//imagem 1
	AddTileImage("Surfaces/tile_Background.bmp",CNGLVector(128,350)); //tile do fundo

	//cria a layer de fundo (background). 1 único brick de 128x350
	CNGLLayer *p_LayBkg    = CreateLayer(CNGLVector(128,350),CNGLVector(1,1));
	//cria a layer do meio. Bricks de 32x32
	CNGLLayer *p_LayMiddle = CreateLayer(CNGLVector(32,32));
	//cria layer da fase (cenário). Bricks de 32x32
	p_LayLevel = CreateLayer(CNGLVector(32,32));

	//configura as velocidades para as layers
	//velocidade menor para dar impressão de profundidade
	p_LayBkg->Speed			= CNGLVector(0.5f,0.5f); 
	p_LayMiddle->Speed	= CNGLVector(0.7f,0.7f);

	//inicializa a layer de background
	//o Brick da posição (0,0) utiliza a imagem 1 e o quadro 0
	p_LayBkg->SetBrick(CNGLVector(0,0),1,0);
	p_LayBkg->Offset.fy = 200.0f; //pequeno deslocamento para ajustar brick

	//inicializa a layer intermediária
	//estrutura de configuração de bricks
	stNGLBrickConfig ConfigMiddle[3];
	//cor vermelha refere-se ao quadro 16 da imagem 0
	ConfigMiddle[0].uiColor		= RGB(255,0,0);
	ConfigMiddle[0].iImage		= 0;
	ConfigMiddle[0].iFrame		= 16;
	//cor verde refere-se ao quadro 17 da imagem 0
	ConfigMiddle[1].uiColor		= RGB(0,255,0);
	ConfigMiddle[1].iImage		= 0;
	ConfigMiddle[1].iFrame		= 17;
	//cor azul refere-se ao quadro 18 da imagem 0
	ConfigMiddle[2].uiColor		= RGB(0,0,255);
	ConfigMiddle[2].iImage		= 0;
	ConfigMiddle[2].iFrame		= 18;
	//faz a criação dos bricks configurados
	p_LayMiddle->CreateBricksFromBitmap("Surfaces/lay_Middle.bmp",ConfigMiddle,3);

	//inicializa a layer da frente (cenário da fase)
	//estrutura de configuração de bricks
	stNGLBrickConfig ConfigLevel[2];
	//cor preta refere-se ao quadro 0 da imagem 0
	ConfigLevel[0].uiColor	= RGB(0,0,0);
	ConfigLevel[0].iImage		= 0;
	ConfigLevel[0].iFrame		= 0;
	//cor vermelha refere-se ao quadro 4 da imagem 0
	ConfigLevel[1].uiColor	= RGB(255,0,0);
	ConfigLevel[1].iImage		= 0;
	ConfigLevel[1].iFrame		= 4;
	p_LayLevel->CreateBricksFromBitmap("Surfaces/lay_Level.bmp",ConfigLevel,2);

	//inicializa modelo de tiro (fica invisível)
	p_SprShot = p_LayLevel->CreateSprite("Surfaces/spr_Shot.bmp",CNGLVector(9,9));
	p_SprShot->bVisible = false;
	//inicializa o modelo da explosão
	p_SprShotExplode = p_LayLevel->CreateSprite("Surfaces/spr_Explosion.bmp",CNGLVector(64,64));
	p_SprShotExplode->AddAnimation(30,false,17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,-1);
	p_SprShotExplode->SetCurrentAnimation(0);
	p_SprShotExplode->bVisible = false;

	//inicia o menu
	Menu.pr_Level = this; //referência para classe CLevel
	Menu.Initialize();

	//iniciando interface
	InitializeInterface();

	//23.1.1.
	//1. criar o sprite da moeda final

	//1. adicionar sua animação contínua

	//1. ajustar animação corrente como 0

	//1. colocar moeda na posição (7235,430)


	//2. carrega o som de congratulação


	//3. criar o sprite da alavanca

	//3. adicionar as animações da alavanca


	//3. ajustar animação corrente como 0

	//3. colocar a alavanca na posição (7314,224)


	//4. carregar o som da alavanca


	//5. carregar trilha sonora


	return true;
}
Esempio n. 17
0
OGRLayer *OGRDataSource::CopyLayer( OGRLayer *poSrcLayer, 
                                    const char *pszNewName, 
                                    char **papszOptions )

{
    OGRFeatureDefn *poSrcDefn = poSrcLayer->GetLayerDefn();
    OGRLayer *poDstLayer = NULL;

/* -------------------------------------------------------------------- */
/*      Create the layer.                                               */
/* -------------------------------------------------------------------- */
    if( !TestCapability( ODsCCreateLayer ) )
    {
        CPLError( CE_Failure, CPLE_NotSupported, 
                  "This datasource does not support creation of layers." );
        return NULL;
    }

    CPLErrorReset();
    poDstLayer = CreateLayer( pszNewName, poSrcLayer->GetSpatialRef(),
                              poSrcDefn->GetGeomType(), papszOptions );
    
    if( poDstLayer == NULL )
        return NULL;

/* -------------------------------------------------------------------- */
/*      Add fields.  Default to copy all field.                         */
/*      If only a subset of all fields requested, then output only      */
/*      the selected fields, and in the order that they were            */
/*      selected.                                                       */
/* -------------------------------------------------------------------- */
    int         iField;
    
    for( iField = 0; iField < poSrcDefn->GetFieldCount(); iField++ )
        poDstLayer->CreateField( poSrcDefn->GetFieldDefn(iField) );

/* -------------------------------------------------------------------- */
/*      Check if the destination layer supports transactions and set a  */
/*      default number of features in a single transaction.             */
/* -------------------------------------------------------------------- */
    int nGroupTransactions = 0;
    if( poDstLayer->TestCapability( OLCTransactions ) )
        nGroupTransactions = 128;

/* -------------------------------------------------------------------- */
/*      Transfer features.                                              */
/* -------------------------------------------------------------------- */
    OGRFeature  *poFeature;

    poSrcLayer->ResetReading();

    if( nGroupTransactions <= 0 )
    {
      while( TRUE )
      {
        OGRFeature      *poDstFeature = NULL;

        poFeature = poSrcLayer->GetNextFeature();
        
        if( poFeature == NULL )
            break;

        CPLErrorReset();
        poDstFeature = OGRFeature::CreateFeature( poDstLayer->GetLayerDefn() );

        if( poDstFeature->SetFrom( poFeature, TRUE ) != OGRERR_NONE )
        {
            delete poFeature;
            CPLError( CE_Failure, CPLE_AppDefined,
                      "Unable to translate feature %ld from layer %s.\n",
                      poFeature->GetFID(), poSrcDefn->GetName() );
            return poDstLayer;
        }

        poDstFeature->SetFID( poFeature->GetFID() );

        OGRFeature::DestroyFeature( poFeature );

        CPLErrorReset();
        if( poDstLayer->CreateFeature( poDstFeature ) != OGRERR_NONE )
        {
            OGRFeature::DestroyFeature( poDstFeature );
            return poDstLayer;
        }

        OGRFeature::DestroyFeature( poDstFeature );
      }
    }
    else
    {
      int i, bStopTransfer = FALSE, bStopTransaction = FALSE;
      int nFeatCount = 0; // Number of features in the temporary array
      int nFeaturesToAdd = 0;
      while( !bStopTransfer )
      {
        OGRFeature **papoDstFeature =
            (OGRFeature **)CPLCalloc(sizeof(OGRFeature *), nGroupTransactions);

/* -------------------------------------------------------------------- */
/*      Fill the array with features                                    */
/* -------------------------------------------------------------------- */
        for( nFeatCount = 0; nFeatCount < nGroupTransactions; nFeatCount++ )
        {
            poFeature = poSrcLayer->GetNextFeature();

            if( poFeature == NULL )
            {
                bStopTransfer = 1;
                break;
            }

            CPLErrorReset();
            papoDstFeature[nFeatCount] =
                        OGRFeature::CreateFeature( poDstLayer->GetLayerDefn() );

            if( papoDstFeature[nFeatCount]->SetFrom( poFeature, TRUE ) != OGRERR_NONE )
            {
                OGRFeature::DestroyFeature( poFeature );
                CPLError( CE_Failure, CPLE_AppDefined,
                          "Unable to translate feature %ld from layer %s.\n",
                          poFeature->GetFID(), poSrcDefn->GetName() );
                bStopTransfer = TRUE;
                break;
            }

            papoDstFeature[nFeatCount]->SetFID( poFeature->GetFID() );

            OGRFeature::DestroyFeature( poFeature );
        }
        nFeaturesToAdd = nFeatCount;

        CPLErrorReset();
        bStopTransaction = FALSE;
        while( !bStopTransaction )
        {
            bStopTransaction = TRUE;
            poDstLayer->StartTransaction();
            for( i = 0; i < nFeaturesToAdd; i++ )
            {
                if( poDstLayer->CreateFeature( papoDstFeature[i] ) != OGRERR_NONE )
                {
                    nFeaturesToAdd = i;
                    bStopTransfer = TRUE;
                    bStopTransaction = FALSE;
                }
            }
            if( bStopTransaction )
                poDstLayer->CommitTransaction();
            else
                poDstLayer->RollbackTransaction();
        }

        for( i = 0; i < nFeatCount; i++ )
            OGRFeature::DestroyFeature( papoDstFeature[i] );
      }
    }
    return poDstLayer;
}
Esempio n. 18
0
TYPED_TEST(HDF5DataLayerTest, TestRead) {
  typedef typename TypeParam::Dtype Dtype;
  this->blob_top_vec_.push_back(this->blob_top_label2_);
  this->blob_top_base_vec_.push_back(this->blob_top_label2_);


  // Create LayerParameter with the known parameters.
  // The data file we are reading has 10 rows and 8 columns,
  // with values from 0 to 10*8 reshaped in row-major order.
  LayerParameter param;
  param.set_type("HDF5Data");
  param.add_top("data");
  param.add_top("label");
  param.add_top("label2");

  if (std::is_same<Dtype, half_fp>::value) {
    param.set_bottom_data_type(CAFFE_FLOAT);
    param.set_compute_data_type(CAFFE_FLOAT);
    param.set_top_data_type(proto_data_type<Dtype>());
  }

  HDF5DataParameter* hdf5_data_param = param.mutable_hdf5_data_param();
  int_tp batch_size = 5;
  hdf5_data_param->set_batch_size(batch_size);
  hdf5_data_param->set_source(*(this->filename));
  int_tp num_cols = 8;
  int_tp height = 6;
  int_tp width = 5;

  // Test that the layer setup gives correct parameters.
  shared_ptr<LayerBase> layer = CreateLayer(param);
  layer->SetUp(this->blob_bottom_base_vec_, this->blob_top_base_vec_);

  EXPECT_EQ(this->blob_top_data_->num(), batch_size);
  EXPECT_EQ(this->blob_top_data_->channels(), num_cols);
  EXPECT_EQ(this->blob_top_data_->height(), height);
  EXPECT_EQ(this->blob_top_data_->width(), width);

  EXPECT_EQ(this->blob_top_label_->num_axes(), 2);
  EXPECT_EQ(this->blob_top_label_->shape(0), batch_size);
  EXPECT_EQ(this->blob_top_label_->shape(1), 1);

  EXPECT_EQ(this->blob_top_label2_->num_axes(), 2);
  EXPECT_EQ(this->blob_top_label2_->shape(0), batch_size);
  EXPECT_EQ(this->blob_top_label2_->shape(1), 1);

  layer->SetUp(this->blob_bottom_base_vec_, this->blob_top_base_vec_);

  // Go through the data 10 times (5 batches).
  const int_tp data_size = num_cols * height * width;
  for (int_tp iter = 0; iter < 10; ++iter) {
    layer->Forward(this->blob_bottom_base_vec_,
                   this->blob_top_base_vec_, nullptr);

    // On even iterations, we're reading the first half_fp of the data.
    // On odd iterations, we're reading the second half_fp of the data.
    // NB: label is 1-indexed
    int_tp label_offset = 1 + ((iter % 2 == 0) ? 0 : batch_size);
    int_tp label2_offset = 1 + label_offset;
    int_tp data_offset = (iter % 2 == 0) ? 0 : batch_size * data_size;

    // Every two iterations we are reading the second file,
    // which has the same labels, but data is offset by total data size,
    // which is 2400 (see generate_sample_data).
    int_tp file_offset = (iter % 4 < 2) ? 0 : 2400;

    for (int_tp i = 0; i < batch_size; ++i) {
      if (label_offset + i <= type_max_integer_representable<Dtype>()) {
        EXPECT_EQ(
          label_offset + i,
          this->blob_top_label_->cpu_data()[i]);
      }
      if (label2_offset + i <= type_max_integer_representable<Dtype>()) {
        EXPECT_EQ(
          label2_offset + i,
          this->blob_top_label2_->cpu_data()[i]);
      }
    }
    for (int_tp i = 0; i < batch_size; ++i) {
      for (int_tp j = 0; j < num_cols; ++j) {
        for (int_tp h = 0; h < height; ++h) {
          for (int_tp w = 0; w < width; ++w) {
            int_tp idx = (
              i * num_cols * height * width +
              j * height * width +
              h * width + w);
            if (file_offset + data_offset + idx
                                   <= type_max_integer_representable<Dtype>()) {
              EXPECT_EQ(
                file_offset + data_offset + idx,
                this->blob_top_data_->cpu_data()[idx])
                << "debug: i " << i << " j " << j
                << " iter " << iter;
            }
          }
        }
      }
    }
  }
}
Esempio n. 19
0
/*!
  \brief Open VFK datasource

  \param pszNewName datasource name
  \param bTextOpen True to test if datasource is possible to open

  \return TRUE on success
  \return FALSE on failure
*/
int OGRVFKDataSource::Open(const char *pszNewName, int bTestOpen)
{
    FILE * fp;
    char   szHeader[1000];
    
    /* open the source file */
    fp = VSIFOpen(pszNewName, "r");
    if (fp == NULL) {
        if (!bTestOpen)
            CPLError(CE_Failure, CPLE_OpenFailed, 
		     "Failed to open VFK file `%s'.",
		     pszNewName);
	
        return FALSE;
    }

   /* If we aren't sure it is VFK, load a header chunk and check    
      for signs it is VFK */
    if (bTestOpen) {
	size_t nRead = VSIFRead(szHeader, 1, sizeof(szHeader), fp);
	if (nRead <= 0) {
            VSIFClose(fp);
            return FALSE;
        }
        szHeader[MIN(nRead, sizeof(szHeader))-1] = '\0';
	
	// TODO: improve check
	if (strncmp(szHeader, "&HVERZE;", 8) != 0) {
	    VSIFClose(fp);
            return FALSE;
	} 
    }

    /* We assume now that it is VFK. Close and instantiate a
       VFKReader on it. */
    VSIFClose(fp);

    pszName = CPLStrdup(pszNewName);
    
    poReader = CreateVFKReader();
    if (poReader == NULL) {
        CPLError(CE_Failure, CPLE_AppDefined, 
		 "File %s appears to be VFK but the VFK reader can't"
		 "be instantiated.",
		 pszNewName );
        return FALSE;
    }
    /* load data (whole file) */
    poReader->SetSourceFile(pszNewName);
    poReader->LoadData();

    /* get data blocks, i.e. &B */
    poReader->LoadDataBlocks();
    /* collect geometry properties
       load on first request
    */
    /* poReader->LoadGeometry(); */
    
    /* get list of layers */
    papoLayers = (OGRVFKLayer **) CPLCalloc(sizeof(OGRVFKLayer *), poReader->GetDataBlockCount());
    
    for (int iLayer = 0; iLayer < poReader->GetDataBlockCount(); iLayer++) {
        papoLayers[iLayer] = CreateLayer(poReader->GetDataBlock(iLayer));
	nLayers++;
    }
    
    return TRUE;
}