1mlib_ImageDataTypeConvert(3mMeLdIiBa)Lib Library Funcmtliiobn_sImageDataTypeConvert(3MLIB)
2
3
4
6 mlib_ImageDataTypeConvert - data type conversion
7
9 cc [ flag... ] file... -lmlib [ library... ]
10 #include <mlib.h>
11
12 mlib_status mlib_ImageDataTypeConvert(mlib_image *dst, const mlib_image *src);
13
14
16 The mlib_ImageDataTypeConvert() function converts between data types
17 MLIB_BIT, MLIB_BYTE, MLIB_SHORT, MLIB_USHORT, MLIB_INT, MLIB_FLOAT, and
18 MLIB_DOUBLE.
19
20
21 The input and output data images must have the same width, height, and
22 number of channels. Conversion to a smaller pixel format clamps the
23 source value to the dynamic range of the destination pixel.
24
25
26 See the following table for available variations of the data type con‐
27 version function.
28
29
30
31
32 Source Type Dest. Type Action
33 ────────────────────────────────────────────────────────────────────────────────────
34 MLIB_BYTE MLIB_BIT (x > 0) ? 1 : 0
35 MLIB_SHORT MLIB_BIT (x > 0) ? 1 : 0
36 ────────────────────────────────────────────────────────────────────────────────────
37 MLIB_USHORT MLIB_BIT (x > 0) ? 1 : 0
38 ────────────────────────────────────────────────────────────────────────────────────
39 MLIB_INT MLIB_BIT (x > 0) ? 1 : 0
40 ────────────────────────────────────────────────────────────────────────────────────
41 MLIB_FLOAT MLIB_BIT (x > 0) ? 1 : 0
42 ────────────────────────────────────────────────────────────────────────────────────
43 MLIB_DOUBLE MLIB_BIT (x > 0) ? 1 : 0
44 ────────────────────────────────────────────────────────────────────────────────────
45 MLIB_BIT MLIB_BYTE (x == 1) ? 1 : 0
46 ────────────────────────────────────────────────────────────────────────────────────
47 MLIB_SHORT MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
48 ────────────────────────────────────────────────────────────────────────────────────
49 MLIB_USHORT MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
50 ────────────────────────────────────────────────────────────────────────────────────
51 MLIB_INT MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
52 ────────────────────────────────────────────────────────────────────────────────────
53 MLIB_FLOAT MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
54 ────────────────────────────────────────────────────────────────────────────────────
55 MLIB_DOUBLE MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
56 ────────────────────────────────────────────────────────────────────────────────────
57 MLIB_BIT MLIB_SHORT (x == 1) ? 1 : 0
58 ────────────────────────────────────────────────────────────────────────────────────
59 MLIB_BYTE MLIB_SHORT (mlib_s16)x
60 ────────────────────────────────────────────────────────────────────────────────────
61 MLIB_USHORT MLIB_SHORT (mlib_s16)clamp(x, -32768, 32767)
62 ────────────────────────────────────────────────────────────────────────────────────
63 MLIB_INT MLIB_SHORT (mlib_s16)clamp(x, -32768, 32767)
64 ────────────────────────────────────────────────────────────────────────────────────
65
66
67 MLIB_FLOAT MLIB_SHORT (mlib_s16)clamp(x, -32768, 32767)
68 ────────────────────────────────────────────────────────────────────────────────────
69 MLIB_DOUBLE MLIB_SHORT (mlib_s16)clamp(x, -32768, 32767)
70 ────────────────────────────────────────────────────────────────────────────────────
71 MLIB_BIT MLIB_USHORT (x == 1) ? 1 : 0
72 ────────────────────────────────────────────────────────────────────────────────────
73 MLIB_BYTE MLIB_USHORT (mlib_u16)x
74 ────────────────────────────────────────────────────────────────────────────────────
75 MLIB_SHORT MLIB_USHORT (mlib_u16)clamp(x, 0, 65535)
76 ────────────────────────────────────────────────────────────────────────────────────
77 MLIB_INT MLIB_USHORT (mlib_u16)clamp(x, 0, 65535)
78 ────────────────────────────────────────────────────────────────────────────────────
79 MLIB_FLOAT MLIB_USHORT (mlib_u16)clamp(x, 0, 65535)
80 ────────────────────────────────────────────────────────────────────────────────────
81 MLIB_DOUBLE MLIB_USHORT (mlib_u16)clamp(x, 0, 65535)
82 ────────────────────────────────────────────────────────────────────────────────────
83 MLIB_BIT MLIB_INT (x == 1) ? 1 : 0
84 ────────────────────────────────────────────────────────────────────────────────────
85 MLIB_BYTE MLIB_INT (mlib_s32)x
86 ────────────────────────────────────────────────────────────────────────────────────
87 MLIB_SHORT MLIB_INT (mlib_s32)x
88 ────────────────────────────────────────────────────────────────────────────────────
89 MLIB_USHORT MLIB_INT (mlib_s32)x
90 ────────────────────────────────────────────────────────────────────────────────────
91 MLIB_FLOAT MLIB_INT (mlib_s32)clamp(x, -2147483647-1, 2147483647)
92 ────────────────────────────────────────────────────────────────────────────────────
93 MLIB_DOUBLE MLIB_INT (mlib_s32)clamp(x, -2147483647-1, 2147483647)
94 ────────────────────────────────────────────────────────────────────────────────────
95 MLIB_BIT MLIB_FLOAT (x == 1) ? 1.0 : 0.0
96 ────────────────────────────────────────────────────────────────────────────────────
97 MLIB_BYTE MLIB_FLOAT (mlib_f32)x
98 ────────────────────────────────────────────────────────────────────────────────────
99 MLIB_SHORT MLIB_FLOAT (mlib_f32)x
100 ────────────────────────────────────────────────────────────────────────────────────
101 MLIB_USHORT MLIB_FLOAT (mlib_f32)x
102 ────────────────────────────────────────────────────────────────────────────────────
103 MLIB_INT MLIB_FLOAT (mlib_f32)x
104 ────────────────────────────────────────────────────────────────────────────────────
105 MLIB_DOUBLE MLIB_FLOAT (mlib_f32)x
106 ────────────────────────────────────────────────────────────────────────────────────
107 MLIB_BIT MLIB_DOUBLE (x == 1) ? 1.0 : 0.0
108 ────────────────────────────────────────────────────────────────────────────────────
109 MLIB_BYTE MLIB_DOUBLE (mlib_d64)x
110 ────────────────────────────────────────────────────────────────────────────────────
111 MLIB_SHORT MLIB_DOUBLE (mlib_d64)x
112 ────────────────────────────────────────────────────────────────────────────────────
113 MLIB_USHORT MLIB_DOUBLE (mlib_d64)x
114 ────────────────────────────────────────────────────────────────────────────────────
115 MLIB_INT MLIB_DOUBLE (mlib_d64)x
116 ────────────────────────────────────────────────────────────────────────────────────
117 MLIB_FLOAT MLIB_DOUBLE (mlib_d64)x
118
119
120
121 The actions are defined in C-style pseudo-code. All type casts follow
122 the rules of standard C. clamp() can be defined as a macro: #define
123 clamp(x, low, high) (((x) < (low)) ? (low) : (((x) > (high)) ? (high) :
124 (x)))
125
127 The function takes the following arguments:
128
129 dst Pointer to destination image.
130
131
132 src Pointer to source image.
133
134
136 The function returns MLIB_SUCCESS if successful. Otherwise it returns
137 MLIB_FAILURE.
138
140 See attributes(5) for descriptions of the following attributes:
141
142
143
144
145 ┌─────────────────────────────┬─────────────────────────────┐
146 │ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
147 ├─────────────────────────────┼─────────────────────────────┤
148 │Interface Stability │Committed │
149 ├─────────────────────────────┼─────────────────────────────┤
150 │MT-Level │MT-Safe │
151 └─────────────────────────────┴─────────────────────────────┘
152
154 mlib_ImageReformat(3MLIB), attributes(5)
155
156
157
158SunOS 5.11 2 Mar 2007 mlib_ImageDataTypeConvert(3MLIB)