1e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
2e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Copyright (C) 2010 The Android Open Source Project
3e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
4e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License");
5e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * you may not use this file except in compliance with the License.
6e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * You may obtain a copy of the License at
7e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
8e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *      http://www.apache.org/licenses/LICENSE-2.0
9e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
10e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Unless required by applicable law or agreed to in writing, software
11e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS,
12e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * See the License for the specific language governing permissions and
14e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * limitations under the License.
15e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
16e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
17e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#ifndef ANDROID_CONFIGURATION_H
18e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define ANDROID_CONFIGURATION_H
19e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
20e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#include <android/asset_manager.h>
21e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
22e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#ifdef __cplusplus
23e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianextern "C" {
24e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#endif
25e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
26e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianstruct AConfiguration;
27e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopiantypedef struct AConfiguration AConfiguration;
28e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
29e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianenum {
30e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_ORIENTATION_ANY  = 0x0000,
31e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_ORIENTATION_PORT = 0x0001,
32e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_ORIENTATION_LAND = 0x0002,
33e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_ORIENTATION_SQUARE = 0x0003,
34e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
35e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_TOUCHSCREEN_ANY  = 0x0000,
36e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_TOUCHSCREEN_NOTOUCH  = 0x0001,
37e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_TOUCHSCREEN_STYLUS  = 0x0002,
38e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_TOUCHSCREEN_FINGER  = 0x0003,
39e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
40e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_DENSITY_DEFAULT = 0,
41e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_DENSITY_LOW = 120,
42e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_DENSITY_MEDIUM = 160,
43e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_DENSITY_TV = 213,
44e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_DENSITY_HIGH = 240,
45e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_DENSITY_XHIGH = 320,
46e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_DENSITY_XXHIGH = 480,
47e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_DENSITY_NONE = 0xffff,
48e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
49e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYBOARD_ANY  = 0x0000,
50e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYBOARD_NOKEYS  = 0x0001,
51e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYBOARD_QWERTY  = 0x0002,
52e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYBOARD_12KEY  = 0x0003,
53e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
54e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_NAVIGATION_ANY  = 0x0000,
55e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_NAVIGATION_NONAV  = 0x0001,
56e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_NAVIGATION_DPAD  = 0x0002,
57e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_NAVIGATION_TRACKBALL  = 0x0003,
58e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_NAVIGATION_WHEEL  = 0x0004,
59e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
60e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYSHIDDEN_ANY = 0x0000,
61e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYSHIDDEN_NO = 0x0001,
62e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYSHIDDEN_YES = 0x0002,
63e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYSHIDDEN_SOFT = 0x0003,
64e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
65e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_NAVHIDDEN_ANY = 0x0000,
66e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_NAVHIDDEN_NO = 0x0001,
67e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_NAVHIDDEN_YES = 0x0002,
68e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
69e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREENSIZE_ANY  = 0x00,
70e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREENSIZE_SMALL = 0x01,
71e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREENSIZE_NORMAL = 0x02,
72e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREENSIZE_LARGE = 0x03,
73e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREENSIZE_XLARGE = 0x04,
74e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
75e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREENLONG_ANY = 0x00,
76e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREENLONG_NO = 0x1,
77e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREENLONG_YES = 0x2,
78e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
79e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE_TYPE_ANY = 0x00,
80e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE_TYPE_NORMAL = 0x01,
81e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE_TYPE_DESK = 0x02,
82e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE_TYPE_CAR = 0x03,
83e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE_TYPE_TELEVISION = 0x04,
84e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE_TYPE_APPLIANCE = 0x05,
85e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
86e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE_NIGHT_ANY = 0x00,
87e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE_NIGHT_NO = 0x1,
88e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE_NIGHT_YES = 0x2,
89e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
90e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREEN_WIDTH_DP_ANY = 0x0000,
91e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
92e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREEN_HEIGHT_DP_ANY = 0x0000,
93e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
94e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SMALLEST_SCREEN_WIDTH_DP_ANY = 0x0000,
95e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
968855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio    ACONFIGURATION_LAYOUTDIR_ANY  = 0x00,
978855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio    ACONFIGURATION_LAYOUTDIR_LTR  = 0x01,
988855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio    ACONFIGURATION_LAYOUTDIR_RTL  = 0x02,
998855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio
100e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_MCC = 0x0001,
101e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_MNC = 0x0002,
102e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_LOCALE = 0x0004,
103e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_TOUCHSCREEN = 0x0008,
104e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYBOARD = 0x0010,
105e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_KEYBOARD_HIDDEN = 0x0020,
106e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_NAVIGATION = 0x0040,
107e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_ORIENTATION = 0x0080,
108e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_DENSITY = 0x0100,
109e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREEN_SIZE = 0x0200,
110e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_VERSION = 0x0400,
111e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SCREEN_LAYOUT = 0x0800,
112e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_UI_MODE = 0x1000,
113e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ACONFIGURATION_SMALLEST_SCREEN_SIZE = 0x2000,
1148855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio    ACONFIGURATION_LAYOUTDIR = 0x4000,
115e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian};
116e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
117e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
118e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Create a new AConfiguration, initialized with no values set.
119e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
120e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias AgopianAConfiguration* AConfiguration_new();
121e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
122e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
123e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Free an AConfiguration that was previously created with
124e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * AConfiguration_new().
125e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
126e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_delete(AConfiguration* config);
127e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
128e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
129e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Create and return a new AConfiguration based on the current configuration in
130e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * use in the given AssetManager.
131e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
132e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_fromAssetManager(AConfiguration* out, AAssetManager* am);
133e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
134e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
135e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Copy the contents of 'src' to 'dest'.
136e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
137e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_copy(AConfiguration* dest, AConfiguration* src);
138e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
139e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
140e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current MCC set in the configuration.  0 if not set.
141e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
142e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getMcc(AConfiguration* config);
143e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
144e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
145e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current MCC in the configuration.  0 to clear.
146e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
147e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setMcc(AConfiguration* config, int32_t mcc);
148e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
149e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
150e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current MNC set in the configuration.  0 if not set.
151e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
152e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getMnc(AConfiguration* config);
153e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
154e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
155e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current MNC in the configuration.  0 to clear.
156e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
157e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setMnc(AConfiguration* config, int32_t mnc);
158e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
159e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
160e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current language code set in the configuration.  The output will
161e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * be filled with an array of two characters.  They are not 0-terminated.  If
162e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * a language is not set, they will be 0.
163e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
164e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_getLanguage(AConfiguration* config, char* outLanguage);
165e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
166e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
167e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current language code in the configuration, from the first two
168e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * characters in the string.
169e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
170e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setLanguage(AConfiguration* config, const char* language);
171e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
172e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
173e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current country code set in the configuration.  The output will
174e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * be filled with an array of two characters.  They are not 0-terminated.  If
175e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * a country is not set, they will be 0.
176e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
177e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_getCountry(AConfiguration* config, char* outCountry);
178e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
179e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
180e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current country code in the configuration, from the first two
181e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * characters in the string.
182e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
183e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setCountry(AConfiguration* config, const char* country);
184e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
185e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
186e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_ORIENTATION_* set in the configuration.
187e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
188e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getOrientation(AConfiguration* config);
189e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
190e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
191e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current orientation in the configuration.
192e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
193e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setOrientation(AConfiguration* config, int32_t orientation);
194e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
195e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
196e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_TOUCHSCREEN_* set in the configuration.
197e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
198e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getTouchscreen(AConfiguration* config);
199e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
200e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
201e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current touchscreen in the configuration.
202e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
203e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setTouchscreen(AConfiguration* config, int32_t touchscreen);
204e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
205e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
206e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_DENSITY_* set in the configuration.
207e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
208e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getDensity(AConfiguration* config);
209e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
210e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
211e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current density in the configuration.
212e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
213e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setDensity(AConfiguration* config, int32_t density);
214e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
215e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
216e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_KEYBOARD_* set in the configuration.
217e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
218e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getKeyboard(AConfiguration* config);
219e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
220e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
221e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current keyboard in the configuration.
222e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
223e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setKeyboard(AConfiguration* config, int32_t keyboard);
224e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
225e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
226e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_NAVIGATION_* set in the configuration.
227e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
228e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getNavigation(AConfiguration* config);
229e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
230e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
231e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current navigation in the configuration.
232e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
233e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setNavigation(AConfiguration* config, int32_t navigation);
234e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
235e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
236e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_KEYSHIDDEN_* set in the configuration.
237e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
238e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getKeysHidden(AConfiguration* config);
239e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
240e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
241e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current keys hidden in the configuration.
242e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
243e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setKeysHidden(AConfiguration* config, int32_t keysHidden);
244e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
245e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
246e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_NAVHIDDEN_* set in the configuration.
247e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
248e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getNavHidden(AConfiguration* config);
249e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
250e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
251e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current nav hidden in the configuration.
252e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
253e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setNavHidden(AConfiguration* config, int32_t navHidden);
254e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
255e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
256e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current SDK (API) version set in the configuration.
257e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
258e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getSdkVersion(AConfiguration* config);
259e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
260e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
261e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current SDK version in the configuration.
262e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
263e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setSdkVersion(AConfiguration* config, int32_t sdkVersion);
264e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
265e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
266e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_SCREENSIZE_* set in the configuration.
267e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
268e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getScreenSize(AConfiguration* config);
269e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
270e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
271e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current screen size in the configuration.
272e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
273e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setScreenSize(AConfiguration* config, int32_t screenSize);
274e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
275e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
276e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_SCREENLONG_* set in the configuration.
277e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
278e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getScreenLong(AConfiguration* config);
279e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
280e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
281e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current screen long in the configuration.
282e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
283e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setScreenLong(AConfiguration* config, int32_t screenLong);
284e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
285e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
286e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_UI_MODE_TYPE_* set in the configuration.
287e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
288e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getUiModeType(AConfiguration* config);
289e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
290e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
291e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current UI mode type in the configuration.
292e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
293e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setUiModeType(AConfiguration* config, int32_t uiModeType);
294e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
295e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
296e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current ACONFIGURATION_UI_MODE_NIGHT_* set in the configuration.
297e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
298e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getUiModeNight(AConfiguration* config);
299e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
300e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
301e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the current UI mode night in the configuration.
302e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
303e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setUiModeNight(AConfiguration* config, int32_t uiModeNight);
304e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
305e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
306e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current configuration screen width in dp units, or
307e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * ACONFIGURATION_SCREEN_WIDTH_DP_ANY if not set.
308e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
309e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getScreenWidthDp(AConfiguration* config);
310e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
311e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
312e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the configuration's current screen width in dp units.
313e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
314e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setScreenWidthDp(AConfiguration* config, int32_t value);
315e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
316e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
317e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the current configuration screen height in dp units, or
318e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * ACONFIGURATION_SCREEN_HEIGHT_DP_ANY if not set.
319e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
320e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getScreenHeightDp(AConfiguration* config);
321e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
322e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
323e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the configuration's current screen width in dp units.
324e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
325e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setScreenHeightDp(AConfiguration* config, int32_t value);
326e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
327e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
328e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return the configuration's smallest screen width in dp units, or
329e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * ACONFIGURATION_SMALLEST_SCREEN_WIDTH_DP_ANY if not set.
330e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
331e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_getSmallestScreenWidthDp(AConfiguration* config);
332e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
333e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
334e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Set the configuration's smallest screen width in dp units.
335e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
336e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianvoid AConfiguration_setSmallestScreenWidthDp(AConfiguration* config, int32_t value);
337e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
338e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
3398855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio * Return the configuration's layout direction, or
3408855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio * ACONFIGURATION_LAYOUTDIR_ANY if not set.
3418855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio */
3428855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglioint32_t AConfiguration_getLayoutDirection(AConfiguration* config);
3438855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio
3448855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio/**
3458855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio * Set the configuration's layout direction.
3468855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio */
3478855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Megliovoid AConfiguration_setLayoutDirection(AConfiguration* config, int32_t value);
3488855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio
3498855e6f1c59954ef8de651987fec0cbba0394e9bFabrice Di Meglio/**
350e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Perform a diff between two configurations.  Returns a bit mask of
351e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * ACONFIGURATION_* constants, each bit set meaning that configuration element
352e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * is different between them.
353e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
354e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_diff(AConfiguration* config1, AConfiguration* config2);
355e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
356e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
357e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Determine whether 'base' is a valid configuration for use within the
358e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * environment 'requested'.  Returns 0 if there are any values in 'base'
359e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * that conflict with 'requested'.  Returns 1 if it does not conflict.
360e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
361e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_match(AConfiguration* base, AConfiguration* requested);
362e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
363e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/**
364e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Determine whether the configuration in 'test' is better than the existing
365e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * configuration in 'base'.  If 'requested' is non-NULL, this decision is based
366e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * on the overall configuration given there.  If it is NULL, this decision is
367e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * simply based on which configuration is more specific.  Returns non-0 if
368e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * 'test' is better than 'base'.
369e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
370e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * This assumes you have already filtered the configurations with
371e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * AConfiguration_match().
372e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
373e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint32_t AConfiguration_isBetterThan(AConfiguration* base, AConfiguration* test,
374e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        AConfiguration* requested);
375e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
376e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#ifdef __cplusplus
377e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian};
378e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#endif
379e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
380e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#endif // ANDROID_CONFIGURATION_H
381