Annotation of 43BSD/contrib/X/CLUlib/vax/x_font.clu, revision 1.1

1.1     ! root        1: % Copyright    Barbara Liskov    1985
        !             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:     or: oreq, er: ereq := x_buf$get()
        !            10:     er.code := x_getfont
        !            11:     er.s0 := string$size(name)
        !            12:     x_buf$send_data(s2b(name), 1, string$size(name))
        !            13:     x_buf$receive()
        !            14:        resignal error
        !            15:     return(x_buf$get_lp0())
        !            16:     end create
        !            17: 
        !            18: destroy = proc (font: cvt)
        !            19:     or: oreq, er: ereq := x_buf$get()
        !            20:     er.code := x_freefont
        !            21:     lr(er).l0 := font
        !            22:     end destroy
        !            23: 
        !            24: % returns (avg_width, height, first_char, last_char, baseline, fixedwidth)
        !            25: 
        !            26: query = proc (font: cvt) returns (int, int, char, char, int, bool)
        !            27:          signals (error(string))
        !            28:     or: oreq, er: ereq := x_buf$get()
        !            29:     er.code := x_queryfont
        !            30:     lr(er).l0 := font
        !            31:     x_buf$receive()
        !            32:        resignal error
        !            33:     return(x_buf$get_sp1(), x_buf$get_sp0(),
        !            34:           char$i2c(x_buf$get_sp2()), char$i2c(x_buf$get_sp3()),
        !            35:           x_buf$get_sp4(), x_buf$get_sp5() ~= 0)
        !            36:     end query
        !            37: 
        !            38: widths = iter (font: cvt, s: string) yields (char, int) signals (error(string))
        !            39:     or: oreq, er: ereq := x_buf$get()
        !            40:     er.code := x_charwidths
        !            41:     lr(er).l0 := font
        !            42:     er.s2 := string$size(s)
        !            43:     x_buf$send_data(s2b(s), 1, string$size(s))
        !            44:     x_buf$receive()
        !            45:        resignal error
        !            46:     b: _bytevec := _bytevec$create(x_buf$get_lp0())
        !            47:     x_buf$receive_data(b)
        !            48:     i: int := 1
        !            49:     for c: char in string$chars(s) do
        !            50:        yield(c, _wordvec$wfetch(b2w(b), i))
        !            51:        i := i + 2
        !            52:        end
        !            53:     end widths
        !            54: 
        !            55: width = proc (font: cvt, s: string) returns (int) signals (error(string))
        !            56:     or: oreq, er: ereq := x_buf$get()
        !            57:     er.code := x_stringwidth
        !            58:     lr(er).l0 := font
        !            59:     er.s2 := string$size(s)
        !            60:     x_buf$send_data(s2b(s), 1, string$size(s))
        !            61:     x_buf$receive()
        !            62:        resignal error
        !            63:     return(x_buf$get_sp0())
        !            64:     end width
        !            65: 
        !            66: all_widths = proc (font: cvt) returns (_wordvec) signals (error(string))
        !            67:     or: oreq, er: ereq := x_buf$get()
        !            68:     er.code := x_fontwidths
        !            69:     lr(er).l0 := font
        !            70:     x_buf$receive()
        !            71:        resignal error
        !            72:     b: _bytevec := _bytevec$create(x_buf$get_lp0())
        !            73:     x_buf$receive_data(b)
        !            74:     return(b2w(b))
        !            75:     end all_widths
        !            76: 
        !            77: get_id = proc (font: cvt) returns (int)
        !            78:     return(font)
        !            79:     end get_id
        !            80: 
        !            81: equal = proc (font1, font2: cvt) returns (bool)
        !            82:     return(font1 = font2)
        !            83:     end equal
        !            84: 
        !            85: similar = proc (font1, font2: cvt) returns (bool)
        !            86:     return(font1 = font2)
        !            87:     end similar
        !            88: 
        !            89: copy = proc (font: cvt) returns (cvt)
        !            90:     return(font)
        !            91:     end copy
        !            92: 
        !            93: 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.