Annotation of lucent/sys/man/3/bit, revision 1.1

1.1     ! root        1: .TH BIT 3 
        !             2: .SH NAME
        !             3: bit \- screen graphics, mouse
        !             4: .SH SYNOPSIS
        !             5: .nf
        !             6: .B bind -a #b /dev
        !             7: 
        !             8: .B /dev/bitblt
        !             9: .B /dev/mouse
        !            10: .B /dev/mousectl
        !            11: .B /dev/screen
        !            12: 
        !            13: .ft L
        !            14: #include <u.h>
        !            15: #include <libg.h>
        !            16: 
        !            17: .ta \w'ushort 'u
        !            18: ushort BGSHORT(uchar *p)
        !            19: ulong  BGLONG(uchar *p)
        !            20: void   BPSHORT(uchar *p, ushort v)
        !            21: void   BPLONG(uchar *p, ulong v)
        !            22: .ft P
        !            23: .fi
        !            24: .SH DESCRIPTION
        !            25: The
        !            26: .I bit
        !            27: device provides the files
        !            28: .BR bitblt ,
        !            29: .BR mouse ,
        !            30: .BR mousectl ,
        !            31: and
        !            32: .B screen
        !            33: on machines with a bitmapped screen
        !            34: and a mouse.
        !            35: The device is exclusive use.
        !            36: .PP
        !            37: The
        !            38: .I bit
        !            39: device provides, through the
        !            40: .B bitblt
        !            41: file, access to
        !            42: .IR bitmaps ,
        !            43: .IR fonts ,
        !            44: and
        !            45: .I subfonts
        !            46: in its private storage,
        !            47: as described in
        !            48: .IR graphics (2).
        !            49: Each object is identified by a short, its
        !            50: .IR id .
        !            51: The bitmap with id zero is special: it represents the visible display.
        !            52: The subfont with id zero is also special: it is initialized to
        !            53: a default subfont that is always available.
        !            54: There is no default font.
        !            55: There is also a cursor associated with the screen;
        !            56: it is always displayed at the current mouse position.
        !            57: A process can write messages to
        !            58: .B bitblt
        !            59: to allocate and free bitmaps, fonts, and subfonts,
        !            60: read or write portions of the bitmaps,
        !            61: and draw line segments,
        !            62: textures, and character strings in the bitmaps.
        !            63: All graphics requests are clipped to their bitmaps.
        !            64: Some messages return a response
        !            65: to be recovered by reading
        !            66: .BR bitblt .
        !            67: .PP
        !            68: The format of
        !            69: messages written to
        !            70: .B bitblt
        !            71: is a single lower case letter
        !            72: followed by binary parameters;
        !            73: multibyte integers are transmitted with the low order byte first.
        !            74: The
        !            75: .B BPSHORT
        !            76: and
        !            77: .B BPLONG
        !            78: macros place correctly formatted two- and four-byte integers into a character
        !            79: buffer.
        !            80: Some messages return a response formatted the same way;
        !            81: it usually starts with the upper case version of the request character.
        !            82: .B BGSHORT
        !            83: and
        !            84: .B BGLONG
        !            85: retrieve values from a character buffer.
        !            86: Points are two four-byte numbers:
        !            87: .IR x ,
        !            88: .IR y .
        !            89: Rectangles are four four-byte numbers: min 
        !            90: .IR x ,
        !            91: min
        !            92: .IR y ,
        !            93: max
        !            94: .IR x ,
        !            95: and max
        !            96: .IR y .
        !            97: .PP
        !            98: The following requests are accepted by the
        !            99: .B bitblt
        !           100: file.
        !           101: The numbers in brackets give the length in bytes of the parameters.
        !           102: .HP .5i
        !           103: .B a
        !           104: .IR ldepth [1]
        !           105: .IR rect [16]
        !           106: .br
        !           107: Allocate a bitmap.
        !           108: .I Ldepth
        !           109: is the log base 2 of the number of bits per pixel.
        !           110: .I Rect
        !           111: is a Rectangle giving the extent of the bitmap.
        !           112: The bitmap is cleared to all zeros.
        !           113: The id of the allocated bitmap is returned on a subsequent
        !           114: .I read
        !           115: from
        !           116: .BR bitblt ,
        !           117: returning the three bytes:
        !           118: .L A
        !           119: followed by the id.
        !           120: .HP
        !           121: .B b
        !           122: .IR dstid [2]
        !           123: .IR dstpt [8]
        !           124: .IR srcid [2]
        !           125: .IR srcrect [16]
        !           126: .IR code [2]
        !           127: .br
        !           128: Bit-block transfer
        !           129: .RB ( bitblt )
        !           130: from a rectangle in the bitmap identified by
        !           131: .I srcid
        !           132: to a congruent
        !           133: rectangle at Point
        !           134: .B dstpt
        !           135: in the bitmap identified by
        !           136: .IR dstid .
        !           137: The rectangle is clipped against both
        !           138: source and destination bitmaps. See
        !           139: .IR bitblt (2).
        !           140: .HP
        !           141: .B c
        !           142: [
        !           143: .IR pt [8]
        !           144: .IR clr [32]
        !           145: .IR set [32]
        !           146: ]
        !           147: .br
        !           148: Switch mouse cursor.
        !           149: See the description of
        !           150: .B Cursors
        !           151: in
        !           152: .IR graphics (2)
        !           153: for the meaning of the
        !           154: .I pt
        !           155: (the offset),
        !           156: .IR set ,
        !           157: and
        !           158: .I clr
        !           159: arguments.
        !           160: If only
        !           161: .L c
        !           162: is provided \(em that is, if the message is one byte long \(em
        !           163: the cursor changes to the default, typically an arrow.
        !           164: .HP
        !           165: .B e
        !           166: .IR id [2]
        !           167: .IR pt [8]
        !           168: .IR value [1]
        !           169: .IR code [2]
        !           170: .IR n [2]
        !           171: .IR pts [ n *2]
        !           172: .br
        !           173: Join the
        !           174: .IR n +1
        !           175: points
        !           176: .I pt
        !           177: and
        !           178: .I pts
        !           179: with
        !           180: .I n
        !           181: segments, exactly as for the
        !           182: .I l
        !           183: operator.  The
        !           184: .I pts
        !           185: are specified by pairs of signed bytes
        !           186: holding offsets from the previous point in the list.
        !           187: .HP
        !           188: .B f
        !           189: .IR id [2]
        !           190: .br
        !           191: Free the resources associated with the allocated bitmap
        !           192: identified by
        !           193: .IR id .
        !           194: .HP
        !           195: .B g
        !           196: .IR id [2]
        !           197: .br
        !           198: Free the resources associated with the allocated subfont identified by
        !           199: .IR id ,
        !           200: including its bitmap.
        !           201: If the subfont is cached,
        !           202: the associated data may be recoverable even after it has
        !           203: been freed; see below.
        !           204: .HP
        !           205: .B h
        !           206: .IR id [2]
        !           207: .br
        !           208: Free the resources associated with the allocated font identified by
        !           209: .IR id .
        !           210: .HP
        !           211: .B i
        !           212: .br
        !           213: Initialize the device.
        !           214: The next operation on
        !           215: .B bitblt
        !           216: should be a
        !           217: .IR read (2).
        !           218: A read of length 34 returns information about the display:
        !           219: .RS 1i
        !           220: .B I
        !           221: .IR ldepth [1]
        !           222: .IR rect [16]
        !           223: .IR cliprect [16].
        !           224: .RE
        !           225: .IP
        !           226: If the read count is large enough, the above information is followed
        !           227: by the header and character information of the default
        !           228: .BR Subfont ,
        !           229: in the format expected by
        !           230: .I rdsubfontfile
        !           231: (see
        !           232: .IR subfalloc (2)
        !           233: and
        !           234: .IR font (6)).
        !           235: `Large enough' is 36 +
        !           236: .RI 6 n ,
        !           237: where
        !           238: .I n
        !           239: is the number of characters in the subfont.
        !           240: The ids of the screen bitmap and default subfont are both zero.
        !           241: .HP
        !           242: .B j
        !           243: .IR q0 [4]
        !           244: .IR q1 [4]
        !           245: .br
        !           246: Check to see whether a subfont with tags
        !           247: .I q0
        !           248: and
        !           249: .I q1
        !           250: is in the cache.
        !           251: If it is not, the write of the
        !           252: .B j
        !           253: message will draw an error.
        !           254: If it is, the next read of
        !           255: .B bitblt
        !           256: will return
        !           257: .RS 1i
        !           258: .B J
        !           259: .IR id [2]
        !           260: .RE
        !           261: .IP
        !           262: followed by the subfont information in the same format
        !           263: as returned by an init message; the subfont will then be available
        !           264: for use.
        !           265: .HP
        !           266: .B k
        !           267: .IR n [2]
        !           268: .IR height [1]
        !           269: .IR ascent [1]
        !           270: .IR bitmapid [2]
        !           271: .IR q0 [4]
        !           272: .IR q1 [4]
        !           273: .IR info [6*( n +1)]
        !           274: .br
        !           275: Allocate subfont.
        !           276: The parameters are as described in
        !           277: .IR subfalloc (2),
        !           278: with
        !           279: .I info
        !           280: in external subfont file format.
        !           281: .I Bitmapid
        !           282: identifies a previously allocated bitmap containing the character images.
        !           283: .I Q0
        !           284: and
        !           285: .I q1
        !           286: are used as labels for the subfont in the cache; if all ones,
        !           287: the subfont will not be cached and hence shared with other applications.
        !           288: The id of the allocated subfont is recovered by reading
        !           289: from
        !           290: .B bitblt
        !           291: the three bytes:
        !           292: .L K
        !           293: followed by the id.
        !           294: Henceforth, the bitmap with id
        !           295: .I bitmapid
        !           296: is unavailable to the application; in effect, it has been freed.
        !           297: .HP
        !           298: .B l
        !           299: .IR id [2]
        !           300: .IR pt1 [8]
        !           301: .IR pt2 [8]
        !           302: .IR value [1]
        !           303: .IR code [2]
        !           304: .br
        !           305: Draw a line segment from Point
        !           306: .I pt1
        !           307: to Point
        !           308: .IR pt2 ,
        !           309: using
        !           310: .I code
        !           311: for the drawing function, and
        !           312: .I value
        !           313: as the source pixel. See
        !           314: .I segment
        !           315: in
        !           316: .IR bitblt (2).
        !           317: .I Id
        !           318: identifies the destination bitmap.
        !           319: .HP
        !           320: .B m
        !           321: .IR id [2]
        !           322: .br
        !           323: Read the colormap associated with the bitmap with the specified
        !           324: .IR id .
        !           325: The next read of
        !           326: .B bitblt
        !           327: will return
        !           328: .if t 12×2\u\s-2\fIn\fP\s+2\d
        !           329: .if n 12*2^\fIn\fP
        !           330: bytes of colormap data where
        !           331: .I n
        !           332: is the number of bits per pixel in the bitmap.
        !           333: .HP
        !           334: .B n
        !           335: .IR height [1]
        !           336: .IR ascent [1]
        !           337: .IR ldepth [2]
        !           338: .IR ncache [2]
        !           339: .br
        !           340: Allocate a font with the given
        !           341: .IR height ,
        !           342: .IR ascent ,
        !           343: and
        !           344: .IR ldepth .
        !           345: The id of the allocated font is recovered by reading
        !           346: from
        !           347: .B bitblt
        !           348: the three bytes:
        !           349: .L N
        !           350: followed by the id.
        !           351: The initial cache associated with the font will have
        !           352: .I ncache
        !           353: character entries of zero width.
        !           354: .HP
        !           355: .B p
        !           356: .IR id [2]
        !           357: .IR pt [8]
        !           358: .IR value [1]
        !           359: .IR code [2]
        !           360: .br
        !           361: Change the pixel at Point
        !           362: .I pt
        !           363: using
        !           364: .I code
        !           365: for the drawing function, and
        !           366: .I value
        !           367: as the source pixel. See
        !           368: .I point
        !           369: in
        !           370: .IR bitblt (2).
        !           371: .HP
        !           372: .B q
        !           373: .IR id [2]
        !           374: .IR rect [16]
        !           375: .br
        !           376: Set the clipping rectangle for the bitmap with specified
        !           377: .I id
        !           378: to the given rectangle, which will itself be clipped to the
        !           379: bitmap's image rectangle.
        !           380: .HP
        !           381: .B r
        !           382: .IR id [2]
        !           383: .IR miny [4]
        !           384: .IR maxy [4]
        !           385: .br
        !           386: Read rows
        !           387: .IR ymin ,
        !           388: .IR ymin "+1, ..."
        !           389: .IR ymax \-1
        !           390: of the bitmap with the given bitmap id.
        !           391: See the description of
        !           392: .I rdbitmap
        !           393: in
        !           394: .IR balloc (2).
        !           395: A subsequent read of
        !           396: .B bitblt
        !           397: will return the requested rows of pixels.
        !           398: Note: in this case, the response does not begin with an
        !           399: .LR R ,
        !           400: to simplify the reading of large bitmaps.
        !           401: Also, the reply may be too large to fit in a single 9P message (see
        !           402: .IR read (5)),
        !           403: so multiple reads may be necessary; each read will return
        !           404: only complete rows.
        !           405: .HP
        !           406: .B s
        !           407: .IR id [2]
        !           408: .IR pt [8]
        !           409: .IR fontid [2]
        !           410: .IR code [2]
        !           411: .IR n [2]
        !           412: .IR indices [2* n ]
        !           413: .br
        !           414: Draw using code
        !           415: .I code
        !           416: in the bitmap identified by
        !           417: .I id
        !           418: the text string
        !           419: specified by the
        !           420: .I n
        !           421: cache
        !           422: .I indices
        !           423: in font
        !           424: .IR fontid ,
        !           425: starting with the upper left corner at
        !           426: .IR pt .
        !           427: .HP
        !           428: .B t
        !           429: .IR dstid [2]
        !           430: .IR rect [16]
        !           431: .IR srcid [2]
        !           432: .IR code [2]
        !           433: .br
        !           434: Texture the given rectangle in the bitmap
        !           435: identified by
        !           436: .I dstid
        !           437: by overlaying a tiling
        !           438: of the bitmap identified by
        !           439: .I srcid
        !           440: (aligning (0,0) in the two bitmaps), and using
        !           441: .I code
        !           442: as a drawing code for
        !           443: .IR bitblt ;
        !           444: see
        !           445: .I texture
        !           446: in
        !           447: .IR bitblt (2).
        !           448: .HP
        !           449: .B v
        !           450: .IR id [2]
        !           451: .IR ncache [2]
        !           452: .IR width [2]
        !           453: .br
        !           454: Reset, resize, and clear the cache for font
        !           455: .IR id ;
        !           456: the maximum width of the
        !           457: .I ncache
        !           458: characters the cache may hold is set to
        !           459: .IR width .
        !           460: Must be done before the first load of a cache slot.
        !           461: If the cache cannot be resized, the write of this message
        !           462: will fail but the cache will be unaffected.
        !           463: .HP
        !           464: .B w
        !           465: .IR id [2]
        !           466: .IR miny [4]
        !           467: .IR maxy [4]
        !           468: .IR data [ n ]
        !           469: .br
        !           470: Replace rows
        !           471: .IR ymin ,
        !           472: .IR ymin "+1, ..."
        !           473: .IR ymax \-1
        !           474: of the bitmap with the given bitmap
        !           475: .I id
        !           476: with the values in
        !           477: .IR data .
        !           478: See the description of
        !           479: .I wrbitmap
        !           480: in
        !           481: .IR balloc (2).
        !           482: .HP
        !           483: .B x
        !           484: .IR x [4]
        !           485: .IR y [4]
        !           486: .br
        !           487: Move the cursor so its origin is at
        !           488: .RI ( x , y ).
        !           489: .HP
        !           490: .B y
        !           491: .IR id [2]
        !           492: .IR cacheindex [2]
        !           493: .IR subfontid [2]
        !           494: .IR subfontindex [2]
        !           495: .br
        !           496: Load the description and image of character
        !           497: .I subfontindex
        !           498: in subfont
        !           499: .I subfontid
        !           500: into slot
        !           501: .I cacheindex
        !           502: of font
        !           503: .IR id .
        !           504: .HP
        !           505: .B z
        !           506: .IR id [2]
        !           507: .IR map [ m ]
        !           508: .br
        !           509: Replace the colormap associated with bitmap
        !           510: .I id
        !           511: with
        !           512: .IR map ,
        !           513: which contains
        !           514: .if t \fIm\fP=12\(mu2\u\s-2\fIn\fP\s+2\d
        !           515: .if n \fIm\fP=12*2^\fIn\fP
        !           516: bytes of colormap data (see
        !           517: .IR rgbpix (2)
        !           518: for the format).
        !           519: .PP
        !           520: A read of the
        !           521: .B mouse
        !           522: file returns the mouse status: its position and button state.
        !           523: The read blocks until the state has changed since the last read.
        !           524: The read returns 14 bytes:
        !           525: .RS
        !           526: .B m
        !           527: .IR buttons [1]
        !           528: .IR x [4]
        !           529: .IR y [4]
        !           530: .IR msec [4]
        !           531: .RE
        !           532: where
        !           533: .I x
        !           534: and
        !           535: .I y
        !           536: are the mouse coordinates in the screen bitmap,
        !           537: .I msec
        !           538: is a time stamp, in units of milliseconds, and
        !           539: .I buttons
        !           540: has set the 1, 2, and 4 bits when the mouse's left, middle, and right
        !           541: buttons, respectively, are down.
        !           542: .PP
        !           543: Writing to the
        !           544: .B mousectl
        !           545: file configures and controls the mouse.
        !           546: The messages are:
        !           547: .IP
        !           548: .B serial \fIn\fR
        !           549: sets serial port
        !           550: .I n
        !           551: to be the mouse port.
        !           552: .IP
        !           553: .B ps2
        !           554: sets the PS2 port to be the mouse port.
        !           555: .IP
        !           556: .B accelerated
        !           557: turns on mouse acceleration.
        !           558: .IP
        !           559: .B linear
        !           560: turns off mouse acceleration
        !           561: .IP
        !           562: .B res \fIn\fR
        !           563: sets mouse resolution to a setting between 0 and
        !           564: 3 inclusive.
        !           565: .IP
        !           566: .B swap
        !           567: swaps the left and right buttons on the mouse.
        !           568: .br
        !           569: Which messages are implemented is machine-dependent.
        !           570: .PP
        !           571: The
        !           572: .B screen
        !           573: file contains the screen bitmap in the format described in
        !           574: .IR bitmap (6).
        !           575: .SH SOURCE
        !           576: .B /sys/src/9/port/devbit.c
        !           577: .SH DIAGNOSTICS
        !           578: Most messages to
        !           579: .B bitblt
        !           580: can return errors;
        !           581: these can be detected by a system call error
        !           582: on the
        !           583: .IR write (see
        !           584: .IR read (2))
        !           585: of the data containing the erroneous message.
        !           586: The most common error is a failure to allocate
        !           587: because of insufficient free resources.  Most other errors occur
        !           588: only when the protocol is mishandled by the application.
        !           589: .IR Errstr (2)
        !           590: will report details.
        !           591: .SH BUGS
        !           592: Because each message must fit in a single 9P message,
        !           593: subfonts are limited to about 1300 characters.
        !           594: .br
        !           595: Can only change the color map of bitmap 0.

unix.superglobalmegacorp.com

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