Main Site Documentation

Wordwrapping Flags in ComputeTextInRect


#1

In ComputeTextInRect the documentation speaks of dtFlags, which flags would these be as I’m looking for wordwrap and it doesn’t appear to be Bitmap.DT_WordWrap as that doesnt seem to give me the answer Im looking for (ie the x component doesn`t seem to be wrapping).

[MethodImplAttribute]
public void ComputeTextInRect (
string text,
ref int renderWidth,
ref int renderHeight,
int xRelStart,
int yRelStart,
int availableWidth,
int availableHeight,
UInt32 dtFlags
)

Thanks


#2

These are the const UInt32 fields that start with DT_ (defined inside Bitmap class).

For example Bitmap.DT_WordWrap

http://msdn.microsoft.com/en-us/library/ee437178.aspx


#3

I was afraid of that as that is what I’ve tried and it didn’t work Of course test code provided as maybe I’m doing something wrong, Fez Spider with a button and a OLEDisplay. The X component counts up nicely till it hits the max length 128 and when the display wraps but X remains as 128 which is the problem as it should go to 0 or some other number inidicating its over to the left.

using Microsoft.SPOT;

using GT = Gadgeteer;
using Gadgeteer.Modules.GHIElectronics;

namespace TestWrap
{
public partial class Program
{

    GT.Timer _timer = new GT.Timer(500);
    private string _test = "";

    void ProgramStarted()
    {

        button.ButtonPressed += new Button.ButtonEventHandler(button_ButtonPressed);
        _timer.Tick += new GT.Timer.TickEventHandler(timer_Tick);
    }

    void timer_Tick(GT.Timer timer)
    {
        int x;
        int y;

        oledDisplay.SimpleGraphics.Clear();

        _test = _test + "X";

        Font font = Resources.GetFont(Resources.FontResources.NinaB);

        int width = (int)oledDisplay.Width;

        int height = (int)oledDisplay.Height;
        
        font.ComputeTextInRect(_test, out x, out y, 0, 0, width, height, Bitmap.DT_WordWrap);

        oledDisplay.SimpleGraphics.DisplayTextInRectangle(_test, 0, 0, (uint)width, (uint)height,
                                                          GT.Color.Red, font);

        oledDisplay.SimpleGraphics.DisplayText("X: " + x.ToString() + " Y: " + y.ToString(), font, GT.Color.Blue, 0, 113);

    }

    void button_ButtonPressed(Button sender, Button.ButtonState state)
    {
        if (button.IsLedOn)
        {
            _timer.Stop();
        }
        else
        {
            _timer.Start();
        }
        button.ToggleLED();

    }
}

}