/*
* HaoRan ImageFilter Classes v0.4
* 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;
import android.app.Activity;
public class FillPatternFilter implements IImageFilter{
private Image pattern;
private float Mixture = 0.2f;//0.5f
public FillPatternFilter(Activity activity, int resourceId)
{
this.pattern = Image.LoadImage(activity, resourceId);
}
public FillPatternFilter(Activity activity, int resourceId, int Mixture)
{
this.pattern = Image.LoadImage(activity, resourceId);
this.Mixture = Mixture;
}
public Image process(Image imageIn)
{
int mix1 = (int) (Mixture * 255f);
int mix2 = 255 - mix1;
int r, g, b, r1, g1, b1;
for (int x = 0; x < imageIn.getWidth(); x++)
{
for (int y = 0; y < imageIn.getHeight(); y++)
{
int xx = x % pattern.getWidth();
int yy = y % pattern.getHeight();
r = imageIn.getRComponent(x, y);
g = imageIn.getGComponent(x, y);
b = imageIn.getBComponent(x, y);
r1 = Image.SAFECOLOR(r + pattern.getRComponent(xx, yy));
g1 = Image.SAFECOLOR(g + pattern.getGComponent(xx, yy));
b1 = Image.SAFECOLOR(b + pattern.getBComponent(xx, yy));
r = (r * mix2) + (r1 * mix1);
g = (g * mix2) + (g1 * mix1);
b = (b * mix2) + (b1 * mix1);
imageIn.setPixelColor(x, y, r >> 8, g >> 8, b >> 8);
}
}
return imageIn;
}
}