本文整理汇总了Java中java.awt.font.GlyphVector.getGlyphPositions方法的典型用法代码示例。如果您正苦于以下问题:Java GlyphVector.getGlyphPositions方法的具体用法?Java GlyphVector.getGlyphPositions怎么用?Java GlyphVector.getGlyphPositions使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类java.awt.font.GlyphVector
的用法示例。
在下文中一共展示了GlyphVector.getGlyphPositions方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: samePositions
import java.awt.font.GlyphVector; //导入方法依赖的package包/类
private boolean samePositions(GlyphVector gv, int[] gvcodes,
int[] origCodes, float[] origPositions) {
int numGlyphs = gv.getNumGlyphs();
float[] gvpos = gv.getGlyphPositions(0, numGlyphs, null);
/* this shouldn't happen here, but just in case */
if (numGlyphs != gvcodes.length || /* real paranoia here */
origCodes.length != gvcodes.length ||
origPositions.length != gvpos.length) {
return false;
}
for (int i=0; i<numGlyphs; i++) {
if (gvcodes[i] != origCodes[i] || gvpos[i] != origPositions[i]) {
return false;
}
}
return true;
}
示例2: StandardGlyphVector
import java.awt.font.GlyphVector; //导入方法依赖的package包/类
/**
* Utility used by getStandardGV.
* Constructs a StandardGlyphVector from a generic glyph vector.
* Do not call this from new contexts without considering the comment
* about "userGlyphs".
*/
private StandardGlyphVector(GlyphVector gv, FontRenderContext frc) {
this.font = gv.getFont();
this.frc = frc;
initFontData();
int nGlyphs = gv.getNumGlyphs();
this.userGlyphs = gv.getGlyphCodes(0, nGlyphs, null);
if (gv instanceof StandardGlyphVector) {
/* userGlyphs will be OK because this is a private constructor
* and the returned instance is used only for rendering.
* It's not constructable by user code, nor returned to the
* application. So we know "userGlyphs" are valid as having
* been either already validated or are the result of layout.
*/
this.glyphs = userGlyphs;
} else {
this.glyphs = getValidatedGlyphs(this.userGlyphs);
}
this.flags = gv.getLayoutFlags() & FLAG_MASK;
if ((flags & FLAG_HAS_POSITION_ADJUSTMENTS) != 0) {
this.positions = gv.getGlyphPositions(0, nGlyphs + 1, null);
}
if ((flags & FLAG_COMPLEX_GLYPHS) != 0) {
this.charIndices = gv.getGlyphCharIndices(0, nGlyphs, null);
}
if ((flags & FLAG_HAS_TRANSFORMS) != 0) {
AffineTransform[] txs = new AffineTransform[nGlyphs]; // worst case
for (int i = 0; i < nGlyphs; ++i) {
txs[i] = gv.getGlyphTransform(i); // gv doesn't have getGlyphsTransforms
}
setGlyphTransforms(txs);
}
}
示例3: textOut
import java.awt.font.GlyphVector; //导入方法依赖的package包/类
private void textOut(String str,
Font font, PhysicalFont font2D,
FontRenderContext frc,
float deviceSize, int rotation, float awScale,
AffineTransform deviceTransform,
double scaleFactorX,
float userx, float usery,
float devx, float devy, float targetW) {
String family = font2D.getFamilyName(null);
int style = font.getStyle() | font2D.getStyle();
WPrinterJob wPrinterJob = (WPrinterJob)getPrinterJob();
boolean setFont = wPrinterJob.setFont(family, deviceSize, style,
rotation, awScale);
if (!setFont) {
super.drawString(str, userx, usery, font, frc, targetW);
return;
}
float[] glyphPos = null;
if (!okGDIMetrics(str, font, frc, scaleFactorX)) {
/* If there is a 1:1 char->glyph mapping then char positions
* are the same as glyph positions and we can tell GDI
* where to place the glyphs.
* On drawing we remove control chars so these need to be
* removed now so the string and positions are the same length.
* For other cases we need to pass glyph codes to GDI.
*/
str = wPrinterJob.removeControlChars(str);
char[] chars = str.toCharArray();
int len = chars.length;
GlyphVector gv = null;
if (!FontUtilities.isComplexText(chars, 0, len)) {
gv = font.createGlyphVector(frc, str);
}
if (gv == null) {
super.drawString(str, userx, usery, font, frc, targetW);
return;
}
glyphPos = gv.getGlyphPositions(0, len, null);
Point2D gvAdvPt = gv.getGlyphPosition(gv.getNumGlyphs());
/* GDI advances must not include device space rotation.
* See earlier comment in printGlyphVector() for details.
*/
AffineTransform advanceTransform =
new AffineTransform(deviceTransform);
advanceTransform.rotate(rotation*Math.PI/1800.0);
float[] glyphAdvPos = new float[glyphPos.length];
advanceTransform.transform(glyphPos, 0, //source
glyphAdvPos, 0, //destination
glyphPos.length/2); //num points
glyphPos = glyphAdvPos;
}
wPrinterJob.textOut(str, devx, devy, glyphPos);
}
示例4: textOut
import java.awt.font.GlyphVector; //导入方法依赖的package包/类
private void textOut(String str,
Font font, PhysicalFont font2D,
FontRenderContext frc,
float deviceSize, int rotation, float awScale,
double scaleFactorX, double scaleFactorY,
float userx, float usery,
float devx, float devy, float targetW) {
String family = font2D.getFamilyName(null);
int style = font.getStyle() | font2D.getStyle();
WPrinterJob wPrinterJob = (WPrinterJob)getPrinterJob();
boolean setFont = wPrinterJob.setFont(family, deviceSize, style,
rotation, awScale);
if (!setFont) {
super.drawString(str, userx, usery, font, frc, targetW);
return;
}
float[] glyphPos = null;
if (!okGDIMetrics(str, font, frc, scaleFactorX)) {
/* If there is a 1:1 char->glyph mapping then char positions
* are the same as glyph positions and we can tell GDI
* where to place the glyphs.
* On drawing we remove control chars so these need to be
* removed now so the string and positions are the same length.
* For other cases we need to pass glyph codes to GDI.
*/
str = wPrinterJob.removeControlChars(str);
char[] chars = str.toCharArray();
int len = chars.length;
GlyphVector gv = null;
if (!FontUtilities.isComplexText(chars, 0, len)) {
gv = font.createGlyphVector(frc, str);
}
if (gv == null) {
super.drawString(str, userx, usery, font, frc, targetW);
return;
}
glyphPos = gv.getGlyphPositions(0, len, null);
Point2D gvAdvPt = gv.getGlyphPosition(gv.getNumGlyphs());
/* GDI advances must not include device space rotation.
* See earlier comment in printGlyphVector() for details.
*/
AffineTransform advanceTransform =
AffineTransform.getScaleInstance(scaleFactorX, scaleFactorY);
float[] glyphAdvPos = new float[glyphPos.length];
advanceTransform.transform(glyphPos, 0, //source
glyphAdvPos, 0, //destination
glyphPos.length/2); //num points
glyphPos = glyphAdvPos;
}
wPrinterJob.textOut(str, devx, devy, glyphPos);
}