1/* Copyright (C) 2007-2008 The Android Open Source Project
2**
3** This software is licensed under the terms of the GNU General Public
4** License version 2, as published by the Free Software Foundation, and
5** may be copied, distributed, and modified under those terms.
6**
7** This program is distributed in the hope that it will be useful,
8** but WITHOUT ANY WARRANTY; without even the implied warranty of
9** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10** GNU General Public License for more details.
11*/
12#ifndef _SKIN_WINDOW_H
13#define _SKIN_WINDOW_H
14
15#include "android/skin/file.h"
16#include "android/skin/trackball.h"
17#include <SDL.h>
18
19typedef struct SkinWindow  SkinWindow;
20
21/* Note: if scale is <= 0, we interpret this as 'auto-detect'.
22 *       The behaviour is to use 1.0 by default, unless the resulting
23 *       window is too large, in which case the window will automatically
24 *       be resized to fit the screen.
25 */
26extern SkinWindow*      skin_window_create( SkinLayout*  layout,
27                                            int          x,
28                                            int          y,
29                                            double       scale,
30                                            int          no_display );
31
32extern void             skin_window_enable_touch( SkinWindow*  window, int  enabled );
33extern void             skin_window_enable_trackball( SkinWindow*  window, int  enabled );
34extern void             skin_window_enable_dpad( SkinWindow*  window, int  enabled );
35extern void             skin_window_enable_qwerty( SkinWindow*  window, int  enabled );
36
37extern int              skin_window_reset ( SkinWindow*  window, SkinLayout*  layout );
38extern void             skin_window_free  ( SkinWindow*  window );
39extern void             skin_window_redraw( SkinWindow*  window, SkinRect*  rect );
40extern void             skin_window_process_event( SkinWindow*  window, SDL_Event*  ev );
41
42extern void             skin_window_set_onion( SkinWindow*   window,
43                                               SkinImage*    onion,
44                                               SkinRotation  rotation,
45                                               int           alpha );
46
47extern void             skin_window_set_scale( SkinWindow*  window,
48                                               double       scale );
49
50extern void             skin_window_set_title( SkinWindow*  window,
51                                               const char*  title );
52
53extern void             skin_window_set_trackball( SkinWindow*  window, SkinTrackBall*  ball );
54extern void             skin_window_show_trackball( SkinWindow*  window, int  enable );
55extern void             skin_window_toggle_fullscreen( SkinWindow*  window );
56
57/* change the brightness of the emulator LCD screen. 'brightness' will be clamped to 0..255 */
58extern void             skin_window_set_lcd_brightness( SkinWindow*  window, int  brightness );
59
60typedef struct {
61    int           width;
62    int           height;
63    SkinRotation  rotation;
64    void*         data;
65} ADisplayInfo;
66
67extern void             skin_window_get_display( SkinWindow*  window, ADisplayInfo  *info );
68extern void             skin_window_update_display( SkinWindow*  window, int  x, int  y, int  w, int  h );
69
70#endif /* _SKIN_WINDOW_H */
71