Beispiel #1
0
    static void string_width(Font.Instance font)
    {
        OS.Coord result_offset = new OS.Coord();
        int      result_index, result_count;

        Console.WriteLine("Calling SWI \"Font_SetFont\"");
        Font.SetFont(font);

        string string_to_split = "The quick brown fox jumped over the lazy dog.";

        Console.WriteLine("Calling SWI \"Font_StringWidth\" to split a string");
        Console.WriteLine("String to split is \"{0}\"", string_to_split);
        Console.WriteLine("Splitting on a space character at 300 OS units.");
        result_index = Font.StringWidth(string_to_split,
                                        Font.ConvertToPoints(300, 0),
                                        ' ',                    // Split on a space
                                        string_to_split.Length, // Consider all the string
                                        result_offset,
                                        out result_count);
        Font.ConvertToOS(result_offset, result_offset);
        Console.WriteLine("Result is:");
        Console.WriteLine("Split at offset {0},{1} OS units", result_offset.X, result_offset.Y);
        Console.WriteLine("Number of split characters is {0}", result_count);
        Console.WriteLine("Split was at index {0} between characters '{1}' and '{2}'\n",
                          result_index,
                          string_to_split[result_index - 1],
                          string_to_split[result_index + 1]);
    }
Beispiel #2
0
    static void read_full_def(Font.Instance font)
    {
        OS.Coord size, res;
        int      age, usage_count;
        string   ID;

        size = new OS.Coord();
        res  = new OS.Coord();

        Console.WriteLine("Calling SWI \"XFont_ReadDefn\" to read full definition of font:");
        ID = font.ReadFullDefn(size, res, out age, out usage_count);
        Console.WriteLine("Result is:");
        Console.WriteLine("Identifier \"{0}\"", ID);
        Console.WriteLine("Size: {0}x{1} points", size.X >> 4, size.Y >> 4);
        Console.WriteLine("Resolution: {0}x{1} dpi", res.X, res.Y);
        Console.WriteLine("Age: {0}", age);
        Console.WriteLine("Usage count: {0}\n", usage_count);
    }
Beispiel #3
0
    static void scan_string(Font.Instance font)
    {
        OS.Coord result_offset = new OS.Coord();
        int      result_index, result_count;

        string string_to_scan = "The quick brown fox jumped over the lazy dog.";

        Console.WriteLine("Calling SWI \"Font_ScanString\" to find caret position using no matrix or coordinate block");
        Console.WriteLine("String to scan is \"{0}\"", string_to_scan);
        Console.WriteLine("Mouse position is 300, 10 OS units.");
        result_index = font.ScanString(string_to_scan,
                                       Font.PlotType.GivenLength |
                                       Font.PlotType.ReturnSplitCount |
                                       Font.PlotType.ReturnCaretPos,
                                       Font.ConvertToPoints(300, 10),
                                       string_to_scan.Length,          // Consider all the string
                                       result_offset,
                                       out result_count);
        Font.ConvertToOS(result_offset, result_offset);
        Console.WriteLine("Result is:");
        Console.WriteLine("Caret is at offset {0},{1} OS units", result_offset.X, result_offset.Y);
        Console.WriteLine("Caret is at index {0}, character '{1}'\n",
                          result_index,
                          string_to_scan[result_index]);

        Console.WriteLine("Calling SWI \"Font_ScanString\" to find string bounding box using no matrix.");
        Console.WriteLine("Coordinate block used for returned results.");
        Font.ScanCoordBlock coord_block = new Font.ScanCoordBlock();
        result_index = font.ScanString(string_to_scan,
                                       Font.PlotType.GivenLength |
                                       Font.PlotType.ReturnBBox,
                                       new OS.Coord(-1, -1),
                                       coord_block,
                                       string_to_scan.Length,          // Consider all the string
                                       result_offset,
                                       out result_count);
        Console.WriteLine("Bounding box (in millipoints) is:");
        Console.WriteLine("Minimum X {0}", coord_block.BoundingBox.MinX);
        Console.WriteLine("Minimum Y {0}", coord_block.BoundingBox.MinY);
        Console.WriteLine("Maximum X {0}", coord_block.BoundingBox.MaxX);
        Console.WriteLine("Maximum Y {0}\n", coord_block.BoundingBox.MaxY);
    }