PluginProbe
WPFunnels – Funnel Builder for WooCommerce with Checkout & One Click Upsell / 3.13.1
WPFunnels – Funnel Builder for WooCommerce with Checkout & One Click Upsell v3.13.1
3.13.1 3.13.0 3.12.13 3.12.12 3.12.11 3.12.10 3.12.9 3.12.8 3.12.7 3.12.6 3.12.5 3.12.4 3.12.3 3.12.1 3.12.2 3.12.0 3.11.1 3.11.0 3.10.9 3.10.8 3.10.7 3.10.6 2.8.16 2.8.17 2.8.18 All 259 releases
wpfunnels / vendor / intervention / image / src / Intervention / Image / Gd / Commands / TrimCommand.php

TrimCommand.php in WPFunnels – Funnel Builder for WooCommerce with Checkout & One Click Upsell 3.13.1, at vendor/intervention/image/src/Intervention/Image/Gd/Commands/TrimCommand.php

177 lines 5.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Intervention\Image\Gd\Commands;
4
5 use Intervention\Image\Gd\Color;
6
7 class TrimCommand extends ResizeCommand
8 {
9 /**
10 * Trims away parts of an image
11 *
12 * @param \Intervention\Image\Image $image
13 * @return boolean
14 */
15 public function execute($image)
16 {
17 $base = $this->argument(0)->type('string')->value();
18 $away = $this->argument(1)->value();
19 $tolerance = $this->argument(2)->type('numeric')->value(0);
20 $feather = $this->argument(3)->type('numeric')->value(0);
21
22 $width = $image->getWidth();
23 $height = $image->getHeight();
24
25 // default values
26 $checkTransparency = false;
27
28 // define borders to trim away
29 if (is_null($away)) {
30 $away = ['top', 'right', 'bottom', 'left'];
31 } elseif (is_string($away)) {
32 $away = [$away];
33 }
34
35 // lower border names
36 foreach ($away as $key => $value) {
37 $away[$key] = strtolower($value);
38 }
39
40 // define base color position
41 switch (strtolower($base)) {
42 case 'transparent':
43 case 'trans':
44 $checkTransparency = true;
45 $base_x = 0;
46 $base_y = 0;
47 break;
48
49 case 'bottom-right':
50 case 'right-bottom':
51 $base_x = $width - 1;
52 $base_y = $height - 1;
53 break;
54
55 default:
56 case 'top-left':
57 case 'left-top':
58 $base_x = 0;
59 $base_y = 0;
60 break;
61 }
62
63 // pick base color
64 if ($checkTransparency) {
65 $color = new Color; // color will only be used to compare alpha channel
66 } else {
67 $color = $image->pickColor($base_x, $base_y, 'object');
68 }
69
70 $top_x = 0;
71 $top_y = 0;
72 $bottom_x = $width;
73 $bottom_y = $height;
74
75 // search upper part of image for colors to trim away
76 if (in_array('top', $away)) {
77
78 for ($y=0; $y < ceil($height/2); $y++) {
79 for ($x=0; $x < $width; $x++) {
80
81 $checkColor = $image->pickColor($x, $y, 'object');
82
83 if ($checkTransparency) {
84 $checkColor->r = $color->r;
85 $checkColor->g = $color->g;
86 $checkColor->b = $color->b;
87 }
88
89 if ($color->differs($checkColor, $tolerance)) {
90 $top_y = max(0, $y - $feather);
91 break 2;
92 }
93
94 }
95 }
96
97 }
98
99 // search left part of image for colors to trim away
100 if (in_array('left', $away)) {
101
102 for ($x=0; $x < ceil($width/2); $x++) {
103 for ($y=$top_y; $y < $height; $y++) {
104
105 $checkColor = $image->pickColor($x, $y, 'object');
106
107 if ($checkTransparency) {
108 $checkColor->r = $color->r;
109 $checkColor->g = $color->g;
110 $checkColor->b = $color->b;
111 }
112
113 if ($color->differs($checkColor, $tolerance)) {
114 $top_x = max(0, $x - $feather);
115 break 2;
116 }
117
118 }
119 }
120
121 }
122
123 // search lower part of image for colors to trim away
124 if (in_array('bottom', $away)) {
125
126 for ($y=($height-1); $y >= floor($height/2)-1; $y--) {
127 for ($x=$top_x; $x < $width; $x++) {
128
129 $checkColor = $image->pickColor($x, $y, 'object');
130
131 if ($checkTransparency) {
132 $checkColor->r = $color->r;
133 $checkColor->g = $color->g;
134 $checkColor->b = $color->b;
135 }
136
137 if ($color->differs($checkColor, $tolerance)) {
138 $bottom_y = min($height, $y+1 + $feather);
139 break 2;
140 }
141
142 }
143 }
144
145 }
146
147 // search right part of image for colors to trim away
148 if (in_array('right', $away)) {
149
150 for ($x=($width-1); $x >= floor($width/2)-1; $x--) {
151 for ($y=$top_y; $y < $bottom_y; $y++) {
152
153 $checkColor = $image->pickColor($x, $y, 'object');
154
155 if ($checkTransparency) {
156 $checkColor->r = $color->r;
157 $checkColor->g = $color->g;
158 $checkColor->b = $color->b;
159 }
160
161 if ($color->differs($checkColor, $tolerance)) {
162 $bottom_x = min($width, $x+1 + $feather);
163 break 2;
164 }
165
166 }
167 }
168
169 }
170
171
172 // trim parts of image
173 return $this->modify($image, 0, 0, $top_x, $top_y, ($bottom_x-$top_x), ($bottom_y-$top_y), ($bottom_x-$top_x), ($bottom_y-$top_y));
174
175 }
176 }
177