Changeset 58571
- Timestamp:
- 06/25/2024 03:30:57 PM (8 months ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
trunk/src/js/_enqueues/lib/image-edit.js
r58456 r58571 144 144 */ 145 145 init : function(postid) { 146 var t = this, old = $('#image-editor-' + t.postid); 146 var t = this, old = $('#image-editor-' + t.postid), 147 x = t.intval( $('#imgedit-x-' + postid).val() ), 148 y = t.intval( $('#imgedit-y-' + postid).val() ); 147 149 148 150 if ( t.postid !== postid && old.length ) { … … 150 152 } 151 153 154 t.hold.w = t.hold.ow = x; 155 t.hold.h = t.hold.oh = y; 156 t.hold.xy_ratio = x / y; 152 157 t.hold.sizer = parseFloat( $('#imgedit-sizer-' + postid).val() ); 153 158 t.postid = postid; … … 182 187 183 188 $( document ).on( 'image-editor-ui-ready', this.focusManager ); 184 },185 186 /**187 * Calculate the image size and save it to memory.188 *189 * @since 6.6.0190 *191 * @memberof imageEdit192 *193 * @param {number} postid The post ID.194 *195 * @return {void}196 */197 calculateImgSize: function( postid ) {198 var t = this,199 x = t.intval( $( '#imgedit-x-' + postid ).val() ),200 y = t.intval( $( '#imgedit-y-' + postid ).val() );201 202 t.hold.w = t.hold.ow = x;203 t.hold.h = t.hold.oh = y;204 t.hold.xy_ratio = x / y;205 t.hold.sizer = parseFloat( $( '#imgedit-sizer-' + postid ).val() );206 t.currentCropSelection = null;207 189 }, 208 190 … … 544 526 i = history[n]; 545 527 if ( i.hasOwnProperty('c') ) { 546 op[n] = { 'c': { 'x': i.c.x, 'y': i.c.y, 'w': i.c.w, 'h': i.c.h , 'r': i.c.r} };528 op[n] = { 'c': { 'x': i.c.x, 'y': i.c.y, 'w': i.c.w, 'h': i.c.h } }; 547 529 } else if ( i.hasOwnProperty('r') ) { 548 530 op[n] = { 'r': i.r.r }; … … 879 861 this.init( postid ); 880 862 } 881 this.calculateImgSize( postid );882 863 883 864 this.initCrop(postid, img, parent); … … 929 910 selW = $('#imgedit-sel-width-' + postid), 930 911 selH = $('#imgedit-sel-height-' + postid), 912 selX = $('#imgedit-start-x-' + postid), 913 selY = $('#imgedit-start-y-' + postid), 931 914 $image = $( image ), 932 915 $img; … … 963 946 * @return {void} 964 947 */ 965 parent.children().on( 'mousedown touchstart', function(e) { 966 var ratio = false, 967 sel = t.iasapi.getSelection(), 968 cx = t.intval( $( '#imgedit-crop-width-' + postid ).val() ), 969 cy = t.intval( $( '#imgedit-crop-height-' + postid ).val() ); 970 971 if ( cx && cy ) { 972 ratio = t.getSelRatio( postid ); 973 } else if ( e.shiftKey && sel && sel.width && sel.height ) { 974 ratio = sel.width + ':' + sel.height; 948 parent.children().on( 'mousedown, touchstart', function(e){ 949 var ratio = false, sel, defRatio; 950 951 if ( e.shiftKey ) { 952 sel = t.iasapi.getSelection(); 953 defRatio = t.getSelRatio(postid); 954 ratio = ( sel && sel.width && sel.height ) ? sel.width + ':' + sel.height : defRatio; 975 955 } 976 956 … … 1021 1001 */ 1022 1002 onSelectChange: function(img, c) { 1023 var sizer = imageEdit.hold.sizer, 1024 oldSel = imageEdit.currentCropSelection; 1025 1026 if ( oldSel != null && oldSel.width == c.width && oldSel.height == c.height ) { 1027 return; 1028 } 1029 1030 selW.val( Math.min( imageEdit.hold.w, imageEdit.round( c.width / sizer ) ) ); 1031 selH.val( Math.min( imageEdit.hold.h, imageEdit.round( c.height / sizer ) ) ); 1032 1033 t.currentCropSelection = c; 1003 var sizer = imageEdit.hold.sizer; 1004 selW.val( imageEdit.round(c.width / sizer) ); 1005 selH.val( imageEdit.round(c.height / sizer) ); 1006 selX.val( imageEdit.round(c.x1 / sizer) ); 1007 selY.val( imageEdit.round(c.y1 / sizer) ); 1034 1008 } 1035 1009 }); … … 1049 1023 */ 1050 1024 setCropSelection : function(postid, c) { 1051 var sel, 1052 selW = $( '#imgedit-sel-width-' + postid ), 1053 selH = $( '#imgedit-sel-height-' + postid ), 1054 sizer = this.hold.sizer, 1055 hold = this.hold; 1025 var sel; 1056 1026 1057 1027 c = c || 0; … … 1068 1038 } 1069 1039 1070 // adjust the selection within the bounds of the image on 100% scale 1071 var excessW = hold.w - ( Math.round( c.x1 / sizer ) + parseInt( selW.val() ) ); 1072 var excessH = hold.h - ( Math.round( c.y1 / sizer ) + parseInt( selH.val() ) ); 1073 var x = Math.round( c.x1 / sizer ) + Math.min( 0, excessW ); 1074 var y = Math.round( c.y1 / sizer ) + Math.min( 0, excessH ); 1075 1076 // use 100% scaling to prevent rounding errors 1077 sel = { 'r': 1, 'x': x, 'y': y, 'w': selW.val(), 'h': selH.val() }; 1078 1040 sel = { 'x': c.x1, 'y': c.y1, 'w': c.width, 'h': c.height }; 1079 1041 this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 1); 1080 1042 $('#imgedit-selection-' + postid).val( JSON.stringify(sel) ); … … 1204 1166 this.closePopup(t); 1205 1167 this.addStep({ 'r': { 'r': angle, 'fw': this.hold.h, 'fh': this.hold.w }}, postid, nonce); 1206 1207 // Clear the selection fields after rotating.1208 $( '#imgedit-sel-width-' + postid ).val( '' );1209 $( '#imgedit-sel-height-' + postid ).val( '' );1210 this.currentCropSelection = null;1211 1168 }, 1212 1169 … … 1231 1188 this.closePopup(t); 1232 1189 this.addStep({ 'f': { 'f': axis, 'fw': this.hold.w, 'fh': this.hold.h }}, postid, nonce); 1233 1234 // Clear the selection fields after flipping.1235 $( '#imgedit-sel-width-' + postid ).val( '' );1236 $( '#imgedit-sel-height-' + postid ).val( '' );1237 this.currentCropSelection = null;1238 1190 }, 1239 1191 … … 1268 1220 1269 1221 // Clear the selection fields after cropping. 1270 $( '#imgedit-sel-width-' + postid ).val( '' ); 1271 $( '#imgedit-sel-height-' + postid ).val( '' ); 1272 $( '#imgedit-start-x-' + postid ).val( '0' ); 1273 $( '#imgedit-start-y-' + postid ).val( '0' ); 1274 this.currentCropSelection = null; 1222 $('#imgedit-sel-width-' + postid).val(''); 1223 $('#imgedit-sel-height-' + postid).val(''); 1224 $('#imgedit-start-x-' + postid).val('0'); 1225 $('#imgedit-start-y-' + postid).val('0'); 1275 1226 }, 1276 1227 … … 1362 1313 sizer = this.hold.sizer, x1, y1, x2, y2, ias = this.iasapi; 1363 1314 1364 this.currentCropSelection = null;1365 1366 1315 if ( false === this.validateNumeric( el ) ) { 1367 1316 return; … … 1387 1336 x1 = 0; 1388 1337 x2 = imgw; 1389 elX.val( Math. min( this.hold.w, Math.round( x2 / sizer )) );1338 elX.val( Math.round( x2 / sizer ) ); 1390 1339 } 1391 1340 … … 1393 1342 y1 = 0; 1394 1343 y2 = imgh; 1395 elY.val( Math. min( this.hold.h, Math.round( y2 / sizer )) );1344 elY.val( Math.round( y2 / sizer ) ); 1396 1345 } 1397 1346 … … 1399 1348 ias.update(); 1400 1349 this.setCropSelection(postid, ias.getSelection()); 1401 this.currentCropSelection = ias.getSelection();1402 1350 } 1403 1351 }, -
trunk/src/wp-admin/includes/image-edit.php
r58457 r58571 736 736 $h = $size['height']; 737 737 738 $scale = isset( $sel->r ) ? $sel->r :1 / _image_get_preview_ratio( $w, $h ); // Discard preview scaling.738 $scale = 1 / _image_get_preview_ratio( $w, $h ); // Discard preview scaling. 739 739 $image->crop( (int) ( $sel->x * $scale ), (int) ( $sel->y * $scale ), (int) ( $sel->w * $scale ), (int) ( $sel->h * $scale ) ); 740 740 } else { 741 $scale = isset( $sel->r ) ? $sel->r :1 / _image_get_preview_ratio( imagesx( $image ), imagesy( $image ) ); // Discard preview scaling.741 $scale = 1 / _image_get_preview_ratio( imagesx( $image ), imagesy( $image ) ); // Discard preview scaling. 742 742 $image = _crop_image_resource( $image, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale ); 743 743 }
Note: See TracChangeset
for help on using the changeset viewer.