• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: How to calculate diagonal size of text?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to calculate diagonal size of text?


  • Subject: Re: How to calculate diagonal size of text?
  • From: Ricky Sharp <email@hidden>
  • Date: Sat, 26 Aug 2006 08:23:45 -0500


On Aug 26, 2006, at 7:41 AM, Keith Blount wrote:

My application has a corkboard view which displays a
number of index cards. Each index card has a title,
text, label and status associated with it. The title
and text are the index card's contents, and the label
is a colour associated with it that is drawn as a
coloured pin.

One of my users has just made the rather excellent
suggestion that the status should be displayed as a
"stamp", that is, transparent red text drawn
diagonally across the index card. I would like to
implement this, but have a couple of questions on how
to go about it.

Presumably, I am going to use NSAffineTransform to
rotate the drawing and then draw my string in the
usual way. That part should be fine. What I am
confused about is how to calculate the size of the
string when it has to be drawn diagonally - this part
is probably just a maths failing on my part. Obviously
I can calculate the diagonal size of my index card,
but it has to take into account the height of the
string, too. What is the best way to do this?

More importantly, the strings drawn can be of varying
lengths, but they should always be shrunk to fit into
the card diagonally. How can I get the diagonal size
for my string and then shrink the string to make sure
that the font is of just the right size so that the
whole string can be drawn?

It's just math, as you've stated. If the text had a height that was zero, it's width would be the length of the card's diagonal.


What I'd do in your case is to just hand-draw things out. Perhaps start out by inscribing a rectangle within a square. Note that the height of the rectangle (text height) will drive things. I would pick the font size that you would not want to go below and use that as an initial rectangle height. You may also want to pick a maximum font size to use as well.

Using trig, you can then compute the width of the rectangle (string width) that will fit within your square. If this width is less than the actual text width at the current font size, pick a new font size. Perhaps use a binary search here to converge on the font size.

When you get that all worked out, it will be a simple extension to apply the equations to a card that has unequal width/height (i.e. not a square).

I would imagine you could google for the equations; perhaps search on "inscribe rectangle".

___________________________________________________________
Ricky A. Sharp         mailto:email@hidden
Instant Interactive(tm)   http://www.instantinteractive.com

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >How to calculate diagonal size of text? (From: Keith Blount <email@hidden>)

  • Prev by Date: How to calculate diagonal size of text?
  • Next by Date: Re: NSSavePanel, NSOpenPanel... Where is NSChoosePanel?
  • Previous by thread: How to calculate diagonal size of text?
  • Next by thread: Re: How to calculate diagonal size of text?
  • Index(es):
    • Date
    • Thread