// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SERVICES_SHAPE_DETECTION_TEXT_DETECTION_IMPL_WIN_H_ #define SERVICES_SHAPE_DETECTION_TEXT_DETECTION_IMPL_WIN_H_ #include #include #include #include #include #include #include "base/memory/weak_ptr.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "services/shape_detection/public/mojom/textdetection.mojom.h" class SkBitmap; namespace shape_detection { class TextDetectionImplWin : public mojom::TextDetection { public: TextDetectionImplWin( Microsoft::WRL::ComPtr ocr_engine, Microsoft::WRL::ComPtr< ABI::Windows::Graphics::Imaging::ISoftwareBitmapStatics> bitmap_factory); TextDetectionImplWin(const TextDetectionImplWin&) = delete; TextDetectionImplWin& operator=(const TextDetectionImplWin&) = delete; ~TextDetectionImplWin() override; // mojom::TextDetection implementation. void Detect(const SkBitmap& bitmap, mojom::TextDetection::DetectCallback callback) override; void SetReceiver(mojo::SelfOwnedReceiverRef receiver) { receiver_ = std::move(receiver); } private: Microsoft::WRL::ComPtr ocr_engine_; Microsoft::WRL::ComPtr< ABI::Windows::Graphics::Imaging::ISoftwareBitmapStatics> bitmap_factory_; DetectCallback recognize_text_callback_; mojo::SelfOwnedReceiverRef receiver_; HRESULT BeginDetect(const SkBitmap& bitmap); std::vector BuildTextDetectionResult( Microsoft::WRL::ComPtr ocr_result); void OnTextDetected( Microsoft::WRL::ComPtr win_bitmap, Microsoft::WRL::ComPtr ocr_result); base::WeakPtrFactory weak_factory_{this}; }; } // namespace shape_detection #endif // SERVICES_SHAPE_DETECTION_TEXT_DETECTION_IMPL_WIN_H_