summaryrefslogtreecommitdiffstats
path: root/kjsembed/docs/examples/imunge/imunge_actions.js
diff options
context:
space:
mode:
Diffstat (limited to 'kjsembed/docs/examples/imunge/imunge_actions.js')
-rwxr-xr-xkjsembed/docs/examples/imunge/imunge_actions.js320
1 files changed, 320 insertions, 0 deletions
diff --git a/kjsembed/docs/examples/imunge/imunge_actions.js b/kjsembed/docs/examples/imunge/imunge_actions.js
new file mode 100755
index 00000000..586641d9
--- /dev/null
+++ b/kjsembed/docs/examples/imunge/imunge_actions.js
@@ -0,0 +1,320 @@
+
+//
+// Effect Browser
+//
+
+mw.create_effect_browser = function()
+{
+ this.effectsdlg = new QDialog( this );
+ var vb = new QVBoxLayout( this.effectsdlg );
+
+ this.effects = Factory.loadui( 'effectbrowser.ui', null, this.effectsdlg );
+ vb.addWidget( this.effects );
+}
+
+mw.add_action = function( act )
+{
+ var lv = this.effects.child( 'effects' );
+ var txt = act.text.replace( /&/g, '' );
+
+ lv.insertItem( txt );
+}
+
+mw.browse_effects = function()
+{
+ this.effects.child('preview').pixmap = lbl.pixmap;
+
+ this.effectsdlg.exec();
+}
+
+/**
+ * Creates the actions for the image effects and defines the functions that
+ * provide the implementations.
+ */
+mw.create_all_effects = function( mw, ac )
+{
+ this.imgfx = new ImageFX();
+
+ //
+ // Water color
+ //
+ var action = new KAction( ac, 'watercolor_action' );
+ action.text = '&Water Color';
+ action.icon = 'imageeffect';
+
+ mw.apply_watercolor = function()
+ {
+ this.img.setPixmap( lbl.pixmap );
+
+ this.img = this.imgfx.contrast(this.img, 200);
+ this.img = this.imgfx.despeckle(this.img);
+ this.img = this.imgfx.despeckle(this.img);
+ this.img = this.imgfx.despeckle(this.img);
+ this.img = this.imgfx.sharpen(this.img);
+
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_watercolor' );
+ this.add_action( action );
+
+ //
+ // To Gray
+ //
+ action = new KAction( ac, 'togray_action' );
+ action.text = '&Grayscale';
+ action.icon = 'imageeffect';
+
+ mw.apply_togray = function()
+ {
+ this.img = this.imgfx.toGray(this.img, false);
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_togray' );
+ this.add_action( action );
+
+ //
+ // Charcoal
+ //
+ action = new KAction( ac, 'charcoal_action' );
+ action.text = '&Charcoal';
+ action.icon = 'imageeffect';
+
+ mw.apply_charcoal = function()
+ {
+ this.img = this.imgfx.charcoal(this.img, 0.2);
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_charcoal' );
+ this.add_action( action );
+
+ //
+ // Implode
+ //
+ var action = new KAction( ac, 'implode_action' );
+ action.text = '&Implode';
+ action.icon = 'imageeffect';
+
+ mw.apply_implode = function()
+ {
+ this.img = this.imgfx.implode(this.img, 30, 'white');
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_implode' );
+ this.add_action( action );
+
+ //
+ // Emboss
+ //
+ action = new KAction( ac, 'emboss_action' );
+ action.text = '&Emboss';
+ action.icon = 'imageeffect';
+
+ mw.apply_emboss = function()
+ {
+ this.img = this.imgfx.emboss(this.img);
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_emboss' );
+ this.add_action( action );
+
+ //
+ // Normalize
+ //
+ action = new KAction( ac, 'normalize_action' );
+ action.text = '&Normalize';
+ action.icon = 'imageeffect';
+
+ mw.apply_normalize = function()
+ {
+ this.img = this.imgfx.normalize(this.img);
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_normalize' );
+ this.add_action( action );
+
+ //
+ // Equalize
+ //
+ action = new KAction( ac, 'equalize_action' );
+ action.text = 'Equa&lize';
+ action.icon = 'imageeffect';
+
+ mw.apply_equalize = function()
+ {
+ this.img = this.imgfx.equalize(this.img);
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_equalize' );
+ this.add_action( action );
+
+ //
+ // Despeckle
+ //
+ action = new KAction( ac, 'despeckle_action' );
+ action.text = '&Despeckle';
+ action.icon = 'imageeffect';
+
+ mw.apply_despeckle = function()
+ {
+ this.img = this.imgfx.despeckle(this.img);
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_despeckle' );
+ this.add_action( action );
+}
+
+mw.create_image_operations = function( mw, ac )
+{
+ var action;
+
+ //
+ // Crop
+ //
+ action = new KAction( ac, 'crop_action' );
+ action.text = 'Crop...';
+ action.icon = 'crop';
+
+ mw.crop_image = function()
+ {
+ lbl.mousePressEvent = function(ev)
+ {
+ lbl.startx = ev.x;
+ lbl.starty = ev.y;
+ lbl.lastx = ev.x;
+ lbl.lasty = ev.y;
+ }
+
+ lbl.mouseMoveEvent = function(ev)
+ {
+ if (
+ ( Math.abs( lbl.lastx - ev.x ) > 2 )
+ || ( Math.abs( lbl.lasty - ev.y ) > 2 )
+ ) {
+ this.repaint4( Math.min( lbl.lastx, lbl.startx ),
+ Math.min( lbl.lasty, lbl.starty ),
+ Math.abs( lbl.lastx - lbl.startx ),
+ Math.abs( lbl.lasty - lbl.starty ) );
+
+ this.drawLine( ev.x, ev.y, ev.x, lbl.starty );
+ this.drawLine( ev.x, lbl.starty, lbl.startx, lbl.starty );
+ this.drawLine( lbl.startx, lbl.starty, lbl.startx, ev.y );
+ this.drawLine( lbl.startx, ev.y, ev.x, ev.y );
+ lbl.lastx = ev.x;
+ lbl.lasty = ev.y;
+ }
+ }
+
+ lbl.mouseReleaseEvent = function(ev)
+ {
+ lbl.mousePressEvent = function(ev) {};
+ lbl.mouseMoveEvent = function(ev) {};
+ lbl.mouseReleaseEvent = function(ev) {};
+
+ var pix = new Pixmap();
+ var w = Math.abs( ev.x - lbl.startx );
+ var h = Math.abs( ev.y - lbl.starty );
+ pix.resize( w, h );
+
+// var p = new Painter();
+// p.setDevice( lbl );
+// p.drawRect( w/2, h/2, w/4, h/4 );
+
+ mw.img.setPixmap( pix );
+ mw.update_view();
+
+// var pix = lbl.pixmap;
+// pix.resize( Math.abs( ev.x - lbl.startx ), Math.abs( ev.y - lbl.starty ) );
+// mw.img.setPixmap( pix );
+// mw.update_view();
+ }
+
+ }
+
+ action.connect( action, 'activated()', this, 'crop_image' );
+
+ //
+ // Resize
+ //
+ action = new KAction( ac, 'resize_action' );
+ action.text = 'Resize...';
+ action.icon = 'transform';
+
+ mw.resize_image = function()
+ {
+ var dlg = Factory.loadui( 'resizeparams.ui', null, this );
+ if ( !dlg.exec() ) {
+ return;
+ }
+ this.img.smoothScale( dlg.child('width_input').value,
+ dlg.child('height_input').value );
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', this, 'resize_image' );
+
+ //
+ // Rotate right
+ //
+ action = new KAction( ac, 'rotate_right_action' );
+ action.text = 'Rotate &Right';
+ action.icon = 'rotate_cw';
+
+ mw.apply_rotate_right = function()
+ {
+ this.img = this.imgfx.rotate( this.img, this.imgfx.Rotate90 );
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_rotate_right' );
+
+ //
+ // Rotate left
+ //
+ action = new KAction( ac, 'rotate_left_action' );
+ action.text = 'Rotate &Left';
+ action.icon = 'rotate';
+
+ mw.apply_rotate_left = function()
+ {
+ this.img = this.imgfx.rotate( this.img, this.imgfx.Rotate90 );
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_rotate_left' );
+
+ //
+ // Mirror Vertical
+ //
+ action = new KAction( ac, 'mirror_vertical_action' );
+ action.text = 'Mirror &Vertical';
+
+ mw.apply_mirror_vertical = function()
+ {
+ this.img.mirror( false, true );
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_mirror_vertical' );
+
+ //
+ // Mirror Horizontal
+ //
+ action = new KAction( ac, 'mirror_horizontal_action' );
+ action.text = 'Mirror &Horizontal';
+
+ mw.apply_mirror_horizontal = function()
+ {
+ this.img.mirror( true, false );
+ this.update_view();
+ }
+
+ action.connect( action, 'activated()', mw, 'apply_mirror_horizontal' );
+}