/*
* HaoRan ImageFilter Classes v0.1
* Copyright (C) 2012 Zhenjun Dai
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by the
* Free Software Foundation; either version 2.1 of the License, or (at your
* option) any later version.
*
* This library 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 Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation.
*/
package com.marshalchen.common.uimodule.ImageFilter;
public class MonitorFilter implements IImageFilter {
//@Override
public Image process(Image imageIn) {
int r,g,b;
for (int x = 0; x < imageIn.getWidth(); x++) {
for (int y = 0; y < imageIn.getHeight(); y+=3) {
r=0;
g=0;
b=0;
for(int w=0; w<3; w++){
if(y+w < imageIn.getHeight() ){
r += (imageIn.getRComponent(x, y+w))/2;
g += (imageIn.getGComponent(x, y+w))/2;
b += (imageIn.getBComponent(x, y+w))/2;
}
}
r = getValidInterval(r);
g = getValidInterval(g);
b = getValidInterval(b);
for(int w=0; w<3; w++){
if(y+w < imageIn.getHeight()){
if(w == 0){
imageIn.setPixelColor(x,y+w,r,0,0);
}
else if(w ==1){
imageIn.setPixelColor(x,y+w,0,g,0);
}
else if(w==2){
imageIn.setPixelColor(x,y+w,0,0,b);
}
}
}
}
}
return imageIn;
}
/**
* method to calculate an appropriate interval for flicker lines
*
* @param a_value
* @return
*/
public int getValidInterval(int a_value){
if(a_value < 0) return 0;
if(a_value > 255) return 255;
return a_value;
}
}