/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code 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 General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
private static final int RasterizerCaps[] = {
};
private static final int RasterizerCorners[] = {
};
float matrix[] = new float[4];
double dmatrix[] = new double[6];
for (int i = 0; i < 4; i++) {
}
return matrix;
}
/**
* {@inheritDoc}
*/
float width,
int caps,
int join,
float miterlimit,
float dashes[],
float dashphase)
{
try {
} else {
}
} finally {
}
}
}
/**
* {@inheritDoc}
*/
boolean thin,
boolean normalize,
boolean antialias,
{
if (!thin) {
}
}
bs.getMiterLimit());
}
}
try {
} catch (PathException e) {
throw new InternalError("Unable to Stroke shape ("+
e.getMessage()+")");
} finally {
}
}
}
/*
* Feed a path from a PathIterator to a Ductus PathConsumer.
*/
throws PathException
{
boolean pathClosed = false;
boolean skip = false;
boolean subpathStarted = false;
float mx = 0.0f;
float my = 0.0f;
float point[] = new float[6];
float ax = 0.0f;
float ay = 0.0f;
if (pathClosed == true) {
pathClosed = false;
// Force current point back to last moveto point
subpathStarted = true;
}
}
if (normalize) {
int index;
switch (type) {
case PathIterator.SEG_CUBICTO:
index = 4;
break;
case PathIterator.SEG_QUADTO:
index = 2;
break;
case PathIterator.SEG_MOVETO:
case PathIterator.SEG_LINETO:
index = 0;
break;
case PathIterator.SEG_CLOSE:
default:
index = -1;
break;
}
if (index >= 0) {
switch (type) {
case PathIterator.SEG_CUBICTO:
break;
case PathIterator.SEG_QUADTO:
break;
case PathIterator.SEG_MOVETO:
case PathIterator.SEG_LINETO:
case PathIterator.SEG_CLOSE:
break;
}
}
}
switch (type) {
case PathIterator.SEG_MOVETO:
/* Checking SEG_MOVETO coordinates if they are out of the
* [LOWER_BND, UPPER_BND] range. This check also handles NaN
* and Infinity values. Skipping next path segment in case of
* invalid data.
*/
{
subpathStarted = true;
skip = false;
} else {
skip = true;
}
break;
case PathIterator.SEG_LINETO:
/* Checking SEG_LINETO coordinates if they are out of the
* [LOWER_BND, UPPER_BND] range. This check also handles NaN
* and Infinity values. Ignoring current path segment in case
* of invalid data. If segment is skipped its endpoint
* (if valid) is used to begin new subpath.
*/
{
if (skip) {
subpathStarted = true;
skip = false;
} else {
}
}
break;
case PathIterator.SEG_QUADTO:
// Quadratic curves take two points
/* Checking SEG_QUADTO coordinates if they are out of the
* [LOWER_BND, UPPER_BND] range. This check also handles NaN
* and Infinity values. Ignoring current path segment in case
* of invalid endpoints's data. Equivalent to the SEG_LINETO
* if endpoint coordinates are valid but there are invalid data
* amoung other coordinates
*/
{
if (skip) {
subpathStarted = true;
skip = false;
} else {
{
} else {
}
}
}
break;
case PathIterator.SEG_CUBICTO:
// Cubic curves take three points
/* Checking SEG_CUBICTO coordinates if they are out of the
* [LOWER_BND, UPPER_BND] range. This check also handles NaN
* and Infinity values. Ignoring current path segment in case
* of invalid endpoints's data. Equivalent to the SEG_LINETO
* if endpoint coordinates are valid but there are invalid data
* amoung other coordinates
*/
{
if (skip) {
subpathStarted = true;
skip = false;
} else {
{
} else {
}
}
}
break;
case PathIterator.SEG_CLOSE:
if (subpathStarted) {
subpathStarted = false;
pathClosed = true;
}
break;
}
}
}
Rasterizer r = theRasterizer;
if (r == null) {
r = new Rasterizer();
} else {
}
return r;
}
r.reset();
theRasterizer = r;
}
/**
* {@inheritDoc}
*/
public float getMinimumAAPenSize() {
return MinPenSizeAA;
}
/**
* {@inheritDoc}
*/
boolean thin,
boolean normalize,
int bbox[])
{
Rasterizer r = getRasterizer();
if (thin) {
} else {
}
}
bs.getMiterLimit());
}
}
} else {
: Rasterizer.NZFILL);
}
r.beginPath();
{
boolean pathClosed = false;
boolean skip = false;
boolean subpathStarted = false;
float mx = 0.0f;
float my = 0.0f;
float point[] = new float[6];
float ax = 0.0f;
float ay = 0.0f;
if (pathClosed == true) {
pathClosed = false;
// Force current point back to last moveto point
subpathStarted = true;
}
}
if (normalize) {
int index;
switch (type) {
case PathIterator.SEG_CUBICTO:
index = 4;
break;
case PathIterator.SEG_QUADTO:
index = 2;
break;
case PathIterator.SEG_MOVETO:
case PathIterator.SEG_LINETO:
index = 0;
break;
case PathIterator.SEG_CLOSE:
default:
index = -1;
break;
}
if (index >= 0) {
switch (type) {
case PathIterator.SEG_CUBICTO:
break;
case PathIterator.SEG_QUADTO:
break;
case PathIterator.SEG_MOVETO:
case PathIterator.SEG_LINETO:
case PathIterator.SEG_CLOSE:
break;
}
}
}
switch (type) {
case PathIterator.SEG_MOVETO:
/* Checking SEG_MOVETO coordinates if they are out of the
* [LOWER_BND, UPPER_BND] range. This check also handles NaN
* and Infinity values. Skipping next path segment in case
* of invalid data.
*/
{
subpathStarted = true;
skip = false;
} else {
skip = true;
}
break;
case PathIterator.SEG_LINETO:
/* Checking SEG_LINETO coordinates if they are out of the
* [LOWER_BND, UPPER_BND] range. This check also handles
* NaN and Infinity values. Ignoring current path segment
* in case of invalid data. If segment is skipped its
* endpoint (if valid) is used to begin new subpath.
*/
{
if (skip) {
subpathStarted = true;
skip = false;
} else {
}
}
break;
case PathIterator.SEG_QUADTO:
// Quadratic curves take two points
/* Checking SEG_QUADTO coordinates if they are out of the
* [LOWER_BND, UPPER_BND] range. This check also handles
* NaN and Infinity values. Ignoring current path segment
* in case of invalid endpoints's data. Equivalent to the
* SEG_LINETO if endpoint coordinates are valid but there
* are invalid data amoung other coordinates
*/
{
if (skip) {
subpathStarted = true;
skip = false;
} else {
{
} else {
}
}
}
break;
case PathIterator.SEG_CUBICTO:
// Cubic curves take three points
/* Checking SEG_CUBICTO coordinates if they are out of the
* [LOWER_BND, UPPER_BND] range. This check also handles
* NaN and Infinity values. Ignoring current path segment
* in case of invalid endpoints's data. Equivalent to the
* SEG_LINETO if endpoint coordinates are valid but there
* are invalid data amoung other coordinates
*/
{
if (skip) {
subpathStarted = true;
skip = false;
} else {
{
} else {
}
}
}
break;
case PathIterator.SEG_CLOSE:
if (subpathStarted) {
r.closedSubpath();
subpathStarted = false;
pathClosed = true;
}
break;
}
}
}
try {
r.endPath();
r.getAlphaBox(bbox);
dropRasterizer(r);
return null;
}
} catch (PRException e) {
/*
* This exeption is thrown from the native part of the Ductus
* (only in case of a debug build) to indicate that some
* segments of the path have very large coordinates.
* See 4485298 for more info.
*/
}
return r;
}
/**
* {@inheritDoc}
*/
int bbox[])
{
// REMIND: Deal with large coordinates!
if (innerpgram) {
// Inner parallelogram was entirely consumed by stroke...
innerpgram = false;
}
} else {
}
Rasterizer r = getRasterizer();
r.beginPath();
r.beginSubpath((float) x, (float) y);
r.closedSubpath();
if (innerpgram) {
r.beginSubpath((float) x, (float) y);
r.closedSubpath();
}
try {
r.endPath();
r.getAlphaBox(bbox);
dropRasterizer(r);
return null;
}
} catch (PRException e) {
/*
* This exeption is thrown from the native part of the Ductus
* (only in case of a debug build) to indicate that some
* segments of the path have very large coordinates.
* See 4485298 for more info.
*/
}
return r;
}
try {
boolean pathClosed = false;
float mx = 0.0f;
float my = 0.0f;
float point[] = new float[6];
if (pathClosed == true) {
pathClosed = false;
// Force current point back to last moveto point
}
}
switch (type) {
case PathIterator.SEG_MOVETO:
break;
case PathIterator.SEG_LINETO:
break;
case PathIterator.SEG_QUADTO:
break;
case PathIterator.SEG_CUBICTO:
break;
case PathIterator.SEG_CLOSE:
pathClosed = true;
break;
}
}
} catch (PathException e) {
throw new InternalError("Unable to Stroke shape ("+
e.getMessage()+")");
}
}
boolean closed;
public FillAdapter() {
// Ductus only supplies float coordinates so
// Path2D.Double is not necessary here.
}
return path;
}
public void dispose() {
}
return null;
}
public void beginPath() {}
if (closed) {
closed = false;
}
}
}
}
}
public void closedSubpath() {
closed = true;
}
public void endPath() {
if (closed) {
closed = false;
}
}
throws PathException
{
}
public long getCPathConsumer() {
return 0;
}
}
}