10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony.cat;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide}
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class ImageDescriptor {
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // members
2422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    int mWidth;
2522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    int mHeight;
2622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    int mCodingScheme;
2722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    int mImageId;
2822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    int mHighOffset;
2922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    int mLowOffset;
3022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    int mLength;
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // constants
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    static final int CODING_SCHEME_BASIC = 0x11;
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    static final int CODING_SCHEME_COLOUR = 0x21;
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // public static final int ID_LENGTH = 9;
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // ID_LENGTH substituted by IccFileHandlerBase.GET_RESPONSE_EF_IMG_SIZE_BYTES
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    ImageDescriptor() {
4022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mWidth = 0;
4122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mHeight = 0;
4222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mCodingScheme = 0;
4322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mImageId = 0;
4422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mHighOffset = 0;
4522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mLowOffset = 0;
4622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mLength = 0;
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Extract descriptor information about image instance.
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param rawData
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param valueIndex
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return ImageDescriptor
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    static ImageDescriptor parse(byte[] rawData, int valueIndex) {
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ImageDescriptor d = new ImageDescriptor();
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
5922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            d.mWidth = rawData[valueIndex++] & 0xff;
6022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            d.mHeight = rawData[valueIndex++] & 0xff;
6122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            d.mCodingScheme = rawData[valueIndex++] & 0xff;
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // parse image id
6422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            d.mImageId = (rawData[valueIndex++] & 0xff) << 8;
6522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            d.mImageId |= rawData[valueIndex++] & 0xff;
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // parse offset
6722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            d.mHighOffset = (rawData[valueIndex++] & 0xff); // high byte offset
6822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            d.mLowOffset = rawData[valueIndex++] & 0xff; // low byte offset
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
7022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            d.mLength = ((rawData[valueIndex++] & 0xff) << 8 | (rawData[valueIndex++] & 0xff));
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (IndexOutOfBoundsException e) {
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            CatLog.d("ImageDescripter", "parse; failed parsing image descriptor");
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            d = null;
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return d;
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
78