diff --git a/3.0/modules/emboss/helpers/emboss.php b/3.0/modules/emboss/helpers/emboss.php
index 84c50aa2..e3a1c5ce 100644
--- a/3.0/modules/emboss/helpers/emboss.php
+++ b/3.0/modules/emboss/helpers/emboss.php
@@ -333,7 +333,7 @@ class emboss_Core {
$has_changes=0;
foreach ($images as $image) {
- $overlay_id = emboss::determine_best_overlay($image,$overlays);
+ $overlay_id = emboss::determine_best_overlay($image->width,$image->height,$overlays);
if($overlay_id < 0) {
$n_none++;
}
@@ -378,7 +378,7 @@ class emboss_Core {
}
}
- static function determine_best_overlay($image,$overlays=NULL)
+ static function determine_best_overlay($W,$H,$overlays=NULL)
{
if(!$overlays) {
$overlays = ORM::factory('emboss_overlay')->where('active','=',1)->find_all();
@@ -387,8 +387,8 @@ class emboss_Core {
$method = module::get_var('emboss','method');
$size = 0.01 * module::get_var('emboss','size');
- $W = $size * $image->width;
- $H = $size * $image->height;
+ $W *= $size;
+ $H *= $size;
$bestID = -1;
$bestScore=0;
@@ -454,6 +454,55 @@ class emboss_Core {
log::info('emboss','module uninstalled (database dropped/overlays removed)');
}
-
+ public function copy_orig_to_album($item,$delta)
+ {
+ $itempath = $item->file_path();
+ $origpath = str_replace(VARPATH.'albums/',VARPATH.'originals/',$itempath);
+
+ $q = db::build()
+ ->select('cur_rotation')
+ ->from('emboss_mappings')
+ ->where('image_id','=',$item->id)
+ ->execute();
+
+ $old_rot = $q[0]->cur_rotation;
+ $new_rot = ($old_rot + $delta + 360)%360;
+
+ db::build()
+ ->update('emboss_mappings')
+ ->where('image_id','=',$item->id)
+ ->set('cur_rotation',$new_rot)
+ ->execute();
+
+ @unlink($itempath);
+ @copy($origpath,$itempath);
+
+ Image::factory($itempath)
+ ->quality(module::get_var('gallery', 'image_quality'))
+ ->rotate($old_rot)
+ ->save($itempath);
+ }
+
+ public function reemboss_rotation($item)
+ {
+ // no, the following isn't backwards
+ // After rotation, width and height are swapped
+ // The $item object is from before rotation
+ $new_overlay = emboss::determine_best_overlay($item->height,$item->width);
+
+ db::build()
+ ->update('emboss_mappings')
+ ->where('image_id','=',$item->id)
+ ->set('best_overlay_id',$new_overlay)
+ ->execute();
+
+ db::build()
+ ->update('emboss_mappings')
+ ->where('image_id','=',$item->id)
+ ->set('cur_overlay_id',-1)
+ ->execute();
+
+ emboss::check_for_dirty();
+ }
}
diff --git a/3.0/modules/emboss/helpers/emboss_event.php b/3.0/modules/emboss/helpers/emboss_event.php
index c09c8f5d..188f2f4a 100644
--- a/3.0/modules/emboss/helpers/emboss_event.php
+++ b/3.0/modules/emboss/helpers/emboss_event.php
@@ -108,7 +108,7 @@ class emboss_event_Core {
$q = ORM::factory('emboss_mapping');
$q->image_id = $item->id;
- $q->best_overlay_id = emboss::determine_best_overlay($item);
+ $q->best_overlay_id = emboss::determine_best_overlay($item->width,$item->height);
$q->cur_overlay_id = -1;
$q->cur_gravity = '';
$q->cur_transparency = -1;
@@ -117,5 +117,14 @@ class emboss_event_Core {
emboss::check_for_dirty();
}
+ static function graphics_rotate($in,$out,$opts,$item)
+ {
+ emboss::copy_orig_to_album($item,$opts['degrees']);
+ }
+
+ static function graphics_rotate_completed($in,$out,$opts,$item)
+ {
+ emboss::reemboss_rotation($item);
+ }
}
diff --git a/3.0/modules/emboss/helpers/emboss_installer.php b/3.0/modules/emboss/helpers/emboss_installer.php
index 663d671f..09ce4897 100644
--- a/3.0/modules/emboss/helpers/emboss_installer.php
+++ b/3.0/modules/emboss/helpers/emboss_installer.php
@@ -45,9 +45,14 @@ class emboss_installer {
}
static function upgrade($version)
- {
- module::set_version('emboss',$verion=1);
- log::info('emboss',"Upgrade to version $version / No action taken");
+ {
+ $db = Database::instance();
+ if($version==1)
+ {
+ $db->query("ALTER TABLE {emboss_mappings} ADD COLUMN `cur_rotation` int(9) default 0");
+ module::set_version('emboss',2);
+ log::info('emboss',"Upgraded to version 2 / Added Column cur_rotation");
+ }
}
static function activate()
diff --git a/3.0/modules/emboss/helpers/emboss_task.php b/3.0/modules/emboss/helpers/emboss_task.php
index b0673b26..5dfbde7c 100644
--- a/3.0/modules/emboss/helpers/emboss_task.php
+++ b/3.0/modules/emboss/helpers/emboss_task.php
@@ -45,7 +45,8 @@ class emboss_task_Core {
foreach ($q as $item) {
$ids[] = array('id'=>$item->id,
'image_id'=>$item->image_id,
- 'overlay_id'=>$item->best_overlay_id);
+ 'overlay_id'=>$item->best_overlay_id,
+ 'rotation'=>$item->cur_rotation);
}
$count = count($ids);
@@ -75,7 +76,7 @@ class emboss_task_Core {
$current++;
$task->set('current',$current);
- emboss_task::do_embossing($id['id'],$id['image_id'],$id['overlay_id']);
+ emboss_task::do_embossing($id['id'],$id['image_id'],$id['overlay_id'],$id['rotation']);
if($current>=$count) {
$task->done = true;
@@ -101,7 +102,7 @@ class emboss_task_Core {
}
}
- static function do_embossing($id,$image_id,$overlay_id)
+ static function do_embossing($id,$image_id,$overlay_id,$rotation)
{
$gravity = module::get_var('emboss','gravity');
$transparency = module::get_var('emboss','transparency');
@@ -124,9 +125,26 @@ class emboss_task_Core {
$opts['position'] = $gravity;
$opts['transparency'] = 100-$transparency;
- log::info('emboss','Embossing '.$item->name.' with '.$overlay->name);
+ if($rotation==0)
+ {
+ log::info('emboss','Embossing '.$item->name.' with '.$overlay->name);
+ gallery_graphics::composite($orig,$path,$opts);
+ }
+ else
+ {
+ log::info('emboss','Embossing Rotation('.$rotation.') '.$item->name.' with '.$overlay->name);
+ $orig_path = explode('/',$orig);
+ $orig_name = array_pop($orig_path);
+ $orig_path = implode('/',$orig_path);
+ $rotpath = $orig_path.'/rotated_'.$orig_name;
- gallery_graphics::composite($orig,$path,$opts);
+ Image::factory($orig)
+ ->quality(module::get_var('gallery', 'image_quality'))
+ ->rotate($rotation)
+ ->save($rotpath);
+
+ gallery_graphics::composite($rotpath,$path,$opts);
+ }
}
$item->thumb_dirty = 1;
diff --git a/3.0/modules/emboss/module.info b/3.0/modules/emboss/module.info
index 14bb7231..1a44fe26 100644
--- a/3.0/modules/emboss/module.info
+++ b/3.0/modules/emboss/module.info
@@ -1,6 +1,6 @@
name = "Emboss"
description = "A different watermarking module"
-version = 1
+version = 2
author_name = "mikemayer67"
author_url = "http://www.vmwishes.com"
info_url = "http://codex.gallery2.org/Gallery3:Modules:emboss"
diff --git a/3.0/modules/emboss/views/admin_emboss.html.php b/3.0/modules/emboss/views/admin_emboss.html.php
index 86745948..bdc7839f 100644
--- a/3.0/modules/emboss/views/admin_emboss.html.php
+++ b/3.0/modules/emboss/views/admin_emboss.html.php
@@ -1,20 +1,21 @@
-/*************************************************************************
- * Copyright (C) 2012 Michel A. Mayer *
- * *
- * This program is free software: you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation, either version 3 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program. If not, see . *
- *************************************************************************/
+
+