1/*
2 * Copyright 2006-2007, Haiku. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Stephan A��mus <superstippi@gmx.de>
7 */
8#ifndef FLAT_ICON_FORMAT_H
9#define FLAT_ICON_FORMAT_H
10
11
12#include <SupportDefs.h>
13
14#include "IconBuild.h"
15
16
17_BEGIN_ICON_NAMESPACE
18
19
20extern const uint32 FLAT_ICON_MAGIC;
21
22extern const char* kVectorAttrNodeName;
23extern const char* kVectorAttrMimeName;
24
25enum {
26	STYLE_TYPE_SOLID_COLOR			= 1,
27	STYLE_TYPE_GRADIENT				= 2,
28	STYLE_TYPE_SOLID_COLOR_NO_ALPHA	= 3,
29	STYLE_TYPE_SOLID_GRAY			= 4,
30	STYLE_TYPE_SOLID_GRAY_NO_ALPHA	= 5,
31
32	SHAPE_TYPE_PATH_SOURCE			= 10,
33
34	TRANSFORMER_TYPE_AFFINE			= 20,
35	TRANSFORMER_TYPE_CONTOUR		= 21,
36	TRANSFORMER_TYPE_PERSPECTIVE	= 22,
37	TRANSFORMER_TYPE_STROKE			= 23,
38};
39
40enum {
41	GRADIENT_FLAG_TRANSFORM			= 1 << 1,
42	GRADIENT_FLAG_NO_ALPHA			= 1 << 2,
43	GRADIENT_FLAG_16_BIT_COLORS		= 1 << 3, // not yet used
44	GRADIENT_FLAG_GRAYS				= 1 << 4,
45};
46
47enum {
48	PATH_FLAG_CLOSED				= 1 << 1,
49	PATH_FLAG_USES_COMMANDS			= 1 << 2,
50	PATH_FLAG_NO_CURVES				= 1 << 3,
51};
52
53enum {
54	PATH_COMMAND_H_LINE				= 0,
55	PATH_COMMAND_V_LINE				= 1,
56	PATH_COMMAND_LINE				= 2,
57	PATH_COMMAND_CURVE				= 3,
58};
59
60enum {
61	SHAPE_FLAG_TRANSFORM			= 1 << 1,
62	SHAPE_FLAG_HINTING				= 1 << 2,
63	SHAPE_FLAG_LOD_SCALE			= 1 << 3,
64	SHAPE_FLAG_HAS_TRANSFORMERS		= 1 << 4,
65	SHAPE_FLAG_TRANSLATION			= 1 << 5,
66};
67
68// utility functions
69
70class LittleEndianBuffer;
71
72bool read_coord(LittleEndianBuffer& buffer, float& coord);
73bool write_coord(LittleEndianBuffer& buffer, float coord);
74
75bool read_float_24(LittleEndianBuffer& buffer, float& value);
76bool write_float_24(LittleEndianBuffer& buffer, float value);
77
78
79_END_ICON_NAMESPACE
80
81
82#endif	// FLAT_ICON_FORMAT_H
83