Exemplo n.º 1
0
char HFltAttributeEntry::save(float * src)
{
    if(!hasNamedAttr(".def_val"))
        addFloatAttr(".def_val");
    
    writeFloatAttr(".def_val", src);
    return HAttributeEntry::save();
}
Exemplo n.º 2
0
char HFlt3AttributeEntry::save(const Vector3F * src)
{
    if(!hasNamedAttr(".def_val"))
        addFloatAttr(".def_val", 3);
    
    writeFloatAttr(".def_val", (float *)src);
    return HAttributeEntry::save();
}
Exemplo n.º 3
0
char HAdaptiveField::save(AdaptiveField * fld)
{
    int nc = fld->numCells();
    std::cout<<"\n hadaptivefield save n cells "<<nc;

    if(!hasNamedAttr(".ncells"))
        addIntAttr(".ncells");

    writeIntAttr(".ncells", &nc);

    if(!hasNamedAttr(".origin_span"))
        addFloatAttr(".origin_span", 4);

    float originSpan[4];
    originSpan[0] = fld->origin().x;
    originSpan[1] = fld->origin().y;
    originSpan[2] = fld->origin().z;
    originSpan[3] = fld->span();
    writeFloatAttr(".origin_span", originSpan);

    if(!hasNamedAttr(".max_level"))
        addIntAttr(".max_level");

    int ml = fld->maxLevel();
    writeIntAttr(".max_level", &ml);

    BaseBuffer dhash;
    dhash.create(nc * 16);
    IOCellHash * dst = (IOCellHash *)dhash.data();

    sdb::CellHash * c = fld->cells();
    c->begin();
    while(!c->end()) {
        dst->code = c->key();
        dst->level = c->value()->level;
        dst->visited = c->value()->visited;
        dst->index = c->value()->index;
        dst++;
        c->next();
    }

    if(!hasNamedData(".cellHash"))
        addCharData(".cellHash", nc*16);

    writeCharData(".cellHash", nc*16, dhash.data());

    return HField::save(fld);
}
Exemplo n.º 4
0
void HAttributeGroup::writeNumericValueAsFlt(ANumericAttribute * data)
{
	float va;
	double vb;
	switch (data->numericType()) {
		case ANumericAttribute::TFloatNumeric:
			va = (static_cast<AFloatNumericAttribute *> (data))->value();
			break;
		case ANumericAttribute::TDoubleNumeric:
			vb = (static_cast<ADoubleNumericAttribute *> (data))->value();
			va = vb;
			break;
		default:
			break;
	}
	if(!hasNamedAttr(".val"))
		addFloatAttr(".val");
	
	writeFloatAttr(".val", &va);
//	std::cout<<" value "<<va;
}