1 /*
2 * Copyright 2018 Google LLC
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 <arcore_c_api.h>
9 #include "SkArCamera.h"
10 #include "SkArUtil.h"
11
Make(SkArSession * session,SkArFrame * frame)12 std::unique_ptr<SkArCamera> SkArCamera::Make(SkArSession* session, SkArFrame* frame) {
13 return std::unique_ptr<SkArCamera>(new SkArCamera(session, frame));
14 }
15
~SkArCamera()16 SkArCamera::~SkArCamera() {
17 ArCamera_release(fArCamera);
18 }
19
SkArCamera(SkArSession * session,SkArFrame * frame)20 SkArCamera::SkArCamera(SkArSession* session, SkArFrame* frame) : fArCamera(nullptr) {
21 ArFrame_acquireCamera(session->getArSession(), frame->getArFrame(), &fArCamera);
22 }
23
getViewMatrix(const SkArSession * session,float outColMajor[16])24 void SkArCamera::getViewMatrix(const SkArSession* session, float outColMajor[16]) {
25 ArCamera_getViewMatrix(session->getArSession(), fArCamera, outColMajor);
26 }
27
getProjectionMatrix(const SkArSession * session,float nearClip,float farClip,float outColMajor[16])28 void SkArCamera::getProjectionMatrix(const SkArSession* session, float nearClip,
29 float farClip, float outColMajor[16]) {
30 ArCamera_getProjectionMatrix(session->getArSession(), fArCamera, nearClip, farClip,
31 outColMajor);
32 }
33
getTrackingState(const SkArSession * session)34 SkArTrackingState SkArCamera::getTrackingState(const SkArSession* session) {
35 ArTrackingState arTrackingState;
36 ArCamera_getTrackingState(session->getArSession(), fArCamera, &arTrackingState);
37 return SkArUtil::MakeSkArTrackingState(arTrackingState);
38 }
39