/src/imagemagick/MagickCore/composite-private.h
Line | Count | Source |
1 | | /* |
2 | | Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization |
3 | | dedicated to making software imaging solutions freely available. |
4 | | |
5 | | You may not use this file except in compliance with the License. You may |
6 | | obtain a copy of the License at |
7 | | |
8 | | https://imagemagick.org/license/ |
9 | | |
10 | | Unless required by applicable law or agreed to in writing, software |
11 | | distributed under the License is distributed on an "AS IS" BASIS, |
12 | | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13 | | See the License for the specific language governing permissions and |
14 | | limitations under the License. |
15 | | |
16 | | MagickCore image composite private methods. |
17 | | */ |
18 | | #ifndef MAGICKCORE_COMPOSITE_PRIVATE_H |
19 | | #define MAGICKCORE_COMPOSITE_PRIVATE_H |
20 | | |
21 | | |
22 | | #include "MagickCore/color.h" |
23 | | #include "MagickCore/image.h" |
24 | | #include "MagickCore/artifact.h" |
25 | | #include "MagickCore/image-private.h" |
26 | | #include "MagickCore/pixel-accessor.h" |
27 | | |
28 | | #if defined(__cplusplus) || defined(c_plusplus) |
29 | | extern "C" { |
30 | | #endif |
31 | | |
32 | | /* |
33 | | ImageMagick Alpha Composite Inline Methods (special export) |
34 | | */ |
35 | | static inline double MagickOver_(const double p,const double alpha, |
36 | | const double q,const double beta) |
37 | 391M | { |
38 | 391M | double |
39 | 391M | Da, |
40 | 391M | Sa; |
41 | | |
42 | 391M | Sa=QuantumScale*alpha; |
43 | 391M | Da=QuantumScale*beta; |
44 | 391M | return(Sa*p+Da*q*(1.0-Sa)); |
45 | 391M | } Line | Count | Source | 37 | 26.9M | { | 38 | 26.9M | double | 39 | 26.9M | Da, | 40 | 26.9M | Sa; | 41 | | | 42 | 26.9M | Sa=QuantumScale*alpha; | 43 | 26.9M | Da=QuantumScale*beta; | 44 | 26.9M | return(Sa*p+Da*q*(1.0-Sa)); | 45 | 26.9M | } |
Unexecuted instantiation: attribute.c:MagickOver_ Line | Count | Source | 37 | 90.7M | { | 38 | 90.7M | double | 39 | 90.7M | Da, | 40 | 90.7M | Sa; | 41 | | | 42 | 90.7M | Sa=QuantumScale*alpha; | 43 | 90.7M | Da=QuantumScale*beta; | 44 | 90.7M | return(Sa*p+Da*q*(1.0-Sa)); | 45 | 90.7M | } |
Unexecuted instantiation: channel.c:MagickOver_ Unexecuted instantiation: compare.c:MagickOver_ Unexecuted instantiation: composite.c:MagickOver_ Unexecuted instantiation: distort.c:MagickOver_ Line | Count | Source | 37 | 273M | { | 38 | 273M | double | 39 | 273M | Da, | 40 | 273M | Sa; | 41 | | | 42 | 273M | Sa=QuantumScale*alpha; | 43 | 273M | Da=QuantumScale*beta; | 44 | 273M | return(Sa*p+Da*q*(1.0-Sa)); | 45 | 273M | } |
Unexecuted instantiation: enhance.c:MagickOver_ Unexecuted instantiation: feature.c:MagickOver_ Unexecuted instantiation: image.c:MagickOver_ Unexecuted instantiation: paint.c:MagickOver_ Unexecuted instantiation: shear.c:MagickOver_ Unexecuted instantiation: statistic.c:MagickOver_ Unexecuted instantiation: stream.c:MagickOver_ Unexecuted instantiation: transform.c:MagickOver_ Unexecuted instantiation: caption.c:MagickOver_ Unexecuted instantiation: pango.c:MagickOver_ Unexecuted instantiation: svg.c:MagickOver_ |
46 | | |
47 | | static inline double RoundToUnity(const double value) |
48 | 186M | { |
49 | 186M | return(value < 0.0 ? 0.0 : (value > 1.0) ? 1.0 : value); |
50 | 186M | } Line | Count | Source | 48 | 8.97M | { | 49 | 8.97M | return(value < 0.0 ? 0.0 : (value > 1.0) ? 1.0 : value); | 50 | 8.97M | } |
Unexecuted instantiation: attribute.c:RoundToUnity Unexecuted instantiation: cache.c:RoundToUnity Unexecuted instantiation: channel.c:RoundToUnity Unexecuted instantiation: compare.c:RoundToUnity Line | Count | Source | 48 | 6.07k | { | 49 | 6.07k | return(value < 0.0 ? 0.0 : (value > 1.0) ? 1.0 : value); | 50 | 6.07k | } |
Unexecuted instantiation: distort.c:RoundToUnity Line | Count | Source | 48 | 177M | { | 49 | 177M | return(value < 0.0 ? 0.0 : (value > 1.0) ? 1.0 : value); | 50 | 177M | } |
Unexecuted instantiation: enhance.c:RoundToUnity Unexecuted instantiation: feature.c:RoundToUnity Unexecuted instantiation: image.c:RoundToUnity Unexecuted instantiation: paint.c:RoundToUnity Unexecuted instantiation: shear.c:RoundToUnity Unexecuted instantiation: statistic.c:RoundToUnity Unexecuted instantiation: stream.c:RoundToUnity Unexecuted instantiation: transform.c:RoundToUnity Unexecuted instantiation: caption.c:RoundToUnity Unexecuted instantiation: pango.c:RoundToUnity Unexecuted instantiation: svg.c:RoundToUnity |
51 | | |
52 | | static inline void CompositePixelOver(const Image *image,const PixelInfo *p, |
53 | | const double alpha,const Quantum *q,const double beta,Quantum *composite) |
54 | 49.6M | { |
55 | 49.6M | double |
56 | 49.6M | Da, |
57 | 49.6M | gamma, |
58 | 49.6M | Sa; |
59 | | |
60 | 49.6M | ssize_t |
61 | 49.6M | i; |
62 | | |
63 | | /* |
64 | | Compose pixel p over pixel q with the given alpha. |
65 | | */ |
66 | 49.6M | Sa=QuantumScale*alpha; |
67 | 49.6M | Da=QuantumScale*beta; |
68 | 49.6M | gamma=Sa+Da-Sa*Da; |
69 | 49.6M | gamma=MagickSafeReciprocal(gamma); |
70 | 249M | for (i=0; i < (ssize_t) GetPixelChannels(image); i++) |
71 | 199M | { |
72 | 199M | PixelChannel |
73 | 199M | channel; |
74 | | |
75 | 199M | PixelTrait |
76 | 199M | traits; |
77 | | |
78 | 199M | channel=GetPixelChannelChannel(image,i); |
79 | 199M | traits=GetPixelChannelTraits(image,channel); |
80 | 199M | if (traits == UndefinedPixelTrait) |
81 | 0 | continue; |
82 | 199M | switch (channel) |
83 | 199M | { |
84 | 49.6M | case RedPixelChannel: |
85 | 49.6M | { |
86 | 49.6M | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->red,alpha, |
87 | 49.6M | (double) q[i],beta)); |
88 | 49.6M | break; |
89 | 0 | } |
90 | 49.6M | case GreenPixelChannel: |
91 | 49.6M | { |
92 | 49.6M | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->green,alpha, |
93 | 49.6M | (double) q[i],beta)); |
94 | 49.6M | break; |
95 | 0 | } |
96 | 49.6M | case BluePixelChannel: |
97 | 49.6M | { |
98 | 49.6M | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->blue,alpha, |
99 | 49.6M | (double) q[i],beta)); |
100 | 49.6M | break; |
101 | 0 | } |
102 | 0 | case BlackPixelChannel: |
103 | 0 | { |
104 | 0 | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->black,alpha, |
105 | 0 | (double) q[i],beta)); |
106 | 0 | break; |
107 | 0 | } |
108 | 49.6M | case AlphaPixelChannel: |
109 | 49.6M | { |
110 | 49.6M | composite[i]=ClampToQuantum((double) QuantumRange* |
111 | 49.6M | RoundToUnity(Sa+Da-Sa*Da)); |
112 | 49.6M | break; |
113 | 0 | } |
114 | 1.08M | default: |
115 | 1.08M | { |
116 | 1.08M | composite[i]=q[i]; |
117 | 1.08M | break; |
118 | 0 | } |
119 | 199M | } |
120 | 199M | } |
121 | 49.6M | } annotate.c:CompositePixelOver Line | Count | Source | 54 | 8.97M | { | 55 | 8.97M | double | 56 | 8.97M | Da, | 57 | 8.97M | gamma, | 58 | 8.97M | Sa; | 59 | | | 60 | 8.97M | ssize_t | 61 | 8.97M | i; | 62 | | | 63 | | /* | 64 | | Compose pixel p over pixel q with the given alpha. | 65 | | */ | 66 | 8.97M | Sa=QuantumScale*alpha; | 67 | 8.97M | Da=QuantumScale*beta; | 68 | 8.97M | gamma=Sa+Da-Sa*Da; | 69 | 8.97M | gamma=MagickSafeReciprocal(gamma); | 70 | 44.8M | for (i=0; i < (ssize_t) GetPixelChannels(image); i++) | 71 | 35.8M | { | 72 | 35.8M | PixelChannel | 73 | 35.8M | channel; | 74 | | | 75 | 35.8M | PixelTrait | 76 | 35.8M | traits; | 77 | | | 78 | 35.8M | channel=GetPixelChannelChannel(image,i); | 79 | 35.8M | traits=GetPixelChannelTraits(image,channel); | 80 | 35.8M | if (traits == UndefinedPixelTrait) | 81 | 0 | continue; | 82 | 35.8M | switch (channel) | 83 | 35.8M | { | 84 | 8.97M | case RedPixelChannel: | 85 | 8.97M | { | 86 | 8.97M | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->red,alpha, | 87 | 8.97M | (double) q[i],beta)); | 88 | 8.97M | break; | 89 | 0 | } | 90 | 8.97M | case GreenPixelChannel: | 91 | 8.97M | { | 92 | 8.97M | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->green,alpha, | 93 | 8.97M | (double) q[i],beta)); | 94 | 8.97M | break; | 95 | 0 | } | 96 | 8.97M | case BluePixelChannel: | 97 | 8.97M | { | 98 | 8.97M | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->blue,alpha, | 99 | 8.97M | (double) q[i],beta)); | 100 | 8.97M | break; | 101 | 0 | } | 102 | 0 | case BlackPixelChannel: | 103 | 0 | { | 104 | 0 | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->black,alpha, | 105 | 0 | (double) q[i],beta)); | 106 | 0 | break; | 107 | 0 | } | 108 | 8.97M | case AlphaPixelChannel: | 109 | 8.97M | { | 110 | 8.97M | composite[i]=ClampToQuantum((double) QuantumRange* | 111 | 8.97M | RoundToUnity(Sa+Da-Sa*Da)); | 112 | 8.97M | break; | 113 | 0 | } | 114 | 0 | default: | 115 | 0 | { | 116 | 0 | composite[i]=q[i]; | 117 | 0 | break; | 118 | 0 | } | 119 | 35.8M | } | 120 | 35.8M | } | 121 | 8.97M | } |
Unexecuted instantiation: attribute.c:CompositePixelOver Unexecuted instantiation: cache.c:CompositePixelOver Unexecuted instantiation: channel.c:CompositePixelOver Unexecuted instantiation: compare.c:CompositePixelOver Unexecuted instantiation: composite.c:CompositePixelOver Unexecuted instantiation: distort.c:CompositePixelOver draw.c:CompositePixelOver Line | Count | Source | 54 | 40.7M | { | 55 | 40.7M | double | 56 | 40.7M | Da, | 57 | 40.7M | gamma, | 58 | 40.7M | Sa; | 59 | | | 60 | 40.7M | ssize_t | 61 | 40.7M | i; | 62 | | | 63 | | /* | 64 | | Compose pixel p over pixel q with the given alpha. | 65 | | */ | 66 | 40.7M | Sa=QuantumScale*alpha; | 67 | 40.7M | Da=QuantumScale*beta; | 68 | 40.7M | gamma=Sa+Da-Sa*Da; | 69 | 40.7M | gamma=MagickSafeReciprocal(gamma); | 70 | 204M | for (i=0; i < (ssize_t) GetPixelChannels(image); i++) | 71 | 163M | { | 72 | 163M | PixelChannel | 73 | 163M | channel; | 74 | | | 75 | 163M | PixelTrait | 76 | 163M | traits; | 77 | | | 78 | 163M | channel=GetPixelChannelChannel(image,i); | 79 | 163M | traits=GetPixelChannelTraits(image,channel); | 80 | 163M | if (traits == UndefinedPixelTrait) | 81 | 0 | continue; | 82 | 163M | switch (channel) | 83 | 163M | { | 84 | 40.7M | case RedPixelChannel: | 85 | 40.7M | { | 86 | 40.7M | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->red,alpha, | 87 | 40.7M | (double) q[i],beta)); | 88 | 40.7M | break; | 89 | 0 | } | 90 | 40.7M | case GreenPixelChannel: | 91 | 40.7M | { | 92 | 40.7M | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->green,alpha, | 93 | 40.7M | (double) q[i],beta)); | 94 | 40.7M | break; | 95 | 0 | } | 96 | 40.7M | case BluePixelChannel: | 97 | 40.7M | { | 98 | 40.7M | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->blue,alpha, | 99 | 40.7M | (double) q[i],beta)); | 100 | 40.7M | break; | 101 | 0 | } | 102 | 0 | case BlackPixelChannel: | 103 | 0 | { | 104 | 0 | composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->black,alpha, | 105 | 0 | (double) q[i],beta)); | 106 | 0 | break; | 107 | 0 | } | 108 | 40.7M | case AlphaPixelChannel: | 109 | 40.7M | { | 110 | 40.7M | composite[i]=ClampToQuantum((double) QuantumRange* | 111 | 40.7M | RoundToUnity(Sa+Da-Sa*Da)); | 112 | 40.7M | break; | 113 | 0 | } | 114 | 1.08M | default: | 115 | 1.08M | { | 116 | 1.08M | composite[i]=q[i]; | 117 | 1.08M | break; | 118 | 0 | } | 119 | 163M | } | 120 | 163M | } | 121 | 40.7M | } |
Unexecuted instantiation: enhance.c:CompositePixelOver Unexecuted instantiation: feature.c:CompositePixelOver Unexecuted instantiation: image.c:CompositePixelOver Unexecuted instantiation: paint.c:CompositePixelOver Unexecuted instantiation: shear.c:CompositePixelOver Unexecuted instantiation: statistic.c:CompositePixelOver Unexecuted instantiation: stream.c:CompositePixelOver Unexecuted instantiation: transform.c:CompositePixelOver Unexecuted instantiation: caption.c:CompositePixelOver Unexecuted instantiation: pango.c:CompositePixelOver Unexecuted instantiation: svg.c:CompositePixelOver |
122 | | |
123 | | static inline void CompositePixelInfoOver(const PixelInfo *p,const double alpha, |
124 | | const PixelInfo *q,const double beta,PixelInfo *composite) |
125 | 50.4M | { |
126 | 50.4M | double |
127 | 50.4M | Da, |
128 | 50.4M | gamma, |
129 | 50.4M | Sa; |
130 | | |
131 | | /* |
132 | | Compose pixel p over pixel q with the given opacities. |
133 | | */ |
134 | 50.4M | Sa=QuantumScale*alpha; |
135 | 50.4M | Da=QuantumScale*beta, |
136 | 50.4M | gamma=Sa+Da-Sa*Da; |
137 | 50.4M | composite->alpha=(double) QuantumRange*RoundToUnity(gamma); |
138 | 50.4M | gamma=MagickSafeReciprocal(gamma); |
139 | 50.4M | composite->red=gamma*MagickOver_(p->red,alpha,q->red,beta); |
140 | 50.4M | composite->green=gamma*MagickOver_(p->green,alpha,q->green,beta); |
141 | 50.4M | composite->blue=gamma*MagickOver_(p->blue,alpha,q->blue,beta); |
142 | 50.4M | if (q->colorspace == CMYKColorspace) |
143 | 8.53k | composite->black=gamma*MagickOver_(p->black,alpha,q->black,beta); |
144 | 50.4M | } Unexecuted instantiation: annotate.c:CompositePixelInfoOver Unexecuted instantiation: attribute.c:CompositePixelInfoOver Unexecuted instantiation: cache.c:CompositePixelInfoOver Unexecuted instantiation: channel.c:CompositePixelInfoOver Unexecuted instantiation: compare.c:CompositePixelInfoOver Unexecuted instantiation: composite.c:CompositePixelInfoOver Unexecuted instantiation: distort.c:CompositePixelInfoOver draw.c:CompositePixelInfoOver Line | Count | Source | 125 | 50.4M | { | 126 | 50.4M | double | 127 | 50.4M | Da, | 128 | 50.4M | gamma, | 129 | 50.4M | Sa; | 130 | | | 131 | | /* | 132 | | Compose pixel p over pixel q with the given opacities. | 133 | | */ | 134 | 50.4M | Sa=QuantumScale*alpha; | 135 | 50.4M | Da=QuantumScale*beta, | 136 | 50.4M | gamma=Sa+Da-Sa*Da; | 137 | 50.4M | composite->alpha=(double) QuantumRange*RoundToUnity(gamma); | 138 | 50.4M | gamma=MagickSafeReciprocal(gamma); | 139 | 50.4M | composite->red=gamma*MagickOver_(p->red,alpha,q->red,beta); | 140 | 50.4M | composite->green=gamma*MagickOver_(p->green,alpha,q->green,beta); | 141 | 50.4M | composite->blue=gamma*MagickOver_(p->blue,alpha,q->blue,beta); | 142 | 50.4M | if (q->colorspace == CMYKColorspace) | 143 | 8.53k | composite->black=gamma*MagickOver_(p->black,alpha,q->black,beta); | 144 | 50.4M | } |
Unexecuted instantiation: enhance.c:CompositePixelInfoOver Unexecuted instantiation: feature.c:CompositePixelInfoOver Unexecuted instantiation: image.c:CompositePixelInfoOver Unexecuted instantiation: paint.c:CompositePixelInfoOver Unexecuted instantiation: shear.c:CompositePixelInfoOver Unexecuted instantiation: statistic.c:CompositePixelInfoOver Unexecuted instantiation: stream.c:CompositePixelInfoOver Unexecuted instantiation: transform.c:CompositePixelInfoOver Unexecuted instantiation: caption.c:CompositePixelInfoOver Unexecuted instantiation: pango.c:CompositePixelInfoOver Unexecuted instantiation: svg.c:CompositePixelInfoOver |
145 | | |
146 | | static inline void CompositePixelInfoPlus(const PixelInfo *p, |
147 | | const double alpha,const PixelInfo *q,const double beta,PixelInfo *composite) |
148 | 43.1M | { |
149 | 43.1M | double |
150 | 43.1M | Da, |
151 | 43.1M | gamma, |
152 | 43.1M | Sa; |
153 | | |
154 | | /* |
155 | | Add two pixels with the given opacities. |
156 | | */ |
157 | 43.1M | Sa=QuantumScale*alpha; |
158 | 43.1M | Da=QuantumScale*beta; |
159 | 43.1M | gamma=RoundToUnity(Sa+Da); /* 'Plus' blending -- not 'Over' blending */ |
160 | 43.1M | composite->alpha=(double) QuantumRange*RoundToUnity(gamma); |
161 | 43.1M | gamma=MagickSafeReciprocal(gamma); |
162 | 43.1M | composite->red=gamma*(Sa*p->red+Da*q->red); |
163 | 43.1M | composite->green=gamma*(Sa*p->green+Da*q->green); |
164 | 43.1M | composite->blue=gamma*(Sa*p->blue+Da*q->blue); |
165 | 43.1M | if (q->colorspace == CMYKColorspace) |
166 | 4.39k | composite->black=gamma*(Sa*p->black+Da*q->black); |
167 | 43.1M | } Unexecuted instantiation: annotate.c:CompositePixelInfoPlus Unexecuted instantiation: attribute.c:CompositePixelInfoPlus Unexecuted instantiation: cache.c:CompositePixelInfoPlus Unexecuted instantiation: channel.c:CompositePixelInfoPlus Unexecuted instantiation: compare.c:CompositePixelInfoPlus Unexecuted instantiation: composite.c:CompositePixelInfoPlus Unexecuted instantiation: distort.c:CompositePixelInfoPlus draw.c:CompositePixelInfoPlus Line | Count | Source | 148 | 43.1M | { | 149 | 43.1M | double | 150 | 43.1M | Da, | 151 | 43.1M | gamma, | 152 | 43.1M | Sa; | 153 | | | 154 | | /* | 155 | | Add two pixels with the given opacities. | 156 | | */ | 157 | 43.1M | Sa=QuantumScale*alpha; | 158 | 43.1M | Da=QuantumScale*beta; | 159 | 43.1M | gamma=RoundToUnity(Sa+Da); /* 'Plus' blending -- not 'Over' blending */ | 160 | 43.1M | composite->alpha=(double) QuantumRange*RoundToUnity(gamma); | 161 | 43.1M | gamma=MagickSafeReciprocal(gamma); | 162 | 43.1M | composite->red=gamma*(Sa*p->red+Da*q->red); | 163 | 43.1M | composite->green=gamma*(Sa*p->green+Da*q->green); | 164 | 43.1M | composite->blue=gamma*(Sa*p->blue+Da*q->blue); | 165 | 43.1M | if (q->colorspace == CMYKColorspace) | 166 | 4.39k | composite->black=gamma*(Sa*p->black+Da*q->black); | 167 | 43.1M | } |
Unexecuted instantiation: enhance.c:CompositePixelInfoPlus Unexecuted instantiation: feature.c:CompositePixelInfoPlus Unexecuted instantiation: image.c:CompositePixelInfoPlus Unexecuted instantiation: paint.c:CompositePixelInfoPlus Unexecuted instantiation: shear.c:CompositePixelInfoPlus Unexecuted instantiation: statistic.c:CompositePixelInfoPlus Unexecuted instantiation: stream.c:CompositePixelInfoPlus Unexecuted instantiation: transform.c:CompositePixelInfoPlus Unexecuted instantiation: caption.c:CompositePixelInfoPlus Unexecuted instantiation: pango.c:CompositePixelInfoPlus Unexecuted instantiation: svg.c:CompositePixelInfoPlus |
168 | | |
169 | | static inline void CompositePixelInfoAreaBlend(const PixelInfo *p, |
170 | | const double alpha,const PixelInfo *q,const double beta,const double area, |
171 | | PixelInfo *composite) |
172 | 0 | { |
173 | | /* |
174 | | Blend pixel colors p and q by the amount given and area. |
175 | | */ |
176 | 0 | CompositePixelInfoPlus(p,(double) (1.0-area)*alpha,q,(double) (area*beta), |
177 | 0 | composite); |
178 | 0 | } Unexecuted instantiation: annotate.c:CompositePixelInfoAreaBlend Unexecuted instantiation: attribute.c:CompositePixelInfoAreaBlend Unexecuted instantiation: cache.c:CompositePixelInfoAreaBlend Unexecuted instantiation: channel.c:CompositePixelInfoAreaBlend Unexecuted instantiation: compare.c:CompositePixelInfoAreaBlend Unexecuted instantiation: composite.c:CompositePixelInfoAreaBlend Unexecuted instantiation: distort.c:CompositePixelInfoAreaBlend Unexecuted instantiation: draw.c:CompositePixelInfoAreaBlend Unexecuted instantiation: enhance.c:CompositePixelInfoAreaBlend Unexecuted instantiation: feature.c:CompositePixelInfoAreaBlend Unexecuted instantiation: image.c:CompositePixelInfoAreaBlend Unexecuted instantiation: paint.c:CompositePixelInfoAreaBlend Unexecuted instantiation: shear.c:CompositePixelInfoAreaBlend Unexecuted instantiation: statistic.c:CompositePixelInfoAreaBlend Unexecuted instantiation: stream.c:CompositePixelInfoAreaBlend Unexecuted instantiation: transform.c:CompositePixelInfoAreaBlend Unexecuted instantiation: caption.c:CompositePixelInfoAreaBlend Unexecuted instantiation: pango.c:CompositePixelInfoAreaBlend Unexecuted instantiation: svg.c:CompositePixelInfoAreaBlend |
179 | | |
180 | | static inline void CompositePixelInfoBlend(const PixelInfo *p, |
181 | | const double alpha,const PixelInfo *q,const double beta,PixelInfo *composite) |
182 | 43.1M | { |
183 | | /* |
184 | | Blend pixel colors p and q by the amount given. |
185 | | */ |
186 | 43.1M | CompositePixelInfoPlus(p,(double) (alpha*p->alpha),q,(double) (beta*q->alpha), |
187 | 43.1M | composite); |
188 | 43.1M | } Unexecuted instantiation: annotate.c:CompositePixelInfoBlend Unexecuted instantiation: attribute.c:CompositePixelInfoBlend Unexecuted instantiation: cache.c:CompositePixelInfoBlend Unexecuted instantiation: channel.c:CompositePixelInfoBlend Unexecuted instantiation: compare.c:CompositePixelInfoBlend Unexecuted instantiation: composite.c:CompositePixelInfoBlend Unexecuted instantiation: distort.c:CompositePixelInfoBlend draw.c:CompositePixelInfoBlend Line | Count | Source | 182 | 43.1M | { | 183 | | /* | 184 | | Blend pixel colors p and q by the amount given. | 185 | | */ | 186 | 43.1M | CompositePixelInfoPlus(p,(double) (alpha*p->alpha),q,(double) (beta*q->alpha), | 187 | 43.1M | composite); | 188 | 43.1M | } |
Unexecuted instantiation: enhance.c:CompositePixelInfoBlend Unexecuted instantiation: feature.c:CompositePixelInfoBlend Unexecuted instantiation: image.c:CompositePixelInfoBlend Unexecuted instantiation: paint.c:CompositePixelInfoBlend Unexecuted instantiation: shear.c:CompositePixelInfoBlend Unexecuted instantiation: statistic.c:CompositePixelInfoBlend Unexecuted instantiation: stream.c:CompositePixelInfoBlend Unexecuted instantiation: transform.c:CompositePixelInfoBlend Unexecuted instantiation: caption.c:CompositePixelInfoBlend Unexecuted instantiation: pango.c:CompositePixelInfoBlend Unexecuted instantiation: svg.c:CompositePixelInfoBlend |
189 | | |
190 | | static inline void DisableCompositeClampUnlessSpecified(Image *image) |
191 | 0 | { |
192 | 0 | if (GetImageArtifact(image,"compose:clamp") == (const char *) NULL) |
193 | 0 | (void) SetImageArtifact(image,"compose:clamp","off"); |
194 | 0 | } Unexecuted instantiation: annotate.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: attribute.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: cache.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: channel.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: compare.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: composite.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: distort.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: draw.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: enhance.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: feature.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: image.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: paint.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: shear.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: statistic.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: stream.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: transform.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: caption.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: pango.c:DisableCompositeClampUnlessSpecified Unexecuted instantiation: svg.c:DisableCompositeClampUnlessSpecified |
195 | | |
196 | | static inline MagickBooleanType GetCompositeClipToSelf( |
197 | | const CompositeOperator compose) |
198 | 0 | { |
199 | 0 | switch (compose) |
200 | 0 | { |
201 | 0 | case ClearCompositeOp: |
202 | 0 | case SrcCompositeOp: |
203 | 0 | case InCompositeOp: |
204 | 0 | case SrcInCompositeOp: |
205 | 0 | case OutCompositeOp: |
206 | 0 | case SrcOutCompositeOp: |
207 | 0 | case DstInCompositeOp: |
208 | 0 | case DstAtopCompositeOp: |
209 | 0 | case CopyAlphaCompositeOp: |
210 | 0 | case ChangeMaskCompositeOp: |
211 | 0 | { |
212 | 0 | return(MagickFalse); |
213 | 0 | break; |
214 | 0 | } |
215 | 0 | default: |
216 | 0 | break; |
217 | 0 | } |
218 | 0 | return(MagickTrue); |
219 | 0 | } Unexecuted instantiation: annotate.c:GetCompositeClipToSelf Unexecuted instantiation: attribute.c:GetCompositeClipToSelf Unexecuted instantiation: cache.c:GetCompositeClipToSelf Unexecuted instantiation: channel.c:GetCompositeClipToSelf Unexecuted instantiation: compare.c:GetCompositeClipToSelf Unexecuted instantiation: composite.c:GetCompositeClipToSelf Unexecuted instantiation: distort.c:GetCompositeClipToSelf Unexecuted instantiation: draw.c:GetCompositeClipToSelf Unexecuted instantiation: enhance.c:GetCompositeClipToSelf Unexecuted instantiation: feature.c:GetCompositeClipToSelf Unexecuted instantiation: image.c:GetCompositeClipToSelf Unexecuted instantiation: paint.c:GetCompositeClipToSelf Unexecuted instantiation: shear.c:GetCompositeClipToSelf Unexecuted instantiation: statistic.c:GetCompositeClipToSelf Unexecuted instantiation: stream.c:GetCompositeClipToSelf Unexecuted instantiation: transform.c:GetCompositeClipToSelf Unexecuted instantiation: caption.c:GetCompositeClipToSelf Unexecuted instantiation: pango.c:GetCompositeClipToSelf Unexecuted instantiation: svg.c:GetCompositeClipToSelf |
220 | | |
221 | | #if defined(__cplusplus) || defined(c_plusplus) |
222 | | } |
223 | | #endif |
224 | | |
225 | | #endif |