----- Original Message ----- From: "Stefan Haustein" <[EMAIL PROTECTED]>
Cc: "WHAT Working Group Mailing List" <[EMAIL PROTECTED]>
Sent: Tuesday, October 17, 2006 2:50 PM
Subject: Re: [whatwg] Canvas lack of drawString method


Hi,

I would like to second the drawString() request.

It makes sense to have a simple API, but it should be balanced with application simplicity and readability to some extent. Doing CSS black magic to overlay text and a Canvas object just seems inadequate for something like axis labeling.

As noted earlier by somebody else (did not find the mail...), we would also need a simple Font object, but the minimum requirements seem rather simple:

Font Canvas.createFont(String cssFontProperties);
Canvas.setFont(Font font) // set current font
Canvas.drawString(int x, int y, String text);
Font Canvas.getFont() // current font

int Font.stringWidth(String s);
int Font.getHeight();  // includes leading
int Font.getBaselinePosition();
int Font.getAscent();
int Font.getDescent();


In fact separate Font object is not needed in most cases.
It is enough to have simple setFont function for that.

I've found that following five methods of Graphics are just enough:

Graphics.setFont(FontOrFamilyName, size, weight, ...);
Graphics.setTextAlignment(horizontal, vertical);
Graphics.getFontAscent();
Graphics.getTextWidth(string);
Graphics.drawText(x,y,string);

For example, below is code fragment drawing this:
http://www.terrainformatica.com/sciter/screenshots/sciter-graphics-text.jpg

     var gfx = sandbox.graphics(#v2d);

     var width = sandbox.box(#width);
     var height = sandbox.box(#height);

     gfx.lineWidth(1.0);
     gfx.lineJoin = Graphics.JOIN_ROUND;
     gfx.lineColor(Graphics.RGBA(0x7F,0,0));
gfx.fillRadialGradient(width/2, height/2, height/2, Graphics.RGBA(0xFF,0xFF,0), Graphics.RGBA(0xFF,0,0) );
     gfx.setTextAlignment(Graphics.ALIGN_CENTER,Graphics.ALIGN_CENTER);
     gfx.setFont("Verdana", 64.0);
     gfx.text(width/2, height/2, "Text in Sciter!");

-----------
drawText shall use outline and fill attributes that Graphics already has.
It also shall follow all transformation attributes.

It is highly non desirable to have separate objects like brushes and fonts with
non-deterministic life span. Especially in GC environments.

Andrew Fedoniouk.
http://terrainformatica.com



Best regards
Stefan Haustein



Alfonso Baqueiro wrote:
Hello Charles,

2006/10/17, Charles Iliya Krempeaux <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>:

    Hello Alfonso,

    On 10/17/06, *Alfonso Baqueiro* < [EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>> wrote:

        The canvas component is very promising, but the lack of
        drawString method could be a great error for its success, this
        lack is a huge limitation, how could you resolve this problem?


    I believe that some people's reason for not wanting to add it was
    because of Accessibility concerns.

    Although normal text in a webpage... or even a text image (with
    the "alt" attribute filled in properly) could be "read" by a
    person with disabilities, text embedded in the canvas element
    could not.

    Perhaps people need to think about how to add Accessibility to the
    canvas while allowing a "drawString" procedure.


Well a drawString method in canvas can be used for drawing the axis labels or values on a dinamic javascript graphic, but is non sense an aural reader read it, theres no way (yet) to read an image to a blinded people, there are cases where is imposible the accessibility, is imposible for a blind to play video games, and accessibility dont stop the video games creation. In the case of images or the canvas the alt attribute could do the job.

    See ya



Reply via email to