summaryrefslogtreecommitdiffstats
path: root/tools/aapt
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2011-05-13 11:21:26 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-05-13 11:21:26 -0700
commit2e4a3236a7634d17f89288e9739a438ecbea0471 (patch)
tree45e1c4c61f4eb9775572d94a55dd91b071b84916 /tools/aapt
parent15f8a6a726658bfb195924bd5d7bb86684a22de0 (diff)
parent46a282f323bc05606e4fe1eba795bd9ac7c99819 (diff)
downloadframeworks_base-2e4a3236a7634d17f89288e9739a438ecbea0471.zip
frameworks_base-2e4a3236a7634d17f89288e9739a438ecbea0471.tar.gz
frameworks_base-2e4a3236a7634d17f89288e9739a438ecbea0471.tar.bz2
am 46a282f3: am 0ed2e845: Merge "DO NOT MERGE. Integrate add new screen width/height in "dp" configs." into honeycomb-mr2
* commit '46a282f323bc05606e4fe1eba795bd9ac7c99819': DO NOT MERGE. Integrate add new screen width/height in "dp" configs.
Diffstat (limited to 'tools/aapt')
-rw-r--r--tools/aapt/AaptAssets.cpp115
-rw-r--r--tools/aapt/AaptAssets.h7
-rw-r--r--tools/aapt/ResourceTable.cpp27
3 files changed, 137 insertions, 12 deletions
diff --git a/tools/aapt/AaptAssets.cpp b/tools/aapt/AaptAssets.cpp
index 2b2ec7b..a2271d9 100644
--- a/tools/aapt/AaptAssets.cpp
+++ b/tools/aapt/AaptAssets.cpp
@@ -156,6 +156,20 @@ AaptGroupEntry::parseNamePart(const String8& part, int* axis, uint32_t* value)
return 0;
}
+ // screen dp width
+ if (getScreenWidthDpName(part.string(), &config)) {
+ *axis = AXIS_SCREENWIDTHDP;
+ *value = config.screenWidthDp;
+ return 0;
+ }
+
+ // screen dp height
+ if (getScreenHeightDpName(part.string(), &config)) {
+ *axis = AXIS_SCREENHEIGHTDP;
+ *value = config.screenHeightDp;
+ return 0;
+ }
+
// orientation
if (getOrientationName(part.string(), &config)) {
*axis = AXIS_ORIENTATION;
@@ -243,7 +257,7 @@ AaptGroupEntry::initFromDirName(const char* dir, String8* resType)
String8 mcc, mnc, loc, layoutsize, layoutlong, orient, den;
String8 touch, key, keysHidden, nav, navHidden, size, vers;
- String8 uiModeType, uiModeNight;
+ String8 uiModeType, uiModeNight, widthdp, heightdp;
const char *p = dir;
const char *q;
@@ -354,6 +368,30 @@ AaptGroupEntry::initFromDirName(const char* dir, String8* resType)
//printf("not screen layout long: %s\n", part.string());
}
+ if (getScreenWidthDpName(part.string())) {
+ widthdp = part;
+
+ index++;
+ if (index == N) {
+ goto success;
+ }
+ part = parts[index];
+ } else {
+ //printf("not screen width dp: %s\n", part.string());
+ }
+
+ if (getScreenHeightDpName(part.string())) {
+ heightdp = part;
+
+ index++;
+ if (index == N) {
+ goto success;
+ }
+ part = parts[index];
+ } else {
+ //printf("not screen height dp: %s\n", part.string());
+ }
+
// orientation
if (getOrientationName(part.string())) {
orient = part;
@@ -503,6 +541,8 @@ success:
this->locale = loc;
this->screenLayoutSize = layoutsize;
this->screenLayoutLong = layoutlong;
+ this->screenWidthDp = widthdp;
+ this->screenHeightDp = heightdp;
this->orientation = orient;
this->uiModeType = uiModeType;
this->uiModeNight = uiModeNight;
@@ -534,6 +574,10 @@ AaptGroupEntry::toString() const
s += ",";
s += screenLayoutLong;
s += ",";
+ s += screenWidthDp;
+ s += ",";
+ s += screenHeightDp;
+ s += ",";
s += this->orientation;
s += ",";
s += uiModeType;
@@ -582,6 +626,14 @@ AaptGroupEntry::toDirName(const String8& resType) const
s += "-";
s += screenLayoutLong;
}
+ if (this->screenWidthDp != "") {
+ s += "-";
+ s += screenWidthDp;
+ }
+ if (this->screenHeightDp != "") {
+ s += "-";
+ s += screenHeightDp;
+ }
if (this->orientation != "") {
s += "-";
s += orientation;
@@ -1039,8 +1091,7 @@ bool AaptGroupEntry::getNavigationName(const char* name,
return false;
}
-bool AaptGroupEntry::getScreenSizeName(const char* name,
- ResTable_config* out)
+bool AaptGroupEntry::getScreenSizeName(const char* name, ResTable_config* out)
{
if (strcmp(name, kWildcardName) == 0) {
if (out) {
@@ -1075,8 +1126,53 @@ bool AaptGroupEntry::getScreenSizeName(const char* name,
return true;
}
-bool AaptGroupEntry::getVersionName(const char* name,
- ResTable_config* out)
+bool AaptGroupEntry::getScreenWidthDpName(const char* name, ResTable_config* out)
+{
+ if (strcmp(name, kWildcardName) == 0) {
+ if (out) {
+ out->screenWidthDp = out->SCREENWIDTH_ANY;
+ }
+ return true;
+ }
+
+ if (*name != 'w') return false;
+ name++;
+ const char* x = name;
+ while (*x >= '0' && *x <= '9') x++;
+ if (x == name || x[0] != 'd' || x[1] != 'p' || x[2] != 0) return false;
+ String8 xName(name, x-name);
+
+ if (out) {
+ out->screenWidthDp = (uint16_t)atoi(xName.string());
+ }
+
+ return true;
+}
+
+bool AaptGroupEntry::getScreenHeightDpName(const char* name, ResTable_config* out)
+{
+ if (strcmp(name, kWildcardName) == 0) {
+ if (out) {
+ out->screenHeightDp = out->SCREENWIDTH_ANY;
+ }
+ return true;
+ }
+
+ if (*name != 'h') return false;
+ name++;
+ const char* x = name;
+ while (*x >= '0' && *x <= '9') x++;
+ if (x == name || x[0] != 'd' || x[1] != 'p' || x[2] != 0) return false;
+ String8 xName(name, x-name);
+
+ if (out) {
+ out->screenHeightDp = (uint16_t)atoi(xName.string());
+ }
+
+ return true;
+}
+
+bool AaptGroupEntry::getVersionName(const char* name, ResTable_config* out)
{
if (strcmp(name, kWildcardName) == 0) {
if (out) {
@@ -1112,6 +1208,8 @@ int AaptGroupEntry::compare(const AaptGroupEntry& o) const
if (v == 0) v = vendor.compare(o.vendor);
if (v == 0) v = screenLayoutSize.compare(o.screenLayoutSize);
if (v == 0) v = screenLayoutLong.compare(o.screenLayoutLong);
+ if (v == 0) v = screenWidthDp.compare(o.screenWidthDp);
+ if (v == 0) v = screenHeightDp.compare(o.screenHeightDp);
if (v == 0) v = orientation.compare(o.orientation);
if (v == 0) v = uiModeType.compare(o.uiModeType);
if (v == 0) v = uiModeNight.compare(o.uiModeNight);
@@ -1135,6 +1233,8 @@ ResTable_config AaptGroupEntry::toParams() const
getLocaleName(locale.string(), &params);
getScreenLayoutSizeName(screenLayoutSize.string(), &params);
getScreenLayoutLongName(screenLayoutLong.string(), &params);
+ getScreenWidthDpName(screenWidthDp.string(), &params);
+ getScreenHeightDpName(screenHeightDp.string(), &params);
getOrientationName(orientation.string(), &params);
getUiModeTypeName(uiModeType.string(), &params);
getUiModeNightName(uiModeNight.string(), &params);
@@ -1149,7 +1249,10 @@ ResTable_config AaptGroupEntry::toParams() const
// Fix up version number based on specified parameters.
int minSdk = 0;
- if ((params.uiMode&ResTable_config::MASK_UI_MODE_TYPE)
+ if (params.screenWidthDp != ResTable_config::SCREENWIDTH_ANY
+ || params.screenHeightDp != ResTable_config::SCREENHEIGHT_ANY) {
+ minSdk = SDK_ICS;
+ } else if ((params.uiMode&ResTable_config::MASK_UI_MODE_TYPE)
!= ResTable_config::UI_MODE_TYPE_ANY
|| (params.uiMode&ResTable_config::MASK_UI_MODE_NIGHT)
!= ResTable_config::UI_MODE_NIGHT_ANY) {
diff --git a/tools/aapt/AaptAssets.h b/tools/aapt/AaptAssets.h
index eeb00c0..e5afd1b 100644
--- a/tools/aapt/AaptAssets.h
+++ b/tools/aapt/AaptAssets.h
@@ -42,6 +42,8 @@ enum {
AXIS_NAVHIDDEN,
AXIS_NAVIGATION,
AXIS_SCREENSIZE,
+ AXIS_SCREENWIDTHDP,
+ AXIS_SCREENHEIGHTDP,
AXIS_VERSION
};
@@ -52,6 +54,7 @@ enum {
SDK_ECLAIR_0_1 = 6,
SDK_MR1 = 7,
SDK_FROYO = 8,
+ SDK_ICS = 13,
};
/**
@@ -71,6 +74,8 @@ public:
String8 vendor;
String8 screenLayoutSize;
String8 screenLayoutLong;
+ String8 screenWidthDp;
+ String8 screenHeightDp;
String8 orientation;
String8 uiModeType;
String8 uiModeNight;
@@ -102,6 +107,8 @@ public:
static bool getNavigationName(const char* name, ResTable_config* out = NULL);
static bool getNavHiddenName(const char* name, ResTable_config* out = NULL);
static bool getScreenSizeName(const char* name, ResTable_config* out = NULL);
+ static bool getScreenWidthDpName(const char* name, ResTable_config* out = NULL);
+ static bool getScreenHeightDpName(const char* name, ResTable_config* out = NULL);
static bool getVersionName(const char* name, ResTable_config* out = NULL);
int compare(const AaptGroupEntry& o) const;
diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp
index 6d5fcc2..a88476e 100644
--- a/tools/aapt/ResourceTable.cpp
+++ b/tools/aapt/ResourceTable.cpp
@@ -2607,6 +2607,15 @@ ResourceFilter::match(const ResTable_config& config) const
if (!match(AXIS_SCREENSIZE, config.screenSize)) {
return false;
}
+ if (!match(AXIS_SCREENWIDTHDP, config.screenWidthDp)) {
+ return false;
+ }
+ if (!match(AXIS_SCREENHEIGHTDP, config.screenHeightDp)) {
+ return false;
+ }
+ if (!match(AXIS_SCREENLAYOUTSIZE, config.screenLayout&ResTable_config::MASK_SCREENSIZE)) {
+ return false;
+ }
if (!match(AXIS_VERSION, config.version)) {
return false;
}
@@ -2800,7 +2809,7 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp<AaptFile>& dest)
ConfigDescription config = t->getUniqueConfigs().itemAt(ci);
NOISY(printf("Writing config %d config: imsi:%d/%d lang:%c%c cnt:%c%c "
- "orien:%d ui:%d touch:%d density:%d key:%d inp:%d nav:%d w:%d h:%d\n",
+ "orien:%d ui:%d touch:%d density:%d key:%d inp:%d nav:%d sz:%dx%d %ddp x %ddp\n",
ti+1,
config.mcc, config.mnc,
config.language[0] ? config.language[0] : '-',
@@ -2815,7 +2824,9 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp<AaptFile>& dest)
config.inputFlags,
config.navigation,
config.screenWidth,
- config.screenHeight));
+ config.screenHeight,
+ config.screenWidthDp,
+ config.screenHeightDp));
if (filterable && !filter.match(config)) {
continue;
@@ -2838,7 +2849,7 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp<AaptFile>& dest)
tHeader->entriesStart = htodl(typeSize);
tHeader->config = config;
NOISY(printf("Writing type %d config: imsi:%d/%d lang:%c%c cnt:%c%c "
- "orien:%d ui:%d touch:%d density:%d key:%d inp:%d nav:%d w:%d h:%d\n",
+ "orien:%d ui:%d touch:%d density:%d key:%d inp:%d nav:%d sz:%dx%d %ddp x %ddp\n",
ti+1,
tHeader->config.mcc, tHeader->config.mnc,
tHeader->config.language[0] ? tHeader->config.language[0] : '-',
@@ -2853,7 +2864,9 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp<AaptFile>& dest)
tHeader->config.inputFlags,
tHeader->config.navigation,
tHeader->config.screenWidth,
- tHeader->config.screenHeight));
+ tHeader->config.screenHeight,
+ tHeader->config.screenWidthDp,
+ tHeader->config.screenHeightDp));
tHeader->config.swapHtoD();
// Build the entries inside of this type.
@@ -3435,7 +3448,7 @@ sp<ResourceTable::Entry> ResourceTable::Type::getEntry(const String16& entry,
if (e == NULL) {
if (config != NULL) {
NOISY(printf("New entry at %s:%d: imsi:%d/%d lang:%c%c cnt:%c%c "
- "orien:%d touch:%d density:%d key:%d inp:%d nav:%d w:%d h:%d\n",
+ "orien:%d touch:%d density:%d key:%d inp:%d nav:%d sz:%dx%d %ddp x %ddp\n",
sourcePos.file.string(), sourcePos.line,
config->mcc, config->mnc,
config->language[0] ? config->language[0] : '-',
@@ -3449,7 +3462,9 @@ sp<ResourceTable::Entry> ResourceTable::Type::getEntry(const String16& entry,
config->inputFlags,
config->navigation,
config->screenWidth,
- config->screenHeight));
+ config->screenHeight,
+ config->screenWidthDp,
+ config->screenHeightDp));
} else {
NOISY(printf("New entry at %s:%d: NULL config\n",
sourcePos.file.string(), sourcePos.line));