mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-30 10:50:08 +00:00
added basic image rotation, still not working correctly with screen proportions (single image mode)...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
98349d869e
commit
891e8ee744
69
ui/base.js
69
ui/base.js
@ -782,6 +782,75 @@ function nextRibbon(mode){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************** Rotating ***/
|
||||||
|
|
||||||
|
var cw = {
|
||||||
|
null: 0,
|
||||||
|
0: 90,
|
||||||
|
90: 180,
|
||||||
|
180: 270,
|
||||||
|
270: 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
var ccw = {
|
||||||
|
null: 0,
|
||||||
|
0: 270,
|
||||||
|
90: 0,
|
||||||
|
180: 90,
|
||||||
|
270: 180,
|
||||||
|
}
|
||||||
|
|
||||||
|
// XXX need to account for proportions...
|
||||||
|
function rotateImage(direction, image){
|
||||||
|
var r_table = direction == 'Left' ? cw : ccw
|
||||||
|
image = image == null ? $('.current.image') : $(image)
|
||||||
|
image.each(function(i, e){
|
||||||
|
var img = $(this)
|
||||||
|
var o = img.attr('orientation')
|
||||||
|
img.attr('orientation', r_table[o])
|
||||||
|
|
||||||
|
// XXX account for proportions...
|
||||||
|
/*
|
||||||
|
//var w = image.css('width')
|
||||||
|
//var h = image.css('height')
|
||||||
|
var w = image.outerWidth()
|
||||||
|
var h = image.outerHeight()
|
||||||
|
|
||||||
|
if(w != h){
|
||||||
|
image.css({
|
||||||
|
width: h,
|
||||||
|
height: w,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
})
|
||||||
|
|
||||||
|
$('.viewer').trigger('rotating' + direction.capitalize(), [image])
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function rotateLeft(image){
|
||||||
|
rotateImage('left', image)
|
||||||
|
}
|
||||||
|
function rotateRight(image){
|
||||||
|
rotateImage('right', image)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************** Flipping ***/
|
||||||
|
|
||||||
|
function flipVertical(image){
|
||||||
|
// XXX
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function flipHorizontal(image){
|
||||||
|
// XXX
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************* Zooming ***/
|
/********************************************************* Zooming ***/
|
||||||
|
|
||||||
function fitNImages(n){
|
function fitNImages(n){
|
||||||
|
|||||||
21
ui/data.js
21
ui/data.js
@ -27,6 +27,7 @@ var STUB_IMAGE_DATA = {
|
|||||||
'900px': './images/sizes/900px/SIZE.jpg',
|
'900px': './images/sizes/900px/SIZE.jpg',
|
||||||
},
|
},
|
||||||
classes: '',
|
classes: '',
|
||||||
|
orientation: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Data format...
|
// Data format...
|
||||||
@ -316,7 +317,7 @@ function updateImage(image, gid, size){
|
|||||||
|
|
||||||
// update image order...
|
// update image order...
|
||||||
image.attr({
|
image.attr({
|
||||||
order: DATA.order.indexOf(gid)
|
order: DATA.order.indexOf(gid),
|
||||||
})
|
})
|
||||||
|
|
||||||
// setup marks...
|
// setup marks...
|
||||||
@ -333,9 +334,13 @@ function updateImage(image, gid, size){
|
|||||||
|
|
||||||
// get the url...
|
// get the url...
|
||||||
var preview = getBestPreview(gid, size)
|
var preview = getBestPreview(gid, size)
|
||||||
image.css({
|
image
|
||||||
|
.css({
|
||||||
'background-image': 'url('+ preview.url +')',
|
'background-image': 'url('+ preview.url +')',
|
||||||
})
|
})
|
||||||
|
.attr({
|
||||||
|
orientation: img_data.orientation == null ? 0 : img_data.orientation,
|
||||||
|
})
|
||||||
|
|
||||||
html = window.DEBUG ?
|
html = window.DEBUG ?
|
||||||
DATA.order.indexOf(gid) +'<br>'+ gid +'<br>'+ preview.size
|
DATA.order.indexOf(gid) +'<br>'+ gid +'<br>'+ preview.size
|
||||||
@ -919,6 +924,18 @@ function setupDataBindings(viewer){
|
|||||||
DATA.current = getImageGID($(image))
|
DATA.current = getImageGID($(image))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// basic image manipulation...
|
||||||
|
// XXX after this we need to save the images...
|
||||||
|
.on('rotatingLeft rotatingRight', function(evt, image){
|
||||||
|
$(image).each(function(i, e){
|
||||||
|
var img = $(this)
|
||||||
|
var gid = getImageGID(img)
|
||||||
|
var orientation = img.attr('orientation')
|
||||||
|
|
||||||
|
IMAGES[gid].orientation = orientation
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
// marks...
|
// marks...
|
||||||
// XXX toggle marking a block is not yet supported...
|
// XXX toggle marking a block is not yet supported...
|
||||||
|
|||||||
@ -106,6 +106,31 @@ body {
|
|||||||
border: solid red 5px;
|
border: solid red 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* image turning... */
|
||||||
|
/* NOTE: need to account for proportions after turning... */
|
||||||
|
.image[orientation="90"] {
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
-moz-transform: rotate(90deg);
|
||||||
|
-o-transform: rotate(90deg);
|
||||||
|
-ms-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
.image[orientation="180"] {
|
||||||
|
-webkit-transform: rotate(180deg);
|
||||||
|
-moz-transform: rotate(180deg);
|
||||||
|
-o-transform: rotate(180deg);
|
||||||
|
-ms-transform: rotate(180deg);
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
.image[orientation="270"] {
|
||||||
|
-webkit-transform: rotate(270deg);
|
||||||
|
-moz-transform: rotate(270deg);
|
||||||
|
-o-transform: rotate(270deg);
|
||||||
|
-ms-transform: rotate(270deg);
|
||||||
|
transform: rotate(270deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* dot mark... */
|
/* dot mark... */
|
||||||
.marks-visible.viewer .marked.image:after {
|
.marks-visible.viewer .marked.image:after {
|
||||||
display: block;
|
display: block;
|
||||||
@ -123,10 +148,22 @@ body {
|
|||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
background: blue;
|
background: blue;
|
||||||
}
|
}
|
||||||
|
.marks-visible.viewer .marked.image[orientation="90"]:after {
|
||||||
|
top: 5px;
|
||||||
|
right: 5px;
|
||||||
|
}
|
||||||
|
.marks-visible.viewer .marked.image[orientation="180"]:after {
|
||||||
|
top: 5px;
|
||||||
|
left: 5px;
|
||||||
|
}
|
||||||
|
.marks-visible.viewer .marked.image[orientation="270"]:after {
|
||||||
|
bottom: 5px;
|
||||||
|
left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
/* corner mark... (a-la bookmarks in PortableMag) */
|
/* corner mark... (a-la bookmarks in PortableMag) */
|
||||||
/*
|
/*
|
||||||
.marked.image:after {
|
.marks-visible.viewer .marked.image:after {
|
||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
content: "";
|
content: "";
|
||||||
@ -147,6 +184,18 @@ body {
|
|||||||
-ms-transform: rotate(45deg);
|
-ms-transform: rotate(45deg);
|
||||||
transform: rotate(45deg);
|
transform: rotate(45deg);
|
||||||
}
|
}
|
||||||
|
.marks-visible.viewer .marked.image[orientation="90"]:after {
|
||||||
|
top: -15px;
|
||||||
|
left: -15px;
|
||||||
|
}
|
||||||
|
.marks-visible.viewer .marked.image[orientation="180"]:after {
|
||||||
|
bottom: -15px;
|
||||||
|
left: -15px;
|
||||||
|
}
|
||||||
|
.marks-visible.viewer .marked.image[orientation="270"]:after {
|
||||||
|
bottom: -15px;
|
||||||
|
right: -15px;
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,7 @@ var KEYBOARD_CONFIG = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// help mode...
|
||||||
'.help-mode': {
|
'.help-mode': {
|
||||||
title: 'Help',
|
title: 'Help',
|
||||||
doc: 'NOTE: In this mode all other key bindings are disabled, except '+
|
doc: 'NOTE: In this mode all other key bindings are disabled, except '+
|
||||||
@ -170,6 +171,9 @@ var KEYBOARD_CONFIG = {
|
|||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
L: doc('Rotate image left', function(){ rotateLeft() }),
|
||||||
|
R: doc('Rotate image left', function(){ rotateRight() }),
|
||||||
|
|
||||||
|
|
||||||
// zooming...
|
// zooming...
|
||||||
'#1': doc('Fit one image', function(){ fitNImages(1) }),
|
'#1': doc('Fit one image', function(){ fitNImages(1) }),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user