summaryrefslogtreecommitdiff
path: root/java/ImageProcessing/filters/DarkenFilter.java
blob: ea20d15a46b65b8ec8af3eaae0c91c2596386152 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package imaging.filters;

import java.awt.image.*;

public class DarkenFilter extends RGBImageFilter implements MedFilter
{
  private int percent_;

  public DarkenFilter ()
  {  
    percent_ = 50;
    canFilterIndexColorModel = true;
  }

  public DarkenFilter(int percent)
  {  
    Assert.notFalse(percent >= 0 && percent <= 100);
    percent_ = percent;
    canFilterIndexColorModel = true;
  }

  public String info ()
  {
    return "Darkens an image.";
  }

  public int filterRGB(int x, int y, int rgb)
  {
    DirectColorModel cm = 
      (DirectColorModel)ColorModel.getRGBdefault();
    
    int    alpha = cm.getAlpha(rgb);
    int    red   = cm.getRed  (rgb);
    int    green = cm.getGreen(rgb);
    int    blue  = cm.getBlue (rgb);
    double percentMultiplier = (double)((double)1.0 - (double)percent_/100);

    red   *=  percentMultiplier;
    blue   *= percentMultiplier;
    green  *= percentMultiplier;
    
    alpha = alpha << 24;
    red   = red   << 16;
    green = green << 8;
    
    return alpha | red | green | blue;
  }
}