12352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown/* 22352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * Copyright (C) 2011 The Android Open Source Project 32352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * 42352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 52352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * you may not use this file except in compliance with the License. 62352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * You may obtain a copy of the License at 72352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * 82352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 92352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * 102352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * Unless required by applicable law or agreed to in writing, software 112352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 122352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * See the License for the specific language governing permissions and 142352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * limitations under the License. 152352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown */ 162352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 172352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown#ifndef _ANDROID_VIEW_POINTER_ICON_H 182352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown#define _ANDROID_VIEW_POINTER_ICON_H 192352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 202352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown#include "jni.h" 212352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 222352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown#include <utils/Errors.h> 232352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown#include <SkBitmap.h> 242352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 252352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brownnamespace android { 262352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 272352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown/* Pointer icon styles. 282352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * Must match the definition in android.view.PointerIcon. 292352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown */ 302352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brownenum { 312352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown POINTER_ICON_STYLE_CUSTOM = -1, 322352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown POINTER_ICON_STYLE_NULL = 0, 332352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown POINTER_ICON_STYLE_ARROW = 1000, 342352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown POINTER_ICON_STYLE_SPOT_HOVER = 2000, 352352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown POINTER_ICON_STYLE_SPOT_TOUCH = 2001, 362352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown POINTER_ICON_STYLE_SPOT_ANCHOR = 2002, 372352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown}; 382352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 392352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown/* 402352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * Describes a pointer icon. 412352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown */ 422352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brownstruct PointerIcon { 432352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown inline PointerIcon() { 442352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown reset(); 452352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown } 462352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 472352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown int32_t style; 482352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown SkBitmap bitmap; 492352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown float hotSpotX; 502352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown float hotSpotY; 512352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 522352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown inline bool isNullIcon() { 532352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown return style == POINTER_ICON_STYLE_NULL; 542352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown } 552352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 562352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown inline void reset() { 572352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown style = POINTER_ICON_STYLE_NULL; 582352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown bitmap.reset(); 592352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown hotSpotX = 0; 602352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown hotSpotY = 0; 612352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown } 622352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown}; 632352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 642352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown/* Gets a system pointer icon with the specified style. */ 652352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brownextern jobject android_view_PointerIcon_getSystemIcon(JNIEnv* env, 662352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown jobject contextObj, int32_t style); 672352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 682352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown/* Loads the bitmap associated with a pointer icon. 692352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * If pointerIconObj is NULL, returns OK and a pointer icon with POINTER_ICON_STYLE_NULL. */ 702352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brownextern status_t android_view_PointerIcon_load(JNIEnv* env, 712352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown jobject pointerIconObj, jobject contextObj, PointerIcon* outPointerIcon); 722352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 732352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown/* Loads the bitmap associated with a pointer icon by style. 742352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown * If pointerIconObj is NULL, returns OK and a pointer icon with POINTER_ICON_STYLE_NULL. */ 752352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brownextern status_t android_view_PointerIcon_loadSystemIcon(JNIEnv* env, 762352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown jobject contextObj, int32_t style, PointerIcon* outPointerIcon); 772352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 782352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown} // namespace android 792352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown 802352b978a3c94cd88f41d0d908f961333fdac1e9Jeff Brown#endif // _ANDROID_OS_POINTER_ICON_H 81