Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1""":mod:`wand.cdefs.structures` --- MagickWand C-Structures 

2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

3 

4.. versionadded:: 0.5.0 

5""" 

6from ctypes import POINTER, Structure, c_double, c_int, c_size_t 

7from wand.cdefs.wandtypes import c_ssize_t, c_magick_real_t, c_magick_size_t 

8 

9__all__ = ('AffineMatrix', 'ChannelFeature', 'GeometryInfo', 'KernelInfo', 

10 'MagickPixelPacket', 'PixelInfo', 'PointInfo', 'RectangleInfo') 

11 

12 

13class AffineMatrix(Structure): 

14 

15 _fields_ = [('sx', c_double), 

16 ('rx', c_double), 

17 ('ry', c_double), 

18 ('sy', c_double), 

19 ('tx', c_double), 

20 ('ty', c_double)] 

21 

22 

23class ChannelFeature(Structure): 

24 """ 

25 /* 

26 Haralick texture features. 

27 */ 

28 typedef struct _ChannelFeatures 

29 { 

30 double 

31 angular_second_moment[4], 

32 contrast[4], 

33 correlation[4], 

34 variance_sum_of_squares[4], 

35 inverse_difference_moment[4], 

36 sum_average[4], 

37 sum_variance[4], 

38 sum_entropy[4], 

39 entropy[4], 

40 difference_variance[4], 

41 difference_entropy[4], 

42 measure_of_correlation_1[4], 

43 measure_of_correlation_2[4], 

44 maximum_correlation_coefficient[4]; 

45 } ChannelFeatures; 

46 """ 

47 _fields_ = [('angular_second_moment', c_double * 4), 

48 ('contrast', c_double * 4), 

49 ('correlation', c_double * 4), 

50 ('variance_sum_of_squares', c_double * 4), 

51 ('inverse_difference_moment', c_double * 4), 

52 ('sum_average', c_double * 4), 

53 ('sum_variance', c_double * 4), 

54 ('sum_entropy', c_double * 4), 

55 ('entropy', c_double * 4), 

56 ('difference_variance', c_double * 4), 

57 ('difference_entropy', c_double * 4), 

58 ('measure_of_correlation_1', c_double * 4), 

59 ('measure_of_correlation_2', c_double * 4), 

60 ('maximum_correlation_coefficient', c_double * 4)] 

61 

62 

63class GeometryInfo(Structure): 

64 

65 _fields_ = [('rho', c_double), 

66 ('sigma', c_double), 

67 ('xi', c_double), 

68 ('psi', c_double), 

69 ('chi', c_double)] 

70 

71 

72class KernelInfo(Structure): 

73 pass 

74 

75 

76KernelInfo._fields_ = [('type', c_int), 

77 ('width', c_size_t), 

78 ('height', c_size_t), 

79 ('x', c_ssize_t), 

80 ('y', c_ssize_t), 

81 ('values', POINTER(c_double)), 

82 ('minimum', c_double), 

83 ('maximum', c_double), 

84 ('negative_range', c_double), 

85 ('positive_range', c_double), 

86 ('angle', c_double), 

87 ('next', POINTER(KernelInfo)), 

88 ('signature', c_size_t)] 

89 

90 

91class MagickPixelPacket(Structure): 

92 

93 _fields_ = [('storage_class', c_int), 

94 ('colorspace', c_int), 

95 ('matte', c_int), 

96 ('fuzz', c_double), 

97 ('depth', c_size_t), 

98 ('red', c_magick_real_t), 

99 ('green', c_magick_real_t), 

100 ('blue', c_magick_real_t), 

101 ('opacity', c_magick_real_t), 

102 ('index', c_magick_real_t)] 

103 

104 

105class OffsetInfo(Structure): 

106 

107 _fields_ = [('x', c_double), 

108 ('y', c_double)] 

109 

110 

111class PixelInfo(Structure): 

112 

113 _fields_ = [('storage_class', c_int), 

114 ('colorspace', c_int), 

115 ('alpha_trait', c_int), 

116 ('fuzz', c_double), 

117 ('depth', c_size_t), 

118 ('count', c_magick_size_t), 

119 ('red', c_magick_real_t), 

120 ('green', c_magick_real_t), 

121 ('blue', c_magick_real_t), 

122 ('black', c_magick_real_t), 

123 ('alpha', c_magick_real_t), 

124 ('index', c_magick_real_t)] 

125 

126 

127class PointInfo(Structure): 

128 

129 _fields_ = [('x', c_double), 

130 ('y', c_double)] 

131 

132 

133class RectangleInfo(Structure): 

134 

135 _fields_ = [('width', c_size_t), 

136 ('height', c_size_t), 

137 ('x', c_ssize_t), 

138 ('y', c_ssize_t)] 

139 

140 

141class CCObjectInfo(Structure): 

142 _fields_ = [('_id', c_ssize_t), 

143 ('bounding_box', RectangleInfo), 

144 ('color', PixelInfo), 

145 ('centroid', PointInfo), 

146 ('area', c_double), 

147 ('census', c_double)] 

148 

149 

150# All this will change with IM7, so let's not implement this just yet. 

151# 

152# class ImageChannelStatistics(Structure): 

153# _fields_ = [('maximum', c_double), 

154# ('minimum', c_double), 

155# ('mean', c_double), 

156# ('standard_deviation', c_double), 

157# ('variance', c_double), 

158# ('kurtosis', c_double), 

159# ('skewness', c_double)] 

160# 

161# class ImageStatistics(Structure): 

162# _fields_ = [('red', ImageChannelStatistics), 

163# ('green', ImageChannelStatistics), 

164# ('blue', ImageChannelStatistics), 

165# ('opacity', ImageChannelStatistics)]