67 lines
1.6 KiB
Java
67 lines
1.6 KiB
Java
package composite;
|
|
|
|
import java.awt.*;
|
|
|
|
/**
|
|
* This class describes a Porter-Duff rule.
|
|
*/
|
|
class Rule
|
|
{
|
|
private String name;
|
|
private String porterDuff1;
|
|
private String porterDuff2;
|
|
|
|
/**
|
|
* Constructs a Porter-Duff rule.
|
|
* @param n the rule name
|
|
* @param pd1 the first row of the Porter-Duff square
|
|
* @param pd2 the second row of the Porter-Duff square
|
|
*/
|
|
public Rule(String n, String pd1, String pd2)
|
|
{
|
|
name = n;
|
|
porterDuff1 = pd1;
|
|
porterDuff2 = pd2;
|
|
}
|
|
|
|
/**
|
|
* Gets an explanation of the behavior of this rule.
|
|
* @return the explanation
|
|
*/
|
|
public String getExplanation()
|
|
{
|
|
StringBuilder r = new StringBuilder("Source ");
|
|
if (porterDuff2.equals(" ")) r.append("clears");
|
|
if (porterDuff2.equals(" S")) r.append("overwrites");
|
|
if (porterDuff2.equals("DS")) r.append("blends with");
|
|
if (porterDuff2.equals(" D")) r.append("alpha modifies");
|
|
if (porterDuff2.equals("D ")) r.append("alpha complement modifies");
|
|
if (porterDuff2.equals("DD")) r.append("does not affect");
|
|
r.append(" destination");
|
|
if (porterDuff1.equals(" S")) r.append(" and overwrites empty pixels");
|
|
r.append(".");
|
|
return r.toString();
|
|
}
|
|
|
|
public String toString()
|
|
{
|
|
return name;
|
|
}
|
|
|
|
/**
|
|
* Gets the value of this rule in the AlphaComposite class.
|
|
* @return the AlphaComposite constant value, or -1 if there is no matching constant
|
|
*/
|
|
public int getValue()
|
|
{
|
|
try
|
|
{
|
|
return (Integer) AlphaComposite.class.getField(name).get(null);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
}
|