aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/apps/arcore/src/main/cpp/SkArCamera.cpp
blob: f27aebbffa4d7c3cf4521f00794df0bf42257548 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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);
}