1mlib_ImageDataTypeConvert(3mMeLdIiBa)Lib Library Funcmtliiobn_sImageDataTypeConvert(3MLIB)
2
3
4

NAME

6       mlib_ImageDataTypeConvert - data type conversion
7

SYNOPSIS

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

DESCRIPTION

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

PARAMETERS

127       The function takes the following arguments:
128
129       dst    Pointer to destination image.
130
131
132       src    Pointer to source image.
133
134

RETURN VALUES

136       The  function  returns MLIB_SUCCESS if successful. Otherwise it returns
137       MLIB_FAILURE.
138

ATTRIBUTES

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

SEE ALSO

154       mlib_ImageReformat(3MLIB), attributes(5)
155
156
157
158SunOS 5.11                        2 Mar 2007  mlib_ImageDataTypeConvert(3MLIB)
Impressum