Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/samples/wp8/OcvRotatingCube/PhoneXamlDirect3DApp1/PhoneXamlDirect3DApp1Comp/DirectXHelper.h
16349 views
1
#pragma once
2
3
#include <wrl/client.h>
4
#include <ppl.h>
5
#include <ppltasks.h>
6
7
namespace DX
8
{
9
inline void ThrowIfFailed(HRESULT hr)
10
{
11
if (FAILED(hr))
12
{
13
// Set a breakpoint on this line to catch Win32 API errors.
14
throw Platform::Exception::CreateException(hr);
15
}
16
}
17
18
// Function that reads from a binary file asynchronously.
19
inline Concurrency::task<Platform::Array<byte>^> ReadDataAsync(Platform::String^ filename)
20
{
21
using namespace Windows::Storage;
22
using namespace Concurrency;
23
24
auto folder = Windows::ApplicationModel::Package::Current->InstalledLocation;
25
26
return create_task(folder->GetFileAsync(filename)).then([] (StorageFile^ file)
27
{
28
return file->OpenReadAsync();
29
}).then([] (Streams::IRandomAccessStreamWithContentType^ stream)
30
{
31
unsigned int bufferSize = static_cast<unsigned int>(stream->Size);
32
auto fileBuffer = ref new Streams::Buffer(bufferSize);
33
return stream->ReadAsync(fileBuffer, bufferSize, Streams::InputStreamOptions::None);
34
}).then([] (Streams::IBuffer^ fileBuffer) -> Platform::Array<byte>^
35
{
36
auto fileData = ref new Platform::Array<byte>(fileBuffer->Length);
37
Streams::DataReader::FromBuffer(fileBuffer)->ReadBytes(fileData);
38
return fileData;
39
});
40
}
41
}
42