// Copyright (c) 2012 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 REMOTING_HOST_MOUSE_CLAMPING_FILTER_H_ #define REMOTING_HOST_MOUSE_CLAMPING_FILTER_H_ #include "base/compiler_specific.h" #include "remoting/protocol/mouse_input_filter.h" #include "remoting/protocol/video_stub.h" namespace remoting { // Filtering VideoStub implementation which configures a MouseInputFilter to // clamp mouse events to fall within the dimensions of the most-recently // received video frame. class MouseClampingFilter : public protocol::VideoStub { public: explicit MouseClampingFilter(protocol::InputStub* input_stub); virtual ~MouseClampingFilter(); protocol::InputStub* input_filter() { return &input_filter_; } void set_video_stub(protocol::VideoStub* video_stub) { video_stub_ = video_stub; } // protocol::VideoStub implementation. virtual void ProcessVideoPacket(scoped_ptr video_packet, const base::Closure& done) OVERRIDE; private: // Clamps mouse event coordinates to the video dimensions. protocol::MouseInputFilter input_filter_; protocol::VideoStub* video_stub_; DISALLOW_COPY_AND_ASSIGN(MouseClampingFilter); }; } // namespace remoting #endif // REMOTING_HOST_MOUSE_CLAMPING_FILTER_H_