1/*
2 * Copyright 2009, Haiku Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _TRANSLATOR_FORMATS_H
6#define _TRANSLATOR_FORMATS_H
7
8
9#include <GraphicsDefs.h>
10#include <Rect.h>
11
12
13// Standard fields for the extension message
14extern char B_TRANSLATOR_EXT_HEADER_ONLY[];
15extern char B_TRANSLATOR_EXT_DATA_ONLY[];
16extern char B_TRANSLATOR_EXT_COMMENT[];
17extern char B_TRANSLATOR_EXT_TIME[];
18extern char B_TRANSLATOR_EXT_FRAME[];
19extern char B_TRANSLATOR_EXT_BITMAP_RECT[];
20extern char B_TRANSLATOR_EXT_BITMAP_COLOR_SPACE[];
21extern char B_TRANSLATOR_EXT_BITMAP_PALETTE[];
22extern char B_TRANSLATOR_EXT_SOUND_CHANNEL[];
23extern char B_TRANSLATOR_EXT_SOUND_MONO[];
24extern char B_TRANSLATOR_EXT_SOUND_MARKER[];
25extern char B_TRANSLATOR_EXT_SOUND_LOOP[];
26
27
28// Standard formats
29
30enum TranslatorGroups {
31	B_TRANSLATOR_BITMAP		= 'bits',
32	B_TRANSLATOR_PICTURE	= 'pict',
33	B_TRANSLATOR_SOUND		= 'nois',
34	B_TRANSLATOR_TEXT		= 'TEXT',
35	B_TRANSLATOR_MIDI		= 'midi',
36	B_TRANSLATOR_MEDIA		= 'mhi!',
37	B_TRANSLATOR_NONE		= 'none',
38	B_TRANSLATOR_ANY_TYPE	= 0
39};
40
41
42enum {
43	// Bitmap formats
44	B_GIF_FORMAT			= 'GIF ',
45	B_JPEG_FORMAT			= 'JPEG',
46	B_PNG_FORMAT			= 'PNG ',
47	B_PPM_FORMAT			= 'PPM ',
48	B_TGA_FORMAT			= 'TGA ',
49	B_BMP_FORMAT			= 'BMP ',
50	B_TIFF_FORMAT			= 'TIFF',
51	B_WEBP_FORMAT			= 'WebP',
52
53	// Picture formats
54	B_DXF_FORMAT			= 'DXF ',
55	B_EPS_FORMAT			= 'EPS ',
56	B_PICT_FORMAT			= 'PICT',
57
58	// Sound formats
59	B_WAV_FORMAT			= 'WAV ',
60	B_AIFF_FORMAT			= 'AIFF',
61	B_CD_FORMAT				= 'CD  ',
62	B_AU_FORMAT				= 'AU  ',
63
64	// Text formats
65	B_STYLED_TEXT_FORMAT	= 'STXT'
66};
67
68
69// Bitmap format (always in big endian)
70struct TranslatorBitmap {
71	uint32		magic;		// B_TRANSLATOR_BITMAP
72	BRect		bounds;
73	uint32		rowBytes;
74	color_space	colors;
75	uint32		dataSize;
76
77	// actual data follows
78};
79
80
81// Sound format (always in big endian)
82struct TranslatorSound {
83	uint32		magic;		// B_TRANSLATOR_SOUND
84	uint32		channels;
85	float		sampleFreq;
86	uint32		numFrames;
87
88	// actual data follows
89};
90
91
92// Text format (always in big endian)
93struct TranslatorStyledTextRecordHeader {
94	uint32		magic;
95	uint32		header_size;
96	uint32		data_size;
97};
98
99struct TranslatorStyledTextStreamHeader {
100	enum {
101		STREAM_HEADER_MAGIC = 'STXT'
102	};
103
104	TranslatorStyledTextRecordHeader header;
105	int32		version;
106};
107
108struct TranslatorStyledTextTextHeader {
109	enum {
110		TEXT_HEADER_MAGIC = 'TEXT'
111	};
112
113	TranslatorStyledTextRecordHeader header;
114	int32		charset;
115
116	// actual data follows
117};
118
119struct TranslatorStyledTextStyleHeader {
120	enum {
121		STYLE_HEADER_MAGIC = 'STYL'
122	};
123
124	TranslatorStyledTextRecordHeader header;
125	uint32		apply_offset;
126	uint32		apply_length;
127
128	// flattened style follows
129};
130
131
132#endif	// _TRANSLATOR_FORMATS_H
133