Annotation of 43BSDTahoe/new/X/CLUlib/sun/x_font.clu, revision 1.1

1.1     ! root        1: % Copyright    Barbara Liskov    1985, 1986
        !             2: 
        !             3: x_font = cluster is create, destroy, query, widths, width, all_widths,
        !             4:                    get_id, equal, similar, copy
        !             5: 
        !             6: rep = int
        !             7: 
        !             8: create = proc (name: string) returns (cvt) signals (error(string))
        !             9:     x_buf$setup(x_getfont, 0, 0, 0)
        !            10:     x_buf$set_s0(string$size(name))
        !            11:     x_buf$send_data(s2b(name), 1, string$size(name))
        !            12:     x_buf$receive()
        !            13:        resignal error
        !            14:     return(x_buf$get_lp0())
        !            15:     end create
        !            16: 
        !            17: destroy = proc (font: cvt)
        !            18:     x_buf$setup(x_freefont, 0, 0, 0)
        !            19:     x_buf$set_l0(font)
        !            20:     end destroy
        !            21: 
        !            22: % returns (avg_width, height, first_char, last_char, baseline, fixedwidth)
        !            23: 
        !            24: query = proc (font: cvt) returns (int, int, char, char, int, bool)
        !            25:          signals (error(string))
        !            26:     x_buf$setup(x_queryfont, 0, 0, 0)
        !            27:     x_buf$set_l0(font)
        !            28:     x_buf$receive()
        !            29:        resignal error
        !            30:     return(x_buf$get_sp1(), x_buf$get_sp0(),
        !            31:           char$i2c(x_buf$get_sp2()), char$i2c(x_buf$get_sp3()),
        !            32:           x_buf$get_sp4(), x_buf$get_sp5() ~= 0)
        !            33:     end query
        !            34: 
        !            35: widths = iter (font: cvt, s: string) yields (char, int) signals (error(string))
        !            36:     x_buf$setup(x_charwidths, 0, 0, 0)
        !            37:     x_buf$set_l0s23(font, string$size(s), 0)
        !            38:     x_buf$send_data(s2b(s), 1, string$size(s))
        !            39:     x_buf$receive()
        !            40:        resignal error
        !            41:     b: _bytevec := _bytevec$create(x_buf$get_lp0())
        !            42:     x_buf$receive_data(b)
        !            43:     i: int := 1
        !            44:     for c: char in string$chars(s) do
        !            45:        yield(c, _wordvec$wfetch(b2w(b), i))
        !            46:        i := i + 2
        !            47:        end
        !            48:     end widths
        !            49: 
        !            50: width = proc (font: cvt, s: string) returns (int) signals (error(string))
        !            51:     x_buf$setup(x_stringwidth, 0, 0, 0)
        !            52:     x_buf$set_l0s23(font, string$size(s), 0)
        !            53:     x_buf$send_data(s2b(s), 1, string$size(s))
        !            54:     x_buf$receive()
        !            55:        resignal error
        !            56:     return(x_buf$get_sp0())
        !            57:     end width
        !            58: 
        !            59: all_widths = proc (font: cvt) returns (_wordvec) signals (error(string))
        !            60:     x_buf$setup(x_fontwidths, 0, 0, 0)
        !            61:     x_buf$set_l0(font)
        !            62:     x_buf$receive()
        !            63:        resignal error
        !            64:     b: _bytevec := _bytevec$create(x_buf$get_lp0())
        !            65:     x_buf$receive_data(b)
        !            66:     return(b2w(b))
        !            67:     end all_widths
        !            68: 
        !            69: get_id = proc (font: cvt) returns (int)
        !            70:     return(font)
        !            71:     end get_id
        !            72: 
        !            73: equal = proc (font1, font2: cvt) returns (bool)
        !            74:     return(font1 = font2)
        !            75:     end equal
        !            76: 
        !            77: similar = proc (font1, font2: cvt) returns (bool)
        !            78:     return(font1 = font2)
        !            79:     end similar
        !            80: 
        !            81: copy = proc (font: cvt) returns (cvt)
        !            82:     return(font)
        !            83:     end copy
        !            84: 
        !            85: end x_font

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.