MCPcopy Create free account
hub / github.com/Snapchat/Valdi / skDataFromBytes

Function skDataFromBytes

snap_drawing/src/snap_drawing/cpp/Utils/BytesUtils.cpp:39–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37}
38
39sk_sp<SkData> skDataFromBytes(const Valdi::BytesView& bytes, DataConversionMode conversionMode) {
40 auto dataHolder = Valdi::castOrNull<SkiaDataHolder>(bytes.getSource());
41
42 switch (conversionMode) {
43 case DataConversionModeCopyIfUnsafe: {
44 if (dataHolder != nullptr) {
45 return dataHolder->getData();
46 }
47
48 if (bytes.empty()) {
49 return SkData::MakeEmpty();
50 }
51
52 if (bytes.getSource() == nullptr) {
53 return SkData::MakeWithCopy(bytes.data(), bytes.size());
54 } else {
55 auto* source = Valdi::unsafeBridgeRetain(bytes.getSource().get());
56 return SkData::MakeWithProc(bytes.data(), bytes.size(), &releaseData, source);
57 }
58 }
59 case DataConversionModeAlwaysCopy: {
60 return SkData::MakeWithCopy(bytes.data(), bytes.size());
61 }
62 case DataConversionModeNeverCopy: {
63 if (dataHolder != nullptr) {
64 return dataHolder->getData();
65 }
66
67 if (bytes.getSource() == nullptr) {
68 return SkData::MakeWithoutCopy(bytes.data(), bytes.size());
69 } else {
70 auto* source = Valdi::unsafeBridgeRetain(bytes.getSource().get());
71 return SkData::MakeWithProc(bytes.data(), bytes.size(), &releaseData, source);
72 }
73 };
74 }
75
76 return nullptr;
77}
78
79} // namespace snap::drawing

Callers 5

loadMethod · 0.85
makeMethod · 0.85
makeMethod · 0.85
makeFromPixelsDataMethod · 0.85
loadTypefaceMethod · 0.85

Calls 6

unsafeBridgeRetainFunction · 0.85
getMethod · 0.65
getDataMethod · 0.45
emptyMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected