package org.icepdf.core.pobjects.graphics;
import org.icepdf.core.pobjects.Stream;
import org.icepdf.core.util.Library;
import java.awt.*;
import java.awt.geom.Point2D;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Logger;
/**
* Coons Patch Meshes support.
*
* Note: currently only parsing data and returning the first colour of the first vertex.
*
* @since 6.2
*/
public class ShadingType6Pattern extends ShadingMeshPattern {
private static final Logger logger =
Logger.getLogger(ShadingType6Pattern.class.toString());
private ArrayList<Point2D.Float> coordinates = new ArrayList<Point2D.Float>();
private ArrayList<Color> colorComponents = new ArrayList<Color>();
public ShadingType6Pattern(Library l, HashMap h, Stream meshDataStream) {
super(l, h, meshDataStream);
}
public void init(GraphicsState graphicsState) {
coordinates = new ArrayList<Point2D.Float>();
colorComponents = new ArrayList<Color>();
try {
while (vertexBitStream.available() > 0) {
int flag = readFlag();
// read control points.
for (int i = 0, ii = (flag != 0 ? 8 : 12); i < ii; i++) {
coordinates.add(readCoord());
}
for (int i = 0, ii = (flag != 0 ? 2 : 4); i < ii; i++) {
colorComponents.add(readColor());
}
}
} catch (IOException e) {
logger.warning("Error parsing Shading type 6 pattern vertices.");
}
}
public Paint getPaint() throws InterruptedException {
return colorComponents.get(0);
}
}