|  | #include "VirtualTouchpadClient.h" | 
|  | #include "dvr/virtual_touchpad_client.h" | 
|  |  | 
|  | struct DvrVirtualTouchpad {}; | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | namespace { | 
|  | android::dvr::VirtualTouchpad* FromC(DvrVirtualTouchpad* client) { | 
|  | return reinterpret_cast<android::dvr::VirtualTouchpad*>(client); | 
|  | } | 
|  | }  // namespace | 
|  |  | 
|  | DvrVirtualTouchpad* dvrVirtualTouchpadCreate() { | 
|  | return reinterpret_cast<DvrVirtualTouchpad*>( | 
|  | android::dvr::VirtualTouchpadClient::Create().release()); | 
|  | } | 
|  |  | 
|  | void dvrVirtualTouchpadDestroy(DvrVirtualTouchpad* client) { | 
|  | delete FromC(client); | 
|  | } | 
|  |  | 
|  | int dvrVirtualTouchpadAttach(DvrVirtualTouchpad* client) { | 
|  | return FromC(client)->Attach(); | 
|  | } | 
|  |  | 
|  | int dvrVirtualTouchpadDetach(DvrVirtualTouchpad* client) { | 
|  | return FromC(client)->Detach(); | 
|  | } | 
|  |  | 
|  | int dvrVirtualTouchpadTouch(DvrVirtualTouchpad* client, int touchpad, float x, | 
|  | float y, float pressure) { | 
|  | return FromC(client)->Touch(touchpad, x, y, pressure); | 
|  | } | 
|  |  | 
|  | int dvrVirtualTouchpadButtonState(DvrVirtualTouchpad* client, int touchpad, | 
|  | int buttons) { | 
|  | return FromC(client)->ButtonState(touchpad, buttons); | 
|  | } | 
|  |  | 
|  | int dvrVirtualTouchpadScroll(DvrVirtualTouchpad* client, int touchpad, float x, | 
|  | float y) { | 
|  | return FromC(client)->Scroll(touchpad, x, y); | 
|  | } | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | }  // extern "C" | 
|  | #endif |