summaryrefslogtreecommitdiffstats
path: root/Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-09-02 14:16:37 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2014-09-02 14:16:37 (GMT)
commitbfc81c5934e6cc0ade50e6ed461e211d55757765 (patch)
treedf8bf36cb3202f57cdc3164e807bb54e70b21359 /Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h
parent7a4a05d076cdab6d5803627aca97e94180481c4f (diff)
parent39fefde25d49b92d8b03eaf13c1b39478e053140 (diff)
downloadCMake-bfc81c5934e6cc0ade50e6ed461e211d55757765.zip
CMake-bfc81c5934e6cc0ade50e6ed461e211d55757765.tar.gz
CMake-bfc81c5934e6cc0ade50e6ed461e211d55757765.tar.bz2
Merge topic 'vs-windows-apps'
39fefde2 VS: Add test case for Windows Phone and Windows Store 89da8465 MSVC: Define 'WIN32' for Windows Store and Windows Phone ed7f085f Help: Add notes for topic 'vs-windows-apps' dd11ae8f VS: Do not compile C sources as WinRT (#15100) b8e40538 VS: Mark Windows Phone and Store targets as App Containers 0432f062 VS: Always ignore ole32 on Windows Phone 8.0 e6ff2f8b VS: Generate Windows Metadata for WinRT components ee48f4c7 VS: Generate Windows Phone and Windows Store projects as Unicode cb1aceed VS: Add VS_WINRT_COMPONENT property to enable CompileAsWinRT 401269e4 VS: Handle .pfx files explicitly in generator 23782171 VS: Handle AppxManifest sources explicitly in generator bc373c6d VS: Set Window Phone/Store app type in CMake-generated targets d89b2889 VS: Mark CMake-generated targets as Utility in .vcxproj files 03ad8f28 CMakeDetermineCompilerABI: Link with standard libraries on MSVC
Diffstat (limited to 'Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h')
-rw-r--r--Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h b/Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h
new file mode 100644
index 0000000..d411a9b
--- /dev/null
+++ b/Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h
@@ -0,0 +1,45 @@
+#pragma once
+
+#include <wrl/client.h>
+#include <ppl.h>
+#include <ppltasks.h>
+
+namespace DX
+{
+ inline void ThrowIfFailed(HRESULT hr)
+ {
+ if (FAILED(hr))
+ {
+ // Set a breakpoint on this line to catch Win32 API errors.
+ throw Platform::Exception::CreateException(hr);
+ }
+ }
+
+ // Function that reads from a binary file asynchronously.
+ inline Concurrency::task<Platform::Array<byte>^> ReadDataAsync(Platform::String^ filename)
+ {
+ using namespace Windows::Storage;
+ using namespace Concurrency;
+
+ auto folder = Windows::ApplicationModel::Package::Current->InstalledLocation;
+
+ return create_task(folder->GetFileAsync(filename)).then([] (StorageFile^ file)
+ {
+#if !PHONE
+ return FileIO::ReadBufferAsync(file);
+#else
+ return file->OpenReadAsync();
+ }).then([](Streams::IRandomAccessStreamWithContentType^ stream)
+ {
+ unsigned int bufferSize = static_cast<unsigned int>(stream->Size);
+ auto fileBuffer = ref new Streams::Buffer(bufferSize);
+ return stream->ReadAsync(fileBuffer, bufferSize, Streams::InputStreamOptions::None);
+#endif
+ }).then([] (Streams::IBuffer^ fileBuffer) -> Platform::Array<byte>^
+ {
+ auto fileData = ref new Platform::Array<byte>(fileBuffer->Length);
+ Streams::DataReader::FromBuffer(fileBuffer)->ReadBytes(fileData);
+ return fileData;
+ });
+ }
+}