• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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