[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[platform-swt-dev] How to create a Path using PathData ?
|
Hi all,
the org.eclipse.swt.graphics.Path has a method called getPathData()
returning "a device independent representation" of the path. Unfortunatly
there is no setPathData() method. I've tried something like this to create a
Path using the PathData.points and PathData.types arrays :
public void loadPath(Path path,float[] points,byte[] types) {
int j=0;
for (int i=0; i<types.length; i++) {
float x,y,x2,y2,x3,y3;
switch (types[i]) {
case SWT.PATH_MOVE_TO:
x = points[j++];
y = points[j++];
path.moveTo(x,y);
break;
case SWT.PATH_LINE_TO:
x = points[j++];
y = points[j++];
path.moveTo(x,y);
break;
case SWT.PATH_CUBIC_TO:
x = points[j++];
y = points[j++];
x2 = points[j++];
y2 = points[j++];
x3 = points[j++];
y3 = points[j++];
path.cubicTo(x,y,x2,y2,x3,y3);
break;
case SWT.PATH_QUAD_TO: // never used ???
x = points[j++];
y = points[j++];
x2 = points[j++];
y2 = points[j++];
path.quadTo(x,y,x2,y2);
break;
case SWT.PATH_CLOSE:
path.close();
break;
default:
break;
}
}
}
To test this method I do simply the following:
Path path= new Path(null);
Font font =new Font(null,"times",40,0);
path.addString("ZABCD",50,50,font);
Path path2= new Path(null);
loadPath(path2,path.getPathData().points,path.getPathData().types);
gc.drawPath(path2);
And the result is : BCD characters are well rendered but non Z and A ! (In
fact using another font only C remains correct !)
What's wrong with my loadPath() method ? Perhaps something's wrong with the
"PATH_CLOSE" and subpaths ? Or is there a known bug ?
Thanks
Thomas