Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (407)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Drawing a max length str...  (Read 634 times)
0 Members and 1 Guest are viewing this topic.
Offline appel

JGO Ninja


Medals: 35
Projects: 5


I always win!


« Posted 2011-09-29 13:44:20 »

I'm trying to find a way to draw a string so that is ends abruptly with ".." without much hassle.

So, let's imagine we have the string "Today is a sunny day." But we can only draw in a area of width 100 pixels, so because of that limit only "Today is a su.." is drawn.

So, what's the most right way to do this? Smiley

Check out the 4K competition @ www.java4k.com
Check out GAMADU (my own site) @ http://gamadu.com/
Offline nsigma
« Reply #1 - Posted 2011-09-29 15:25:53 »

Assuming Java2D?

Use FontMetrics to get the string bounds, and keep trying with a smaller String.

Or, have a look at the HtmlRenderer (GPL w/CPE or CDDL) class from NetBeans, which does this for plain Strings too.
Code - http://www.java2s.com/Open-Source/Java-Document/IDE-Netbeans/openide/org/openide/awt/HtmlRenderer.java.htm
JavaDoc - http://bits.netbeans.org/dev/javadoc/org-openide-awt/org/openide/awt/HtmlRenderer.html

NB.  Not sure how old that code link is.  Could also look in the NetBeans repo.

Best wishes, Neil

Praxis LIVE - Open-source graphical environment for developing intermedia performance tools, projections and interactive spaces.
Praxis LIVE on Twitter
Offline appel

JGO Ninja


Medals: 35
Projects: 5


I always win!


« Reply #2 - Posted 2011-09-29 15:50:50 »

Yea, Java2d. I am currently using FontMetric, and just brute-force checking how many characters I can render.

I was hoping there was something more automatic way of doing it, like:
StringDrawer.draw("Today is a sunny day.", 100, "..");

Looks like I'll have to day it using FontMetric.

Check out the 4K competition @ www.java4k.com
Check out GAMADU (my own site) @ http://gamadu.com/
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Online theagentd
« Reply #3 - Posted 2011-09-29 16:03:18 »

Well, you'll have to code it yourself. You can check the width of individual chars. The total string width should be the sum of all character in the string, there is no such guarantee if you check the FontMetrics Javadoc. Just brute force it, shouldn't be that slow unless you're doing it a lot, and cache the result. I mean, if you're doing window titles or something, only recalculate this when the window changes.

Myomyomyo.
Offline nsigma
« Reply #4 - Posted 2011-09-29 16:26:14 »

I was hoping there was something more automatic way of doing it, like:
StringDrawer.draw("Today is a sunny day.", 100, "..");

Well, that NetBeans class ain't far off that!  Smiley

Although it's only doing the brute force thing for you.  I assume you've noticed that FontMetrics can work with char[] as well as String so you don't need to keep creating objects - just ask because I hadn't until I saw the HtmlRenderer code.

Praxis LIVE - Open-source graphical environment for developing intermedia performance tools, projections and interactive spaces.
Praxis LIVE on Twitter
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars and Titan!

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (88 views)
2013-05-17 21:29:12

alaslipknot (96 views)
2013-05-16 21:24:48

gouessej (128 views)
2013-05-16 00:53:38

gouessej (123 views)
2013-05-16 00:17:58

theagentd (131 views)
2013-05-15 15:01:13

theagentd (119 views)
2013-05-15 15:00:54

StreetDoggy (161 views)
2013-05-14 15:56:26

kutucuk (184 views)
2013-05-12 17:10:36

kutucuk (185 views)
2013-05-12 15:36:09

UnluckyDevil (191 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!
Page created in 0.07 seconds with 21 queries.