X-Git-Url: https://git.saurik.com/android/aapt.git/blobdiff_plain/258071a8b08dc824c77dd881d925f2da52f63967..b2e065c11bc16b03e4da3055aab514d6d1ef1244:/AaptAssets.h diff --git a/AaptAssets.h b/AaptAssets.h index 82dfd71..d5345b2 100644 --- a/AaptAssets.h +++ b/AaptAssets.h @@ -24,6 +24,8 @@ using namespace android; bool valid_symbol_name(const String8& str); +class AaptAssets; + enum { AXIS_NONE = 0, AXIS_MCC = 1, @@ -45,7 +47,10 @@ enum { AXIS_SMALLESTSCREENWIDTHDP, AXIS_SCREENWIDTHDP, AXIS_SCREENHEIGHTDP, - AXIS_VERSION + AXIS_VERSION, + + AXIS_START = AXIS_MCC, + AXIS_END = AXIS_VERSION, }; enum { @@ -56,6 +61,7 @@ enum { SDK_MR1 = 7, SDK_FROYO = 8, SDK_HONEYCOMB_MR2 = 13, + SDK_ICE_CREAM_SANDWICH = 14, }; /** @@ -65,35 +71,19 @@ enum { struct AaptGroupEntry { public: - AaptGroupEntry() { } + AaptGroupEntry() : mParamsChanged(true) { } AaptGroupEntry(const String8& _locale, const String8& _vendor) - : locale(_locale), vendor(_vendor) { } - - String8 mcc; - String8 mnc; - String8 locale; - String8 vendor; - String8 smallestScreenWidthDp; - String8 screenWidthDp; - String8 screenHeightDp; - String8 screenLayoutSize; - String8 screenLayoutLong; - String8 orientation; - String8 uiModeType; - String8 uiModeNight; - String8 density; - String8 touchscreen; - String8 keysHidden; - String8 keyboard; - String8 navHidden; - String8 navigation; - String8 screenSize; - String8 version; + : locale(_locale), vendor(_vendor), mParamsChanged(true) { } bool initFromDirName(const char* dir, String8* resType); static status_t parseNamePart(const String8& part, int* axis, uint32_t* value); - + + static uint32_t getConfigValueForAxis(const ResTable_config& config, int axis); + + static bool configSameExcept(const ResTable_config& config, + const ResTable_config& otherConfig, int axis); + static bool getMccName(const char* name, ResTable_config* out = NULL); static bool getMncName(const char* name, ResTable_config* out = NULL); static bool getLocaleName(const char* name, ResTable_config* out = NULL); @@ -116,7 +106,7 @@ public: int compare(const AaptGroupEntry& o) const; - ResTable_config toParams() const; + const ResTable_config& toParams() const; inline bool operator<(const AaptGroupEntry& o) const { return compare(o) < 0; } inline bool operator<=(const AaptGroupEntry& o) const { return compare(o) <= 0; } @@ -127,6 +117,33 @@ public: String8 toString() const; String8 toDirName(const String8& resType) const; + + const String8& getVersionString() const { return version; } + +private: + String8 mcc; + String8 mnc; + String8 locale; + String8 vendor; + String8 smallestScreenWidthDp; + String8 screenWidthDp; + String8 screenHeightDp; + String8 screenLayoutSize; + String8 screenLayoutLong; + String8 orientation; + String8 uiModeType; + String8 uiModeNight; + String8 density; + String8 touchscreen; + String8 keysHidden; + String8 keyboard; + String8 navHidden; + String8 navigation; + String8 screenSize; + String8 version; + + mutable bool mParamsChanged; + mutable ResTable_config mParams; }; inline int compare_type(const AaptGroupEntry& lhs, const AaptGroupEntry& rhs) @@ -225,7 +242,7 @@ public: status_t addFile(const sp& file); void removeFile(size_t index); - void print() const; + void print(const String8& prefix) const; String8 getPrintableSource() const; @@ -237,7 +254,7 @@ private: }; /** - * A single directory of assets, which can contain for files and other + * A single directory of assets, which can contain files and other * sub-directories. */ class AaptDir : public RefBase @@ -254,25 +271,11 @@ public: const DefaultKeyedVector >& getFiles() const { return mFiles; } const DefaultKeyedVector >& getDirs() const { return mDirs; } - status_t addFile(const String8& name, const sp& file); - status_t addDir(const String8& name, const sp& dir); - - sp makeDir(const String8& name); + virtual status_t addFile(const String8& name, const sp& file); void removeFile(const String8& name); void removeDir(const String8& name); - status_t renameFile(const sp& file, const String8& newName); - - status_t addLeafFile(const String8& leafName, - const sp& file); - - virtual ssize_t slurpFullTree(Bundle* bundle, - const String8& srcDir, - const AaptGroupEntry& kind, - const String8& resType, - sp& fullResPaths); - /* * Perform some sanity checks on the names of files and directories here. * In particular: @@ -292,11 +295,23 @@ public: */ status_t validate() const; - void print() const; + void print(const String8& prefix) const; String8 getPrintableSource() const; private: + friend class AaptAssets; + + status_t addDir(const String8& name, const sp& dir); + sp makeDir(const String8& name); + status_t addLeafFile(const String8& leafName, + const sp& file); + virtual ssize_t slurpFullTree(Bundle* bundle, + const String8& srcDir, + const AaptGroupEntry& kind, + const String8& resType, + sp& fullResPaths); + String8 mLeaf; String8 mPath; @@ -501,13 +516,15 @@ public: class AaptAssets : public AaptDir { public: - AaptAssets() : AaptDir(String8(), String8()), mHaveIncludedAssets(false), mRes(NULL) { } + AaptAssets(); virtual ~AaptAssets() { delete mRes; } const String8& getPackage() const { return mPackage; } void setPackage(const String8& package) { mPackage = package; mSymbolsPrivatePackage = package; } - const SortedVector& getGroupEntries() const { return mGroupEntries; } + const SortedVector& getGroupEntries() const; + + virtual status_t addFile(const String8& name, const sp& file); sp addFile(const String8& filePath, const AaptGroupEntry& entry, @@ -524,15 +541,6 @@ public: ssize_t slurpFromArgs(Bundle* bundle); - virtual ssize_t slurpFullTree(Bundle* bundle, - const String8& srcDir, - const AaptGroupEntry& kind, - const String8& resType, - sp& fullResPaths); - - ssize_t slurpResourceTree(Bundle* bundle, const String8& srcDir); - ssize_t slurpResourceZip(Bundle* bundle, const char* filename); - sp getSymbolsFor(const String8& name); const DefaultKeyedVector >& getSymbols() const { return mSymbols; } @@ -544,10 +552,10 @@ public: status_t addIncludedResources(const sp& file); const ResTable& getIncludedResources() const; - void print() const; + void print(const String8& prefix) const; - inline const Vector >& resDirs() { return mDirs; } - sp resDir(const String8& name); + inline const Vector >& resDirs() const { return mResDirs; } + sp resDir(const String8& name) const; inline sp getOverlay() { return mOverlay; } inline void setOverlay(sp& overlay) { mOverlay = overlay; } @@ -565,12 +573,25 @@ public: setFullAssetPaths(sp& res) { mFullAssetPaths = res; } private: + virtual ssize_t slurpFullTree(Bundle* bundle, + const String8& srcDir, + const AaptGroupEntry& kind, + const String8& resType, + sp& fullResPaths); + + ssize_t slurpResourceTree(Bundle* bundle, const String8& srcDir); + ssize_t slurpResourceZip(Bundle* bundle, const char* filename); + + status_t filter(Bundle* bundle); + String8 mPackage; SortedVector mGroupEntries; DefaultKeyedVector > mSymbols; String8 mSymbolsPrivatePackage; - Vector > mDirs; + Vector > mResDirs; + + bool mChanged; bool mHaveIncludedAssets; AssetManager mIncludedAssets;