[go: nahoru, domu]

blob: 73d33e0f375aa69683f918f261970a63cd1de771 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_SERVICES_SCREEN_AI_SCREEN_AI_LIBRARY_WRAPPER_H_
#define COMPONENTS_SERVICES_SCREEN_AI_SCREEN_AI_LIBRARY_WRAPPER_H_
#include <stdint.h>
#include <cstdint>
#include <optional>
#include <vector>
#include "base/files/file_path.h"
#include "base/scoped_native_library.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "components/services/screen_ai/proto/chrome_screen_ai.pb.h"
#include "third_party/skia/include/core/SkBitmap.h"
namespace screen_ai {
// Base wrapper class for Chrome Screen AI library.
class ScreenAILibraryWrapper {
public:
ScreenAILibraryWrapper() = default;
virtual ~ScreenAILibraryWrapper() = default;
// Loads the library from disk.
virtual bool Load(const base::FilePath& library_path) = 0;
virtual void EnableDebugMode() = 0;
virtual void GetLibraryVersion(uint32_t& major, uint32_t& minor) = 0;
virtual void SetFileContentFunctions(
uint32_t (*get_file_content_size)(const char* relative_file_path),
void (*get_file_content)(const char* relative_file_path,
uint32_t buffer_size,
char* buffer)) = 0;
#if BUILDFLAG(IS_CHROMEOS_ASH)
virtual void SetLogger() = 0;
#endif
virtual bool InitLayoutExtraction() = 0;
virtual std::optional<chrome_screen_ai::VisualAnnotation> ExtractLayout(
const SkBitmap& image) = 0;
virtual bool InitMainContentExtraction() = 0;
virtual std::optional<std::vector<int32_t>> ExtractMainContent(
const std::string& serialized_view_hierarchy) = 0;
virtual bool InitOCR() = 0;
virtual std::optional<chrome_screen_ai::VisualAnnotation> PerformOcr(
const SkBitmap& image) = 0;
};
} // namespace screen_ai
#endif // COMPONENTS_SERVICES_SCREEN_AI_SCREEN_AI_LIBRARY_WRAPPER_H_