QB64 Phoenix Edition
Is there an inconsistency in the Locate function? - Printable Version

+- QB64 Phoenix Edition (https://staging.qb64phoenix.com)
+-- Forum: QB64 Rising (https://staging.qb64phoenix.com/forumdisplay.php?fid=1)
+--- Forum: Code and Stuff (https://staging.qb64phoenix.com/forumdisplay.php?fid=3)
+---- Forum: Help Me! (https://staging.qb64phoenix.com/forumdisplay.php?fid=10)
+---- Thread: Is there an inconsistency in the Locate function? (/showthread.php?tid=1699)



Is there an inconsistency in the Locate function? - PhilOfPerth - 05-25-2023

The result of running the small snippet of code below confuses me! I would expect Locate to use the first two arguments to set the column and row for text position, 
but it uses the first for the vertical row position, and the second, not as the column but as a number to be determined from the font size. 
I know, I'm easily confused, but can someone explain this to me?

PHP Code:
Screen _NewImage(128096032)
f& = _LoadFont("c:\WINDOWS\Fonts\arial.ttf"28)
_Font f&
 
                                                                                                     
Locate 31, 400
I would expect this to be an invalid horizontal position
Print "This text location is row 31, column 400";
' but it uses the pixel position, and prints it there!
Sleep 



RE: Is there an inconsistency in the Locate function? - SMcNeill - 05-25-2023

You're not using a monospaced font.  With variable width fonts, locate positions by pixel -- not column.

Add "monospace" to the loadfont statement and see the difference.


RE: Is there an inconsistency in the Locate function? - PhilOfPerth - 05-25-2023

I think I get it. Thanks Steve.


RE: Is there an inconsistency in the Locate function? - TempodiBasic - 05-25-2023

Great Steve, you uniformizes the dimensions of the characters of a font file!

@PhiloFPerth
you can get the reason here in the wiki

Quote:
  • In _NEWIMAGE graphic screen the number of text rows are calculated as _HEIGHT \ 16 except when a _FONT is used. Use _FONTHEIGHT to calculate font rows.
  • _NEWIMAGE graphic screen text columns are calculated as _WIDTH \ 8 except when a _FONT is used. Use _PRINTWIDTH to measure a line of font text.


LOCATE in _Newimage

Good study!