resolved conflicts for merge of 92860a74 to master
Change-Id: I3036ef9f1251c756092dc5ee2c4fed8146855e1e
This commit is contained in:
@@ -79,7 +79,7 @@ namespace android {
|
||||
* two stretchable slices is exactly the ratio of their corresponding
|
||||
* segment lengths.
|
||||
*
|
||||
* xDivs and yDivs point to arrays of horizontal and vertical pixel
|
||||
* xDivs and yDivs are arrays of horizontal and vertical pixel
|
||||
* indices. The first pair of Divs (in either array) indicate the
|
||||
* starting and ending points of the first stretchable segment in that
|
||||
* axis. The next pair specifies the next stretchable segment, etc. So
|
||||
@@ -92,32 +92,31 @@ namespace android {
|
||||
* go to xDiv[0] and slices 2, 6 and 10 start at xDiv[1] and end at
|
||||
* xDiv[2].
|
||||
*
|
||||
* The array pointed to by the colors field lists contains hints for
|
||||
* each of the regions. They are ordered according left-to-right and
|
||||
* top-to-bottom as indicated above. For each segment that is a solid
|
||||
* color the array entry will contain that color value; otherwise it
|
||||
* will contain NO_COLOR. Segments that are completely transparent
|
||||
* will always have the value TRANSPARENT_COLOR.
|
||||
* The colors array contains hints for each of the regions. They are
|
||||
* ordered according left-to-right and top-to-bottom as indicated above.
|
||||
* For each segment that is a solid color the array entry will contain
|
||||
* that color value; otherwise it will contain NO_COLOR. Segments that
|
||||
* are completely transparent will always have the value TRANSPARENT_COLOR.
|
||||
*
|
||||
* The PNG chunk type is "npTc".
|
||||
*/
|
||||
struct Res_png_9patch
|
||||
{
|
||||
Res_png_9patch() : wasDeserialized(false), xDivs(NULL),
|
||||
yDivs(NULL), colors(NULL) { }
|
||||
Res_png_9patch() : wasDeserialized(false), xDivsOffset(0),
|
||||
yDivsOffset(0), colorsOffset(0) { }
|
||||
|
||||
int8_t wasDeserialized;
|
||||
int8_t numXDivs;
|
||||
int8_t numYDivs;
|
||||
int8_t numColors;
|
||||
|
||||
// These tell where the next section of a patch starts.
|
||||
// For example, the first patch includes the pixels from
|
||||
// 0 to xDivs[0]-1 and the second patch includes the pixels
|
||||
// from xDivs[0] to xDivs[1]-1.
|
||||
// Note: allocation/free of these pointers is left to the caller.
|
||||
int32_t* xDivs;
|
||||
int32_t* yDivs;
|
||||
// The offset (from the start of this structure) to the xDivs & yDivs
|
||||
// array for this 9patch. To get a pointer to this array, call
|
||||
// getXDivs or getYDivs. Note that the serialized form for 9patches places
|
||||
// the xDivs, yDivs and colors arrays immediately after the location
|
||||
// of the Res_png_9patch struct.
|
||||
uint32_t xDivsOffset;
|
||||
uint32_t yDivsOffset;
|
||||
|
||||
int32_t paddingLeft, paddingRight;
|
||||
int32_t paddingTop, paddingBottom;
|
||||
@@ -129,22 +128,42 @@ struct Res_png_9patch
|
||||
// The 9 patch segment is completely transparent.
|
||||
TRANSPARENT_COLOR = 0x00000000
|
||||
};
|
||||
// Note: allocation/free of this pointer is left to the caller.
|
||||
uint32_t* colors;
|
||||
|
||||
// The offset (from the start of this structure) to the colors array
|
||||
// for this 9patch.
|
||||
uint32_t colorsOffset;
|
||||
|
||||
// Convert data from device representation to PNG file representation.
|
||||
void deviceToFile();
|
||||
// Convert data from PNG file representation to device representation.
|
||||
void fileToDevice();
|
||||
// Serialize/Marshall the patch data into a newly malloc-ed block
|
||||
void* serialize();
|
||||
// Serialize/Marshall the patch data
|
||||
void serialize(void* outData);
|
||||
|
||||
// Serialize/Marshall the patch data into a newly malloc-ed block.
|
||||
static void* serialize(const Res_png_9patch& patchHeader, const int32_t* xDivs,
|
||||
const int32_t* yDivs, const uint32_t* colors);
|
||||
// Serialize/Marshall the patch data into |outData|.
|
||||
static void serialize(const Res_png_9patch& patchHeader, const int32_t* xDivs,
|
||||
const int32_t* yDivs, const uint32_t* colors, void* outData);
|
||||
// Deserialize/Unmarshall the patch data
|
||||
static Res_png_9patch* deserialize(const void* data);
|
||||
static Res_png_9patch* deserialize(void* data);
|
||||
// Compute the size of the serialized data structure
|
||||
size_t serializedSize();
|
||||
};
|
||||
size_t serializedSize() const;
|
||||
|
||||
// These tell where the next section of a patch starts.
|
||||
// For example, the first patch includes the pixels from
|
||||
// 0 to xDivs[0]-1 and the second patch includes the pixels
|
||||
// from xDivs[0] to xDivs[1]-1.
|
||||
inline int32_t* getXDivs() const {
|
||||
return reinterpret_cast<int32_t*>(reinterpret_cast<uintptr_t>(this) + xDivsOffset);
|
||||
}
|
||||
inline int32_t* getYDivs() const {
|
||||
return reinterpret_cast<int32_t*>(reinterpret_cast<uintptr_t>(this) + yDivsOffset);
|
||||
}
|
||||
inline uint32_t* getColors() const {
|
||||
return reinterpret_cast<uint32_t*>(reinterpret_cast<uintptr_t>(this) + colorsOffset);
|
||||
}
|
||||
|
||||
} __attribute__((packed));
|
||||
|
||||
/** ********************************************************************
|
||||
* Base Types
|
||||
|
||||
Reference in New Issue
Block a user