PluginProbe ʕ •ᴥ•ʔ
Photo Gallery by FooGallery : Responsive Image Gallery, Masonry Gallery & Carousel / trunk
Photo Gallery by FooGallery : Responsive Image Gallery, Masonry Gallery & Carousel vtrunk
trunk 1.10.3 2.0.24 2.1.34 2.2.44 2.3.3 2.4.32 3.0.6 3.1.11 3.1.12 3.1.13 3.1.20 3.1.25 3.1.26 3.1.26.1 3.1.26.2
foogallery / includes / class-retina.php
foogallery / includes Last commit date
admin 7 months ago compatibility 7 months ago extensions 7 months ago foopluginbase 7 months ago public 7 months ago thumbs 7 months ago .DS_Store 7 months ago class-attachment-filters.php 7 months ago class-foogallery-animated-gif-support.php 7 months ago class-foogallery-attachment-custom-class.php 7 months ago class-foogallery-attachment-type.php 7 months ago class-foogallery-attachment.php 7 months ago class-foogallery-cache.php 7 months ago class-foogallery-common-fields.php 7 months ago class-foogallery-crop-position.php 7 months ago class-foogallery-datasource-media_library.php 7 months ago class-foogallery-debug.php 7 months ago class-foogallery-extensions-compatibility.php 7 months ago class-foogallery-force-https.php 7 months ago class-foogallery-lazyload.php 7 months ago class-foogallery-lightbox.php 7 months ago class-foogallery-paging.php 7 months ago class-foogallery-password-protect.php 7 months ago class-foogallery-sitemaps.php 7 months ago class-foogallery-widget.php 7 months ago class-foogallery.php 7 months ago class-gallery-advanced-settings.php 7 months ago class-il8n.php 7 months ago class-override-thumbnail.php 7 months ago class-posttypes.php 7 months ago class-retina.php 7 months ago class-thumbnail-dimensions.php 7 months ago class-thumbnails.php 7 months ago class-version-check.php 7 months ago constants.php 7 months ago functions.php 7 months ago includes.php 7 months ago index.php 11 years ago render-functions.php 7 months ago
class-retina.php
83 lines
1 <?php
2 /*
3 * FooGallery Retina Support class
4 */
5
6 if ( !class_exists( 'FooGallery_Retina' ) ) {
7
8 class FooGallery_Retina {
9
10 function __construct() {
11 add_filter('foogallery_attachment_html_image_attributes', array($this, 'add_retina_attributes'), 10, 3);
12 }
13
14 /**
15 * @param array $attr
16 * @param array $args
17 * @param FooGalleryAttachment $attachment
18 * @return mixed
19 */
20 function add_retina_attributes($attr, $args, $attachment) {
21 global $current_foogallery;
22
23 if ( $current_foogallery && $current_foogallery->gallery_template ) {
24
25 //first check if the gallery has saved Retina settings
26 if ( isset($current_foogallery->retina) && is_array( $current_foogallery->retina ) ) {
27 $srcset = array();
28
29 //get the original thumb dimensions
30 $original_thumb_width = array_key_exists( 'width', $args ) ? intval( $args['width'] ) : 0;
31 $original_thumb_height = array_key_exists( 'height', $args ) ? intval( $args['height'] ) : 0;
32
33 //get the original full size image dimensions
34 $original_width = $attachment->width;
35 $original_height = $attachment->height;
36
37 //if we do not have a width, we need to calculate one
38 if ( 0 === $original_thumb_width ) {
39 //find closest ratio multiple to image size
40 if( $original_width > $original_height ) {
41 //landscape
42 $ratio = $original_width / $original_height;
43 $original_thumb_width = intval( $original_thumb_height * $ratio );
44 }else{
45 //portrait
46 $ratio = $original_height / $original_width;
47 $original_thumb_width = intval( $original_thumb_height / $ratio );
48 }
49 }
50
51 foreach ( foogallery_retina_options() as $pixel_density ) {
52 $pixel_density_supported = array_key_exists( $pixel_density, $current_foogallery->retina ) ? ('true' === $current_foogallery->retina[$pixel_density]) : false;
53
54 if ( $pixel_density_supported ) {
55 $pixel_density_int = intval( str_replace( 'x', '', $pixel_density ) );
56
57 //apply scaling to the width and height attributes
58 $retina_width = $original_thumb_width * $pixel_density_int;
59 $retina_height = $original_thumb_height * $pixel_density_int;
60
61 //if the new dimensions are smaller than the full size image dimensions then allow the retina thumb
62 if ( $retina_width < $original_width &&
63 $retina_height < $original_height ) {
64 $args['width'] = $retina_width;
65 $args['height'] = $retina_height;
66
67 //build up the retina attributes
68 $srcset[] = $attachment->html_img_src( $args ) . ' ' . $pixel_density_int . 'x';
69 }
70 }
71 }
72
73 if ( count( $srcset ) ) {
74 $attr['srcset'] = implode( ',', $srcset );
75 }
76 }
77 }
78
79 return $attr;
80 }
81 }
82 }
83