double KMeansTrainer::assignClosestCenter(math::ConstMatrixReference<double, math::MatrixLayout::columnMajor> X, math::VectorReference<size_t, math::VectorOrientation::column> clusterAssignment) { auto D = pairwiseDistance(X, _means); double totalDist = 0; for (int i = 0; i < D.NumRows(); ++i) { auto dist = D.GetRow(i); auto minElement = std::min_element(dist.GetDataPointer(), dist.GetDataPointer() + dist.Size()); clusterAssignment[i] = minElement - dist.GetDataPointer(); totalDist += *minElement; } return totalDist; }
// Return true if data was changed bool CAccount::SetData(const std::string& strKey, const std::string& strValue, int iType) { if (strValue == "false" && iType == LUA_TBOOLEAN) { if (HasData(strKey)) { RemoveData(strKey); return true; } } else { CAccountData* pData = GetDataPointer(strKey); if (pData) { if (pData->GetType() != iType || pData->GetStrValue() != strValue) { pData->SetStrValue(strValue); pData->SetType(iType); return true; } } else { MapSet(m_Data, strKey, CAccountData(strKey, strValue, iType)); return true; } } return false; }
std::shared_ptr<CLuaArgument> CAccount::GetData(const std::string& strKey) { CAccountData* pData = GetDataPointer(strKey); auto pResult = std::make_shared<CLuaArgument>(); if (pData) { if (pData->GetType() == LUA_TBOOLEAN) { pResult->ReadBool(pData->GetStrValue() == "true"); } else if (pData->GetType() == LUA_TNUMBER) { pResult->ReadNumber(strtod(pData->GetStrValue().c_str(), NULL)); } else { pResult->ReadString(pData->GetStrValue()); } } else { pResult->ReadBool(false); } return pResult; }
int CAudioSourceMP3Cache::GetOutputData( void **pData, int samplePosition, int sampleCount, char copyBuf[AUDIOSOURCE_COPYBUF_SIZE] ) { // how many bytes are available ? int totalSampleCount = m_fileSize - samplePosition; // may be asking for a sample out of range, clip at zero if ( totalSampleCount < 0 ) totalSampleCount = 0; // clip max output samples to max available if ( sampleCount > totalSampleCount ) sampleCount = totalSampleCount; // if we are returning some samples, store the pointer if ( sampleCount ) { *pData = GetDataPointer() + samplePosition; Assert( *pData ); } return sampleCount; }
fwData::Image::sptr Resampler::resample(const fwData::Image::csptr& _img, const ::fwData::TransformationMatrix3D::csptr& _trf, const ::fwData::Image::SpacingType& _outputSpacing) { using PointType = ::itk::Point<double, 3>; using VectorContainerType = ::itk::VectorContainer<int, PointType>; using BoundingBoxType = ::itk::BoundingBox<int, 3, double, VectorContainerType>; const auto& inputSize = _img->getSize(); const auto& inputOrigin = _img->getOrigin(); const auto& inputSpacing = _img->getSpacing(); SLM_ASSERT("Image dimension must be 3.", inputOrigin.size() == 3 && inputSpacing.size() == 3 && inputSize.size() == 3); typename BoundingBoxType::Pointer inputBB = BoundingBoxType::New(); const PointType min(inputOrigin.data()); PointType max; for(std::uint8_t i = 0; i < 3; ++i) { max[i] = inputOrigin[i] + static_cast<double>(inputSize[i]) * inputSpacing[i]; } inputBB->SetMinimum(min); inputBB->SetMaximum(max); const auto inputCorners = inputBB->GetCorners(); const ::itk::Matrix<double, 4, 4> matrix(::fwItkIO::helper::Transform::convertToITK(_trf).GetInverse()); // Apply transform matrix to all bounding box corners. typename VectorContainerType::Pointer outputCorners = VectorContainerType::New(); outputCorners->Reserve(inputCorners->Size()); std::transform(inputCorners->begin(), inputCorners->end(), outputCorners->begin(), [&matrix](const PointType& _in) { // Convert input to homogeneous coordinates. const ::itk::Point<double, 4> input(std::array<double, 4>({{_in[0], _in[1], _in[2], 1.}}).data()); const auto p = matrix * input; return PointType(p.GetDataPointer()); }); // Compute the transformed axis aligned bounding box. typename BoundingBoxType::Pointer outputBB = BoundingBoxType::New(); outputBB->SetPoints(outputCorners); outputBB->ComputeBoundingBox(); // Compute output size and origin. ::fwData::Image::sptr output = ::fwData::Image::New(); ::fwData::Image::OriginType outputOrigin(3); ::fwData::Image::SizeType outputSize(3); for(std::uint8_t i = 0; i < 3; ++i) { outputOrigin[i] = outputBB->GetMinimum()[i]; outputSize[i] = size_t((outputBB->GetMaximum()[i] - outputOrigin[i]) / _outputSpacing[i]); } output->setSize(outputSize); output->setSpacing(_outputSpacing); output->setOrigin(outputOrigin); resample(_img, output, _trf, output); return output; }
/** * @brief Main Entry Point * * @param argc The number of arguments passed to this application. * @param argv The array of arguments passed to this application. * * @return Non-important return value. */ int __cdecl main(int argc, char* argv[]) { // Display our project header.. Console::output(Console::Colors::LightPurple, "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n"); Console::output(Console::Colors::LightPurple, "-=-"); Console::output(Console::Colors::LightCyan, " Steamless - Steam DRM Remover v1.0 "); Console::output(Console::Colors::LightPurple, "-=-\n"); Console::output(Console::Colors::LightPurple, "-=-"); Console::output(Console::Colors::LightYelllow, " by atom0s [[email protected]] "); Console::output(Console::Colors::LightPurple, "-=-\n"); Console::output(Console::Colors::LightPurple, "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\n"); // Ensure the argument count is valid.. if (argc <= 1) { Console::output(Console::Colors::LightRed, "[*] ERROR: Invalid usage!\n"); Console::output(Console::Colors::LightRed, "[*] ERROR: Usage is: Steamless.exe [file]\n"); return 0; } // Ensure the given file exists.. if (::GetFileAttributes(argv[1]) == INVALID_FILE_ATTRIBUTES) { Console::output(Console::Colors::LightRed, "[*] ERROR: Invalid input file; file does not exist!\n"); return 0; } // Set the current working directory to the given input file.. char szWorkingDirectory[MAX_PATH] = { 0 }; strcpy_s(szWorkingDirectory, argv[1]); ::PathRemoveFileSpec(szWorkingDirectory); if (strlen(szWorkingDirectory) > 0) ::SetCurrentDirectory(szWorkingDirectory); // Load the input file for processing.. auto file = new PEFile(); if (!file->Initialize(argv[1])) { Console::output(Console::Colors::LightRed, "[*] ERROR: Failed to initialize PEFile wrapper. Invalid file maybe?\n"); delete file; return 0; } // Determine if the file has the proper .bind section.. if (!file->HasSection(".bind")) { Console::output(Console::Colors::LightRed, "[*] ERROR: Failed to locate .bind section, cannot process file!\n"); delete file; return 0; } // Attempt to process the file.. auto processed = [&]() -> bool { // Locate a known Steam signature by scanning for stub information.. for (auto x = 0; x < _countof(g_Signatures); x++) { auto found = Utils::FindPattern((unsigned char*)file->GetDataPointer(), file->GetDataSize(), g_Signatures[x].Pattern, g_Signatures[x].Mask); if (found != 0) { Console::output(Console::Colors::LightGreen, "[*] INFO: Located Steam Stub! (%s)\n", g_Signatures[x].Name); return g_Signatures[x].Func(file, argv[1]); } } return false; }(); if (!processed) Console::output(Console::Colors::LightRed, "[*] ERROR: Failed to process file!\n"); else Console::output(Console::Colors::LightGreen, "[*] Successfully processed the file!\n"); // Cleanup.. delete file; file = nullptr; return 0; }