aboutsummaryrefslogtreecommitdiffstats
path: root/view/theme/cleanzero/js/jquery.ae.image.resize.js
diff options
context:
space:
mode:
authorzottel <github@zottel.net>2012-04-27 08:10:04 +0200
committerzottel <github@zottel.net>2012-04-27 08:10:04 +0200
commit17aba3033ff050a031ae578f0351db3da29ecbb7 (patch)
treeee1e97a2374a104ad966507a315a8947b5adb715 /view/theme/cleanzero/js/jquery.ae.image.resize.js
parent0116426a0eccc81382a670989032b0a095a65a20 (diff)
parenta1f94ac59f677c61e97facb2835883191a9e48af (diff)
downloadvolse-hubzilla-17aba3033ff050a031ae578f0351db3da29ecbb7.tar.gz
volse-hubzilla-17aba3033ff050a031ae578f0351db3da29ecbb7.tar.bz2
volse-hubzilla-17aba3033ff050a031ae578f0351db3da29ecbb7.zip
Merge remote branch 'upstream/master'
Diffstat (limited to 'view/theme/cleanzero/js/jquery.ae.image.resize.js')
-rw-r--r--view/theme/cleanzero/js/jquery.ae.image.resize.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/view/theme/cleanzero/js/jquery.ae.image.resize.js b/view/theme/cleanzero/js/jquery.ae.image.resize.js
new file mode 100644
index 000000000..bac09cd45
--- /dev/null
+++ b/view/theme/cleanzero/js/jquery.ae.image.resize.js
@@ -0,0 +1,69 @@
+(function( $ ) {
+
+ $.fn.aeImageResize = function( params ) {
+
+ var aspectRatio = 0
+ // Nasty I know but it's done only once, so not too bad I guess
+ // Alternate suggestions welcome :)
+ , isIE6 = $.browser.msie && (6 == ~~ $.browser.version)
+ ;
+
+ // We cannot do much unless we have one of these
+ if ( !params.height && !params.width ) {
+ return this;
+ }
+
+ // Calculate aspect ratio now, if possible
+ if ( params.height && params.width ) {
+ aspectRatio = params.width / params.height;
+ }
+
+ // Attach handler to load
+ // Handler is executed just once per element
+ // Load event required for Webkit browsers
+ return this.one( "load", function() {
+
+ // Remove all attributes and CSS rules
+ this.removeAttribute( "height" );
+ this.removeAttribute( "width" );
+ this.style.height = this.style.width = "";
+
+ var imgHeight = this.height
+ , imgWidth = this.width
+ , imgAspectRatio = imgWidth / imgHeight
+ , bxHeight = params.height
+ , bxWidth = params.width
+ , bxAspectRatio = aspectRatio;
+
+ // Work the magic!
+ // If one parameter is missing, we just force calculate it
+ if ( !bxAspectRatio ) {
+ if ( bxHeight ) {
+ bxAspectRatio = imgAspectRatio + 1;
+ } else {
+ bxAspectRatio = imgAspectRatio - 1;
+ }
+ }
+
+ // Only resize the images that need resizing
+ if ( (bxHeight && imgHeight > bxHeight) || (bxWidth && imgWidth > bxWidth) ) {
+
+ if ( imgAspectRatio > bxAspectRatio ) {
+ bxHeight = ~~ ( imgHeight / imgWidth * bxWidth );
+ } else {
+ bxWidth = ~~ ( imgWidth / imgHeight * bxHeight );
+ }
+
+ this.height = bxHeight;
+ this.width = bxWidth;
+ }
+ })
+ .each(function() {
+
+ // Trigger load event (for Gecko and MSIE)
+ if ( this.complete || isIE6 ) {
+ $( this ).trigger( "load" );
+ }
+ });
+ };
+})( jQuery ); \ No newline at end of file