summaryrefslogtreecommitdiff
path: root/isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/.svn/text-base/TextSampleEntry.java.svn-base
diff options
context:
space:
mode:
Diffstat (limited to 'isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/.svn/text-base/TextSampleEntry.java.svn-base')
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/.svn/text-base/TextSampleEntry.java.svn-base305
1 files changed, 305 insertions, 0 deletions
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/.svn/text-base/TextSampleEntry.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/.svn/text-base/TextSampleEntry.java.svn-base
new file mode 100644
index 0000000..3a0b83a
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/.svn/text-base/TextSampleEntry.java.svn-base
@@ -0,0 +1,305 @@
+/*
+ * Copyright 2008 CoreMedia AG, Hamburg
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.coremedia.iso.boxes.sampleentry;
+
+import com.coremedia.iso.IsoTypeReader;
+import com.coremedia.iso.IsoTypeWriter;
+import com.coremedia.iso.boxes.Box;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * Entry type for timed text samples defined in the timed text specification (ISO/IEC 14496-17).
+ */
+public class TextSampleEntry extends SampleEntry {
+
+ public static final String TYPE1 = "tx3g";
+
+ public static final String TYPE_ENCRYPTED = "enct";
+
+/* class TextSampleEntry() extends SampleEntry ('tx3g') {
+ unsigned int(32) displayFlags;
+ signed int(8) horizontal-justification;
+ signed int(8) vertical-justification;
+ unsigned int(8) background-color-rgba[4];
+ BoxRecord default-text-box;
+ StyleRecord default-style;
+ FontTableBox font-table;
+ }
+ */
+
+ private long displayFlags; // 32 bits
+ private int horizontalJustification; // 8 bit
+ private int verticalJustification; // 8 bit
+ private int[] backgroundColorRgba = new int[4]; // 4 bytes
+ private BoxRecord boxRecord = new BoxRecord();
+ private StyleRecord styleRecord = new StyleRecord();
+
+ public TextSampleEntry(String type) {
+ super(type);
+ }
+
+ @Override
+ public void _parseDetails(ByteBuffer content) {
+ _parseReservedAndDataReferenceIndex(content);
+ displayFlags = IsoTypeReader.readUInt32(content);
+ horizontalJustification = IsoTypeReader.readUInt8(content);
+ verticalJustification = IsoTypeReader.readUInt8(content);
+ backgroundColorRgba = new int[4];
+ backgroundColorRgba[0] = IsoTypeReader.readUInt8(content);
+ backgroundColorRgba[1] = IsoTypeReader.readUInt8(content);
+ backgroundColorRgba[2] = IsoTypeReader.readUInt8(content);
+ backgroundColorRgba[3] = IsoTypeReader.readUInt8(content);
+ boxRecord = new BoxRecord();
+ boxRecord.parse(content);
+
+ styleRecord = new StyleRecord();
+ styleRecord.parse(content);
+ _parseChildBoxes(content);
+ }
+
+
+ protected long getContentSize() {
+ long contentSize = 18;
+ contentSize += boxRecord.getSize();
+ contentSize += styleRecord.getSize();
+ for (Box boxe : boxes) {
+ contentSize += boxe.getSize();
+ }
+ return contentSize;
+ }
+
+ public String toString() {
+ return "TextSampleEntry";
+ }
+
+ @Override
+ protected void getContent(ByteBuffer byteBuffer) {
+ _writeReservedAndDataReferenceIndex(byteBuffer);
+ IsoTypeWriter.writeUInt32(byteBuffer, displayFlags);
+ IsoTypeWriter.writeUInt8(byteBuffer, horizontalJustification);
+ IsoTypeWriter.writeUInt8(byteBuffer, verticalJustification);
+ IsoTypeWriter.writeUInt8(byteBuffer, backgroundColorRgba[0]);
+ IsoTypeWriter.writeUInt8(byteBuffer, backgroundColorRgba[1]);
+ IsoTypeWriter.writeUInt8(byteBuffer, backgroundColorRgba[2]);
+ IsoTypeWriter.writeUInt8(byteBuffer, backgroundColorRgba[3]);
+ boxRecord.getContent(byteBuffer);
+ styleRecord.getContent(byteBuffer);
+
+ _writeChildBoxes(byteBuffer);
+ }
+
+ public BoxRecord getBoxRecord() {
+ return boxRecord;
+ }
+
+ public void setBoxRecord(BoxRecord boxRecord) {
+ this.boxRecord = boxRecord;
+ }
+
+ public StyleRecord getStyleRecord() {
+ return styleRecord;
+ }
+
+ public void setStyleRecord(StyleRecord styleRecord) {
+ this.styleRecord = styleRecord;
+ }
+
+ public boolean isScrollIn() {
+ return (displayFlags & 0x00000020) == 0x00000020;
+ }
+
+ public void setScrollIn(boolean scrollIn) {
+ if (scrollIn) {
+ displayFlags |= 0x00000020;
+ } else {
+ displayFlags &= ~0x00000020;
+ }
+ }
+
+ public boolean isScrollOut() {
+ return (displayFlags & 0x00000040) == 0x00000040;
+ }
+
+ public void setScrollOut(boolean scrollOutIn) {
+ if (scrollOutIn) {
+ displayFlags |= 0x00000040;
+ } else {
+ displayFlags &= ~0x00000040;
+ }
+ }
+
+ public boolean isScrollDirection() {
+ return (displayFlags & 0x00000180) == 0x00000180;
+ }
+
+ public void setScrollDirection(boolean scrollOutIn) {
+ if (scrollOutIn) {
+ displayFlags |= 0x00000180;
+ } else {
+ displayFlags &= ~0x00000180;
+ }
+ }
+
+ public boolean isContinuousKaraoke() {
+ return (displayFlags & 0x00000800) == 0x00000800;
+ }
+
+ public void setContinuousKaraoke(boolean continuousKaraoke) {
+ if (continuousKaraoke) {
+ displayFlags |= 0x00000800;
+ } else {
+ displayFlags &= ~0x00000800;
+ }
+ }
+
+ public boolean isWriteTextVertically() {
+ return (displayFlags & 0x00020000) == 0x00020000;
+ }
+
+ public void setWriteTextVertically(boolean writeTextVertically) {
+ if (writeTextVertically) {
+ displayFlags |= 0x00020000;
+ } else {
+ displayFlags &= ~0x00020000;
+ }
+ }
+
+
+ public boolean isFillTextRegion() {
+ return (displayFlags & 0x00040000) == 0x00040000;
+ }
+
+ public void setFillTextRegion(boolean fillTextRegion) {
+ if (fillTextRegion) {
+ displayFlags |= 0x00040000;
+ } else {
+ displayFlags &= ~0x00040000;
+ }
+ }
+
+
+ public int getHorizontalJustification() {
+ return horizontalJustification;
+ }
+
+ public void setHorizontalJustification(int horizontalJustification) {
+ this.horizontalJustification = horizontalJustification;
+ }
+
+ public int getVerticalJustification() {
+ return verticalJustification;
+ }
+
+ public void setVerticalJustification(int verticalJustification) {
+ this.verticalJustification = verticalJustification;
+ }
+
+ public int[] getBackgroundColorRgba() {
+ return backgroundColorRgba;
+ }
+
+ public void setBackgroundColorRgba(int[] backgroundColorRgba) {
+ this.backgroundColorRgba = backgroundColorRgba;
+ }
+
+ public static class BoxRecord {
+ int top;
+ int left;
+ int bottom;
+ int right;
+
+ public void parse(ByteBuffer in) {
+ top = IsoTypeReader.readUInt16(in);
+ left = IsoTypeReader.readUInt16(in);
+ bottom = IsoTypeReader.readUInt16(in);
+ right = IsoTypeReader.readUInt16(in);
+ }
+
+ public void getContent(ByteBuffer bb) {
+ IsoTypeWriter.writeUInt16(bb, top);
+ IsoTypeWriter.writeUInt16(bb, left);
+ IsoTypeWriter.writeUInt16(bb, bottom);
+ IsoTypeWriter.writeUInt16(bb, right);
+ }
+
+ public int getSize() {
+ return 8;
+ }
+ }
+
+ /*
+ class FontRecord {
+ unsigned int(16) font-ID;
+ unsigned int(8) font-name-length;
+ unsigned int(8) font[font-name-length];
+}
+ */
+
+
+ /*
+ aligned(8) class StyleRecord {
+ unsigned int(16) startChar;
+ unsigned int(16) endChar;
+ unsigned int(16) font-ID;
+ unsigned int(8) face-style-flags;
+ unsigned int(8) font-size;
+ unsigned int(8) text-color-rgba[4];
+}
+ */
+ public static class StyleRecord {
+ int startChar;
+ int endChar;
+ int fontId;
+ int faceStyleFlags;
+ int fontSize;
+ int[] textColor = new int[]{0xff, 0xff, 0xff, 0xff};
+
+ public void parse(ByteBuffer in) {
+ startChar = IsoTypeReader.readUInt16(in);
+ endChar = IsoTypeReader.readUInt16(in);
+ fontId = IsoTypeReader.readUInt16(in);
+ faceStyleFlags = IsoTypeReader.readUInt8(in);
+ fontSize = IsoTypeReader.readUInt8(in);
+ textColor = new int[4];
+ textColor[0] = IsoTypeReader.readUInt8(in);
+ textColor[1] = IsoTypeReader.readUInt8(in);
+ textColor[2] = IsoTypeReader.readUInt8(in);
+ textColor[3] = IsoTypeReader.readUInt8(in);
+ }
+
+
+ public void getContent(ByteBuffer bb) {
+ IsoTypeWriter.writeUInt16(bb, startChar);
+ IsoTypeWriter.writeUInt16(bb, endChar);
+ IsoTypeWriter.writeUInt16(bb, fontId);
+ IsoTypeWriter.writeUInt8(bb, faceStyleFlags);
+ IsoTypeWriter.writeUInt8(bb, fontSize);
+ IsoTypeWriter.writeUInt8(bb, textColor[0]);
+ IsoTypeWriter.writeUInt8(bb, textColor[1]);
+ IsoTypeWriter.writeUInt8(bb, textColor[2]);
+ IsoTypeWriter.writeUInt8(bb, textColor[3]);
+ }
+
+ public int getSize() {
+ return 12;
+ }
+ }
+
+
+}