Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* ===========================================
* Java Pdf Extraction Decoding Access Library
* ===========================================
*
* Project Info: http://www.idrsolutions.com
* Help section for developers at http://www.idrsolutions.com/support/
*
* (C) Copyright 1997-2017 IDRsolutions and Contributors.
*
* This file is part of JPedal/JPDF2HTML5
*
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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* ---------------
* CompositeUtil.java
* ---------------
*/
package org.jpedal.color;
public class CompositeUtil {
public static float composite(final float aS, final float aB, final float aR, final float cS, final float cB, final float blendRes) {
final float ratioA = aS / aR;
return (1 - ratioA) * cB + ratioA * ((1 - aB) * cS + aB * blendRes);
}
public static float unionBS(final float s, final float b) {
return b + s - (b * s);
}
public static float findFR(final float fs, final float fb) {
return unionBS(fs, fb);
}
public static float findQR(final float fs, final float fb, final float qs, final float qb) {
return unionBS(fb * qb, fs * qs) / unionBS(fs, fb);
}
public static float blendMultiply(final float cS, final float cB) {
return cB * cS;
}
public static float blendScreen(final float cS, final float cB) {
final float kk = cB + cS - (cB * cS);
return kk;
}
public static float blendOverLay(final float cS, final float cB) {
return blendHardLight(cB, cS);
}
public static float blendDarken(final float cS, final float cB) {
return Math.min(cS, cB);
}
public static float blendLighten(final float cS, final float cB) {
return Math.max(cS, cB);
}
public static float blendColorDodge(final float cS, final float cB) {
if (cS == 1) {
return 1;
} else {
return Math.min(1, cB / (1 - cS));
}
}
public static float blendColorBurn(final float cS, final float cB) {
if (cS == 0) {
return 0;
} else {
return 1f - Math.min(1, (1 - cB) / cS);
}
}
public static float blendHardLight(final float cS, final float cB) {
if (cS <= 0.5f) {
return blendMultiply(cB, 2 * cS);
} else {
return blendScreen(cB, 2 * cS - 1);
}
}
public static float blendSoftLight(final float cS, final float cB) {
if (cS <= 0.5f) {
return cB - (1 - 2 * cS) * cB * (1 - cB);
} else {
return cB + (2 * cS - 1) * (blendDX(cB) - cB);
}
}
private static float blendDX(final float x) {
if (x <= 0.25f) {
return ((16 * x - 12) * x + 4) * x;
} else {
return (float) Math.sqrt(x);
}
}
public static float blendDifference(final float cS, final float cB) {
return Math.abs(cB - cS);
}
public static float blendExclusion(final float cS, final float cB) {
return cB + cS - 2 * cB * cS;
}
}