21#define GET_PIXEL_FUNCTION(src)(src->trueColor?gdImageGetTrueColorPixel:gdImageGetPixel)
24# define GD_SCATTER_SEED() (unsigned int)(time(0) * GetCurrentProcessId())
26# define GD_SCATTER_SEED() (unsigned int)(time(0) * getpid())
47 s.num_colors = num_colors;
58 int sub = scatter->
sub, plus = scatter->
plus;
60 if (plus == 0 && sub == 0) {
63 else if (sub >= plus) {
70 for (y = 0; y < im->
sy; y++) {
71 for (x = 0; x < im->
sx; x++) {
72 dest_x = (int)(x + ((
rand() % (plus - sub)) + sub));
73 dest_y = (int)(y + ((
rand() % (plus - sub)) + sub));
83 if (pxl == scatter->
colors[
n]) {
92 for (y = 0; y < im->
sy; y++) {
93 for (x = 0; x < im->
sx; x++) {
94 dest_x = (int)(x + ((
rand() % (plus - sub)) + sub));
95 dest_y = (int)(y + ((
rand() % (plus - sub)) + sub));
128 for (y=0; y<src->
sy; ++y) {
129 for (x=0; x<src->
sx; ++x) {
165 for (y=0; y<src->
sy; ++y) {
166 for (x=0; x<src->
sx; ++x) {
172 r = g = b = (int) (.299 * r + .587 * g + .114 * b);
196 if (src==
NULL || (brightness < -255 || brightness>255)) {
204 for (y=0; y<src->
sy; ++y) {
205 for (x=0; x<src->
sx; ++x) {
217 r = (r > 255)? 255 : ((r < 0)? 0:r);
218 g = (g > 255)? 255 : ((g < 0)? 0:g);
219 b = (b > 255)? 255 : ((b < 0)? 0:b);
247 contrast = (double)(100.0-contrast)/100.0;
248 contrast = contrast*contrast;
250 for (y=0; y<src->
sy; ++y) {
251 for (x=0; x<src->
sx; ++x) {
259 rf = (double)r/255.0;
265 bf = (double)b/255.0;
271 gf = (double)g/255.0;
277 rf = (rf > 255.0)? 255.0 : ((rf < 0.0)? 0.0:rf);
278 gf = (gf > 255.0)? 255.0 : ((gf < 0.0)? 0.0:gf);
279 bf = (bf > 255.0)? 255.0 : ((bf < 0.0)? 0.0:bf);
305 for (y=0; y<src->
sy; ++y) {
306 for (x=0; x<src->
sx; ++x) {
320 r = (r > 255)? 255 : ((r < 0)? 0 : r);
321 g = (g > 255)? 255 : ((g < 0)? 0 : g);
322 b = (b > 255)? 255 : ((b < 0)? 0 : b);
323 a = (
a > 127)? 127 : ((
a < 0)? 0 :
a);
337 int x, y, i,
j, new_a;
338 float new_r, new_g, new_b;
362 for ( y=0; y<src->
sy; y++) {
363 for(x=0; x<src->
sx; x++) {
364 new_r = new_g = new_b = 0;
365 pxl = f(srcback, x, y);
368 for (
j=0;
j<3;
j++) {
369 int yv =
MIN(
MAX(y - 1 +
j, 0), src->
sy - 1);
370 for (i=0; i<3; i++) {
371 pxl = f(srcback,
MIN(
MAX(x - 1 + i, 0), src->
sx - 1), yv);
372 new_r += (float)
gdImageRed(srcback, pxl) * filter[
j][i];
374 new_b += (float)
gdImageBlue(srcback, pxl) * filter[
j][i];
378 new_r = (new_r/filter_div)+
offset;
379 new_g = (new_g/filter_div)+
offset;
380 new_b = (new_b/filter_div)+
offset;
382 new_r = (new_r > 255.0f)? 255.0f : ((new_r < 0.0f)? 0.0f:new_r);
383 new_g = (new_g > 255.0f)? 255.0f : ((new_g < 0.0f)? 0.0f:new_g);
384 new_b = (new_b > 255.0f)? 255.0f : ((new_b < 0.0f)? 0.0f:new_b);
400 float new_r, new_g, new_b;
401 int new_pxl, cpxl, pxl, new_a=0;
405 float flt_r_sum, flt_g_sum, flt_b_sum;
424 for(y = 0; y<src->
sy; y++) {
425 for (x=0; x<src->
sx; x++) {
426 flt_r_sum = flt_g_sum = flt_b_sum = 0.0;
429 for (
j=0;
j<3;
j++) {
430 for (i=0; i<3; i++) {
431 if ((
j == 1) && (i == 1)) {
432 flt_r[1][1] = flt_g[1][1] = flt_b[1][1] = 0.5;
434 pxl = f(src, x-(3>>1)+i, y-(3>>1)+
j);
443 flt_r[
j][i] = 1.0f/new_r;
454 flt_g[
j][i] = 1.0f/new_g;
465 flt_b[
j][i] = 1.0f/new_b;
471 flt_r_sum += flt_r[
j][i];
472 flt_g_sum += flt_g[
j][i];
473 flt_b_sum += flt_b [
j][i];
477 for (
j=0;
j<3;
j++) {
478 for (i=0; i<3; i++) {
479 if (flt_r_sum != 0.0) {
480 flt_r[
j][i] /= flt_r_sum;
482 if (flt_g_sum != 0.0) {
483 flt_g[
j][i] /= flt_g_sum;
485 if (flt_b_sum != 0.0) {
486 flt_b [
j][i] /= flt_b_sum;
491 new_r = new_g = new_b = 0.0;
493 for (
j=0;
j<3;
j++) {
494 for (i=0; i<3; i++) {
495 pxl = f(src, x-(3>>1)+i, y-(3>>1)+
j);
496 new_r += (float)
gdImageRed(srcback, pxl) * flt_r[
j][i];
498 new_b += (float)
gdImageBlue(srcback, pxl) * flt_b[
j][i];
502 new_r = (new_r > 255.0f)? 255.0f : ((new_r < 0.0f)? 0.0f:new_r);
503 new_g = (new_g > 255.0f)? 255.0f : ((new_g < 0.0f)? 0.0f:new_g);
504 new_b = (new_b > 255.0f)? 255.0f : ((new_b < 0.0f)? 0.0f:new_b);
518 float filter[3][3] = {{-1.0,0.0,-1.0},
527 float filter[3][3] = {{1.0,2.0,1.0},
541 float filter[3][3] = {{ 1.5, 0.0, 0.0},
550 float filter[3][3] = {{-1.0,-1.0,-1.0},
559 float filter[3][3] = {{1.0,1.0,1.0},
563 filter[1][1] = weight;
#define gdImageBlue(im, c)
struct gdScatter * gdScatterPtr
#define gdImageGreen(im, c)
#define gdImageAlpha(im, c)
#define gdImageBoundsSafe(im, x, y)
#define gdImageRed(im, c)
#define GD_SCATTER_SEED()
int gdImageScatterColor(gdImagePtr im, int sub, int plus, int colors[], unsigned int num_colors)
int gdImageEdgeDetectQuick(gdImagePtr src)
#define GET_PIXEL_FUNCTION(src)
int gdImageNegate(gdImagePtr src)
int gdImageConvolution(gdImagePtr src, float filter[3][3], float filter_div, float offset)
int gdImageGaussianBlur(gdImagePtr im)
int gdImageEmboss(gdImagePtr im)
int gdImageScatterEx(gdImagePtr im, gdScatterPtr scatter)
int gdImageColor(gdImagePtr src, const int red, const int green, const int blue, const int alpha)
int gdImageMeanRemoval(gdImagePtr im)
int gdImageContrast(gdImagePtr src, double contrast)
int gdImageBrightness(gdImagePtr src, int brightness)
int gdImageSmooth(gdImagePtr im, float weight)
int gdImageGrayScale(gdImagePtr src)
int gdImageSelectiveBlur(gdImagePtr src)
int gdImageScatter(gdImagePtr im, int sub, int plus)
int gdImageColorAllocateAlpha(gdImagePtr im, int r, int g, int b, int a)
void gdImageAlphaBlending(gdImagePtr im, int alphaBlendingArg)
int gdImageGetPixel(gdImagePtr im, int x, int y)
void gdImageDestroy(gdImagePtr im)
void gdImageFill(gdImagePtr im, int x, int y, int nc)
void gdImageCopy(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h)
gdImagePtr gdImageCreateTrueColor(int sx, int sy)
int gdImageColorClosestAlpha(gdImagePtr im, int r, int g, int b, int a)
void gdImageSetPixel(gdImagePtr im, int x, int y, int color)
void gdImageSaveAlpha(gdImagePtr im, int saveAlphaArg)
const phpdbg_color_t * colors[PHPDBG_COLORS]
srand(?int $seed=null, int $mode=MT_RAND_MT19937)
rand(int $min=UNKNOWN, int $max=UNKNOWN)
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)