| // Copyright (c) 2011 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 PPAPI_CPP_MOUSE_LOCK_H_ |
| #define PPAPI_CPP_MOUSE_LOCK_H_ |
| |
| #include "ppapi/c/pp_stdint.h" |
| |
| namespace pp { |
| |
| class CompletionCallback; |
| class Instance; |
| |
| // This class allows you to associate the PPP_MouseLock and PPB_MouseLock |
| // C-based interfaces with an object. It associates itself with the given |
| // instance, and registers as the global handler for handling the PPP_MouseLock |
| // interface that the browser calls. |
| // |
| // You would typically use this either via inheritance on your instance: |
| // class MyInstance : public pp::Instance, public pp::MouseLock { |
| // class MyInstance() : pp::MouseLock(this) { |
| // } |
| // ... |
| // }; |
| // |
| // or by composition: |
| // class MyMouseLock : public pp::MouseLock { |
| // ... |
| // }; |
| // |
| // class MyInstance : public pp::Instance { |
| // MyInstance() : mouse_lock_(this) { |
| // } |
| // |
| // MyMouseLock mouse_lock_; |
| // }; |
| class MouseLock { |
| public: |
| explicit MouseLock(Instance* instance); |
| virtual ~MouseLock(); |
| |
| // PPP_MouseLock functions exposed as virtual functions for you to override. |
| virtual void MouseLockLost() = 0; |
| |
| // PPB_MouseLock functions for you to call. |
| int32_t LockMouse(const CompletionCallback& cc); |
| void UnlockMouse(); |
| |
| private: |
| Instance* associated_instance_; |
| }; |
| |
| } // namespace pp |
| |
| #endif // PPAPI_CPP_MOUSE_LOCK_H_ |