blob: ec8ba88613c29ffee6332f94fc950008858742fb [file] [log] [blame] [edit]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "flutter/skwasm/images.h"
#include "flutter/display_list/display_list.h"
#include "flutter/display_list/image/dl_image.h"
#include "third_party/skia/include/core/SkData.h"
#include "third_party/skia/include/core/SkImage.h"
SKWASM_EXPORT void dummyAPICalls() {
// TODO(jacksongardner):
// This function is just here so that we have references to these API
// functions in the build. If we don't reference them, they get LTO'd out and
// then emscripten gets fails to build the javascript support library. These
// all will eventually be actually used when we implement proper image
// support, at which time we can just remove this function entirely.
// https://github.com/flutter/flutter/issues/175371
SkwasmObject object = __builtin_wasm_ref_null_extern();
skwasm_setAssociatedObjectOnThread(0, nullptr, object);
skwasm_getAssociatedObject(nullptr);
skwasm_disposeAssociatedObjectOnThread(0, nullptr);
skwasm_createGlTextureFromTextureSource(object, 0, 0);
}
namespace {
// TODO(jacksongardner): Implement proper image support in wimp.
// See https://github.com/flutter/flutter/issues/175371
class StubImage : public flutter::DlImage {
public:
StubImage(int width, int height) : width_(width), height_(height) {}
static sk_sp<StubImage> Make(int width, int height) {
return sk_make_sp<StubImage>(width, height);
}
// |DlImage|
sk_sp<SkImage> skia_image() const override { return nullptr; }
// |DlImage|
std::shared_ptr<impeller::Texture> impeller_texture() const override {
return nullptr;
}
// |DlImage|
bool isOpaque() const override { return false; }
// |DlImage|
bool isTextureBacked() const override { return false; }
// |DlImage|
bool isUIThreadSafe() const override { return true; }
// |DlImage|
flutter::DlISize GetSize() const override {
return flutter::DlISize::MakeWH(width_, height_);
}
// |DlImage|
size_t GetApproximateByteSize() const override { return 0; }
private:
int width_;
int height_;
};
} // namespace
namespace Skwasm {
sk_sp<flutter::DlImage> MakeImageFromPicture(flutter::DisplayList* display_list,
int32_t width,
int32_t height) {
return StubImage::Make(width, height);
}
sk_sp<flutter::DlImage> MakeImageFromTexture(SkwasmObject texture_source,
int width,
int height,
Skwasm::Surface* surface) {
return StubImage::Make(width, height);
}
sk_sp<flutter::DlImage> MakeImageFromPixels(SkData* data,
int width,
int height,
Skwasm::PixelFormat pixel_format,
size_t row_byte_count) {
return StubImage::Make(width, height);
}
} // namespace Skwasm