public FIBLongHandler(byte[] mainStream, int offset) { int longCount = LittleEndian.getShort(mainStream, offset); offset += LittleEndian.SHORT_SIZE; _longs = new int[longCount]; for (int x = 0; x < longCount; x++) { _longs[x] = LittleEndian.getInt(mainStream, offset + (x * LittleEndian.INT_SIZE)); } }
public Picture(int dataBlockStartOfsset, byte[] _dataStream, boolean fillBytes) { this._dataStream = _dataStream; this.dataBlockStartOfsset = dataBlockStartOfsset; this.dataBlockSize = LittleEndian.getInt(_dataStream, dataBlockStartOfsset); this.pictureBytesStartOffset = getPictureBytesStartOffset(dataBlockStartOfsset, _dataStream, dataBlockSize); this.size = dataBlockSize - (pictureBytesStartOffset - dataBlockStartOfsset); if (size < 0) {} this.aspectRatioX = extractAspectRatioX(_dataStream, dataBlockStartOfsset); this.aspectRatioY = extractAspectRatioY(_dataStream, dataBlockStartOfsset); if (fillBytes) { fillImageContent(); } }
/** * For an existing set of text properties, build the list of properties coded for in a given run * of properties. * * @return the number of bytes that were used encoding the properties list */ public int buildTextPropList( int containsField, TextProp[] potentialProperties, byte[] data, int dataOffset) { int bytesPassed = 0; // For each possible entry, see if we match the mask // If we do, decode that, save it, and shuffle on for (int i = 0; i < potentialProperties.length; i++) { // Check there's still data left to read // Check if this property is found in the mask if ((containsField & potentialProperties[i].getMask()) != 0) { if (dataOffset + bytesPassed >= data.length) { // Out of data, can't be any more properties to go // remember the mask and return maskSpecial |= potentialProperties[i].getMask(); return bytesPassed; } // Bingo, data contains this property TextProp prop = (TextProp) potentialProperties[i].clone(); int val = 0; if (prop.getSize() == 2) { val = LittleEndian.getShort(data, dataOffset + bytesPassed); } else if (prop.getSize() == 4) { val = LittleEndian.getInt(data, dataOffset + bytesPassed); } else if (prop.getSize() == 0) { // remember "special" bits. maskSpecial |= potentialProperties[i].getMask(); continue; } prop.setValue(val); bytesPassed += prop.getSize(); textPropList.add(prop); } } // Return how many bytes were used return bytesPassed; }