* @return Pointer to the pattern with the given name or * \p NULL if no such pattern was found. The pattern will be loaded into * memory if it's not already. */
| 70 | * memory if it's not already. |
| 71 | */ |
| 72 | std::unique_ptr<RS_Pattern> RS_PatternList::requestPattern(const QString& name) { |
| 73 | RS_DEBUG->print("RS_PatternList::requestPattern %s", name.toLatin1().data()); |
| 74 | |
| 75 | QString name2 = name.toLower(); |
| 76 | RS_DEBUG->print("Pattern: name2: %s", name2.toLatin1().data()); |
| 77 | if (patterns.count(name2) == 0 || patterns.at(name2) == nullptr) { |
| 78 | auto p = std::make_unique<RS_Pattern>(name2); |
| 79 | if (p!=nullptr) { |
| 80 | p->loadPattern(); |
| 81 | patterns[name2].swap(p); |
| 82 | } |
| 83 | else { |
| 84 | LC_ERR<<"RS_PatternList::"<<__func__<<"(): loading pattern failed: "<<name2; |
| 85 | RS_DIALOGFACTORY->commandMessage(QObject::tr("Hatch:: loading pattern failed: %1").arg(name2)); |
| 86 | return {}; |
| 87 | } |
| 88 | } |
| 89 | |
| 90 | if (patterns.count(name2) == 1) { |
| 91 | RS_DEBUG->print("name2: %s, size= %d", name2.toLatin1().data(), |
| 92 | patterns[name2]->countDeep()); |
| 93 | return std::unique_ptr<RS_Pattern>{static_cast<RS_Pattern*>(patterns[name2]->clone())}; |
| 94 | } |
| 95 | |
| 96 | return {}; |
| 97 | |
| 98 | } |
| 99 | |
| 100 | |
| 101 | bool RS_PatternList::contains(const QString& name) const { |
no test coverage detected