aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/apps/canvasproof/src/main/jni/org_skia_canvasproof_CreateSkiaPicture.cpp
blob: c5d9759e54b64430cb5c9bf7ddbdd6bef1a4418b (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
39
40
41
42
/*
 * Copyright 2015 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "org_skia_canvasproof_CreateSkiaPicture.h"
#include "JavaInputStream.h"
#include "SkPicture.h"
#include "SkPictureRecorder.h"

/*
 * Class:     org_skia_canvasproof_CreateSkiaPicture
 * Method:    delete
 * Signature: (J)V
 */
JNIEXPORT void JNICALL Java_org_skia_canvasproof_CreateSkiaPicture_deleteImpl(
        JNIEnv* env, jclass clazz, jlong ptr) {
    SkSafeUnref(reinterpret_cast<SkPicture*>(ptr));
}

/*
 * Class:     org_skia_canvasproof_CreateSkiaPicture
 * Method:    createImpl
 * Signature: (Ljava/io/InputStream;[B)J
 */
JNIEXPORT jlong JNICALL Java_org_skia_canvasproof_CreateSkiaPicture_createImpl
  (JNIEnv* env, jclass clazz, jobject inputStream, jbyteArray buffer) {
    JavaInputStream stream(env, buffer, inputStream);
    #if 0
    SkAutoTUnref<SkPicture> p(SkPicture::CreateFromStream(&stream));
    if (!p) { return 0; }
    SkPictureRecorder recorder;
    SkRect bounds = p->cullRect();
    SkRTreeFactory bbh;
    recorder.beginRecording(bounds, &bbh)->drawPicture(p);
    return reinterpret_cast<long>(recorder.endRecordingAsPicture());
    #else
    return reinterpret_cast<long>(SkPicture::CreateFromStream(&stream));
    #endif
}