QImage *LH_QImage::render_qimage(int w, int h) { delete image_; if( setup_image_file_->value().isFile()) { image_ = new QImage(); image_->load(setup_image_file_->value().absoluteFilePath()); } else { if(setup_show_placeholder_->value()) image_ = getPlaceholder(); else image_ = new QImage(w,h,QImage::Format_Invalid); } return image_; }
StatusWith<std::map<StringData, std::unique_ptr<ExpressionWithPlaceholder>>> ParsedUpdate::parseArrayFilters(const std::vector<BSONObj>& rawArrayFiltersIn, OperationContext* opCtx, CollatorInterface* collator) { std::map<StringData, std::unique_ptr<ExpressionWithPlaceholder>> arrayFiltersOut; for (auto rawArrayFilter : rawArrayFiltersIn) { boost::intrusive_ptr<ExpressionContext> expCtx(new ExpressionContext(opCtx, collator)); auto parsedArrayFilter = MatchExpressionParser::parse(rawArrayFilter, std::move(expCtx), ExtensionsCallbackNoop(), MatchExpressionParser::kBanAllSpecialFeatures); if (!parsedArrayFilter.isOK()) { return parsedArrayFilter.getStatus().withContext("Error parsing array filter"); } auto parsedArrayFilterWithPlaceholder = ExpressionWithPlaceholder::make(std::move(parsedArrayFilter.getValue())); if (!parsedArrayFilterWithPlaceholder.isOK()) { return parsedArrayFilterWithPlaceholder.getStatus().withContext( "Error parsing array filter"); } auto finalArrayFilter = std::move(parsedArrayFilterWithPlaceholder.getValue()); auto fieldName = finalArrayFilter->getPlaceholder(); if (!fieldName) { return Status( ErrorCodes::FailedToParse, "Cannot use an expression without a top-level field name in arrayFilters"); } if (arrayFiltersOut.find(*fieldName) != arrayFiltersOut.end()) { return Status(ErrorCodes::FailedToParse, str::stream() << "Found multiple array filters with the same top-level field name " << *fieldName); } arrayFiltersOut[*fieldName] = std::move(finalArrayFilter); } return std::move(arrayFiltersOut); }
void Format::insertParam(Size index, const std::string& value) { Placeholder placeholder; while (getPlaceholder(index, placeholder)) { if (!placeholder.hasWidth || value.length() >= (size_t)std::abs(placeholder.width)) // No padding { format.replace(placeholder.offset, placeholder.length, value); } else if (placeholder.width > 0) // Right align { std::string paddedValue = std::string(placeholder.width - value.length(), placeholder.paddingCharacter) + value; format.replace(placeholder.offset, placeholder.length, paddedValue); } else // Left align { std::string paddedValue = value + std::string(-placeholder.width - value.length(), placeholder.paddingCharacter); format.replace(placeholder.offset, placeholder.length, paddedValue); } } }
Status ParsedUpdate::parseArrayFilters() { for (auto rawArrayFilter : _request->getArrayFilters()) { boost::intrusive_ptr<ExpressionContext> expCtx( new ExpressionContext(_opCtx, _collator.get())); auto parsedArrayFilter = MatchExpressionParser::parse(rawArrayFilter, std::move(expCtx), ExtensionsCallbackNoop(), MatchExpressionParser::kBanAllSpecialFeatures); if (!parsedArrayFilter.isOK()) { return parsedArrayFilter.getStatus().withContext("Error parsing array filter"); } auto parsedArrayFilterWithPlaceholder = ExpressionWithPlaceholder::make(std::move(parsedArrayFilter.getValue())); if (!parsedArrayFilterWithPlaceholder.isOK()) { return parsedArrayFilterWithPlaceholder.getStatus().withContext( "Error parsing array filter"); } auto finalArrayFilter = std::move(parsedArrayFilterWithPlaceholder.getValue()); auto fieldName = finalArrayFilter->getPlaceholder(); if (!fieldName) { return Status( ErrorCodes::FailedToParse, "Cannot use an expression without a top-level field name in arrayFilters"); } if (_arrayFilters.find(*fieldName) != _arrayFilters.end()) { return Status(ErrorCodes::FailedToParse, str::stream() << "Found multiple array filters with the same top-level field name " << *fieldName); } _arrayFilters[*fieldName] = std::move(finalArrayFilter); } return Status::OK(); }
Status ParsedUpdate::parseArrayFilters() { if (!_request->getArrayFilters().empty() && serverGlobalParams.featureCompatibility.version.load() == ServerGlobalParams::FeatureCompatibility::Version::k34) { return Status(ErrorCodes::InvalidOptions, str::stream() << "The featureCompatibilityVersion must be 3.6 to use arrayFilters. See " << feature_compatibility_version::kDochubLink << "."); } for (auto rawArrayFilter : _request->getArrayFilters()) { auto arrayFilterStatus = ExpressionWithPlaceholder::parse(rawArrayFilter, _collator.get()); if (!arrayFilterStatus.isOK()) { return Status(arrayFilterStatus.getStatus().code(), str::stream() << "Error parsing array filter: " << arrayFilterStatus.getStatus().reason()); } auto arrayFilter = std::move(arrayFilterStatus.getValue()); auto fieldName = arrayFilter->getPlaceholder(); if (!fieldName) { return Status( ErrorCodes::FailedToParse, "Cannot use an expression without a top-level field name in arrayFilters"); } if (_arrayFilters.find(*fieldName) != _arrayFilters.end()) { return Status(ErrorCodes::FailedToParse, str::stream() << "Found multiple array filters with the same top-level field name " << *fieldName); } _arrayFilters[*fieldName] = std::move(arrayFilter); } return Status::OK(); }