/src/skia/tools/UrlDataManager.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright 2016 Google Inc. |
3 | | * |
4 | | * Use of this source code is governed by a BSD-style license that can be |
5 | | * found in the LICENSE file. |
6 | | */ |
7 | | |
8 | | #include "tools/UrlDataManager.h" |
9 | | |
10 | | #include <unordered_map> |
11 | | #include <vector> |
12 | | |
13 | 0 | bool operator==(const SkData& a, const SkData& b) { |
14 | 0 | return a.equals(&b); |
15 | 0 | } |
16 | | |
17 | 0 | UrlDataManager::UrlDataManager(SkString rootUrl) : fRootUrl(rootUrl), fDataId(0) {} |
18 | | |
19 | 0 | SkString UrlDataManager::addData(SkData* data, const char* contentType) { |
20 | 0 | UrlData* urlData = fCache.find(*data); |
21 | 0 | if (fCache.find(*data)) { |
22 | 0 | SkASSERT(data->equals(urlData->fData.get())); |
23 | 0 | return urlData->fUrl; |
24 | 0 | } |
25 | | |
26 | 0 | urlData = new UrlData; |
27 | 0 | urlData->fData.reset(SkRef(data)); |
28 | 0 | urlData->fContentType.set(contentType); |
29 | 0 | urlData->fUrl.appendf("%s/%u", fRootUrl.c_str(), fDataId++); |
30 | |
|
31 | 0 | fCache.add(urlData); |
32 | |
|
33 | 0 | SkASSERT(!fUrlLookup.find(urlData->fUrl)); |
34 | 0 | fUrlLookup.add(urlData); |
35 | 0 | return urlData->fUrl; |
36 | 0 | } Unexecuted instantiation: UrlDataManager::addData(SkData*, char const*) Unexecuted instantiation: UrlDataManager::addData(SkData*, char const*) |
37 | | |
38 | 0 | void UrlDataManager::reset() { |
39 | 0 | fCache.foreach([&](UrlData* urlData) { |
40 | 0 | urlData->unref(); |
41 | 0 | }); |
42 | 0 | fCache.rewind(); |
43 | 0 | } |
44 | | |
45 | 0 | void UrlDataManager::indexImages(const std::vector<sk_sp<SkImage>>& images) { |
46 | 0 | SkASSERT(imageMap.empty()); // this method meant only for initialization once. |
47 | 0 | for (size_t i = 0; i < images.size(); ++i) { |
48 | 0 | imageMap.insert({images[i].get(), i}); |
49 | 0 | } |
50 | 0 | } Unexecuted instantiation: UrlDataManager::indexImages(std::__1::vector<sk_sp<SkImage>, std::__1::allocator<sk_sp<SkImage> > > const&) Unexecuted instantiation: UrlDataManager::indexImages(std::__1::vector<sk_sp<SkImage>, std::__1::allocator<sk_sp<SkImage> > > const&) |
51 | | |
52 | 0 | int UrlDataManager::lookupImage(const SkImage* im) { |
53 | 0 | auto search = imageMap.find(im); |
54 | 0 | if (search != imageMap.end()) { |
55 | 0 | return search->second; |
56 | 0 | } else { |
57 | | // -1 signals the pointer to this image wasn't in the original list. |
58 | | // Maybe it was synthesized after file load? If so, you shouldn't be looking it up here. |
59 | 0 | return -1; |
60 | 0 | } |
61 | 0 | } |