Main
using System;
using Sifteo;

namespace Libraries
{
    // Purpose:
    // Used to display fixed font size text.  Each character is assumed to fit in a specified area.
    // Space between characters is not taken into account, so a small character like i could have more space between it than W would.
    public class FixedFont
    {
        // Purpose:
        // Constructor.
        //
        // fontName     - Name of the image font to use.
        // charW, charH - Width and height of the characters in the font.
        // charsPerRow  - How many characters are expected to be in each row of the font image.
        public FixedFont(String fontName,
                         int charW, int charH,
                         int charsPerRow)
        {
            m_charW = charW;
            m_charH = charH;
            m_fontName = fontName;
            m_charsPerRow = charsPerRow;
        }
       
        // Purpose:
        // Get the widith of the given string.
        public int TextWidth(String text)
        {
            int currX = 0; 
            int maxX = 0;

            for(int i = 0; i < text.Length; ++i)
            {
                // New line
                if('\n' == text[i])
                {
                    if(currX > maxX)
                        maxX = currX;

                    currX = 0;
                }
                else
                {
                    currX += m_charW;

                    if(currX > maxX)
                        maxX = currX;
                }
            }  
            return maxX;       
        }

        public void DrawString(Cube c,
                               int x, int y,
                               String text)
        {
            int cur_x = x, cur_y = y;
            char ascii;        

            for(int i = 0; i < text.Length; ++i)
            {
                ascii = text[i];
               
                // newlines
                if('\n' == ascii)
                {
                    cur_y += m_charH;
                    cur_x = x;
                }
               
                // skip spaces - saves a little time
                else if(' ' == ascii)
                {
                    cur_x += m_charW;
                }
                else
                {
                    c.Image(m_fontName, cur_x, cur_y, (ascii % m_charsPerRow) * m_charW, (ascii / m_charsPerRow) * m_charH, m_charW, m_charH, 1, 0);
                    cur_x += m_charW;
                }
            }
        }

        // Dimensions of the character area.
        private int m_charW = 0;
        private int m_charH = 0;
       
        // How many characters are assumed to be in each row of the source font image.
        private int m_charsPerRow;

        // Name of the image font to use.
        private String m_fontName;

    }
}

 
Website copyright (c) 2012 Benjamin Millek, all rights reserved.