1dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/* 2dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Copyright 2008 CoreMedia AG, Hamburg 3dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 4dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Licensed under the Apache License, Version 2.0 (the License); 5dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * you may not use this file except in compliance with the License. 6dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * You may obtain a copy of the License at 7dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 8dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * http://www.apache.org/licenses/LICENSE-2.0 9dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 10dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Unless required by applicable law or agreed to in writing, software 11dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * distributed under the License is distributed on an AS IS BASIS, 12dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * See the License for the specific language governing permissions and 14dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * limitations under the License. 15dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 16dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 17dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupackage com.coremedia.iso.boxes.sampleentry; 18dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 19dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.coremedia.iso.IsoTypeReader; 20dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.coremedia.iso.IsoTypeWriter; 21dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.coremedia.iso.boxes.Box; 22dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 23dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport java.io.IOException; 24dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport java.nio.ByteBuffer; 25dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 26dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/** 27dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Entry type for timed text samples defined in the timed text specification (ISO/IEC 14496-17). 28dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 29dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupublic class TextSampleEntry extends SampleEntry { 30dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 31dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static final String TYPE1 = "tx3g"; 32dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 33dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static final String TYPE_ENCRYPTED = "enct"; 34dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 35dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/* class TextSampleEntry() extends SampleEntry ('tx3g') { 36dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(32) displayFlags; 37dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu signed int(8) horizontal-justification; 38dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu signed int(8) vertical-justification; 39dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(8) background-color-rgba[4]; 40dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu BoxRecord default-text-box; 41dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu StyleRecord default-style; 42dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu FontTableBox font-table; 43dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 44dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 45dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 46dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private long displayFlags; // 32 bits 47dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private int horizontalJustification; // 8 bit 48dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private int verticalJustification; // 8 bit 49dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private int[] backgroundColorRgba = new int[4]; // 4 bytes 50dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private BoxRecord boxRecord = new BoxRecord(); 51dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private StyleRecord styleRecord = new StyleRecord(); 52dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 53dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public TextSampleEntry(String type) { 54dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu super(type); 55dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 56dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 57dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 58dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void _parseDetails(ByteBuffer content) { 59dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu _parseReservedAndDataReferenceIndex(content); 60dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags = IsoTypeReader.readUInt32(content); 61dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu horizontalJustification = IsoTypeReader.readUInt8(content); 62dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu verticalJustification = IsoTypeReader.readUInt8(content); 63dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu backgroundColorRgba = new int[4]; 64dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu backgroundColorRgba[0] = IsoTypeReader.readUInt8(content); 65dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu backgroundColorRgba[1] = IsoTypeReader.readUInt8(content); 66dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu backgroundColorRgba[2] = IsoTypeReader.readUInt8(content); 67dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu backgroundColorRgba[3] = IsoTypeReader.readUInt8(content); 68dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu boxRecord = new BoxRecord(); 69dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu boxRecord.parse(content); 70dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 71dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu styleRecord = new StyleRecord(); 72dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu styleRecord.parse(content); 73dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu _parseChildBoxes(content); 74dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 75dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 76dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 77dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu protected long getContentSize() { 78dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu long contentSize = 18; 79dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu contentSize += boxRecord.getSize(); 80dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu contentSize += styleRecord.getSize(); 81dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu for (Box boxe : boxes) { 82dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu contentSize += boxe.getSize(); 83dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 84dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return contentSize; 85dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 86dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 87dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public String toString() { 88dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return "TextSampleEntry"; 89dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 90dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 91dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 92dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu protected void getContent(ByteBuffer byteBuffer) { 93dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu _writeReservedAndDataReferenceIndex(byteBuffer); 94dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, displayFlags); 95dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(byteBuffer, horizontalJustification); 96dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(byteBuffer, verticalJustification); 97dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(byteBuffer, backgroundColorRgba[0]); 98dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(byteBuffer, backgroundColorRgba[1]); 99dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(byteBuffer, backgroundColorRgba[2]); 100dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(byteBuffer, backgroundColorRgba[3]); 101dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu boxRecord.getContent(byteBuffer); 102dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu styleRecord.getContent(byteBuffer); 103dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 104dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu _writeChildBoxes(byteBuffer); 105dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 106dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 107dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public BoxRecord getBoxRecord() { 108dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return boxRecord; 109dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 110dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 111dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setBoxRecord(BoxRecord boxRecord) { 112dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.boxRecord = boxRecord; 113dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 114dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 115dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public StyleRecord getStyleRecord() { 116dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return styleRecord; 117dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 118dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 119dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setStyleRecord(StyleRecord styleRecord) { 120dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.styleRecord = styleRecord; 121dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 122dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 123dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public boolean isScrollIn() { 124dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return (displayFlags & 0x00000020) == 0x00000020; 125dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 126dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 127dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setScrollIn(boolean scrollIn) { 128dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (scrollIn) { 129dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags |= 0x00000020; 130dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 131dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags &= ~0x00000020; 132dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 133dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 134dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 135dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public boolean isScrollOut() { 136dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return (displayFlags & 0x00000040) == 0x00000040; 137dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 138dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 139dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setScrollOut(boolean scrollOutIn) { 140dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (scrollOutIn) { 141dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags |= 0x00000040; 142dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 143dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags &= ~0x00000040; 144dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 145dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 146dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 147dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public boolean isScrollDirection() { 148dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return (displayFlags & 0x00000180) == 0x00000180; 149dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 150dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 151dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setScrollDirection(boolean scrollOutIn) { 152dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (scrollOutIn) { 153dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags |= 0x00000180; 154dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 155dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags &= ~0x00000180; 156dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 157dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 158dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 159dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public boolean isContinuousKaraoke() { 160dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return (displayFlags & 0x00000800) == 0x00000800; 161dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 162dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 163dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setContinuousKaraoke(boolean continuousKaraoke) { 164dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (continuousKaraoke) { 165dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags |= 0x00000800; 166dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 167dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags &= ~0x00000800; 168dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 169dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 170dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 171dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public boolean isWriteTextVertically() { 172dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return (displayFlags & 0x00020000) == 0x00020000; 173dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 174dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 175dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setWriteTextVertically(boolean writeTextVertically) { 176dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (writeTextVertically) { 177dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags |= 0x00020000; 178dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 179dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags &= ~0x00020000; 180dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 181dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 182dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 183dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 184dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public boolean isFillTextRegion() { 185dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return (displayFlags & 0x00040000) == 0x00040000; 186dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 187dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 188dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setFillTextRegion(boolean fillTextRegion) { 189dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (fillTextRegion) { 190dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags |= 0x00040000; 191dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 192dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu displayFlags &= ~0x00040000; 193dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 194dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 195dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 196dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 197dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getHorizontalJustification() { 198dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return horizontalJustification; 199dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 200dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 201dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setHorizontalJustification(int horizontalJustification) { 202dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.horizontalJustification = horizontalJustification; 203dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 204dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 205dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getVerticalJustification() { 206dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return verticalJustification; 207dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 208dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 209dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setVerticalJustification(int verticalJustification) { 210dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.verticalJustification = verticalJustification; 211dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 212dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 213dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int[] getBackgroundColorRgba() { 214dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return backgroundColorRgba; 215dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 216dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 217dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setBackgroundColorRgba(int[] backgroundColorRgba) { 218dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.backgroundColorRgba = backgroundColorRgba; 219dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 220dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 221dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static class BoxRecord { 222dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int top; 223dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int left; 224dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int bottom; 225dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int right; 226dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 227dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void parse(ByteBuffer in) { 228dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu top = IsoTypeReader.readUInt16(in); 229dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu left = IsoTypeReader.readUInt16(in); 230dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu bottom = IsoTypeReader.readUInt16(in); 231dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu right = IsoTypeReader.readUInt16(in); 232dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 233dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 234dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void getContent(ByteBuffer bb) { 235dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(bb, top); 236dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(bb, left); 237dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(bb, bottom); 238dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(bb, right); 239dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 240dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 241dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getSize() { 242dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return 8; 243dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 244dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 245dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 246dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu /* 247dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu class FontRecord { 248dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(16) font-ID; 249dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(8) font-name-length; 250dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(8) font[font-name-length]; 251dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu} 252dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 253dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 254dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 255dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu /* 256dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu aligned(8) class StyleRecord { 257dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(16) startChar; 258dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(16) endChar; 259dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(16) font-ID; 260dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(8) face-style-flags; 261dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(8) font-size; 262dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu unsigned int(8) text-color-rgba[4]; 263dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu} 264dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 265dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static class StyleRecord { 266dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int startChar; 267dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int endChar; 268dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int fontId; 269dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int faceStyleFlags; 270dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int fontSize; 271dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int[] textColor = new int[]{0xff, 0xff, 0xff, 0xff}; 272dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 273dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void parse(ByteBuffer in) { 274dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu startChar = IsoTypeReader.readUInt16(in); 275dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu endChar = IsoTypeReader.readUInt16(in); 276dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu fontId = IsoTypeReader.readUInt16(in); 277dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu faceStyleFlags = IsoTypeReader.readUInt8(in); 278dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu fontSize = IsoTypeReader.readUInt8(in); 279dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu textColor = new int[4]; 280dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu textColor[0] = IsoTypeReader.readUInt8(in); 281dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu textColor[1] = IsoTypeReader.readUInt8(in); 282dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu textColor[2] = IsoTypeReader.readUInt8(in); 283dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu textColor[3] = IsoTypeReader.readUInt8(in); 284dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 285dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 286dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 287dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void getContent(ByteBuffer bb) { 288dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(bb, startChar); 289dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(bb, endChar); 290dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(bb, fontId); 291dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(bb, faceStyleFlags); 292dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(bb, fontSize); 293dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(bb, textColor[0]); 294dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(bb, textColor[1]); 295dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(bb, textColor[2]); 296dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt8(bb, textColor[3]); 297dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 298dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 299dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getSize() { 300dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return 12; 301dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 302dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 303dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 304dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 305dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu} 306