EXPORT_C TInt RDirectPrintClient::GetPrinterCapabilityIDs( TInt aPrinterID, RArray<TInt>& aCapabilityIDs ) const
	{
	TInt count;
	TPckg<TInt> countBuf( count );
	
	LOG1("RDirectPrintClient::GetPrinterCapabilityIDs EGetPrinterCapabilityIDsCount aPrinterID: %d", aPrinterID);
	TInt err = SendReceive( EGetPrinterCapabilityIDsCount, TIpcArgs( aPrinterID, &countBuf ) );
	LOG1("RDirectPrintClient::GetPrinterCapabilityIDs EGetPrinterCapabilityIDsCount err: %d", err);
	if( !err )
		{
		LOG1("RDirectPrintClient::GetPrinterCapabilityIDs EGetPrinterCapabilityIDsCount count: %d", count);
		for( TInt i = 0; i < count && !err; i++ )
			{
			TInt capability;
			TPckg<TInt> capBuf( capability );
			LOG1("RDirectPrintClient::GetPrinterCapabilityIDs EGetPrinterCapabilityID i: %d", i);
			err = SendReceive( EGetPrinterCapabilityID, TIpcArgs( i, &capBuf ) );
			LOG1("RDirectPrintClient::GetPrinterCapabilityIDs EGetPrinterCapabilityID err: %d", err);
			if( !err )
				{
				LOG1("RDirectPrintClient::GetPrinterCapabilityIDs capability id: %d", capability);
				err = aCapabilityIDs.Append( capability );
				LOG1("RDirectPrintClient::GetPrinterCapabilityIDs append err: %d", err);
				}
			}
		}
	
	LOG1("RDirectPrintClient::GetPrinterCapabilityIDs end with: %d", err);
	return err;
	}
EXPORT_C TInt RDirectPrintClient::GetProtocolNames(RSelectItemArray& aNames) const
	{
	//TInt err = SendReceive( EReserveEngine );
	TInt count;
	TPckg<TInt> countBuf( count );

	TInt err = SendReceive( EGetProtocolNamesCount, TIpcArgs( &countBuf ) );

	if( !err )
		{
		aNames.Reset();

		for( TInt i = 0; i < count && !err; i++ )
			{
			TDirectPrintSelectItem item;
			//iNameDataPtr.Set(reinterpret_cast<TUint8*>(&item), sizeof(item), sizeof(item));
			TPtr8 ptr(reinterpret_cast<TUint8*>(&item), sizeof(item), sizeof(item));
			//err = SendReceive( EGetProtocolName, TIpcArgs( i, &iNameDataPtr ) );
			err = SendReceive( EGetProtocolName, TIpcArgs( i, &ptr ) );
			if( !err )
				{
				aNames.Append(item);
				}
			}
		}

	return err;
	}
Ejemplo n.º 3
0
/**
 * 多面体データから distance field VolumeDataへの変換
 * @param w Width
 * @param h Height
 * @param d Depth
 * @retval true 変換成功
 * @retval false 変換失敗
 */
bool SolidDfToVolume::ToVolume(int w, int h, int d) {
    
    m_volume = BufferVolumeData::CreateInstance();
    
    int c = 1; // Store scalar density.
    m_volume->Create(w, h, d, c);
    
    //    assert(m_solid);
    //    assert(m_solid->Position());
    //    assert(m_solid->Position()->GetNum() > 0);
    
    float* voxels = m_volume->Buffer()->GetBuffer();
    
    const size_t fnum = w * h * d * c;
    for (size_t i = 0; i < fnum; i++) {
        voxels[i] = 0.0f; //-FLT_MAX; // @fixme
    }
    
    std::vector<int> countBuf(w * h * d, 0); // for compute avarage.
    
    float *position = m_solid->Position()->GetBuffer();
    
    size_t dim[3] = { w, h, d };
    float scale[3] = { (m_bmax[0] - m_bmin[0])/w, (m_bmax[1] - m_bmin[1])/h, (m_bmax[2] - m_bmin[2])/d };
    
    const int solid_n = m_solid->Position()->GetNum()/m_solid->GetType();
    const int solid_type = m_solid->GetType();
    
    std::vector<Solid> solids;
    solids.reserve(solid_n);
    
    for (int i = 0; i < solid_n; i++) {
        solids.push_back( Solid(position + solid_type * 3 * i, solid_type));
    }
    
    BVH bvh;
    bvh.generateBvhTree(solids);
    
    for (float x = m_bmin[0], y, z; x < m_bmax[0]; x += scale[0])
        for (y = m_bmin[1]; y < m_bmax[1]; y += scale[1])
            for (z = m_bmin[2]; z < m_bmax[2]; z += scale[2])
            {
                VX::Math::vec3 pt(x, y, z);
                float d = 1e16;
                bvh.searchNearestSolid(pt, d, 0);
                voxels[findLoc(x, y, z, m_bmin, m_bmax, dim)] = d;
            }
    
    printf("ToVolume: %zu, %zu, %zu\n", dim[0], dim[1], dim[2]);
    
    return true;
}
EXPORT_C TInt RDirectPrintClient::GetPrinterCapability(TInt aPrinterID, TInt aCapabilityID, TDirectPrintCapability& aCapability) const
	{
	LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapability aPrinterID: %d", aPrinterID);
	LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapability aCapabilityID: %d", aCapabilityID);
	TInt err = SendReceive( EGetPrinterCapability, TIpcArgs( aPrinterID, aCapabilityID ) );
	LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapability err: %d", err);

	if( !err )
		{
		TInt capId;
		TPckg<TInt> capIdBuf( capId );
		LOG("RDirectPrintClient::GetPrinterCapability EGetPrinterCapId");
		err = SendReceive( EGetPrinterCapId, TIpcArgs( &capIdBuf ) );
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapId err: %d", err);
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapId capId: %d", capId);
		if( !err )
			{
			iCapability->iCapabilityID = capId;
			}
		}

	if( !err )
		{
		TInt type;
		TPckg<TInt> typeBuf( type );
		LOG("RDirectPrintClient::GetPrinterCapability EGetPrinterCapType");
		err = SendReceive( EGetPrinterCapType, TIpcArgs( &typeBuf ) );
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapType err: %d", err);
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapType type: %d", type);
		if( !err )
			{
			iCapability->iType = static_cast<TDirectPrintCapability::ECapType>(type);
			}
		}

	if( !err )
		{
		TInt def;
		TPckg<TInt> defBuf( def );
		LOG("RDirectPrintClient::GetPrinterCapability EGetPrinterCapDef");
		err = SendReceive( EGetPrinterCapDef, TIpcArgs( &defBuf ) );
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapDef err: %d", err);
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapDef def: %d", def);
		if( !err )
			{
			iCapability->iDefaultValue = def;
			}
		}

	if( !err )
		{
		TInt low;
		TPckg<TInt> lowBuf( low );
		LOG("RDirectPrintClient::GetPrinterCapability EGetPrinterCapLow");
		err = SendReceive( EGetPrinterCapLow, TIpcArgs( &lowBuf ) );
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapLow err: %d", err);
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapLow low: %d", low);
		if( !err )
			{
			iCapability->iLow = low;
			}
		}

	if( !err )
		{
		TInt high;
		TPckg<TInt> highBuf( high );
		LOG("RDirectPrintClient::GetPrinterCapability EGetPrinterCapHigh");
		err = SendReceive( EGetPrinterCapHigh, TIpcArgs( &highBuf ) );
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapHigh err: %d", err);
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapHigh high: %d", high);
		if( !err )
			{
			iCapability->iHigh = high;
			}
		}

	if( !err )
		{
		TInt count;
		TPckg<TInt> countBuf( count );
		LOG("RDirectPrintClient::GetPrinterCapability EGetPrinterCapEnumCount");
		err = SendReceive( EGetPrinterCapEnumCount, TIpcArgs( &countBuf ) );
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapEnumCount err: %d", err);
		LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapEnumCount count: %d", count);
		
		if( !err )
			{
			iCapability->iEnumCount = count;
			for( TInt i = 0; i < count && ! err; i++ )
				{
				TInt value;
				TPckg<TInt> valueBuf( value );
				LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapEnum i: %d",i);
				TInt err = SendReceive( EGetPrinterCapEnum, TIpcArgs( i, &valueBuf ) );
				LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapEnum err: %d", err);
				LOG1("RDirectPrintClient::GetPrinterCapability EGetPrinterCapEnum value: %d", value);
				
				if( !err )
					{
					iCapability->iEnumCodes[i] = value;
					}
				}
			}
		}

	if( !err )
		{
		aCapability	= *iCapability;
		}

	LOG1("RDirectPrintClient::GetPrinterCapability end with: %d", err);
	return err;
	}