Package com.jogamp.graph.curve.opengl
Class TextRegionUtil
java.lang.Object
com.jogamp.graph.curve.opengl.TextRegionUtil
Text
GLRegion Utility Class-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intDefault cache limit, seesetCacheLimit(int)final intfinal jogamp.graph.geom.plane.AffineTransformfinal jogamp.graph.geom.plane.AffineTransform -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddStringToRegion(GLRegion region, Vertex.Factory<? extends Vertex> vertexFactory, Font font, float pixelSize, CharSequence str, float[] rgbaColor, jogamp.graph.geom.plane.AffineTransform temp1, jogamp.graph.geom.plane.AffineTransform temp2) Add the string in 3D space w.r.t.voidClear all cachedGLRegions.static voiddrawString3D(GL2ES2 gl, int renderModes, RegionRenderer renderer, Font font, float pixelSize, CharSequence str, float[] rgbaColor, int[] sampleCount, jogamp.graph.geom.plane.AffineTransform temp1, jogamp.graph.geom.plane.AffineTransform temp2) Render the string in 3D space w.r.t.static voiddrawString3D(GL2ES2 gl, GLRegion region, RegionRenderer renderer, Font font, float pixelSize, CharSequence str, float[] rgbaColor, int[] sampleCount, jogamp.graph.geom.plane.AffineTransform temp1, jogamp.graph.geom.plane.AffineTransform temp2) Render the string in 3D space w.r.t.voiddrawString3D(GL2ES2 gl, RegionRenderer renderer, Font font, float pixelSize, CharSequence str, float[] rgbaColor, int[] sampleCount) Render the string in 3D space w.r.t.final intfinal intstatic intgetCharCount(String s, char c) static voidprocessString(TextRegionUtil.ShapeVisitor visitor, jogamp.graph.geom.plane.AffineTransform transform, Font font, float pixelSize, CharSequence str, jogamp.graph.geom.plane.AffineTransform temp1, jogamp.graph.geom.plane.AffineTransform temp2) Visit eachFont.Glyph'sOutlineShapewith the givenTextRegionUtil.ShapeVisitoradditionally passing the progressedAffineTransform.final voidsetCacheLimit(int newLimit) Sets the cache limit for reusing GlyphString's and their Region.final voidsetCacheLimit(GL2ES2 gl, int newLimit) Sets the cache limit, seesetCacheLimit(int)and validates the cache.
-
Field Details
-
renderModes
public final int renderModes -
DEFAULT_CACHE_LIMIT
public static final int DEFAULT_CACHE_LIMITDefault cache limit, seesetCacheLimit(int)- See Also:
-
tempT1
public final jogamp.graph.geom.plane.AffineTransform tempT1 -
tempT2
public final jogamp.graph.geom.plane.AffineTransform tempT2
-
-
Constructor Details
-
TextRegionUtil
public TextRegionUtil(int renderModes)
-
-
Method Details
-
getCharCount
-
processString
public static void processString(TextRegionUtil.ShapeVisitor visitor, jogamp.graph.geom.plane.AffineTransform transform, Font font, float pixelSize, CharSequence str, jogamp.graph.geom.plane.AffineTransform temp1, jogamp.graph.geom.plane.AffineTransform temp2) Visit eachFont.Glyph'sOutlineShapewith the givenTextRegionUtil.ShapeVisitoradditionally passing the progressedAffineTransform. The latter reflects the given font metric, pixelSize and hence character position.- Parameters:
visitor-transform- optional given transformfont- the targetFontpixelSize- UseFont.getPixelSize(float, float)for resolution correct pixel-size.str- string texttemp1- temporary AffineTransform storage, mandatory, will be passed toTextRegionUtil.ShapeVisitor.visit(OutlineShape, AffineTransform)and can be modified.temp2- temporary AffineTransform storage, mandatory, can be re-used inTextRegionUtil.ShapeVisitor.visit(OutlineShape, AffineTransform)by user code.
-
addStringToRegion
public static void addStringToRegion(GLRegion region, Vertex.Factory<? extends Vertex> vertexFactory, Font font, float pixelSize, CharSequence str, float[] rgbaColor, jogamp.graph.geom.plane.AffineTransform temp1, jogamp.graph.geom.plane.AffineTransform temp2) Add the string in 3D space w.r.t. the font and pixelSize at the end of theGLRegion.- Parameters:
region- theGLRegionsinkvertexFactory- vertex impl factoryVertex.Factoryfont- the targetFontpixelSize- UseFont.getPixelSize(float, float)for resolution correct pixel-size.str- string textrgbaColor- ifRegion.hasColorChannel()RGBA color must be passed, otherwise value is ignored.temp1- temporary AffineTransform storage, mandatorytemp2- temporary AffineTransform storage, mandatory
-
drawString3D
public void drawString3D(GL2ES2 gl, RegionRenderer renderer, Font font, float pixelSize, CharSequence str, float[] rgbaColor, int[] sampleCount) Render the string in 3D space w.r.t. the font and pixelSize using a cachedGLRegionfor reuse.Cached
GLRegions will be destroyed w/clear(GL2ES2)or to free memory.- Parameters:
gl- the current GL staterenderer- TODOfont-Fontto be usedpixelSize- UseFont.getPixelSize(float, float)for resolution correct pixel-size.str- text to be renderedrgbaColor- ifRegion.hasColorChannel()RGBA color must be passed, otherwise value is ignored.sampleCount- desired multisampling sample count for msaa-rendering. The actual used scample-count is written back when msaa-rendering is enabled, otherwise the store is untouched.- Throws:
Exception- if TextRenderer not initialized
-
drawString3D
public static void drawString3D(GL2ES2 gl, int renderModes, RegionRenderer renderer, Font font, float pixelSize, CharSequence str, float[] rgbaColor, int[] sampleCount, jogamp.graph.geom.plane.AffineTransform temp1, jogamp.graph.geom.plane.AffineTransform temp2) Render the string in 3D space w.r.t. the font and pixelSize using a temporaryGLRegion, which will be destroyed afterwards.In case of a multisampling region renderer, i.e.
Region.VBAA_RENDERING_BIT, recreating theGLRegionis a huge performance impact. In such case better usedrawString3D(GL2ES2, GLRegion, RegionRenderer, Font, float, CharSequence, float[], int[], AffineTransform, AffineTransform)instead.- Parameters:
gl- the current GL staterenderModes- TODOfont-Fontto be usedpixelSize- UseFont.getPixelSize(float, float)for resolution correct pixel-size.str- text to be renderedrgbaColor- ifRegion.hasColorChannel()RGBA color must be passed, otherwise value is ignored.sampleCount- desired multisampling sample count for msaa-rendering. The actual used scample-count is written back when msaa-rendering is enabled, otherwise the store is untouched.temp1- temporary AffineTransform storage, mandatorytemp2- temporary AffineTransform storage, mandatory- Throws:
Exception- if TextRenderer not initialized
-
drawString3D
public static void drawString3D(GL2ES2 gl, GLRegion region, RegionRenderer renderer, Font font, float pixelSize, CharSequence str, float[] rgbaColor, int[] sampleCount, jogamp.graph.geom.plane.AffineTransform temp1, jogamp.graph.geom.plane.AffineTransform temp2) Render the string in 3D space w.r.t. the font and pixelSize using the givenGLRegion, which willclearedbeforehand.- Parameters:
gl- the current GL statefont-Fontto be usedpixelSize- UseFont.getPixelSize(float, float)for resolution correct pixel-size.str- text to be renderedrgbaColor- ifRegion.hasColorChannel()RGBA color must be passed, otherwise value is ignored.sampleCount- desired multisampling sample count for msaa-rendering. The actual used scample-count is written back when msaa-rendering is enabled, otherwise the store is untouched.temp1- temporary AffineTransform storage, mandatorytemp2- temporary AffineTransform storage, mandatory- Throws:
Exception- if TextRenderer not initialized
-
clear
Clear all cachedGLRegions. -
setCacheLimit
public final void setCacheLimit(int newLimit) Sets the cache limit for reusing GlyphString's and their Region. Default is
DEFAULT_CACHE_LIMIT, -1 unlimited, 0 turns cache off, >0 limitedThe cache will be validate when the next string rendering happens.
- Parameters:
newLimit- new cache size- See Also:
-
setCacheLimit
Sets the cache limit, seesetCacheLimit(int)and validates the cache.- Parameters:
gl- current GL used to remove cached objects if requirednewLimit- new cache size- See Also:
-
getCacheLimit
public final int getCacheLimit()- Returns:
- the current cache limit
-
getCacheSize
public final int getCacheSize()- Returns:
- the current utilized cache size, <=
getCacheLimit()
-