aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/apps/arcore/src/main/cpp/SkArCamera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform_tools/android/apps/arcore/src/main/cpp/SkArCamera.cpp')
-rw-r--r--platform_tools/android/apps/arcore/src/main/cpp/SkArCamera.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/platform_tools/android/apps/arcore/src/main/cpp/SkArCamera.cpp b/platform_tools/android/apps/arcore/src/main/cpp/SkArCamera.cpp
new file mode 100644
index 0000000000..f27aebbffa
--- /dev/null
+++ b/platform_tools/android/apps/arcore/src/main/cpp/SkArCamera.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2018 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include <arcore_c_api.h>
+#include "SkArCamera.h"
+#include "SkArUtil.h"
+
+std::unique_ptr<SkArCamera> SkArCamera::Make(SkArSession* session, SkArFrame* frame) {
+ return std::unique_ptr<SkArCamera>(new SkArCamera(session, frame));
+}
+
+SkArCamera::~SkArCamera() {
+ ArCamera_release(fArCamera);
+}
+
+SkArCamera::SkArCamera(SkArSession* session, SkArFrame* frame) : fArCamera(nullptr) {
+ ArFrame_acquireCamera(session->getArSession(), frame->getArFrame(), &fArCamera);
+}
+
+void SkArCamera::getViewMatrix(const SkArSession* session, float outColMajor[16]) {
+ ArCamera_getViewMatrix(session->getArSession(), fArCamera, outColMajor);
+}
+
+void SkArCamera::getProjectionMatrix(const SkArSession* session, float nearClip,
+ float farClip, float outColMajor[16]) {
+ ArCamera_getProjectionMatrix(session->getArSession(), fArCamera, nearClip, farClip,
+ outColMajor);
+}
+
+SkArTrackingState SkArCamera::getTrackingState(const SkArSession* session) {
+ ArTrackingState arTrackingState;
+ ArCamera_getTrackingState(session->getArSession(), fArCamera, &arTrackingState);
+ return SkArUtil::MakeSkArTrackingState(arTrackingState);
+}