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; }
/** * 多面体データから 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; }