[go: nahoru, domu]

blob: 73d33e0f375aa69683f918f261970a63cd1de771 [file] [log] [blame]
Ramin Halavati767b8fc2024-02-02 06:23:081// Copyright 2024 The Chromium Authors
Ramin Halavati9442fc72023-02-19 07:38:122// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_SERVICES_SCREEN_AI_SCREEN_AI_LIBRARY_WRAPPER_H_
6#define COMPONENTS_SERVICES_SCREEN_AI_SCREEN_AI_LIBRARY_WRAPPER_H_
7
8#include <stdint.h>
Arthur Sonzognic571efb2024-01-26 20:26:189
Ramin Halavatidaff1ae2023-03-30 04:55:2610#include <cstdint>
Arthur Sonzognic571efb2024-01-26 20:26:1811#include <optional>
Ramin Halavatic1e4fa92023-05-17 17:22:0612#include <vector>
Ramin Halavati9442fc72023-02-19 07:38:1213
Ramin Halavati9442fc72023-02-19 07:38:1214#include "base/files/file_path.h"
15#include "base/scoped_native_library.h"
16#include "build/build_config.h"
17#include "build/chromeos_buildflags.h"
Ramin Halavatidaff1ae2023-03-30 04:55:2618#include "components/services/screen_ai/proto/chrome_screen_ai.pb.h"
Ramin Halavati9442fc72023-02-19 07:38:1219#include "third_party/skia/include/core/SkBitmap.h"
20
21namespace screen_ai {
22
Ramin Halavati767b8fc2024-02-02 06:23:0823// Base wrapper class for Chrome Screen AI library.
Ramin Halavati9442fc72023-02-19 07:38:1224class ScreenAILibraryWrapper {
25 public:
Ramin Halavati767b8fc2024-02-02 06:23:0826 ScreenAILibraryWrapper() = default;
27 virtual ~ScreenAILibraryWrapper() = default;
Ramin Halavatic1e4fa92023-05-17 17:22:0628
Ramin Halavati767b8fc2024-02-02 06:23:0829 // Loads the library from disk.
30 virtual bool Load(const base::FilePath& library_path) = 0;
Ramin Halavati9442fc72023-02-19 07:38:1231
Ramin Halavati767b8fc2024-02-02 06:23:0832 virtual void EnableDebugMode() = 0;
33 virtual void GetLibraryVersion(uint32_t& major, uint32_t& minor) = 0;
34 virtual void SetFileContentFunctions(
Ramin Halavati8ced6392023-09-25 07:27:5035 uint32_t (*get_file_content_size)(const char* relative_file_path),
36 void (*get_file_content)(const char* relative_file_path,
37 uint32_t buffer_size,
Ramin Halavati767b8fc2024-02-02 06:23:0838 char* buffer)) = 0;
Ramin Halavati9442fc72023-02-19 07:38:1239#if BUILDFLAG(IS_CHROMEOS_ASH)
Ramin Halavati767b8fc2024-02-02 06:23:0840 virtual void SetLogger() = 0;
Ramin Halavati9442fc72023-02-19 07:38:1241#endif
42
Ramin Halavati767b8fc2024-02-02 06:23:0843 virtual bool InitLayoutExtraction() = 0;
44 virtual std::optional<chrome_screen_ai::VisualAnnotation> ExtractLayout(
45 const SkBitmap& image) = 0;
Ramin Halavati9442fc72023-02-19 07:38:1246
Ramin Halavati767b8fc2024-02-02 06:23:0847 virtual bool InitMainContentExtraction() = 0;
48 virtual std::optional<std::vector<int32_t>> ExtractMainContent(
49 const std::string& serialized_view_hierarchy) = 0;
Ramin Halavati8ced6392023-09-25 07:27:5050
Ramin Halavati767b8fc2024-02-02 06:23:0851 virtual bool InitOCR() = 0;
52 virtual std::optional<chrome_screen_ai::VisualAnnotation> PerformOcr(
53 const SkBitmap& image) = 0;
Ramin Halavati9442fc72023-02-19 07:38:1254};
55
56} // namespace screen_ai
57
58#endif // COMPONENTS_SERVICES_SCREEN_AI_SCREEN_AI_LIBRARY_WRAPPER_H_