annotate dwt/internal/image/JPEGSegment.d @ 13:3d9bbe0a83a0

FileFormats
author Frank Benoit <benoit@tionex.de>
date Sun, 06 Jan 2008 22:54:14 +0100
parents
children 8cec8f536af3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2003 IBM Corporation and others.
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 *******************************************************************************/
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 module dwt.internal.image.JPEGSegment;
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 import dwt.internal.image.LEDataOutputStream;
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import tango.core.Exception;
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 class JPEGSegment {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 public byte[] reference;
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 this() {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 public this(byte[] reference) {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 this.reference = reference;
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 public int signature() {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 return 0;
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 public bool verify() {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 return getSegmentMarker() == signature();
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 public int getSegmentMarker() {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 return ((reference[0] & 0xFF) << 8 | (reference[1] & 0xFF));
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 public void setSegmentMarker(int marker) {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 reference[0] = cast(byte)((marker & 0xFF00) >> 8);
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 reference[1] = cast(byte)(marker & 0xFF);
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 public int getSegmentLength() {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 return ((reference[2] & 0xFF) << 8 | (reference[3] & 0xFF));
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 public void setSegmentLength(int length) {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 reference[2] = cast(byte)((length & 0xFF00) >> 8);
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 reference[3] = cast(byte)(length & 0xFF);
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 public bool writeToStream(LEDataOutputStream byteStream) {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 try {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 byteStream.write(reference);
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 return true;
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 } catch (TracedException e) {
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 return false;
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 }
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 }