~ubuntu-branches/ubuntu/oneiric/gimp/oneiric-updates

« back to all changes in this revision

Viewing changes to plug-ins/common/edge-dog.c

  • Committer: Package Import Robot
  • Author(s): Sebastien Bacher
  • Date: 2010-11-18 17:25:42 UTC
  • mfrom: (1.1.24) (0.4.7 sid)
  • Revision ID: package-import@ubuntu.com-20101118172542-dq82nx82sjgv0o0u
Tags: 2.6.11-1ubuntu1
* Resync on Debian
* debian/patches/02_help-message.patch,
  debian/patches/03_gimp.desktop.in.in.patch:
   - updated some strings for ubuntu
* debian/control: updated description
* debian/rules:
    - updated translation templates

Show diffs side-by-side

added added

removed removed

Lines of Context:
70
70
                                       GimpDrawable *drawable2,
71
71
                                       guchar       *maxval);
72
72
 
73
 
static void      normalize            (GimpDrawable *drawable,
74
 
                                       guint         maxval);
 
73
static void      normalize_invert     (GimpDrawable *drawable,
 
74
                                       gboolean      normalize,
 
75
                                       guint         maxval,
 
76
                                       gboolean      invert);
75
77
 
76
78
static void      dog                  (gint32        image_ID,
77
79
                                       GimpDrawable *drawable,
493
495
  gimp_drawable_merge_shadow (drawable_id, TRUE);
494
496
  gimp_drawable_update (drawable_id, x1, y1, width, height);
495
497
 
496
 
  if (dogvals.normalize)
 
498
  if (dogvals.normalize || dogvals.invert)
 
499
    /* gimp_invert doesn't work properly with previews due to shadow handling
 
500
     * so reimplement it here - see Bug 557380
 
501
     */
497
502
    {
498
 
      normalize (drawable, maxval);
 
503
      normalize_invert (drawable, dogvals.normalize, maxval, dogvals.invert);
499
504
      gimp_drawable_flush (drawable);
500
505
      gimp_drawable_merge_shadow (drawable_id, TRUE);
501
506
      gimp_drawable_update (drawable_id, x1, y1, width, height);
502
507
    }
503
 
 
504
 
  if (dogvals.invert)
505
 
    gimp_invert (drawable_id);
506
508
}
507
509
 
508
510
 
593
595
 
594
596
 
595
597
static void
596
 
normalize (GimpDrawable *drawable,
597
 
           guint         maxval)
 
598
normalize_invert (GimpDrawable *drawable,
 
599
                  gboolean      normalize,
 
600
                  guint         maxval,
 
601
                  gboolean      invert)
598
602
{
599
603
  GimpPixelRgn src_rgn, dest_rgn;
600
604
  gint         bpp;
604
608
  gboolean     has_alpha;
605
609
  gdouble      factor;
606
610
 
607
 
  if (maxval == 0)
608
 
    return;
 
611
  if (normalize && maxval != 0) {
 
612
      factor = 255.0 / maxval;
 
613
    }
609
614
  else
610
 
    factor = 255.0 / maxval;
 
615
    factor = 1.0;
611
616
 
612
617
  gimp_drawable_mask_bounds (drawable->drawable_id, &x1, &y1, &x2, &y2);
613
618
  bpp = drawable->bpp;
640
645
              if (has_alpha)
641
646
                {
642
647
                  for (k = 0; k < bpp-1; k++)
643
 
                    d[k] = factor * s[k];
 
648
                    {
 
649
                      d[k] = factor * s[k];
 
650
                      if (invert)
 
651
                        d[k] = 255 - d[k];
 
652
                    }
644
653
                }
645
654
              else
646
655
                {
647
656
                  for (k = 0; k < bpp; k++)
648
 
                    d[k] = factor * s[k];
 
657
                    {
 
658
                      d[k] = factor * s[k];
 
659
                      if (invert)
 
660
                        d[k] = 255 - d[k];
 
661
                    }
649
662
                }
650
663
 
651
664
              s += bpp;